From caa1d98c84b6832afac3f7bee71f237e0a6afab8 Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Fri, 6 Jan 2023 12:29:55 -0800 Subject: [PATCH 1/7] first commit --- projectile_path/.gitignore | 133 + .../artifacts/projectile_plot_abi.json | 56 + .../artifacts/projectile_plot_compiled.json | 18366 ++++++++++++++++ projectile_path/contracts/constants.cairo | 38 + projectile_path/contracts/math.cairo | 172 + projectile_path/contracts/physics.cairo | 92 + .../contracts/projectile_plot.cairo | 99 + projectile_path/contracts/structs.cairo | 9 + .../jupyter/prototype_projectile_plot.ipynb | 359 + 9 files changed, 19324 insertions(+) create mode 100644 projectile_path/.gitignore create mode 100644 projectile_path/artifacts/projectile_plot_abi.json create mode 100644 projectile_path/artifacts/projectile_plot_compiled.json create mode 100644 projectile_path/contracts/constants.cairo create mode 100644 projectile_path/contracts/math.cairo create mode 100644 projectile_path/contracts/physics.cairo create mode 100644 projectile_path/contracts/projectile_plot.cairo create mode 100644 projectile_path/contracts/structs.cairo create mode 100644 projectile_path/tests/jupyter/prototype_projectile_plot.ipynb diff --git a/projectile_path/.gitignore b/projectile_path/.gitignore new file mode 100644 index 0000000..cab3285 --- /dev/null +++ b/projectile_path/.gitignore @@ -0,0 +1,133 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# Other folders not for github +_not_gh_tests +_not_gh_contracts \ No newline at end of file diff --git a/projectile_path/artifacts/projectile_plot_abi.json b/projectile_path/artifacts/projectile_plot_abi.json new file mode 100644 index 0000000..7e308cf --- /dev/null +++ b/projectile_path/artifacts/projectile_plot_abi.json @@ -0,0 +1,56 @@ +[ + { + "inputs": [ + { + "name": "theta_fp", + "type": "felt" + } + ], + "name": "cosine_approx", + "outputs": [ + { + "name": "cos_theta_fp", + "type": "felt" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "num_pts", + "type": "felt" + }, + { + "name": "theta_0_deg", + "type": "felt" + }, + { + "name": "v_0", + "type": "felt" + } + ], + "name": "projectile_path", + "outputs": [ + { + "name": "x_fp_s_len", + "type": "felt" + }, + { + "name": "x_fp_s", + "type": "felt*" + }, + { + "name": "y_fp_s_len", + "type": "felt" + }, + { + "name": "y_fp_s", + "type": "felt*" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/projectile_path/artifacts/projectile_plot_compiled.json b/projectile_path/artifacts/projectile_plot_compiled.json new file mode 100644 index 0000000..af940f8 --- /dev/null +++ b/projectile_path/artifacts/projectile_plot_compiled.json @@ -0,0 +1,18366 @@ +{ + "abi": [ + { + "inputs": [ + { + "name": "theta_fp", + "type": "felt" + } + ], + "name": "cosine_approx", + "outputs": [ + { + "name": "cos_theta_fp", + "type": "felt" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "num_pts", + "type": "felt" + }, + { + "name": "theta_0_deg", + "type": "felt" + }, + { + "name": "v_0", + "type": "felt" + } + ], + "name": "projectile_path", + "outputs": [ + { + "name": "x_fp_s_len", + "type": "felt" + }, + { + "name": "x_fp_s", + "type": "felt*" + }, + { + "name": "y_fp_s_len", + "type": "felt" + }, + { + "name": "y_fp_s", + "type": "felt*" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "entry_points_by_type": { + "CONSTRUCTOR": [], + "EXTERNAL": [ + { + "offset": "0x2a8", + "selector": "0x145f8fb6964795aa4eb149cfb427fadbe70e058414b5ee81697e737096af268" + }, + { + "offset": "0x159", + "selector": "0x2e5ea079ccfe363adfcff0c69de0c501ab2b9d02f7c4645b30d739223d2c2e5" + } + ], + "L1_HANDLER": [] + }, + "program": { + "attributes": [ + { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "end_pc": 552, + "flow_tracking_data": { + "ap_tracking": { + "group": 32, + "offset": 5 + }, + "reference_ids": {} + }, + "name": "error_message", + "start_pc": 543, + "value": "Check that 2 <=num_pts <= 25" + }, + { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "end_pc": 561, + "flow_tracking_data": { + "ap_tracking": { + "group": 32, + "offset": 38 + }, + "reference_ids": {} + }, + "name": "error_message", + "start_pc": 552, + "value": "Check that 2 <=num_pts <= 25" + }, + { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "end_pc": 572, + "flow_tracking_data": { + "ap_tracking": { + "group": 32, + "offset": 71 + }, + "reference_ids": {} + }, + "name": "error_message", + "start_pc": 561, + "value": "Check that -180 <= theta_0_deg <= +180" + }, + { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "end_pc": 579, + "flow_tracking_data": { + "ap_tracking": { + "group": 32, + "offset": 109 + }, + "reference_ids": {} + }, + "name": "error_message", + "start_pc": 572, + "value": "Check that v_0 >= 0" + } + ], + "builtins": [ + "range_check" + ], + "compiler_version": "0.10.3", + "data": [ + "0x40780017fff7fff", + "0x1", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffd", + "0x3", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480080007fff8000", + "0x400080007ffd7fff", + "0x482480017ffd8001", + "0x1", + "0x482480017ffd8001", + "0x1", + "0xa0680017fff7ffe", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb", + "0x402a7ffc7ffd7fff", + "0x208b7fff7fff7ffe", + "0x400380007ffc7ffd", + "0x482680017ffc8000", + "0x1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x48297ffc80007ffd", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffb", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff6", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff6", + "0x208b7fff7fff7ffe", + "0x480a7ffa7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0", + "0x480a7ffb7fff8000", + "0x482680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffeb", + "0x208b7fff7fff7ffe", + "0x480280007ffb8000", + "0x480280017ffb8000", + "0x484480017fff8000", + "0x2aaaaaaaaaaaab05555555555555556", + "0x48307fff7ffd8000", + "0x480280027ffb8000", + "0x480280037ffb8000", + "0x484480017fff8000", + "0x4000000000000088000000000000001", + "0x48307fff7ffd8000", + "0xa0680017fff8000", + "0xe", + "0x480680017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x48287ffc80007fff", + "0x40307ffc7ff87fff", + "0x48297ffd80007ffc", + "0x482680017ffd8000", + "0x1", + "0x48507fff7ffe8000", + "0x40507ff97ff57fff", + "0x482680017ffb8000", + "0x4", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0xc", + "0x480680017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x48287ffd80007fff", + "0x48327fff7ffc8000", + "0x40307ffa7ff67fff", + "0x48527ffe7ffc8000", + "0x40507ff97ff57fff", + "0x482680017ffb8000", + "0x4", + "0x208b7fff7fff7ffe", + "0x40317ffd7ff97ffd", + "0x48297ffc80007ffd", + "0x48527fff7ffc8000", + "0x40507ffb7ff77fff", + "0x40780017fff7fff", + "0x2", + "0x482680017ffb8000", + "0x4", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x20680017fff7fff", + "0x8", + "0x482680017ffc8000", + "0x1", + "0x484680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x400280007ffc7fff", + "0x208b7fff7fff7ffe", + "0x400380007ffc7ffd", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480280017ffa8000", + "0x48287ffd80007fff", + "0x48487ffc7fff8000", + "0x480280007ffa8000", + "0x40317fff7ffe7ffb", + "0x482680017ffa8000", + "0x2", + "0x480280007ffa8000", + "0x482680017ffc8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa2", + "0x480680017fff8000", + "0x2", + "0x48487ffd7fff8000", + "0x48127ffd7fff8000", + "0x480280017ffa8000", + "0x482480017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff99", + "0x480280017ffa8000", + "0x48127ffe7fff8000", + "0x48287ffd80007ffe", + "0x480280007ffa8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480a7ffc7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x1fffffffffffffffffffffffffffffff", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff91", + "0x4826800180008000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffd7fff8000", + "0x484a800080008000", + "0x48507ffc7ffc8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff92", + "0x480a80007fff8000", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0xa", + "0x400380007ffc7ffd", + "0x40780017fff7fff", + "0x14", + "0x482680017ffc8000", + "0x1", + "0x480680017fff8000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0xe", + "0x484680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x400280007ffc7fff", + "0x40780017fff7fff", + "0x11", + "0x482680017ffc8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x100000000000000000000000000000000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7d", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x48297ffc80007ffd", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffde", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc7", + "0x48127ffe7fff8000", + "0x484480017ffe8000", + "0x2540be400", + "0x208b7fff7fff7ffe", + "0x484a7ffd7ffc8000", + "0x480a7ffb7fff8000", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x56bc75e2d63100000", + "0x480680017fff8000", + "0x1000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa0", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x484680017ffc8000", + "0x56bc75e2d63100000", + "0x480a7ffb7fff8000", + "0x48127ffe7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff94", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x484a7ffd7ffc8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff87", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd9", + "0x48127fff7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd6", + "0x48127ffe7fff8000", + "0x48127fd47fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd1", + "0x48127ffe7fff8000", + "0x48127fa87fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcc", + "0x48127ffe7fff8000", + "0x48127f7c7fff8000", + "0x480680017fff8000", + "0x2", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe1", + "0x48127ffe7fff8000", + "0x48127f7b7fff8000", + "0x480680017fff8000", + "0x18", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdb", + "0x48127ffe7fff8000", + "0x48127f7c7fff8000", + "0x480680017fff8000", + "0x2d0", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5", + "0x48127ffe7fff8000", + "0x48127f7d7fff8000", + "0x480680017fff8000", + "0x9d80", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcf", + "0x480680017fff8000", + "0x56bc75e2d63100000", + "0x48307f7d80007fff", + "0x48307fa77fff8000", + "0x48307fd180007fff", + "0x48127ffa7fff8000", + "0x48307ffa7ffe8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400b7ffc7fff8000", + "0x480a80007fff8000", + "0x480680017fff8000", + "0x883eaf5b274555800", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff96", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0xd", + "0x480680017fff8000", + "0x1107d5eb64e8aab000", + "0x48127ffc7fff8000", + "0x48287ffd80007ffe", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbe", + "0x484480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x1c", + "0x48127ffd7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x800000000000010fffffffffffffffffffffffffffffff77c150a4d8baaa801", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff81", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0xd", + "0x480680017fff8000", + "0x800000000000010ffffffffffffffffffffffffffffffeef82a149b17555001", + "0x48127ffc7fff8000", + "0x48287ffd80007ffe", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa9", + "0x484480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x48127ffd7fff8000", + "0x10780017fff7fff", + "0x7", + "0x48127ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa0", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x4003800080007ffc", + "0x4826800180008000", + "0x1", + "0x480a7ffd7fff8000", + "0x4828800080007ffe", + "0x480a80007fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffd8000", + "0x1", + "0x402a7ffd7ffc7fff", + "0x480280017ffb8000", + "0x480280007ffd8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbf", + "0x48127ffe7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0", + "0x480280007ffb8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400b7ffb7fff8000", + "0x480a80007fff8000", + "0x480a7ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff58", + "0x480680017fff8000", + "0x56bc75e2d63100000", + "0x48127ffd7fff8000", + "0x48307ffd80007ffe", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4a", + "0x48127ffe7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff20", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0x6", + "0x48127fe37fff8000", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x5", + "0x484480017fe38000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x48127ffc7fff8000", + "0x48127ffe7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x400b7ffa7fff8000", + "0x480a80007fff8000", + "0x480a7ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff39", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x35203b67bccad00000", + "0x480680017fff8000", + "0x800000000000010fffffffffffffffffffffffffffff5697e9c0f5a84c00001", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff32", + "0x480680017fff8000", + "0x2", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff46", + "0x48127ffe7fff8000", + "0x48307ffe80007fcd", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff22", + "0x48127ffe7fff8000", + "0x48327ffe7ffd8000", + "0x480680017fff8000", + "0x35203b67bccad00000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff30", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb7", + "0x480680017fff8000", + "0x5a", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0f", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0x1f", + "0x482480017fe08000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa7", + "0x20680017fff7fff", + "0x6", + "0x48127fd87fff8000", + "0x48127ffb7fff8000", + "0x10780017fff7fff", + "0x15", + "0x48127ffc7fff8000", + "0x480680017fff8000", + "0x152d02c7e14af6800000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff16", + "0x48127fac7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefa", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0x6", + "0x48127fe07fff8000", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x4", + "0x48127f8d7fff8000", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x15", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x800000000000010ffffffffffffffffffffffffffffead2fd381eb509800001", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff01", + "0x48127fad7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee5", + "0x482480017fff8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x20680017fff7fff", + "0x6", + "0x48127fe07fff8000", + "0x48127ffc7fff8000", + "0x10780017fff7fff", + "0x4", + "0x48127f8e7fff8000", + "0x48127ffc7fff8000", + "0x48127ffe7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee1", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffedb", + "0x48127ffe7fff8000", + "0x480a7ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed6", + "0x48127ffe7fff8000", + "0x480680017fff8000", + "0x35203b67bccad00000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed0", + "0x480680017fff8000", + "0x2", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee7", + "0x48127ffe7fff8000", + "0x48307ffe80007f7d", + "0x208b7fff7fff7ffe", + "0x20780017fff7ff7", + "0x4", + "0x480a7ff67fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ff67fff8000", + "0x482680017ff78000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x480a7ff87fff8000", + "0x480a7ff97fff8000", + "0x480a7ffa7fff8000", + "0x482a7ffa7ffb8000", + "0x482680017ffc8000", + "0x1", + "0x482680017ffd8000", + "0x1", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", + "0x480a7ff87fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd1", + "0x400280007ffc7fff", + "0x48127ffe7fff8000", + "0x480a7ff97fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd1", + "0x400280007ffd7fff", + "0x48127ffe7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5", + "0x480a7ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe96", + "0x480680017fff8000", + "0x1", + "0x40127fff7fff7ffe", + "0x48127ffd7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x19", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8d", + "0x480680017fff8000", + "0x1", + "0x40127fff7fff7ffe", + "0x48127ffd7fff8000", + "0x480a7ffc7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2a", + "0x480680017fff8000", + "0xb4", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe82", + "0x480680017fff8000", + "0x1", + "0x40127fff7fff7ffe", + "0x48127ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5a", + "0x480680017fff8000", + "0x1", + "0x40127fff7fff7ffe", + "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x1107d5eb64e8aab000", + "0x480680017fff8000", + "0x3cfc82e37e9a7400000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8a", + "0x48127ffe7fff8000", + "0x484680017ffc8000", + "0x56bc75e2d63100000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe78", + "0x40137fff7fff8000", + "0x48127ffe7fff8000", + "0x480a80007fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeca", + "0x48127ffe7fff8000", + "0x480a80007fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff11", + "0x48127ffe7fff8000", + "0x484680017ffd8000", + "0x56bc75e2d63100000", + "0x48127f727fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe68", + "0x40137fff7fff8001", + "0x48127ffe7fff8000", + "0x484680017ffd8000", + "0x56bc75e2d63100000", + "0x48127fd17fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe61", + "0x40137fff7fff8002", + "0x48127ffe7fff8000", + "0x480a7ffc7fff8000", + "0x480a80017fff8000", + "0x480a80027fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1c", + "0x482680017ffb8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe71", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd8f", + "0x40137fff7fff8003", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd8c", + "0x40137fff7fff8004", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480a80017fff8000", + "0x480a80027fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x480a80037fff8000", + "0x480a80047fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7f", + "0x480a7ffb7fff8000", + "0x480a80037fff8000", + "0x480a7ffb7fff8000", + "0x480a80047fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5", + "0x4003800080007ff9", + "0x400380007ffd7ff9", + "0x402780017ffd8001", + "0x1", + "0x4826800180008000", + "0x1", + "0x40297ff97fff8002", + "0x4826800180008000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ff97fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd6f", + "0x4003800080027ffb", + "0x4003800080017ffb", + "0x4027800180018003", + "0x1", + "0x4826800180028000", + "0x1", + "0x40297ffb7fff8004", + "0x4826800180028000", + "0x1", + "0x480a7ffc7fff8000", + "0x480a7ffb7fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd62", + "0x480a80037fff8000", + "0x4829800080008004", + "0x480a80007fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x0", + "0x482680017ffd8000", + "0x3", + "0x402a7ffd7ffc7fff", + "0x480280017ffb8000", + "0x480280007ffd8000", + "0x480280017ffd8000", + "0x480280027ffd8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6d", + "0x48127ffb7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5", + "0x480280007ffb8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x48127ffc7fff8000", + "0x208b7fff7fff7ffe" + ], + "debug_info": { + "file_contents": { + "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo": "assert [cast(fp + (-4), felt*)] = __calldata_actual_size;\n", + "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo": "let __calldata_arg_theta_fp = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", + "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo": "// Check that the length is non-negative.\nassert [range_check_ptr] = ret_value.x_fp_s_len;\n// Store the updated range_check_ptr as a local variable to keep it available after\n// the memcpy.\nlocal range_check_ptr = range_check_ptr + 1;\n// Keep a reference to __return_value_ptr.\nlet __return_value_ptr_copy = __return_value_ptr;\n// Store the updated __return_value_ptr as a local variable to keep it available after\n// the memcpy.\nlocal __return_value_ptr: felt* = __return_value_ptr + ret_value.x_fp_s_len * 1;\nmemcpy(\n dst=__return_value_ptr_copy,\n src=ret_value.x_fp_s,\n len=ret_value.x_fp_s_len * 1);\n", + "autogen/starknet/arg_processor/49503690c9800a7192f4fee865f0a3cf7509eae82929a7159aacfcb1b52a3cd6.cairo": "assert [__return_value_ptr] = ret_value.x_fp_s_len;\nlet __return_value_ptr = __return_value_ptr + 1;\n", + "autogen/starknet/arg_processor/5fffe1ed5734d91b22dde2a81cd68aed70637565ea43d46429271514008fcbdf.cairo": "assert [__return_value_ptr] = ret_value.y_fp_s_len;\nlet __return_value_ptr = __return_value_ptr + 1;\n", + "autogen/starknet/arg_processor/65a20f10d7caf1d03741bf9c2f9806749f2bb9f218dcc1aea4459cd312506325.cairo": "let __calldata_arg_v_0 = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", + "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo": "assert [__return_value_ptr] = ret_value.cos_theta_fp;\nlet __return_value_ptr = __return_value_ptr + 1;\n", + "autogen/starknet/arg_processor/bb06c3077113f2124a4a9d7af51d7585c56d8847c66c69ad89747c83a5440b75.cairo": "let __calldata_arg_theta_0_deg = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", + "autogen/starknet/arg_processor/c31620b02d4d706f0542c989b2aadc01b0981d1f6a5933a8fe4937ace3d70d92.cairo": "let __calldata_actual_size = __calldata_ptr - cast([cast(fp + (-3), felt**)], felt*);\n", + "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo": "// Check that the length is non-negative.\nassert [range_check_ptr] = ret_value.y_fp_s_len;\n// Store the updated range_check_ptr as a local variable to keep it available after\n// the memcpy.\nlocal range_check_ptr = range_check_ptr + 1;\n// Keep a reference to __return_value_ptr.\nlet __return_value_ptr_copy = __return_value_ptr;\n// Store the updated __return_value_ptr as a local variable to keep it available after\n// the memcpy.\nlocal __return_value_ptr: felt* = __return_value_ptr + ret_value.y_fp_s_len * 1;\nmemcpy(\n dst=__return_value_ptr_copy,\n src=ret_value.y_fp_s,\n len=ret_value.y_fp_s_len * 1);\n", + "autogen/starknet/arg_processor/f46f114cc4d8fd9014fb47439f85f8da3563c025a19e5ac96c355f64fbbbf76e.cairo": "let __calldata_arg_num_pts = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", + "autogen/starknet/external/cosine_approx/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo": "let syscall_ptr = [cast([cast(fp + (-5), felt**)] + 0, felt*)];\n", + "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo": "return (syscall_ptr,range_check_ptr,retdata_size,retdata);\n", + "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo": "let ret_value = __wrapped_func{range_check_ptr=range_check_ptr}(theta_fp=__calldata_arg_theta_fp,);\nlet (range_check_ptr, retdata_size, retdata) = cosine_approx_encode_return(ret_value, range_check_ptr);\n", + "autogen/starknet/external/cosine_approx/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo": "let range_check_ptr = [cast([cast(fp + (-5), felt**)] + 1, felt*)];\n", + "autogen/starknet/external/projectile_path/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo": "let syscall_ptr = [cast([cast(fp + (-5), felt**)] + 0, felt*)];\n", + "autogen/starknet/external/projectile_path/5009e69acb9f1df6a2d62a28c7e96edb5c98f51f19cdfb65aeddcfd211ca1a93.cairo": "func projectile_path() -> (syscall_ptr: felt, range_check_ptr: felt, size: felt, retdata: felt*) {\n alloc_locals;\n}\n", + "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo": "let ret_value = __wrapped_func{range_check_ptr=range_check_ptr}(num_pts=__calldata_arg_num_pts, theta_0_deg=__calldata_arg_theta_0_deg, v_0=__calldata_arg_v_0,);\nlet (range_check_ptr, retdata_size, retdata) = projectile_path_encode_return(ret_value, range_check_ptr);\n", + "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo": "return (syscall_ptr,range_check_ptr,retdata_size,retdata);\n", + "autogen/starknet/external/projectile_path/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo": "let range_check_ptr = [cast([cast(fp + (-5), felt**)] + 1, felt*)];\n", + "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo": "func cosine_approx_encode_return(ret_value: (cos_theta_fp: felt), range_check_ptr) -> (\n range_check_ptr: felt, data_len: felt, data: felt*) {\n %{ memory[ap] = segments.add() %}\n alloc_locals;\n local __return_value_ptr_start: felt*;\n let __return_value_ptr = __return_value_ptr_start;\n with range_check_ptr {\n }\n return (\n range_check_ptr=range_check_ptr,\n data_len=__return_value_ptr - __return_value_ptr_start,\n data=__return_value_ptr_start);\n}\n", + "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo": "func projectile_path_encode_return(ret_value: (x_fp_s_len: felt, x_fp_s: felt*, y_fp_s_len: felt, y_fp_s: felt*), range_check_ptr) -> (\n range_check_ptr: felt, data_len: felt, data: felt*) {\n %{ memory[ap] = segments.add() %}\n alloc_locals;\n local __return_value_ptr_start: felt*;\n let __return_value_ptr = __return_value_ptr_start;\n with range_check_ptr {\n }\n return (\n range_check_ptr=range_check_ptr,\n data_len=__return_value_ptr - __return_value_ptr_start,\n data=__return_value_ptr_start);\n}\n" + }, + "instruction_locations": { + "0": { + "accessible_scopes": [ + "starkware.cairo.common.alloc", + "starkware.cairo.common.alloc.alloc" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 38, + "end_line": 3, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/alloc.cairo" + }, + "start_col": 5, + "start_line": 3 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 12, + "end_line": 4, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/alloc.cairo" + }, + "start_col": 5, + "start_line": 4 + } + }, + "2": { + "accessible_scopes": [ + "starkware.cairo.common.alloc", + "starkware.cairo.common.alloc.alloc" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 5, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/alloc.cairo" + }, + "start_col": 5, + "start_line": 5 + } + }, + "3": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 8, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 8 + } + }, + "5": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 9, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 9, + "start_line": 9 + } + }, + "6": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 41, + "end_line": 12, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 12 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 23, + "end_line": 2, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 13, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 35, + "start_line": 13 + }, + "While expanding the reference 'dst' in:" + ], + "start_col": 13, + "start_line": 2 + } + }, + "7": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 2, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "parent_location": [ + { + "end_col": 47, + "end_line": 13, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 44, + "start_line": 13 + }, + "While expanding the reference 'src' in:" + ], + "start_col": 25, + "start_line": 2 + } + }, + "8": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 17, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 26, + "start_line": 17 + } + }, + "9": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 17, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 17 + } + }, + "10": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 22 + } + }, + "12": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 23, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 23 + } + }, + "14": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 27, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 24 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 44, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 29 + } + }, + "16": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 55, + "end_line": 31, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 31 + } + }, + "17": { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 26, + "end_line": 33, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 33 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 15, + "end_line": 34, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/memcpy.cairo" + }, + "start_col": 5, + "start_line": 34 + } + }, + "18": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 46, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 42 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 26, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 47 + } + }, + "19": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 48, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 15, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 49 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 41 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 48 + } + }, + "21": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 49 + } + }, + "22": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 54, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 54 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 41 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + } + }, + "23": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 20, + "end_line": 54, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 54 + } + }, + "24": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 54, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 54 + } + }, + "26": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 55, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 55 + } + }, + "27": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 71 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 41 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 70 + } + }, + "28": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 71 + }, + "While expanding the reference 'a' in:" + ], + "start_col": 36, + "start_line": 70 + } + }, + "29": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 71 + } + }, + "31": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 72 + }, + "While expanding the reference 'a' in:" + ], + "start_col": 36, + "start_line": 70 + } + }, + "32": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 18, + "start_line": 72 + }, + "While expanding the reference 'b' in:" + ], + "start_col": 39, + "start_line": 70 + } + }, + "33": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 20, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 72 + } + }, + "35": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 73 + } + }, + "36": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 82 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 81 + } + }, + "37": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 20, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 82 + }, + "While expanding the reference 'lower' in:" + ], + "start_col": 46, + "start_line": 81 + } + }, + "38": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value' in:" + ], + "start_col": 39, + "start_line": 81 + } + }, + "39": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 82 + } + }, + "41": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 20, + "end_line": 83, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 83 + }, + "While expanding the reference 'value' in:" + ], + "start_col": 39, + "start_line": 81 + } + }, + "42": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 83, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 22, + "start_line": 83 + } + }, + "44": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 83, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 83 + } + }, + "46": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_in_range" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 84, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 84 + } + }, + "47": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 184, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 164 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 42, + "end_line": 186, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 25, + "start_line": 186 + } + }, + "48": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 66, + "end_line": 186, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 45, + "start_line": 186 + } + }, + "49": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 86, + "end_line": 186, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 45, + "start_line": 186 + } + }, + "51": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 86, + "end_line": 186, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 25, + "start_line": 186 + } + }, + "52": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 187, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 24, + "start_line": 187 + } + }, + "53": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 187, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 48, + "start_line": 187 + } + }, + "54": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 89, + "end_line": 187, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 48, + "start_line": 187 + } + }, + "56": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 89, + "end_line": 187, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 24, + "start_line": 187 + } + }, + "57": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 49, + "end_line": 196, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 196 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 42, + "end_line": 197, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 197 + } + }, + "59": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 198, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 23, + "start_line": 198 + } + }, + "61": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 198, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 22, + "start_line": 198 + } + }, + "62": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 198, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 198 + } + }, + "63": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 199, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 24, + "start_line": 199 + } + }, + "64": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 199, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 34, + "start_line": 199 + } + }, + "66": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 199, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 23, + "start_line": 199 + } + }, + "67": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 199, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 199 + } + }, + "68": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 188, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 15, + "end_line": 200, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 200 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 154 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 188 + } + }, + "70": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 200, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 200 + } + }, + "71": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 49, + "end_line": 204, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 204 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 50, + "end_line": 205, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 205 + } + }, + "73": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 206, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 21, + "start_line": 206 + } + }, + "75": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 206, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 20, + "start_line": 206 + } + }, + "76": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 207, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 22, + "start_line": 207 + } + }, + "77": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 207, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 207 + } + }, + "78": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 208, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 23, + "start_line": 208 + } + }, + "79": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 208, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 208 + } + }, + "80": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 188, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 15, + "end_line": 209, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 209 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 154 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 188 + } + }, + "82": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 209, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 209 + } + }, + "83": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 31, + "end_line": 213, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 213 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 24, + "end_line": 214, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 214 + } + }, + "84": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 215, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 28, + "start_line": 215 + } + }, + "85": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 215, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 23, + "start_line": 215 + } + }, + "86": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 215, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 215 + } + }, + "87": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 12, + "end_line": 216, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 216 + } + }, + "89": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 188, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 15, + "end_line": 217, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 217 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 154 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 188 + } + }, + "91": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 217, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 217 + } + }, + "92": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 243, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 243 + } + }, + "94": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 248, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 244 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 7, + "end_line": 249, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 249 + } + }, + "96": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 58, + "end_line": 250, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 39, + "start_line": 250 + } + }, + "98": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 251, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 29, + "start_line": 251 + } + }, + "100": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 252, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 9, + "start_line": 252 + } + }, + "101": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 254, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 9, + "start_line": 254 + } + }, + "102": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 256, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 9, + "start_line": 256 + } + }, + "103": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 257, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 242, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 22, + "end_line": 258, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 9, + "start_line": 258 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 242 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 31, + "start_line": 257 + } + }, + "105": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 242, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 258, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 16, + "start_line": 258 + }, + "While expanding the reference 'value' in:" + ], + "start_col": 33, + "start_line": 242 + } + }, + "106": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 22, + "end_line": 258, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 9, + "start_line": 258 + } + }, + "107": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 347, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 329 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 41, + "end_line": 327, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 348, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 349, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 20, + "start_line": 349 + }, + "While expanding the reference 'q' in:" + ], + "start_col": 13, + "start_line": 348 + }, + "While expanding the reference 'biased_q' in:" + ], + "start_col": 20, + "start_line": 327 + } + }, + "108": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 348, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 349, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 20, + "start_line": 349 + }, + "While expanding the reference 'q' in:" + ], + "start_col": 13, + "start_line": 348 + } + }, + "109": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 349, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 20, + "start_line": 349 + } + }, + "110": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 326, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 349, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 30, + "start_line": 349 + }, + "While expanding the reference 'r' in:" + ], + "start_col": 13, + "start_line": 326 + } + }, + "111": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 349, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 349 + } + }, + "112": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 328, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 350, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 350 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 328 + } + }, + "114": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 326, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 350, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 350 + }, + "While expanding the reference 'r' in:" + ], + "start_col": 13, + "start_line": 326 + } + }, + "115": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 350, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 18, + "start_line": 350 + } + }, + "117": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 350, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 350 + } + }, + "119": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 25, + "start_line": 351 + } + }, + "121": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 25, + "start_line": 351 + } + }, + "122": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 350, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 351 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 5, + "start_line": 350 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + } + }, + "123": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 327, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 15, + "start_line": 351 + }, + "While expanding the reference 'biased_q' in:" + ], + "start_col": 20, + "start_line": 327 + } + }, + "124": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 25, + "start_line": 351 + } + }, + "126": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 351 + } + }, + "128": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 327, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 348, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 14, + "end_line": 352, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 13, + "start_line": 352 + }, + "While expanding the reference 'q' in:" + ], + "start_col": 13, + "start_line": 348 + }, + "While expanding the reference 'biased_q' in:" + ], + "start_col": 20, + "start_line": 327 + } + }, + "129": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 53, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 351, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 352, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 352 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 5, + "start_line": 351 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + } + }, + "130": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 348, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 14, + "end_line": 352, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 13, + "start_line": 352 + }, + "While expanding the reference 'q' in:" + ], + "start_col": 13, + "start_line": 348 + } + }, + "131": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 326, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 352, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 16, + "start_line": 352 + }, + "While expanding the reference 'r' in:" + ], + "start_col": 13, + "start_line": 326 + } + }, + "132": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 352, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 352 + } + }, + "133": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 387, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 387 + } + }, + "135": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 7, + "end_line": 396, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 390 + }, + "n_prefix_newlines": 1 + } + ], + "inst": { + "end_col": 26, + "end_line": 386, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 34, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 398, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 398 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 70 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 386 + } + }, + "136": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 388, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 22, + "end_line": 398, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 18, + "start_line": 398 + }, + "While expanding the reference 'root' in:" + ], + "start_col": 11, + "start_line": 388 + } + }, + "137": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 398, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 24, + "start_line": 398 + } + }, + "139": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 398, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 398 + } + }, + "141": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 399, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 29, + "start_line": 399 + } + }, + "143": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 398, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 400, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 400 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 81 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 5, + "start_line": 398 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 70 + } + }, + "144": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 386, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 400, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 21, + "start_line": 400 + }, + "While expanding the reference 'value' in:" + ], + "start_col": 28, + "start_line": 386 + } + }, + "145": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 400, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 28, + "start_line": 400 + } + }, + "146": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 70, + "end_line": 400, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 41, + "start_line": 400 + } + }, + "147": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 400, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 400 + } + }, + "149": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 388, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 402, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 12, + "start_line": 402 + }, + "While expanding the reference 'root' in:" + ], + "start_col": 11, + "start_line": 388 + } + }, + "150": { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 402, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "start_col": 5, + "start_line": 402 + } + }, + "151": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 84, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 19 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 40, + "end_line": 20, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 20 + } + }, + "153": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 21 + } + }, + "154": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 22 + } + }, + "156": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 23, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 14, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 24 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 23 + } + }, + "158": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 12, + "start_line": 24 + } + }, + "160": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 24 + } + }, + "161": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 91, + "end_line": 27, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 27 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 48, + "end_line": 28, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 28 + } + }, + "163": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 33, + "start_line": 29 + } + }, + "165": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 32, + "start_line": 29 + } + }, + "167": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 29 + } + }, + "168": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 30, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 30 + } + }, + "170": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 31, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 14, + "end_line": 32, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 32 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 31 + } + }, + "172": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 32, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 12, + "start_line": 32 + } + }, + "174": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 32, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 32 + } + }, + "175": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 35 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 154 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + } + }, + "176": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 20, + "start_line": 35 + } + }, + "178": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 30, + "start_line": 35 + }, + "While expanding the reference 'a' in:" + ], + "start_col": 29, + "start_line": 18 + } + }, + "179": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 35 + } + }, + "181": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 12, + "start_line": 36 + } + }, + "183": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 36 + } + }, + "184": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 24, + "end_line": 43, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 12, + "start_line": 43 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "185": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 43, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 18, + "start_line": 43 + } + }, + "186": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 43, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 12, + "start_line": 43 + } + }, + "188": { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_le" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 43, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "start_col": 5, + "start_line": 43 + } + }, + "189": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 386, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 24, + "end_line": 12, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 14, + "start_line": 12 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 386 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + } + }, + "190": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 12, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 19, + "start_line": 12 + }, + "While expanding the reference 'x_fp' in:" + ], + "start_col": 31, + "start_line": 11 + } + }, + "191": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 12, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 14, + "start_line": 12 + } + }, + "193": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 386, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 24, + "end_line": 12, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 14 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 12 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 386 + } + }, + "194": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 13, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 12, + "start_line": 14 + }, + "While expanding the reference 'y_fp' in:" + ], + "start_col": 16, + "start_line": 13 + } + }, + "196": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sqrt_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 14 + } + }, + "197": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 20, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 23, + "start_line": 20 + } + }, + "198": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 73, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 21 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "199": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 20, + "end_line": 20, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 43, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 36, + "start_line": 21 + }, + "While expanding the reference 'product' in:" + ], + "start_col": 13, + "start_line": 20 + } + }, + "200": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 45, + "start_line": 21 + } + }, + "202": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 72, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 55, + "start_line": 21 + } + }, + "204": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 73, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 21 + } + }, + "206": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 73, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 22 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 21 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + } + }, + "207": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 12, + "start_line": 22 + }, + "While expanding the reference 'c_fp' in:" + ], + "start_col": 10, + "start_line": 21 + } + }, + "208": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 22 + } + }, + "209": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 28, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 24, + "start_line": 28 + } + }, + "211": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 70, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 29 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + } + }, + "212": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 28, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 44, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 36, + "start_line": 29 + }, + "While expanding the reference 'a_scaled' in:" + ], + "start_col": 13, + "start_line": 28 + } + }, + "213": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 46, + "start_line": 29 + }, + "While expanding the reference 'b_fp' in:" + ], + "start_col": 42, + "start_line": 26 + } + }, + "214": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 52, + "start_line": 29 + } + }, + "216": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 70, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 29 + } + }, + "218": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 70, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 30, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 30 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 29 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + } + }, + "219": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 29, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 30, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 12, + "start_line": 30 + }, + "While expanding the reference 'c_fp' in:" + ], + "start_col": 10, + "start_line": 29 + } + }, + "220": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 30, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 30 + } + }, + "221": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 34, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 34, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 36 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 34 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 34 + } + }, + "222": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 12, + "start_line": 36 + }, + "While expanding the reference 'c_fp' in:" + ], + "start_col": 16, + "start_line": 35 + } + }, + "223": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.mul_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 36 + } + }, + "224": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 41 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "225": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 40, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 36, + "start_line": 41 + }, + "While expanding the reference 'a_fp' in:" + ], + "start_col": 34, + "start_line": 40 + } + }, + "226": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 43, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 41 + }, + "While expanding the reference 'b' in:" + ], + "start_col": 46, + "start_line": 40 + } + }, + "227": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 62, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 45, + "start_line": 41 + } + }, + "229": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 41 + } + }, + "231": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 42 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 41 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 325 + } + }, + "232": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 14, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'c_fp' in:" + ], + "start_col": 10, + "start_line": 41 + } + }, + "233": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 42 + } + }, + "234": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 70 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + } + }, + "235": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 70 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 66 + } + }, + "236": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 47, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 70 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 66 + } + }, + "237": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 70 + } + }, + "239": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 71 + }, + "While expanding the reference 'theta_2_fp' in:" + ], + "start_col": 9, + "start_line": 70 + } + }, + "240": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 71 + } + }, + "242": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 72 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 71 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "243": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 72 + }, + "While expanding the reference 'theta_2_fp' in:" + ], + "start_col": 9, + "start_line": 70 + } + }, + "244": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 72 + }, + "While expanding the reference 'theta_4_fp' in:" + ], + "start_col": 9, + "start_line": 71 + } + }, + "245": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 72 + } + }, + "247": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 73 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 72 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "248": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 73 + }, + "While expanding the reference 'theta_2_fp' in:" + ], + "start_col": 9, + "start_line": 70 + } + }, + "249": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 73 + }, + "While expanding the reference 'theta_6_fp' in:" + ], + "start_col": 9, + "start_line": 72 + } + }, + "250": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 73 + } + }, + "252": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 75, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 75 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 73 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "253": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 75, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 38, + "start_line": 75 + }, + "While expanding the reference 'theta_2_fp' in:" + ], + "start_col": 9, + "start_line": 70 + } + }, + "254": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 75, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 50, + "start_line": 75 + } + }, + "256": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 75, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 75 + } + }, + "258": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 75, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 76, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 28, + "start_line": 76 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 75 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "259": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 71, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 76, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 76 + }, + "While expanding the reference 'theta_4_fp' in:" + ], + "start_col": 9, + "start_line": 71 + } + }, + "260": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 76, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 51, + "start_line": 76 + } + }, + "262": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 76, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 28, + "start_line": 76 + } + }, + "264": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 76, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 77, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 77 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 28, + "start_line": 76 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "265": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 72, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 77, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 40, + "start_line": 77 + }, + "While expanding the reference 'theta_6_fp' in:" + ], + "start_col": 9, + "start_line": 72 + } + }, + "266": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 55, + "end_line": 77, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 52, + "start_line": 77 + } + }, + "268": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 56, + "end_line": 77, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 77 + } + }, + "270": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 77, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 31, + "start_line": 78 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 29, + "start_line": 77 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "271": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 73, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 78 + }, + "While expanding the reference 'theta_8_fp' in:" + ], + "start_col": 9, + "start_line": 73 + } + }, + "272": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 54, + "start_line": 78 + } + }, + "274": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 60, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 31, + "start_line": 78 + } + }, + "276": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 80, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 80 + } + }, + "278": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 80, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 80 + } + }, + "279": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 80, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 80 + } + }, + "280": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 89, + "end_line": 80, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 80 + } + }, + "281": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 82 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 31, + "start_line": 78 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "282": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 111, + "end_line": 80, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 82 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 80 + } + }, + "283": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 82, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 82 + } + }, + "284": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 115, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 115 + } + }, + "286": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 116, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 116 + } + }, + "287": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 116, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 44, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 17, + "start_line": 118 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 116 + } + }, + "288": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 23, + "start_line": 118 + } + }, + "290": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 43, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 35, + "start_line": 118 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 114 + } + }, + "291": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 17, + "start_line": 118 + } + }, + "293": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 119, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 119 + } + }, + "295": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 119, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 119 + } + }, + "297": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 121, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 123, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 52, + "start_line": 123 + }, + "While expanding the reference 'theta_moved_fp' in:" + ], + "start_col": 30, + "start_line": 121 + } + }, + "299": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 44, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 67, + "end_line": 123, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 38, + "start_line": 123 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 118 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "300": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 121, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 123, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 52, + "start_line": 123 + }, + "While expanding the reference 'theta_moved_fp' in:" + ], + "start_col": 30, + "start_line": 121 + } + }, + "301": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 67, + "end_line": 123, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 38, + "start_line": 123 + } + }, + "303": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 124, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 32, + "start_line": 124 + } + }, + "305": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 67, + "end_line": 123, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 125, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 35, + "start_line": 125 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 38, + "start_line": 123 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + } + }, + "306": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 119, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 119 + } + }, + "308": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 44, + "end_line": 118, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 128 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 118 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "309": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 128 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 114 + } + }, + "310": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 37, + "start_line": 128 + } + }, + "312": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 128 + } + }, + "314": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 13, + "start_line": 129 + } + }, + "316": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 129 + } + }, + "318": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 131, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 70, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 56, + "start_line": 133 + }, + "While expanding the reference 'theta_moved_fp' in:" + ], + "start_col": 34, + "start_line": 131 + } + }, + "320": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 133 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 128 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "321": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 131, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 70, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 56, + "start_line": 133 + }, + "While expanding the reference 'theta_moved_fp' in:" + ], + "start_col": 34, + "start_line": 131 + } + }, + "322": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 133 + } + }, + "324": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 57, + "end_line": 134, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 36, + "start_line": 134 + } + }, + "326": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 135, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 135 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 42, + "start_line": 133 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + } + }, + "327": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 129 + } + }, + "329": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 128, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 62, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 140 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 128 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "330": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 61, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 53, + "start_line": 140 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 114 + } + }, + "331": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 62, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 140 + } + }, + "333": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 62, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 143, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 143 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 39, + "start_line": 140 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 66 + } + }, + "334": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 142, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 147, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 26, + "start_line": 147 + }, + "While expanding the reference 'cos_theta_fp' in:" + ], + "start_col": 21, + "start_line": 142 + } + }, + "335": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 147, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 147 + } + }, + "336": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 38, + "end_line": 3, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 3 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 18, + "end_line": 4, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 4 + } + }, + "338": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo" + }, + "parent_location": [ + { + "end_col": 75, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 57, + "start_line": 114 + }, + "While handling return value 'cos_theta_fp'" + ], + "start_col": 1, + "start_line": 1 + } + }, + "339": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo" + }, + "parent_location": [ + { + "end_col": 75, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 11, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 18, + "start_line": 11 + }, + "While expanding the reference '__return_value_ptr' in:" + ], + "start_col": 57, + "start_line": 114 + }, + "While handling return value 'cos_theta_fp'" + ], + "start_col": 26, + "start_line": 2 + } + }, + "341": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 82, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 40, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 25, + "start_line": 10 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 67, + "start_line": 1 + } + }, + "342": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 11, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 18, + "start_line": 11 + } + }, + "343": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 5, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 14, + "start_line": 12 + }, + "While expanding the reference '__return_value_ptr_start' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 11, + "start_line": 5 + } + }, + "344": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 9 + } + }, + "345": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 45, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/c31620b02d4d706f0542c989b2aadc01b0981d1f6a5933a8fe4937ace3d70d92.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 57, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling calldata of" + ], + "start_col": 35, + "start_line": 1 + }, + "While expanding the reference '__calldata_actual_size' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While handling calldata of" + ], + "start_col": 31, + "start_line": 1 + }, + "While expanding the reference '__calldata_ptr' in:" + ], + "start_col": 37, + "start_line": 114 + }, + "While handling calldata argument 'theta_fp'" + ], + "start_col": 22, + "start_line": 2 + } + }, + "347": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 58, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While handling calldata of" + ], + "start_col": 1, + "start_line": 1 + } + }, + "348": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 67, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 1 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 23, + "start_line": 1 + } + }, + "349": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 47, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 97, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 74, + "start_line": 1 + }, + "While expanding the reference '__calldata_arg_theta_fp' in:" + ], + "start_col": 37, + "start_line": 114 + }, + "While handling calldata argument 'theta_fp'" + ], + "start_col": 31, + "start_line": 1 + } + }, + "350": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + } + }, + "352": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 102, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 87, + "start_line": 2 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 1 + } + }, + "353": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 103, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 2 + } + }, + "355": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 20, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 9, + "start_line": 1 + }, + "While expanding the reference 'syscall_ptr' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 19, + "start_line": 1 + } + }, + "356": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 21, + "start_line": 1 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 6, + "start_line": 2 + } + }, + "357": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 37, + "start_line": 1 + }, + "While expanding the reference 'retdata_size' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 23, + "start_line": 2 + } + }, + "358": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 57, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 50, + "start_line": 1 + }, + "While expanding the reference 'retdata' in:" + ], + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 37, + "start_line": 2 + } + }, + "359": { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 6, + "start_line": 114 + }, + "While constructing the external wrapper for:" + ], + "start_col": 1, + "start_line": 1 + } + }, + "360": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 153, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 153 + } + }, + "362": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 154 + } + }, + "363": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 154, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 156, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 32, + "start_line": 156 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 154 + } + }, + "364": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 152, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 156, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 156 + }, + "While expanding the reference 'cos_theta_fp' in:" + ], + "start_col": 51, + "start_line": 152 + } + }, + "365": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 152, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 65, + "end_line": 156, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 53, + "start_line": 156 + }, + "While expanding the reference 'cos_theta_fp' in:" + ], + "start_col": 51, + "start_line": 152 + } + }, + "366": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 66, + "end_line": 156, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 32, + "start_line": 156 + } + }, + "368": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 157, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 24, + "start_line": 158 + }, + "While expanding the reference 'diff_fp' in:" + ], + "start_col": 19, + "start_line": 157 + } + }, + "370": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 156, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 16, + "start_line": 158 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 32, + "start_line": 156 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "371": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 157, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 24, + "start_line": 158 + }, + "While expanding the reference 'diff_fp' in:" + ], + "start_col": 19, + "start_line": 157 + } + }, + "372": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 16, + "start_line": 158 + } + }, + "374": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 160, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 16, + "start_line": 160 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 158 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + } + }, + "375": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 152, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 160, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 160 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 35, + "start_line": 152 + } + }, + "376": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 160, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 16, + "start_line": 160 + } + }, + "378": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 161, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 161 + } + }, + "380": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 161, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 161 + } + }, + "382": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 13, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 163, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 32, + "start_line": 163 + }, + "While expanding the reference 'root' in:" + ], + "start_col": 9, + "start_line": 158 + } + }, + "383": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 160, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 164, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 35, + "start_line": 164 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 160 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + } + }, + "384": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 161, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 161 + } + }, + "386": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 167, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 32, + "start_line": 167 + } + }, + "388": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 160, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 168, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 35, + "start_line": 168 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 160 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + } + }, + "389": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 167, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 171, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 26, + "start_line": 171 + }, + "While expanding the reference 'sin_theta_fp' in:" + ], + "start_col": 17, + "start_line": 167 + } + }, + "390": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.sine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 171, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 171 + } + }, + "391": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 15, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 15 + } + }, + "393": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 16, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 16 + } + }, + "394": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 16, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 27, + "start_line": 19 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 16 + } + }, + "395": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 86, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 41, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 34, + "start_line": 19 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 73, + "start_line": 14 + } + }, + "396": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 86, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 43, + "start_line": 19 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 73, + "start_line": 14 + } + }, + "397": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 27, + "start_line": 19 + } + }, + "399": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 19, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 28, + "start_line": 21 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 19 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "400": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 35, + "start_line": 21 + } + }, + "402": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 43, + "end_line": 20, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 55, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 41, + "start_line": 21 + }, + "While expanding the reference 'delta_y_max_fp' in:" + ], + "start_col": 26, + "start_line": 20 + } + }, + "404": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 56, + "end_line": 21, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 28, + "start_line": 21 + } + }, + "406": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 62, + "start_line": 22 + } + }, + "408": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 64, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 32, + "start_line": 22 + } + }, + "410": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 34, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 64, + "end_line": 22, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 19, + "start_line": 24 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 32, + "start_line": 22 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 34 + } + }, + "411": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 57, + "end_line": 23, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 34, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 27, + "start_line": 24 + }, + "While expanding the reference 'diff_fp' in:" + ], + "start_col": 19, + "start_line": 23 + } + }, + "412": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 19, + "start_line": 24 + } + }, + "414": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 11, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 24, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 22, + "start_line": 26 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 24 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 14, + "start_line": 11 + } + }, + "415": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 25, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 29, + "start_line": 26 + }, + "While expanding the reference 'sum_fp' in:" + ], + "start_col": 18, + "start_line": 25 + } + }, + "416": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 37, + "start_line": 26 + } + }, + "418": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 22, + "start_line": 26 + } + }, + "420": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 242, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 55, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 33, + "start_line": 35 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 242 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 26 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + } + }, + "421": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 56, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 43, + "start_line": 35 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 39, + "start_line": 14 + } + }, + "422": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 55, + "end_line": 35, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 33, + "start_line": 35 + } + }, + "424": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 46, + "start_line": 36 + } + }, + "426": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 17, + "start_line": 36 + } + }, + "428": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 37, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 9, + "start_line": 37 + } + }, + "430": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 37, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 37 + } + }, + "432": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 39, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 13, + "start_line": 39 + } + }, + "434": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 39, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 9, + "start_line": 39 + } + }, + "436": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 41, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 32, + "start_line": 41 + }, + "While expanding the reference 't_max_y_fp' in:" + ], + "start_col": 9, + "start_line": 26 + } + }, + "437": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 39, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 36 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "438": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 39, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 9, + "start_line": 39 + } + }, + "440": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 61, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 30, + "start_line": 47 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 36 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "441": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 51, + "end_line": 46, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 37, + "start_line": 47 + }, + "While expanding the reference 'delta_x_max_fp' in:" + ], + "start_col": 34, + "start_line": 46 + } + }, + "443": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 53, + "start_line": 47 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 58, + "start_line": 14 + } + }, + "444": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 61, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 30, + "start_line": 47 + } + }, + "446": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 42, + "start_line": 49 + }, + "While expanding the reference 't_max_y_fp' in:" + ], + "start_col": 9, + "start_line": 26 + } + }, + "447": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 25, + "start_line": 49 + } + }, + "449": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 50, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 17, + "start_line": 50 + } + }, + "451": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 50, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 13, + "start_line": 50 + } + }, + "453": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 46, + "end_line": 51, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 36, + "start_line": 51 + }, + "While expanding the reference 't_max_x_fp' in:" + ], + "start_col": 17, + "start_line": 47 + } + }, + "454": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 58, + "end_line": 52, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 43, + "start_line": 52 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 25, + "start_line": 49 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "455": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 50, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 13, + "start_line": 50 + } + }, + "457": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 46, + "end_line": 54, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 36, + "start_line": 54 + }, + "While expanding the reference 't_max_y_fp' in:" + ], + "start_col": 9, + "start_line": 26 + } + }, + "458": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 58, + "end_line": 55, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 43, + "start_line": 55 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 25, + "start_line": 49 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "459": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 37, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 37 + } + }, + "461": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 57, + "end_line": 62, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 26, + "start_line": 62 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 36 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "462": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 47, + "end_line": 61, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 47, + "end_line": 62, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 33, + "start_line": 62 + }, + "While expanding the reference 'delta_x_max_fp' in:" + ], + "start_col": 30, + "start_line": 61 + } + }, + "464": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 62, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 49, + "start_line": 62 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 58, + "start_line": 14 + } + }, + "465": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 57, + "end_line": 62, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 26, + "start_line": 62 + } + }, + "467": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 63, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 38, + "start_line": 63 + }, + "While expanding the reference 't_max_y_fp' in:" + ], + "start_col": 9, + "start_line": 26 + } + }, + "468": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 63, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 21, + "start_line": 63 + } + }, + "470": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 65, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 13, + "start_line": 65 + } + }, + "472": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 65, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 9, + "start_line": 65 + } + }, + "474": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 62, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 66, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 32, + "start_line": 66 + }, + "While expanding the reference 't_max_x_fp' in:" + ], + "start_col": 13, + "start_line": 62 + } + }, + "475": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 63, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 67, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 39, + "start_line": 67 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 63 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "476": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 65, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 9, + "start_line": 65 + } + }, + "478": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 69, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 32, + "start_line": 69 + }, + "While expanding the reference 't_max_y_fp' in:" + ], + "start_col": 9, + "start_line": 26 + } + }, + "479": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 63, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 70, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 39, + "start_line": 70 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 63 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "480": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 69, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 20, + "end_line": 74, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 12, + "start_line": 74 + }, + "While expanding the reference 't_max_fp' in:" + ], + "start_col": 21, + "start_line": 69 + } + }, + "481": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.time_in_plot_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 74, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 74 + } + }, + "482": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.x_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 21, + "start_line": 79 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 78 + } + }, + "483": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.x_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 47, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 28, + "start_line": 79 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 34, + "start_line": 78 + } + }, + "484": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.x_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 41, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 37, + "start_line": 79 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 49, + "start_line": 78 + } + }, + "485": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.x_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 21, + "start_line": 79 + } + }, + "487": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.x_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 81, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 81 + } + }, + "488": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 21, + "start_line": 86 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 85 + } + }, + "489": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 47, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 28, + "start_line": 86 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 34, + "start_line": 85 + } + }, + "490": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 41, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 37, + "start_line": 86 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 49, + "start_line": 85 + } + }, + "491": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 21, + "start_line": 86 + } + }, + "493": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 24, + "start_line": 87 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 21, + "start_line": 86 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "494": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 31, + "start_line": 87 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 49, + "start_line": 85 + } + }, + "495": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 41, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 37, + "start_line": 87 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 49, + "start_line": 85 + } + }, + "496": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 24, + "start_line": 87 + } + }, + "498": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 88, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 26, + "start_line": 88 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 24, + "start_line": 87 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "499": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 88, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 33, + "start_line": 88 + } + }, + "501": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 87, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 88, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 39, + "start_line": 88 + }, + "While expanding the reference 't_squared_fp' in:" + ], + "start_col": 9, + "start_line": 87 + } + }, + "502": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 88, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 26, + "start_line": 88 + } + }, + "504": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 89, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 58, + "start_line": 89 + } + }, + "506": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 60, + "end_line": 89, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 31, + "start_line": 89 + } + }, + "508": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 89, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 17, + "end_line": 91, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 91 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 85 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 31, + "start_line": 89 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "509": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 56, + "end_line": 90, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 91, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 12, + "start_line": 91 + }, + "While expanding the reference 'y_fp' in:" + ], + "start_col": 16, + "start_line": 90 + } + }, + "510": { + "accessible_scopes": [ + "contracts.physics", + "contracts.physics.y_value_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 17, + "end_line": 91, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "start_col": 5, + "start_line": 91 + } + }, + "511": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 20, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 20 + } + }, + "513": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 21, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 21 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + } + }, + "514": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 21, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 21 + } + }, + "515": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 111, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 25 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + } + }, + "516": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 25 + } + }, + "518": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 72, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 46, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 39, + "start_line": 25 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 59, + "start_line": 17 + } + }, + "519": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 87, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 55, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 48, + "start_line": 25 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 74, + "start_line": 17 + } + }, + "520": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 105, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 67, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 57, + "start_line": 25 + }, + "While expanding the reference 'delta_t_fp' in:" + ], + "start_col": 89, + "start_line": 17 + } + }, + "521": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 86, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 69, + "start_line": 25 + } + }, + "522": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 98, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 88, + "start_line": 25 + } + }, + "524": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 110, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 100, + "start_line": 25 + } + }, + "526": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 111, + "end_line": 25, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 25 + } + }, + "528": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 72, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 28, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 35, + "start_line": 28 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 59, + "start_line": 17 + } + }, + "529": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 117, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 28, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 44, + "start_line": 28 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 107, + "start_line": 17 + } + }, + "530": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 28, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 28 + } + }, + "532": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 28, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 28 + } + }, + "533": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 78, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 28, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 29 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 85 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 24, + "start_line": 28 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 78 + } + }, + "534": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 87, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 35, + "start_line": 29 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 74, + "start_line": 17 + } + }, + "535": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 117, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 44, + "start_line": 29 + }, + "While expanding the reference 't_fp' in:" + ], + "start_col": 107, + "start_line": 17 + } + }, + "536": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 29 + } + }, + "538": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 29 + } + }, + "539": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 29, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 15, + "end_line": 31, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 31 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 24, + "start_line": 29 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 85 + } + }, + "540": { + "accessible_scopes": [ + "__main__", + "__main__.position_fp_s_filler" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 31, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 31 + } + }, + "541": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 41, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 41 + } + }, + "543": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 33, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 45 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 38 + } + }, + "544": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 45 + } + }, + "546": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 25, + "start_line": 45 + }, + "While expanding the reference 'num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + } + }, + "547": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 45 + } + }, + "549": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 37, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 36, + "start_line": 45 + } + }, + "551": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 45 + } + }, + "552": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 33, + "end_line": 45, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 34, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 48 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 45 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "553": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 48 + }, + "While expanding the reference 'num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + } + }, + "554": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 31, + "start_line": 48 + } + }, + "556": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 48 + } + }, + "558": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 37, + "start_line": 48 + } + }, + "560": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 48 + } + }, + "561": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 34, + "end_line": 48, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 31, + "end_line": 242, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 41, + "start_line": 52 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 242 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 48 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "562": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 62, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 51, + "start_line": 52 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 54, + "start_line": 38 + } + }, + "563": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 41, + "start_line": 52 + } + }, + "565": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 53, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 45, + "start_line": 53 + } + }, + "567": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 53, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 53 + } + }, + "569": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 53, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 52, + "start_line": 53 + } + }, + "571": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 53, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 53 + } + }, + "572": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 53, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 57 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 53 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "573": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 82, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 25, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 57 + }, + "While expanding the reference 'v_0' in:" + ], + "start_col": 73, + "start_line": 38 + } + }, + "574": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 57 + } + }, + "576": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 29, + "start_line": 57 + } + }, + "578": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 31, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 57 + } + }, + "579": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 26, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 66 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 57 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + } + }, + "580": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 33, + "start_line": 66 + } + }, + "582": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 65, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 40, + "start_line": 66 + }, + "While expanding the reference 'PI_in_deg_fp' in:" + ], + "start_col": 24, + "start_line": 65 + } + }, + "584": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 66 + } + }, + "586": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 26, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 67 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 26, + "start_line": 66 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 + } + }, + "587": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 61, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 43, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 29, + "start_line": 67 + }, + "While expanding the reference 'theta_0_deg_fp' in:" + ], + "start_col": 26, + "start_line": 61 + } + }, + "589": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 66, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 59, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 45, + "start_line": 67 + }, + "While expanding the reference 'pi_over_180_fp' in:" + ], + "start_col": 9, + "start_line": 66 + } + }, + "590": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 60, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 67 + } + }, + "592": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 67 + }, + "While auto generating local variable for 'theta_0_fp'." + ], + "start_col": 9, + "start_line": 67 + } + }, + "593": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 60, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 28, + "start_line": 70 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 114 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 67 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "594": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 42, + "start_line": 70 + }, + "While expanding the reference 'theta_0_fp' in:" + ], + "start_col": 9, + "start_line": 67 + }, + "While auto generating local variable for 'theta_0_fp'." + ], + "start_col": 9, + "start_line": 67 + } + }, + "595": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 28, + "start_line": 70 + } + }, + "597": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 33, + "end_line": 152, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 67, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 28, + "start_line": 71 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 18, + "start_line": 152 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 28, + "start_line": 70 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 114 + } + }, + "598": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 19, + "end_line": 67, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 40, + "start_line": 71 + }, + "While expanding the reference 'theta_0_fp' in:" + ], + "start_col": 9, + "start_line": 67 + }, + "While auto generating local variable for 'theta_0_fp'." + ], + "start_col": 9, + "start_line": 67 + } + }, + "599": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 52, + "start_line": 71 + }, + "While expanding the reference 'cos_theta_0_fp' in:" + ], + "start_col": 10, + "start_line": 70 + } + }, + "600": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 67, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 28, + "start_line": 71 + } + }, + "602": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 33, + "end_line": 152, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 67, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 19, + "start_line": 74 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 28, + "start_line": 71 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 18, + "start_line": 152 + } + }, + "603": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 62, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 74 + }, + "While expanding the reference 'v_0_fp' in:" + ], + "start_col": 18, + "start_line": 62 + } + }, + "605": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 70, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 34, + "start_line": 74 + }, + "While expanding the reference 'cos_theta_0_fp' in:" + ], + "start_col": 10, + "start_line": 70 + } + }, + "606": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 19, + "start_line": 74 + } + }, + "608": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 74 + }, + "While auto generating local variable for 'v_0x_fp'." + ], + "start_col": 9, + "start_line": 74 + } + }, + "609": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 19, + "start_line": 75 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 74 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "610": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 62, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 75 + }, + "While expanding the reference 'v_0_fp' in:" + ], + "start_col": 18, + "start_line": 62 + } + }, + "612": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 24, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 34, + "start_line": 75 + }, + "While expanding the reference 'sin_theta_0_fp' in:" + ], + "start_col": 10, + "start_line": 71 + } + }, + "613": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 19, + "start_line": 75 + } + }, + "615": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 75 + }, + "While auto generating local variable for 'v_0y_fp'." + ], + "start_col": 9, + "start_line": 75 + } + }, + "616": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 14, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" + }, + "parent_location": [ + { + "end_col": 66, + "end_line": 78, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 20, + "start_line": 78 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 14 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 19, + "start_line": 75 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + } + }, + "617": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 47, + "end_line": 78, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 36, + "start_line": 78 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 54, + "start_line": 38 + } + }, + "618": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 78, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 49, + "start_line": 78 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 9, + "start_line": 74 + }, + "While auto generating local variable for 'v_0x_fp'." + ], + "start_col": 9, + "start_line": 74 + } + }, + "619": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 65, + "end_line": 78, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 78 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 9, + "start_line": 75 + }, + "While auto generating local variable for 'v_0y_fp'." + ], + "start_col": 9, + "start_line": 75 + } + }, + "620": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 66, + "end_line": 78, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 20, + "start_line": 78 + } + }, + "622": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 81, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 43, + "start_line": 81 + } + }, + "624": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 55, + "end_line": 81, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 81 + } + }, + "626": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 27, + "start_line": 88 + } + }, + "628": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 10, + "start_line": 88 + }, + "While auto generating local variable for 'x_fp_s'." + ], + "start_col": 10, + "start_line": 88 + } + }, + "629": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 27, + "start_line": 89 + } + }, + "631": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 10, + "start_line": 89 + }, + "While auto generating local variable for 'y_fp_s'." + ], + "start_col": 10, + "start_line": 89 + } + }, + "632": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 40, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 55, + "end_line": 81, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 17, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 88, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 92 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 27, + "start_line": 17 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 81 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 40 + } + }, + "633": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 33, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 26, + "start_line": 92 + }, + "While expanding the reference 'num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + } + }, + "634": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 74, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 42, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 35, + "start_line": 92 + }, + "While expanding the reference 'v_0x_fp' in:" + ], + "start_col": 9, + "start_line": 74 + }, + "While auto generating local variable for 'v_0x_fp'." + ], + "start_col": 9, + "start_line": 74 + } + }, + "635": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 16, + "end_line": 75, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 51, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 44, + "start_line": 92 + }, + "While expanding the reference 'v_0y_fp' in:" + ], + "start_col": 9, + "start_line": 75 + }, + "While auto generating local variable for 'v_0y_fp'." + ], + "start_col": 9, + "start_line": 75 + } + }, + "636": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 81, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 53, + "start_line": 92 + }, + "While expanding the reference 'delta_t_fp' in:" + ], + "start_col": 9, + "start_line": 81 + } + }, + "637": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 84, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 65, + "start_line": 92 + }, + "While expanding the reference 't_0_fp' in:" + ], + "start_col": 18, + "start_line": 84 + } + }, + "639": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 79, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 73, + "start_line": 92 + }, + "While expanding the reference 'x_fp_s' in:" + ], + "start_col": 10, + "start_line": 88 + }, + "While auto generating local variable for 'x_fp_s'." + ], + "start_col": 10, + "start_line": 88 + } + }, + "640": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 87, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 81, + "start_line": 92 + }, + "While expanding the reference 'y_fp_s' in:" + ], + "start_col": 10, + "start_line": 89 + }, + "While auto generating local variable for 'y_fp_s'." + ], + "start_col": 10, + "start_line": 89 + } + }, + "641": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 88, + "end_line": 92, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 92 + } + }, + "643": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 95, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 34, + "end_line": 98, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 98 + }, + "While expanding the reference 'x_fp_s_len' in:" + ], + "start_col": 22, + "start_line": 95 + }, + "While expanding the reference 'num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + } + }, + "644": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 88, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 50, + "end_line": 98, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 44, + "start_line": 98 + }, + "While expanding the reference 'x_fp_s' in:" + ], + "start_col": 10, + "start_line": 88 + }, + "While auto generating local variable for 'x_fp_s'." + ], + "start_col": 10, + "start_line": 88 + } + }, + "645": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 29, + "end_line": 96, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 73, + "end_line": 98, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 63, + "start_line": 98 + }, + "While expanding the reference 'y_fp_s_len' in:" + ], + "start_col": 22, + "start_line": 96 + }, + "While expanding the reference 'num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + } + }, + "646": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 23, + "end_line": 89, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 88, + "end_line": 98, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 82, + "start_line": 98 + }, + "While expanding the reference 'y_fp_s' in:" + ], + "start_col": 10, + "start_line": 89 + }, + "While auto generating local variable for 'y_fp_s'." + ], + "start_col": 10, + "start_line": 89 + } + }, + "647": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 90, + "end_line": 98, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 98 + } + }, + "648": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [ + { + "location": { + "end_col": 38, + "end_line": 3, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 3 + }, + "n_prefix_newlines": 0 + } + ], + "inst": { + "end_col": 18, + "end_line": 4, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 4 + } + }, + "650": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/49503690c9800a7192f4fee865f0a3cf7509eae82929a7159aacfcb1b52a3cd6.cairo" + }, + "parent_location": [ + { + "end_col": 22, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 5, + "start_line": 39 + }, + "While handling return value 'x_fp_s_len'" + ], + "start_col": 1, + "start_line": 1 + } + }, + "651": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 1, + "start_line": 2 + } + }, + "652": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 5, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 1, + "start_line": 5 + } + }, + "654": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/49503690c9800a7192f4fee865f0a3cf7509eae82929a7159aacfcb1b52a3cd6.cairo" + }, + "parent_location": [ + { + "end_col": 22, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 35, + "start_line": 10 + }, + "While expanding the reference '__return_value_ptr' in:" + ], + "start_col": 5, + "start_line": 39 + }, + "While handling return value 'x_fp_s_len'" + ], + "start_col": 26, + "start_line": 2 + } + }, + "656": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 81, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 1, + "start_line": 10 + } + }, + "657": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/49503690c9800a7192f4fee865f0a3cf7509eae82929a7159aacfcb1b52a3cd6.cairo" + }, + "parent_location": [ + { + "end_col": 22, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 7, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 9, + "start_line": 12 + }, + "While expanding the reference '__return_value_ptr_copy' in:" + ], + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 31, + "start_line": 7 + }, + "While expanding the reference '__return_value_ptr' in:" + ], + "start_col": 5, + "start_line": 39 + }, + "While handling return value 'x_fp_s_len'" + ], + "start_col": 26, + "start_line": 2 + } + }, + "659": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 13, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 9, + "start_line": 13 + } + }, + "660": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 14, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 9, + "start_line": 14 + } + }, + "661": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 14, + "input_file": { + "filename": "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 24, + "start_line": 39 + }, + "While handling return value 'x_fp_s'" + ], + "start_col": 1, + "start_line": 11 + } + }, + "663": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/5fffe1ed5734d91b22dde2a81cd68aed70637565ea43d46429271514008fcbdf.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 39, + "start_line": 39 + }, + "While handling return value 'y_fp_s_len'" + ], + "start_col": 1, + "start_line": 1 + } + }, + "664": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 49, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 1, + "start_line": 2 + } + }, + "665": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 5, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 1, + "start_line": 5 + } + }, + "667": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/5fffe1ed5734d91b22dde2a81cd68aed70637565ea43d46429271514008fcbdf.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 53, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 35, + "start_line": 10 + }, + "While expanding the reference '__return_value_ptr' in:" + ], + "start_col": 39, + "start_line": 39 + }, + "While handling return value 'y_fp_s_len'" + ], + "start_col": 26, + "start_line": 2 + } + }, + "669": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 81, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 1, + "start_line": 10 + } + }, + "670": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/5fffe1ed5734d91b22dde2a81cd68aed70637565ea43d46429271514008fcbdf.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 7, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 9, + "start_line": 12 + }, + "While expanding the reference '__return_value_ptr_copy' in:" + ], + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 31, + "start_line": 7 + }, + "While expanding the reference '__return_value_ptr' in:" + ], + "start_col": 39, + "start_line": 39 + }, + "While handling return value 'y_fp_s_len'" + ], + "start_col": 26, + "start_line": 2 + } + }, + "672": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 13, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 9, + "start_line": 13 + } + }, + "673": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 29, + "end_line": 14, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 9, + "start_line": 14 + } + }, + "674": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 34, + "end_line": 14, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 1, + "start_line": 11 + } + }, + "676": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 22, + "end_line": 5, + "input_file": { + "filename": "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 39, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 40, + "end_line": 10, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 25, + "start_line": 10 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 58, + "start_line": 39 + }, + "While handling return value 'y_fp_s'" + ], + "start_col": 7, + "start_line": 5 + } + }, + "677": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 11, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 18, + "start_line": 11 + } + }, + "678": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 5, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 14, + "start_line": 12 + }, + "While expanding the reference '__return_value_ptr_start' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 11, + "start_line": 5 + } + }, + "679": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 12, + "input_file": { + "filename": "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling return value of" + ], + "start_col": 5, + "start_line": 9 + } + }, + "680": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/5009e69acb9f1df6a2d62a28c7e96edb5c98f51f19cdfb65aeddcfd211ca1a93.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 5, + "start_line": 2 + } + }, + "682": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 40, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/arg_processor/65a20f10d7caf1d03741bf9c2f9806749f2bb9f218dcc1aea4459cd312506325.cairo" + }, + "parent_location": [ + { + "end_col": 82, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 45, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/c31620b02d4d706f0542c989b2aadc01b0981d1f6a5933a8fe4937ace3d70d92.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 57, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling calldata of" + ], + "start_col": 35, + "start_line": 1 + }, + "While expanding the reference '__calldata_actual_size' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While handling calldata of" + ], + "start_col": 31, + "start_line": 1 + }, + "While expanding the reference '__calldata_ptr' in:" + ], + "start_col": 73, + "start_line": 38 + }, + "While handling calldata argument 'v_0'" + ], + "start_col": 22, + "start_line": 2 + } + }, + "684": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 58, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While handling calldata of" + ], + "start_col": 1, + "start_line": 1 + } + }, + "685": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 67, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo" + }, + "parent_location": [ + { + "end_col": 37, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 1 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 22, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 23, + "start_line": 1 + } + }, + "686": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 46, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/f46f114cc4d8fd9014fb47439f85f8da3563c025a19e5ac96c355f64fbbbf76e.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 95, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 73, + "start_line": 1 + }, + "While expanding the reference '__calldata_arg_num_pts' in:" + ], + "start_col": 39, + "start_line": 38 + }, + "While handling calldata argument 'num_pts'" + ], + "start_col": 30, + "start_line": 1 + } + }, + "687": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/bb06c3077113f2124a4a9d7af51d7585c56d8847c66c69ad89747c83a5440b75.cairo" + }, + "parent_location": [ + { + "end_col": 71, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 135, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 109, + "start_line": 1 + }, + "While expanding the reference '__calldata_arg_theta_0_deg' in:" + ], + "start_col": 54, + "start_line": 38 + }, + "While handling calldata argument 'theta_0_deg'" + ], + "start_col": 34, + "start_line": 1 + } + }, + "688": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 42, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/arg_processor/65a20f10d7caf1d03741bf9c2f9806749f2bb9f218dcc1aea4459cd312506325.cairo" + }, + "parent_location": [ + { + "end_col": 82, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 159, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 141, + "start_line": 1 + }, + "While expanding the reference '__calldata_arg_v_0' in:" + ], + "start_col": 73, + "start_line": 38 + }, + "While handling calldata argument 'v_0'" + ], + "start_col": 26, + "start_line": 1 + } + }, + "689": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + } + }, + "691": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 104, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 89, + "start_line": 2 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 1 + } + }, + "692": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 105, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 48, + "start_line": 2 + } + }, + "694": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 63, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 20, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 9, + "start_line": 1 + }, + "While expanding the reference 'syscall_ptr' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 19, + "start_line": 1 + } + }, + "695": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 21, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 36, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 21, + "start_line": 1 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 6, + "start_line": 2 + } + }, + "696": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 49, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 37, + "start_line": 1 + }, + "While expanding the reference 'retdata_size' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 23, + "start_line": 2 + } + }, + "697": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 2, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 57, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 50, + "start_line": 1 + }, + "While expanding the reference 'retdata' in:" + ], + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 37, + "start_line": 2 + } + }, + "698": { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 59, + "end_line": 1, + "input_file": { + "filename": "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + }, + "parent_location": [ + { + "end_col": 21, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 6, + "start_line": 38 + }, + "While constructing the external wrapper for:" + ], + "start_col": 1, + "start_line": 1 + } + } + } + }, + "hints": { + "0": [ + { + "accessible_scopes": [ + "starkware.cairo.common.alloc", + "starkware.cairo.common.alloc.alloc" + ], + "code": "memory[ap] = segments.add()", + "flow_tracking_data": { + "ap_tracking": { + "group": 0, + "offset": 0 + }, + "reference_ids": {} + } + } + ], + "6": [ + { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "code": "vm_enter_scope({'n': ids.len})", + "flow_tracking_data": { + "ap_tracking": { + "group": 1, + "offset": 0 + }, + "reference_ids": { + "starkware.cairo.common.memcpy.memcpy.len": 0 + } + } + } + ], + "14": [ + { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "code": "n -= 1\nids.continue_copying = 1 if n > 0 else 0", + "flow_tracking_data": { + "ap_tracking": { + "group": 1, + "offset": 5 + }, + "reference_ids": { + "starkware.cairo.common.memcpy.memcpy.continue_copying": 1 + } + } + } + ], + "17": [ + { + "accessible_scopes": [ + "starkware.cairo.common.memcpy", + "starkware.cairo.common.memcpy.memcpy" + ], + "code": "vm_exit_scope()", + "flow_tracking_data": { + "ap_tracking": { + "group": 1, + "offset": 6 + }, + "reference_ids": {} + } + } + ], + "18": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_nn" + ], + "code": "from starkware.cairo.common.math_utils import assert_integer\nassert_integer(ids.a)\nassert 0 <= ids.a % PRIME < range_check_builtin.bound, f'a = {ids.a} is out of range.'", + "flow_tracking_data": { + "ap_tracking": { + "group": 2, + "offset": 0 + }, + "reference_ids": { + "starkware.cairo.common.math.assert_nn.a": 2 + } + } + } + ], + "47": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "code": "import itertools\n\nfrom starkware.cairo.common.math_utils import assert_integer\nassert_integer(ids.a)\nassert_integer(ids.b)\na = ids.a % PRIME\nb = ids.b % PRIME\nassert a <= b, f'a = {a} is not less than or equal to b = {b}.'\n\n# Find an arc less than PRIME / 3, and another less than PRIME / 2.\nlengths_and_indices = [(a, 0), (b - a, 1), (PRIME - 1 - b, 2)]\nlengths_and_indices.sort()\nassert lengths_and_indices[0][0] <= PRIME // 3 and lengths_and_indices[1][0] <= PRIME // 2\nexcluded = lengths_and_indices[2][1]\n\nmemory[ids.range_check_ptr + 1], memory[ids.range_check_ptr + 0] = (\n divmod(lengths_and_indices[0][0], ids.PRIME_OVER_3_HIGH))\nmemory[ids.range_check_ptr + 3], memory[ids.range_check_ptr + 2] = (\n divmod(lengths_and_indices[1][0], ids.PRIME_OVER_2_HIGH))", + "flow_tracking_data": { + "ap_tracking": { + "group": 6, + "offset": 0 + }, + "reference_ids": { + "starkware.cairo.common.math.assert_le_felt.a": 3, + "starkware.cairo.common.math.assert_le_felt.b": 4, + "starkware.cairo.common.math.assert_le_felt.range_check_ptr": 5 + } + } + } + ], + "57": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "code": "memory[ap] = 1 if excluded != 0 else 0", + "flow_tracking_data": { + "ap_tracking": { + "group": 6, + "offset": 8 + }, + "reference_ids": {} + } + } + ], + "71": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "code": "memory[ap] = 1 if excluded != 1 else 0", + "flow_tracking_data": { + "ap_tracking": { + "group": 6, + "offset": 9 + }, + "reference_ids": {} + } + } + ], + "83": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.assert_le_felt" + ], + "code": "assert excluded == 2", + "flow_tracking_data": { + "ap_tracking": { + "group": 6, + "offset": 10 + }, + "reference_ids": {} + } + } + ], + "94": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.abs_value" + ], + "code": "from starkware.cairo.common.math_utils import is_positive\nids.is_positive = 1 if is_positive(\n value=ids.value, prime=PRIME, rc_bound=range_check_builtin.bound) else 0", + "flow_tracking_data": { + "ap_tracking": { + "group": 7, + "offset": 1 + }, + "reference_ids": { + "starkware.cairo.common.math.abs_value.is_positive": 7, + "starkware.cairo.common.math.abs_value.value": 6 + } + } + } + ], + "107": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.signed_div_rem" + ], + "code": "from starkware.cairo.common.math_utils import as_int, assert_integer\n\nassert_integer(ids.div)\nassert 0 < ids.div <= PRIME // range_check_builtin.bound, \\\n f'div={hex(ids.div)} is out of the valid range.'\n\nassert_integer(ids.bound)\nassert ids.bound <= range_check_builtin.bound // 2, \\\n f'bound={hex(ids.bound)} is out of the valid range.'\n\nint_value = as_int(ids.value, PRIME)\nq, ids.r = divmod(int_value, ids.div)\n\nassert -ids.bound <= q < ids.bound, \\\n f'{int_value} / {ids.div} = {q} is out of the range [{-ids.bound}, {ids.bound}).'\n\nids.biased_q = q + ids.bound", + "flow_tracking_data": { + "ap_tracking": { + "group": 8, + "offset": 0 + }, + "reference_ids": { + "starkware.cairo.common.math.signed_div_rem.biased_q": 12, + "starkware.cairo.common.math.signed_div_rem.bound": 10, + "starkware.cairo.common.math.signed_div_rem.div": 9, + "starkware.cairo.common.math.signed_div_rem.r": 11, + "starkware.cairo.common.math.signed_div_rem.value": 8 + } + } + } + ], + "135": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math", + "starkware.cairo.common.math.sqrt" + ], + "code": "from starkware.python.math_utils import isqrt\nvalue = ids.value % PRIME\nassert value < 2 ** 250, f\"value={value} is outside of the range [0, 2**250).\"\nassert 2 ** 250 < PRIME\nids.root = isqrt(value)", + "flow_tracking_data": { + "ap_tracking": { + "group": 9, + "offset": 1 + }, + "reference_ids": { + "starkware.cairo.common.math.sqrt.root": 14, + "starkware.cairo.common.math.sqrt.value": 13 + } + } + } + ], + "151": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "code": "memory[ap] = 0 if 0 <= (ids.a % PRIME) < range_check_builtin.bound else 1", + "flow_tracking_data": { + "ap_tracking": { + "group": 10, + "offset": 0 + }, + "reference_ids": { + "starkware.cairo.common.math_cmp.is_nn.a": 15 + } + } + } + ], + "161": [ + { + "accessible_scopes": [ + "starkware.cairo.common.math_cmp", + "starkware.cairo.common.math_cmp.is_nn" + ], + "code": "memory[ap] = 0 if 0 <= ((-ids.a - 1) % PRIME) < range_check_builtin.bound else 1", + "flow_tracking_data": { + "ap_tracking": { + "group": 10, + "offset": 1 + }, + "reference_ids": { + "starkware.cairo.common.math_cmp.is_nn.a": 15 + } + } + } + ], + "336": [ + { + "accessible_scopes": [ + "contracts.math", + "contracts.math", + "__wrappers__", + "__wrappers__.cosine_approx_encode_return" + ], + "code": "memory[ap] = segments.add()", + "flow_tracking_data": { + "ap_tracking": { + "group": 21, + "offset": 0 + }, + "reference_ids": {} + } + } + ], + "648": [ + { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.projectile_path_encode_return" + ], + "code": "memory[ap] = segments.add()", + "flow_tracking_data": { + "ap_tracking": { + "group": 36, + "offset": 0 + }, + "reference_ids": {} + } + } + ] + }, + "identifiers": { + "__main__.HashBuiltin": { + "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", + "type": "alias" + }, + "__main__.PI_fp": { + "destination": "contracts.constants.PI_fp", + "type": "alias" + }, + "__main__.SCALE_FP": { + "destination": "contracts.constants.SCALE_FP", + "type": "alias" + }, + "__main__.abs_value": { + "destination": "starkware.cairo.common.math.abs_value", + "type": "alias" + }, + "__main__.alloc": { + "destination": "starkware.cairo.common.alloc.alloc", + "type": "alias" + }, + "__main__.cosine_approx": { + "destination": "contracts.math.cosine_approx", + "type": "alias" + }, + "__main__.div_fp": { + "destination": "contracts.math.div_fp", + "type": "alias" + }, + "__main__.div_fp_nfp": { + "destination": "contracts.math.div_fp_nfp", + "type": "alias" + }, + "__main__.g_fp": { + "destination": "contracts.constants.g_fp", + "type": "alias" + }, + "__main__.is_le": { + "destination": "starkware.cairo.common.math_cmp.is_le", + "type": "alias" + }, + "__main__.is_nn": { + "destination": "starkware.cairo.common.math_cmp.is_nn", + "type": "alias" + }, + "__main__.mul_fp": { + "destination": "contracts.math.mul_fp", + "type": "alias" + }, + "__main__.position_fp_s_filler": { + "decorators": [], + "pc": 511, + "type": "function" + }, + "__main__.position_fp_s_filler.Args": { + "full_name": "__main__.position_fp_s_filler.Args", + "members": { + "delta_t_fp": { + "cairo_type": "felt", + "offset": 3 + }, + "num_pts": { + "cairo_type": "felt", + "offset": 0 + }, + "t_fp": { + "cairo_type": "felt", + "offset": 4 + }, + "v_0x_fp": { + "cairo_type": "felt", + "offset": 1 + }, + "v_0y_fp": { + "cairo_type": "felt", + "offset": 2 + }, + "x_fp_s": { + "cairo_type": "felt*", + "offset": 5 + }, + "y_fp_s": { + "cairo_type": "felt*", + "offset": 6 + } + }, + "size": 7, + "type": "struct" + }, + "__main__.position_fp_s_filler.ImplicitArgs": { + "full_name": "__main__.position_fp_s_filler.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "__main__.position_fp_s_filler.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "__main__.position_fp_s_filler.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__main__.projectile_path": { + "decorators": [ + "view" + ], + "pc": 541, + "type": "function" + }, + "__main__.projectile_path.Args": { + "full_name": "__main__.projectile_path.Args", + "members": { + "num_pts": { + "cairo_type": "felt", + "offset": 0 + }, + "theta_0_deg": { + "cairo_type": "felt", + "offset": 1 + }, + "v_0": { + "cairo_type": "felt", + "offset": 2 + } + }, + "size": 3, + "type": "struct" + }, + "__main__.projectile_path.ImplicitArgs": { + "full_name": "__main__.projectile_path.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "__main__.projectile_path.Return": { + "cairo_type": "(x_fp_s_len: felt, x_fp_s: felt*, y_fp_s_len: felt, y_fp_s: felt*)", + "type": "type_definition" + }, + "__main__.projectile_path.SIZEOF_LOCALS": { + "type": "const", + "value": 5 + }, + "__main__.sine_approx": { + "destination": "contracts.math.sine_approx", + "type": "alias" + }, + "__main__.time_in_plot_fp": { + "destination": "contracts.physics.time_in_plot_fp", + "type": "alias" + }, + "__main__.x_0_fp": { + "destination": "contracts.constants.x_0_fp", + "type": "alias" + }, + "__main__.x_max_fp": { + "destination": "contracts.constants.x_max_fp", + "type": "alias" + }, + "__main__.x_min_fp": { + "destination": "contracts.constants.x_min_fp", + "type": "alias" + }, + "__main__.x_value_fp": { + "destination": "contracts.physics.x_value_fp", + "type": "alias" + }, + "__main__.y_0_fp": { + "destination": "contracts.constants.y_0_fp", + "type": "alias" + }, + "__main__.y_max_fp": { + "destination": "contracts.constants.y_max_fp", + "type": "alias" + }, + "__main__.y_min_fp": { + "destination": "contracts.constants.y_min_fp", + "type": "alias" + }, + "__main__.y_value_fp": { + "destination": "contracts.physics.y_value_fp", + "type": "alias" + }, + "__wrappers__.cosine_approx": { + "decorators": [ + "view" + ], + "pc": 345, + "type": "function" + }, + "__wrappers__.cosine_approx.Args": { + "full_name": "__wrappers__.cosine_approx.Args", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.cosine_approx.ImplicitArgs": { + "full_name": "__wrappers__.cosine_approx.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.cosine_approx.Return": { + "cairo_type": "(syscall_ptr: felt, range_check_ptr: felt, size: felt, retdata: felt*)", + "type": "type_definition" + }, + "__wrappers__.cosine_approx.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__wrappers__.cosine_approx.__wrapped_func": { + "destination": "contracts.math.cosine_approx", + "type": "alias" + }, + "__wrappers__.cosine_approx_encode_return": { + "decorators": [], + "pc": 336, + "type": "function" + }, + "__wrappers__.cosine_approx_encode_return.Args": { + "full_name": "__wrappers__.cosine_approx_encode_return.Args", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 1 + }, + "ret_value": { + "cairo_type": "(cos_theta_fp: felt)", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "__wrappers__.cosine_approx_encode_return.ImplicitArgs": { + "full_name": "__wrappers__.cosine_approx_encode_return.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.cosine_approx_encode_return.Return": { + "cairo_type": "(range_check_ptr: felt, data_len: felt, data: felt*)", + "type": "type_definition" + }, + "__wrappers__.cosine_approx_encode_return.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, + "__wrappers__.cosine_approx_encode_return.memcpy": { + "destination": "starkware.cairo.common.memcpy.memcpy", + "type": "alias" + }, + "__wrappers__.projectile_path": { + "decorators": [ + "view" + ], + "pc": 680, + "type": "function" + }, + "__wrappers__.projectile_path.Args": { + "full_name": "__wrappers__.projectile_path.Args", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.projectile_path.ImplicitArgs": { + "full_name": "__wrappers__.projectile_path.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.projectile_path.Return": { + "cairo_type": "(syscall_ptr: felt, range_check_ptr: felt, size: felt, retdata: felt*)", + "type": "type_definition" + }, + "__wrappers__.projectile_path.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__wrappers__.projectile_path.__wrapped_func": { + "destination": "__main__.projectile_path", + "type": "alias" + }, + "__wrappers__.projectile_path_encode_return": { + "decorators": [], + "pc": 648, + "type": "function" + }, + "__wrappers__.projectile_path_encode_return.Args": { + "full_name": "__wrappers__.projectile_path_encode_return.Args", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 4 + }, + "ret_value": { + "cairo_type": "(x_fp_s_len: felt, x_fp_s: felt*, y_fp_s_len: felt, y_fp_s: felt*)", + "offset": 0 + } + }, + "size": 5, + "type": "struct" + }, + "__wrappers__.projectile_path_encode_return.ImplicitArgs": { + "full_name": "__wrappers__.projectile_path_encode_return.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.projectile_path_encode_return.Return": { + "cairo_type": "(range_check_ptr: felt, data_len: felt, data: felt*)", + "type": "type_definition" + }, + "__wrappers__.projectile_path_encode_return.SIZEOF_LOCALS": { + "type": "const", + "value": 5 + }, + "__wrappers__.projectile_path_encode_return.memcpy": { + "destination": "starkware.cairo.common.memcpy.memcpy", + "type": "alias" + }, + "contracts.constants.HALF_PI_fp": { + "type": "const", + "value": 157079632700000000000 + }, + "contracts.constants.PI_fp": { + "type": "const", + "value": 314159265400000000000 + }, + "contracts.constants.RANGE_CHECK_BOUND": { + "type": "const", + "value": 1329227995784915872903807060280344576 + }, + "contracts.constants.SCALE_FP": { + "type": "const", + "value": 100000000000000000000 + }, + "contracts.constants.SCALE_FP_SQRT": { + "type": "const", + "value": 10000000000 + }, + "contracts.constants.g_fp": { + "type": "const", + "value": 980000000000000000000 + }, + "contracts.constants.x_0_fp": { + "type": "const", + "value": 0 + }, + "contracts.constants.x_max_fp": { + "type": "const", + "value": 100000000000000000000000 + }, + "contracts.constants.x_min_fp": { + "type": "const", + "value": -100000000000000000000000 + }, + "contracts.constants.y_0_fp": { + "type": "const", + "value": 0 + }, + "contracts.constants.y_max_fp": { + "type": "const", + "value": 50000000000000000000000 + }, + "contracts.constants.y_min_fp": { + "type": "const", + "value": -50000000000000000000000 + }, + "contracts.math.HALF_PI_fp": { + "destination": "contracts.constants.HALF_PI_fp", + "type": "alias" + }, + "contracts.math.HashBuiltin": { + "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", + "type": "alias" + }, + "contracts.math.PI_fp": { + "destination": "contracts.constants.PI_fp", + "type": "alias" + }, + "contracts.math.RANGE_CHECK_BOUND": { + "destination": "contracts.constants.RANGE_CHECK_BOUND", + "type": "alias" + }, + "contracts.math.SCALE_FP": { + "destination": "contracts.constants.SCALE_FP", + "type": "alias" + }, + "contracts.math.SCALE_FP_SQRT": { + "destination": "contracts.constants.SCALE_FP_SQRT", + "type": "alias" + }, + "contracts.math.abs_value": { + "destination": "starkware.cairo.common.math.abs_value", + "type": "alias" + }, + "contracts.math.alloc": { + "destination": "starkware.cairo.common.alloc.alloc", + "type": "alias" + }, + "contracts.math.cosine_8th_fp": { + "decorators": [], + "pc": 234, + "type": "function" + }, + "contracts.math.cosine_8th_fp.Args": { + "full_name": "contracts.math.cosine_8th_fp.Args", + "members": { + "theta_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_8th_fp.ImplicitArgs": { + "full_name": "contracts.math.cosine_8th_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_8th_fp.Return": { + "cairo_type": "(value_fp: felt)", + "type": "type_definition" + }, + "contracts.math.cosine_8th_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.math.cosine_approx": { + "decorators": [ + "view" + ], + "pc": 284, + "type": "function" + }, + "contracts.math.cosine_approx.Args": { + "full_name": "contracts.math.cosine_approx.Args", + "members": { + "theta_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_approx.ImplicitArgs": { + "full_name": "contracts.math.cosine_approx.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_approx.Return": { + "cairo_type": "(cos_theta_fp: felt)", + "type": "type_definition" + }, + "contracts.math.cosine_approx.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, + "contracts.math.div_fp": { + "decorators": [], + "pc": 209, + "type": "function" + }, + "contracts.math.div_fp.Args": { + "full_name": "contracts.math.div_fp.Args", + "members": { + "a_fp": { + "cairo_type": "felt", + "offset": 0 + }, + "b_fp": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.math.div_fp.ImplicitArgs": { + "full_name": "contracts.math.div_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.div_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.math.div_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.math.div_fp_nfp": { + "decorators": [], + "pc": 224, + "type": "function" + }, + "contracts.math.div_fp_nfp.Args": { + "full_name": "contracts.math.div_fp_nfp.Args", + "members": { + "a_fp": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.math.div_fp_nfp.ImplicitArgs": { + "full_name": "contracts.math.div_fp_nfp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.div_fp_nfp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.math.div_fp_nfp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.math.is_le": { + "destination": "starkware.cairo.common.math_cmp.is_le", + "type": "alias" + }, + "contracts.math.is_nn": { + "destination": "starkware.cairo.common.math_cmp.is_nn", + "type": "alias" + }, + "contracts.math.mul_fp": { + "decorators": [], + "pc": 197, + "type": "function" + }, + "contracts.math.mul_fp.Args": { + "full_name": "contracts.math.mul_fp.Args", + "members": { + "a_fp": { + "cairo_type": "felt", + "offset": 0 + }, + "b_fp": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.math.mul_fp.ImplicitArgs": { + "full_name": "contracts.math.mul_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.mul_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.math.mul_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.math.mul_fp_nfp": { + "decorators": [], + "pc": 221, + "type": "function" + }, + "contracts.math.mul_fp_nfp.Args": { + "full_name": "contracts.math.mul_fp_nfp.Args", + "members": { + "a_fp": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.math.mul_fp_nfp.ImplicitArgs": { + "full_name": "contracts.math.mul_fp_nfp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.mul_fp_nfp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.math.mul_fp_nfp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.math.signed_div_rem": { + "destination": "starkware.cairo.common.math.signed_div_rem", + "type": "alias" + }, + "contracts.math.sine_approx": { + "decorators": [], + "pc": 360, + "type": "function" + }, + "contracts.math.sine_approx.Args": { + "full_name": "contracts.math.sine_approx.Args", + "members": { + "cos_theta_fp": { + "cairo_type": "felt", + "offset": 1 + }, + "theta_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.math.sine_approx.ImplicitArgs": { + "full_name": "contracts.math.sine_approx.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.sine_approx.Return": { + "cairo_type": "(sin_theta_fp: felt)", + "type": "type_definition" + }, + "contracts.math.sine_approx.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, + "contracts.math.sqrt": { + "destination": "starkware.cairo.common.math.sqrt", + "type": "alias" + }, + "contracts.math.sqrt_fp": { + "decorators": [], + "pc": 189, + "type": "function" + }, + "contracts.math.sqrt_fp.Args": { + "full_name": "contracts.math.sqrt_fp.Args", + "members": { + "x_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.sqrt_fp.ImplicitArgs": { + "full_name": "contracts.math.sqrt_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.sqrt_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.math.sqrt_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.physics.HashBuiltin": { + "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", + "type": "alias" + }, + "contracts.physics.PI_fp": { + "destination": "contracts.constants.PI_fp", + "type": "alias" + }, + "contracts.physics.abs_value": { + "destination": "starkware.cairo.common.math.abs_value", + "type": "alias" + }, + "contracts.physics.div_fp": { + "destination": "contracts.math.div_fp", + "type": "alias" + }, + "contracts.physics.div_fp_nfp": { + "destination": "contracts.math.div_fp_nfp", + "type": "alias" + }, + "contracts.physics.g_fp": { + "destination": "contracts.constants.g_fp", + "type": "alias" + }, + "contracts.physics.is_le": { + "destination": "starkware.cairo.common.math_cmp.is_le", + "type": "alias" + }, + "contracts.physics.mul_fp": { + "destination": "contracts.math.mul_fp", + "type": "alias" + }, + "contracts.physics.mul_fp_nfp": { + "destination": "contracts.math.mul_fp_nfp", + "type": "alias" + }, + "contracts.physics.sqrt_fp": { + "destination": "contracts.math.sqrt_fp", + "type": "alias" + }, + "contracts.physics.time_in_plot_fp": { + "decorators": [], + "pc": 391, + "type": "function" + }, + "contracts.physics.time_in_plot_fp.Args": { + "full_name": "contracts.physics.time_in_plot_fp.Args", + "members": { + "theta_0_deg": { + "cairo_type": "felt", + "offset": 0 + }, + "v_0x_fp": { + "cairo_type": "felt", + "offset": 1 + }, + "v_0y_fp": { + "cairo_type": "felt", + "offset": 2 + } + }, + "size": 3, + "type": "struct" + }, + "contracts.physics.time_in_plot_fp.ImplicitArgs": { + "full_name": "contracts.physics.time_in_plot_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.physics.time_in_plot_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.physics.time_in_plot_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, + "contracts.physics.x_0_fp": { + "destination": "contracts.constants.x_0_fp", + "type": "alias" + }, + "contracts.physics.x_max_fp": { + "destination": "contracts.constants.x_max_fp", + "type": "alias" + }, + "contracts.physics.x_min_fp": { + "destination": "contracts.constants.x_min_fp", + "type": "alias" + }, + "contracts.physics.x_value_fp": { + "decorators": [], + "pc": 482, + "type": "function" + }, + "contracts.physics.x_value_fp.Args": { + "full_name": "contracts.physics.x_value_fp.Args", + "members": { + "t_fp": { + "cairo_type": "felt", + "offset": 1 + }, + "v_0x_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.physics.x_value_fp.ImplicitArgs": { + "full_name": "contracts.physics.x_value_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.physics.x_value_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.physics.x_value_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "contracts.physics.y_0_fp": { + "destination": "contracts.constants.y_0_fp", + "type": "alias" + }, + "contracts.physics.y_min_fp": { + "destination": "contracts.constants.y_min_fp", + "type": "alias" + }, + "contracts.physics.y_value_fp": { + "decorators": [], + "pc": 488, + "type": "function" + }, + "contracts.physics.y_value_fp.Args": { + "full_name": "contracts.physics.y_value_fp.Args", + "members": { + "t_fp": { + "cairo_type": "felt", + "offset": 1 + }, + "v_0y_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "contracts.physics.y_value_fp.ImplicitArgs": { + "full_name": "contracts.physics.y_value_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.physics.y_value_fp.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "contracts.physics.y_value_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.alloc.alloc": { + "decorators": [], + "pc": 0, + "type": "function" + }, + "starkware.cairo.common.alloc.alloc.Args": { + "full_name": "starkware.cairo.common.alloc.alloc.Args", + "members": {}, + "size": 0, + "type": "struct" + }, + "starkware.cairo.common.alloc.alloc.ImplicitArgs": { + "full_name": "starkware.cairo.common.alloc.alloc.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "starkware.cairo.common.alloc.alloc.Return": { + "cairo_type": "(ptr: felt*)", + "type": "type_definition" + }, + "starkware.cairo.common.alloc.alloc.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.bool.FALSE": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.bool.TRUE": { + "type": "const", + "value": 1 + }, + "starkware.cairo.common.cairo_builtins.BitwiseBuiltin": { + "full_name": "starkware.cairo.common.cairo_builtins.BitwiseBuiltin", + "members": { + "x": { + "cairo_type": "felt", + "offset": 0 + }, + "x_and_y": { + "cairo_type": "felt", + "offset": 2 + }, + "x_or_y": { + "cairo_type": "felt", + "offset": 4 + }, + "x_xor_y": { + "cairo_type": "felt", + "offset": 3 + }, + "y": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 5, + "type": "struct" + }, + "starkware.cairo.common.cairo_builtins.EcOpBuiltin": { + "full_name": "starkware.cairo.common.cairo_builtins.EcOpBuiltin", + "members": { + "m": { + "cairo_type": "felt", + "offset": 4 + }, + "p": { + "cairo_type": "starkware.cairo.common.ec_point.EcPoint", + "offset": 0 + }, + "q": { + "cairo_type": "starkware.cairo.common.ec_point.EcPoint", + "offset": 2 + }, + "r": { + "cairo_type": "starkware.cairo.common.ec_point.EcPoint", + "offset": 5 + } + }, + "size": 7, + "type": "struct" + }, + "starkware.cairo.common.cairo_builtins.EcPoint": { + "destination": "starkware.cairo.common.ec_point.EcPoint", + "type": "alias" + }, + "starkware.cairo.common.cairo_builtins.HashBuiltin": { + "full_name": "starkware.cairo.common.cairo_builtins.HashBuiltin", + "members": { + "result": { + "cairo_type": "felt", + "offset": 2 + }, + "x": { + "cairo_type": "felt", + "offset": 0 + }, + "y": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.cairo.common.cairo_builtins.KeccakBuiltin": { + "full_name": "starkware.cairo.common.cairo_builtins.KeccakBuiltin", + "members": { + "input": { + "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", + "offset": 0 + }, + "output": { + "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", + "offset": 8 + } + }, + "size": 16, + "type": "struct" + }, + "starkware.cairo.common.cairo_builtins.KeccakBuiltinState": { + "destination": "starkware.cairo.common.keccak_state.KeccakBuiltinState", + "type": "alias" + }, + "starkware.cairo.common.cairo_builtins.SignatureBuiltin": { + "full_name": "starkware.cairo.common.cairo_builtins.SignatureBuiltin", + "members": { + "message": { + "cairo_type": "felt", + "offset": 1 + }, + "pub_key": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.dict_access.DictAccess": { + "full_name": "starkware.cairo.common.dict_access.DictAccess", + "members": { + "key": { + "cairo_type": "felt", + "offset": 0 + }, + "new_value": { + "cairo_type": "felt", + "offset": 2 + }, + "prev_value": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.cairo.common.ec_point.EcPoint": { + "full_name": "starkware.cairo.common.ec_point.EcPoint", + "members": { + "x": { + "cairo_type": "felt", + "offset": 0 + }, + "y": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.hash.HashBuiltin": { + "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", + "type": "alias" + }, + "starkware.cairo.common.keccak_state.KeccakBuiltinState": { + "full_name": "starkware.cairo.common.keccak_state.KeccakBuiltinState", + "members": { + "s0": { + "cairo_type": "felt", + "offset": 0 + }, + "s1": { + "cairo_type": "felt", + "offset": 1 + }, + "s2": { + "cairo_type": "felt", + "offset": 2 + }, + "s3": { + "cairo_type": "felt", + "offset": 3 + }, + "s4": { + "cairo_type": "felt", + "offset": 4 + }, + "s5": { + "cairo_type": "felt", + "offset": 5 + }, + "s6": { + "cairo_type": "felt", + "offset": 6 + }, + "s7": { + "cairo_type": "felt", + "offset": 7 + } + }, + "size": 8, + "type": "struct" + }, + "starkware.cairo.common.math.FALSE": { + "destination": "starkware.cairo.common.bool.FALSE", + "type": "alias" + }, + "starkware.cairo.common.math.TRUE": { + "destination": "starkware.cairo.common.bool.TRUE", + "type": "alias" + }, + "starkware.cairo.common.math.abs_value": { + "decorators": [ + "known_ap_change" + ], + "pc": 92, + "type": "function" + }, + "starkware.cairo.common.math.abs_value.Args": { + "full_name": "starkware.cairo.common.math.abs_value.Args", + "members": { + "value": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.abs_value.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.abs_value.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.abs_value.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "starkware.cairo.common.math.abs_value.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.abs_value.is_positive": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.abs_value.is_positive", + "references": [ + { + "ap_tracking_data": { + "group": 7, + "offset": 1 + }, + "pc": 94, + "value": "[cast(ap + (-1), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.abs_value.value": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.abs_value.value", + "references": [ + { + "ap_tracking_data": { + "group": 7, + "offset": 0 + }, + "pc": 92, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.assert_in_range": { + "decorators": [], + "pc": 36, + "type": "function" + }, + "starkware.cairo.common.math.assert_in_range.Args": { + "full_name": "starkware.cairo.common.math.assert_in_range.Args", + "members": { + "lower": { + "cairo_type": "felt", + "offset": 1 + }, + "upper": { + "cairo_type": "felt", + "offset": 2 + }, + "value": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.cairo.common.math.assert_in_range.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.assert_in_range.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_in_range.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.math.assert_in_range.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.assert_le": { + "decorators": [], + "pc": 22, + "type": "function" + }, + "starkware.cairo.common.math.assert_le.Args": { + "full_name": "starkware.cairo.common.math.assert_le.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.math.assert_le.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.assert_le.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_le.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.math.assert_le.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.assert_le_felt": { + "decorators": [ + "known_ap_change" + ], + "pc": 47, + "type": "function" + }, + "starkware.cairo.common.math.assert_le_felt.Args": { + "full_name": "starkware.cairo.common.math.assert_le_felt.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.math.assert_le_felt.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.assert_le_felt.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_le_felt.PRIME_OVER_2_HIGH": { + "type": "const", + "value": 5316911983139663648412552867652567041 + }, + "starkware.cairo.common.math.assert_le_felt.PRIME_OVER_3_HIGH": { + "type": "const", + "value": 3544607988759775765608368578435044694 + }, + "starkware.cairo.common.math.assert_le_felt.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.math.assert_le_felt.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.assert_le_felt.a": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.assert_le_felt.a", + "references": [ + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-4), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.assert_le_felt.b": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.assert_le_felt.b", + "references": [ + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.assert_le_felt.range_check_ptr": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.assert_le_felt.range_check_ptr", + "references": [ + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-5), felt*)]" + }, + { + "ap_tracking_data": { + "group": 6, + "offset": 8 + }, + "pc": 57, + "value": "cast([fp + (-5)] + 4, felt)" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.assert_le_felt.skip_exclude_a": { + "pc": 71, + "type": "label" + }, + "starkware.cairo.common.math.assert_le_felt.skip_exclude_b_minus_a": { + "pc": 83, + "type": "label" + }, + "starkware.cairo.common.math.assert_nn": { + "decorators": [], + "pc": 18, + "type": "function" + }, + "starkware.cairo.common.math.assert_nn.Args": { + "full_name": "starkware.cairo.common.math.assert_nn.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_nn.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.assert_nn.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_nn.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.math.assert_nn.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.assert_nn.a": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.assert_nn.a", + "references": [ + { + "ap_tracking_data": { + "group": 2, + "offset": 0 + }, + "pc": 18, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.assert_nn_le": { + "decorators": [], + "pc": 27, + "type": "function" + }, + "starkware.cairo.common.math.assert_nn_le.Args": { + "full_name": "starkware.cairo.common.math.assert_nn_le.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.math.assert_nn_le.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.assert_nn_le.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.assert_nn_le.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.math.assert_nn_le.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.signed_div_rem": { + "decorators": [], + "pc": 107, + "type": "function" + }, + "starkware.cairo.common.math.signed_div_rem.Args": { + "full_name": "starkware.cairo.common.math.signed_div_rem.Args", + "members": { + "bound": { + "cairo_type": "felt", + "offset": 2 + }, + "div": { + "cairo_type": "felt", + "offset": 1 + }, + "value": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.cairo.common.math.signed_div_rem.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.signed_div_rem.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.signed_div_rem.Return": { + "cairo_type": "(q: felt, r: felt)", + "type": "type_definition" + }, + "starkware.cairo.common.math.signed_div_rem.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math.signed_div_rem.biased_q": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.signed_div_rem.biased_q", + "references": [ + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast([fp + (-6)] + 1, felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.signed_div_rem.bound": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.signed_div_rem.bound", + "references": [ + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.signed_div_rem.div": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.signed_div_rem.div", + "references": [ + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-4), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.signed_div_rem.r": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.signed_div_rem.r", + "references": [ + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast([fp + (-6)], felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.signed_div_rem.value": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.signed_div_rem.value", + "references": [ + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-5), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.sqrt": { + "decorators": [ + "known_ap_change" + ], + "pc": 133, + "type": "function" + }, + "starkware.cairo.common.math.sqrt.Args": { + "full_name": "starkware.cairo.common.math.sqrt.Args", + "members": { + "value": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.sqrt.ImplicitArgs": { + "full_name": "starkware.cairo.common.math.sqrt.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math.sqrt.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "starkware.cairo.common.math.sqrt.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, + "starkware.cairo.common.math.sqrt.root": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.sqrt.root", + "references": [ + { + "ap_tracking_data": { + "group": 9, + "offset": 1 + }, + "pc": 135, + "value": "[cast(fp, felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math.sqrt.value": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math.sqrt.value", + "references": [ + { + "ap_tracking_data": { + "group": 9, + "offset": 0 + }, + "pc": 133, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math_cmp.RC_BOUND": { + "type": "const", + "value": 340282366920938463463374607431768211456 + }, + "starkware.cairo.common.math_cmp.assert_le_felt": { + "destination": "starkware.cairo.common.math.assert_le_felt", + "type": "alias" + }, + "starkware.cairo.common.math_cmp.assert_lt_felt": { + "destination": "starkware.cairo.common.math.assert_lt_felt", + "type": "alias" + }, + "starkware.cairo.common.math_cmp.is_le": { + "decorators": [ + "known_ap_change" + ], + "pc": 184, + "type": "function" + }, + "starkware.cairo.common.math_cmp.is_le.Args": { + "full_name": "starkware.cairo.common.math_cmp.is_le.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + }, + "b": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.math_cmp.is_le.ImplicitArgs": { + "full_name": "starkware.cairo.common.math_cmp.is_le.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math_cmp.is_le.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "starkware.cairo.common.math_cmp.is_le.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math_cmp.is_nn": { + "decorators": [ + "known_ap_change" + ], + "pc": 151, + "type": "function" + }, + "starkware.cairo.common.math_cmp.is_nn.Args": { + "full_name": "starkware.cairo.common.math_cmp.is_nn.Args", + "members": { + "a": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math_cmp.is_nn.ImplicitArgs": { + "full_name": "starkware.cairo.common.math_cmp.is_nn.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.cairo.common.math_cmp.is_nn.Return": { + "cairo_type": "felt", + "type": "type_definition" + }, + "starkware.cairo.common.math_cmp.is_nn.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.math_cmp.is_nn.a": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.math_cmp.is_nn.a", + "references": [ + { + "ap_tracking_data": { + "group": 10, + "offset": 0 + }, + "pc": 151, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.math_cmp.is_nn.need_felt_comparison": { + "pc": 175, + "type": "label" + }, + "starkware.cairo.common.math_cmp.is_nn.out_of_range": { + "pc": 161, + "type": "label" + }, + "starkware.cairo.common.memcpy.memcpy": { + "decorators": [], + "pc": 3, + "type": "function" + }, + "starkware.cairo.common.memcpy.memcpy.Args": { + "full_name": "starkware.cairo.common.memcpy.memcpy.Args", + "members": { + "dst": { + "cairo_type": "felt*", + "offset": 0 + }, + "len": { + "cairo_type": "felt", + "offset": 2 + }, + "src": { + "cairo_type": "felt*", + "offset": 1 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.cairo.common.memcpy.memcpy.ImplicitArgs": { + "full_name": "starkware.cairo.common.memcpy.memcpy.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "starkware.cairo.common.memcpy.memcpy.LoopFrame": { + "full_name": "starkware.cairo.common.memcpy.memcpy.LoopFrame", + "members": { + "dst": { + "cairo_type": "felt*", + "offset": 0 + }, + "src": { + "cairo_type": "felt*", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.cairo.common.memcpy.memcpy.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.cairo.common.memcpy.memcpy.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.cairo.common.memcpy.memcpy.continue_copying": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.memcpy.memcpy.continue_copying", + "references": [ + { + "ap_tracking_data": { + "group": 1, + "offset": 3 + }, + "pc": 10, + "value": "[cast(ap, felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.memcpy.memcpy.len": { + "cairo_type": "felt", + "full_name": "starkware.cairo.common.memcpy.memcpy.len", + "references": [ + { + "ap_tracking_data": { + "group": 1, + "offset": 0 + }, + "pc": 3, + "value": "[cast(fp + (-3), felt*)]" + } + ], + "type": "reference" + }, + "starkware.cairo.common.memcpy.memcpy.loop": { + "pc": 8, + "type": "label" + }, + "starkware.starknet.common.storage.ADDR_BOUND": { + "type": "const", + "value": -106710729501573572985208420194530329073740042555888586719489 + }, + "starkware.starknet.common.storage.MAX_STORAGE_ITEM_SIZE": { + "type": "const", + "value": 256 + }, + "starkware.starknet.common.storage.assert_250_bit": { + "destination": "starkware.cairo.common.math.assert_250_bit", + "type": "alias" + }, + "starkware.starknet.common.syscalls.CALL_CONTRACT_SELECTOR": { + "type": "const", + "value": 20853273475220472486191784820 + }, + "starkware.starknet.common.syscalls.CallContract": { + "full_name": "starkware.starknet.common.syscalls.CallContract", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.CallContractRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.CallContractResponse", + "offset": 5 + } + }, + "size": 7, + "type": "struct" + }, + "starkware.starknet.common.syscalls.CallContractRequest": { + "full_name": "starkware.starknet.common.syscalls.CallContractRequest", + "members": { + "calldata": { + "cairo_type": "felt*", + "offset": 4 + }, + "calldata_size": { + "cairo_type": "felt", + "offset": 3 + }, + "contract_address": { + "cairo_type": "felt", + "offset": 1 + }, + "function_selector": { + "cairo_type": "felt", + "offset": 2 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 5, + "type": "struct" + }, + "starkware.starknet.common.syscalls.CallContractResponse": { + "full_name": "starkware.starknet.common.syscalls.CallContractResponse", + "members": { + "retdata": { + "cairo_type": "felt*", + "offset": 1 + }, + "retdata_size": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.DELEGATE_CALL_SELECTOR": { + "type": "const", + "value": 21167594061783206823196716140 + }, + "starkware.starknet.common.syscalls.DELEGATE_L1_HANDLER_SELECTOR": { + "type": "const", + "value": 23274015802972845247556842986379118667122 + }, + "starkware.starknet.common.syscalls.DEPLOY_SELECTOR": { + "type": "const", + "value": 75202468540281 + }, + "starkware.starknet.common.syscalls.Deploy": { + "full_name": "starkware.starknet.common.syscalls.Deploy", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.DeployRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.DeployResponse", + "offset": 6 + } + }, + "size": 9, + "type": "struct" + }, + "starkware.starknet.common.syscalls.DeployRequest": { + "full_name": "starkware.starknet.common.syscalls.DeployRequest", + "members": { + "class_hash": { + "cairo_type": "felt", + "offset": 1 + }, + "constructor_calldata": { + "cairo_type": "felt*", + "offset": 4 + }, + "constructor_calldata_size": { + "cairo_type": "felt", + "offset": 3 + }, + "contract_address_salt": { + "cairo_type": "felt", + "offset": 2 + }, + "deploy_from_zero": { + "cairo_type": "felt", + "offset": 5 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 6, + "type": "struct" + }, + "starkware.starknet.common.syscalls.DeployResponse": { + "full_name": "starkware.starknet.common.syscalls.DeployResponse", + "members": { + "constructor_retdata": { + "cairo_type": "felt*", + "offset": 2 + }, + "constructor_retdata_size": { + "cairo_type": "felt", + "offset": 1 + }, + "contract_address": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.starknet.common.syscalls.DictAccess": { + "destination": "starkware.cairo.common.dict_access.DictAccess", + "type": "alias" + }, + "starkware.starknet.common.syscalls.EMIT_EVENT_SELECTOR": { + "type": "const", + "value": 1280709301550335749748 + }, + "starkware.starknet.common.syscalls.EmitEvent": { + "full_name": "starkware.starknet.common.syscalls.EmitEvent", + "members": { + "data": { + "cairo_type": "felt*", + "offset": 4 + }, + "data_len": { + "cairo_type": "felt", + "offset": 3 + }, + "keys": { + "cairo_type": "felt*", + "offset": 2 + }, + "keys_len": { + "cairo_type": "felt", + "offset": 1 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 5, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GET_BLOCK_NUMBER_SELECTOR": { + "type": "const", + "value": 1448089106835523001438702345020786 + }, + "starkware.starknet.common.syscalls.GET_BLOCK_TIMESTAMP_SELECTOR": { + "type": "const", + "value": 24294903732626645868215235778792757751152 + }, + "starkware.starknet.common.syscalls.GET_CALLER_ADDRESS_SELECTOR": { + "type": "const", + "value": 94901967781393078444254803017658102643 + }, + "starkware.starknet.common.syscalls.GET_CONTRACT_ADDRESS_SELECTOR": { + "type": "const", + "value": 6219495360805491471215297013070624192820083 + }, + "starkware.starknet.common.syscalls.GET_SEQUENCER_ADDRESS_SELECTOR": { + "type": "const", + "value": 1592190833581991703053805829594610833820054387 + }, + "starkware.starknet.common.syscalls.GET_TX_INFO_SELECTOR": { + "type": "const", + "value": 1317029390204112103023 + }, + "starkware.starknet.common.syscalls.GET_TX_SIGNATURE_SELECTOR": { + "type": "const", + "value": 1448089128652340074717162277007973 + }, + "starkware.starknet.common.syscalls.GetBlockNumber": { + "full_name": "starkware.starknet.common.syscalls.GetBlockNumber", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetBlockNumberRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetBlockNumberResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetBlockNumberRequest": { + "full_name": "starkware.starknet.common.syscalls.GetBlockNumberRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetBlockNumberResponse": { + "full_name": "starkware.starknet.common.syscalls.GetBlockNumberResponse", + "members": { + "block_number": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetBlockTimestamp": { + "full_name": "starkware.starknet.common.syscalls.GetBlockTimestamp", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetBlockTimestampRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetBlockTimestampResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetBlockTimestampRequest": { + "full_name": "starkware.starknet.common.syscalls.GetBlockTimestampRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetBlockTimestampResponse": { + "full_name": "starkware.starknet.common.syscalls.GetBlockTimestampResponse", + "members": { + "block_timestamp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetCallerAddress": { + "full_name": "starkware.starknet.common.syscalls.GetCallerAddress", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetCallerAddressRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetCallerAddressResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetCallerAddressRequest": { + "full_name": "starkware.starknet.common.syscalls.GetCallerAddressRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetCallerAddressResponse": { + "full_name": "starkware.starknet.common.syscalls.GetCallerAddressResponse", + "members": { + "caller_address": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetContractAddress": { + "full_name": "starkware.starknet.common.syscalls.GetContractAddress", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetContractAddressRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetContractAddressResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetContractAddressRequest": { + "full_name": "starkware.starknet.common.syscalls.GetContractAddressRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetContractAddressResponse": { + "full_name": "starkware.starknet.common.syscalls.GetContractAddressResponse", + "members": { + "contract_address": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetSequencerAddress": { + "full_name": "starkware.starknet.common.syscalls.GetSequencerAddress", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetSequencerAddressRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetSequencerAddressResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetSequencerAddressRequest": { + "full_name": "starkware.starknet.common.syscalls.GetSequencerAddressRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetSequencerAddressResponse": { + "full_name": "starkware.starknet.common.syscalls.GetSequencerAddressResponse", + "members": { + "sequencer_address": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxInfo": { + "full_name": "starkware.starknet.common.syscalls.GetTxInfo", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetTxInfoRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetTxInfoResponse", + "offset": 1 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxInfoRequest": { + "full_name": "starkware.starknet.common.syscalls.GetTxInfoRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxInfoResponse": { + "full_name": "starkware.starknet.common.syscalls.GetTxInfoResponse", + "members": { + "tx_info": { + "cairo_type": "starkware.starknet.common.syscalls.TxInfo*", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxSignature": { + "full_name": "starkware.starknet.common.syscalls.GetTxSignature", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.GetTxSignatureRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.GetTxSignatureResponse", + "offset": 1 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxSignatureRequest": { + "full_name": "starkware.starknet.common.syscalls.GetTxSignatureRequest", + "members": { + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.GetTxSignatureResponse": { + "full_name": "starkware.starknet.common.syscalls.GetTxSignatureResponse", + "members": { + "signature": { + "cairo_type": "felt*", + "offset": 1 + }, + "signature_len": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.LIBRARY_CALL_L1_HANDLER_SELECTOR": { + "type": "const", + "value": 436233452754198157705746250789557519228244616562 + }, + "starkware.starknet.common.syscalls.LIBRARY_CALL_SELECTOR": { + "type": "const", + "value": 92376026794327011772951660 + }, + "starkware.starknet.common.syscalls.LibraryCall": { + "full_name": "starkware.starknet.common.syscalls.LibraryCall", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.LibraryCallRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.CallContractResponse", + "offset": 5 + } + }, + "size": 7, + "type": "struct" + }, + "starkware.starknet.common.syscalls.LibraryCallRequest": { + "full_name": "starkware.starknet.common.syscalls.LibraryCallRequest", + "members": { + "calldata": { + "cairo_type": "felt*", + "offset": 4 + }, + "calldata_size": { + "cairo_type": "felt", + "offset": 3 + }, + "class_hash": { + "cairo_type": "felt", + "offset": 1 + }, + "function_selector": { + "cairo_type": "felt", + "offset": 2 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 5, + "type": "struct" + }, + "starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR": { + "type": "const", + "value": 433017908768303439907196859243777073 + }, + "starkware.starknet.common.syscalls.STORAGE_READ_SELECTOR": { + "type": "const", + "value": 100890693370601760042082660 + }, + "starkware.starknet.common.syscalls.STORAGE_WRITE_SELECTOR": { + "type": "const", + "value": 25828017502874050592466629733 + }, + "starkware.starknet.common.syscalls.SendMessageToL1SysCall": { + "full_name": "starkware.starknet.common.syscalls.SendMessageToL1SysCall", + "members": { + "payload_ptr": { + "cairo_type": "felt*", + "offset": 3 + }, + "payload_size": { + "cairo_type": "felt", + "offset": 2 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + }, + "to_address": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 4, + "type": "struct" + }, + "starkware.starknet.common.syscalls.StorageRead": { + "full_name": "starkware.starknet.common.syscalls.StorageRead", + "members": { + "request": { + "cairo_type": "starkware.starknet.common.syscalls.StorageReadRequest", + "offset": 0 + }, + "response": { + "cairo_type": "starkware.starknet.common.syscalls.StorageReadResponse", + "offset": 2 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.starknet.common.syscalls.StorageReadRequest": { + "full_name": "starkware.starknet.common.syscalls.StorageReadRequest", + "members": { + "address": { + "cairo_type": "felt", + "offset": 1 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 2, + "type": "struct" + }, + "starkware.starknet.common.syscalls.StorageReadResponse": { + "full_name": "starkware.starknet.common.syscalls.StorageReadResponse", + "members": { + "value": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.syscalls.StorageWrite": { + "full_name": "starkware.starknet.common.syscalls.StorageWrite", + "members": { + "address": { + "cairo_type": "felt", + "offset": 1 + }, + "selector": { + "cairo_type": "felt", + "offset": 0 + }, + "value": { + "cairo_type": "felt", + "offset": 2 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.starknet.common.syscalls.TxInfo": { + "full_name": "starkware.starknet.common.syscalls.TxInfo", + "members": { + "account_contract_address": { + "cairo_type": "felt", + "offset": 1 + }, + "chain_id": { + "cairo_type": "felt", + "offset": 6 + }, + "max_fee": { + "cairo_type": "felt", + "offset": 2 + }, + "nonce": { + "cairo_type": "felt", + "offset": 7 + }, + "signature": { + "cairo_type": "felt*", + "offset": 4 + }, + "signature_len": { + "cairo_type": "felt", + "offset": 3 + }, + "transaction_hash": { + "cairo_type": "felt", + "offset": 5 + }, + "version": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 8, + "type": "struct" + } + }, + "main_scope": "__main__", + "prime": "0x800000000000011000000000000000000000000000000000000000000000001", + "reference_manager": { + "references": [ + { + "ap_tracking_data": { + "group": 1, + "offset": 0 + }, + "pc": 3, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 1, + "offset": 3 + }, + "pc": 10, + "value": "[cast(ap, felt*)]" + }, + { + "ap_tracking_data": { + "group": 2, + "offset": 0 + }, + "pc": 18, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-4), felt*)]" + }, + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 6, + "offset": 0 + }, + "pc": 47, + "value": "[cast(fp + (-5), felt*)]" + }, + { + "ap_tracking_data": { + "group": 7, + "offset": 0 + }, + "pc": 92, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 7, + "offset": 1 + }, + "pc": 94, + "value": "[cast(ap + (-1), felt*)]" + }, + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-5), felt*)]" + }, + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-4), felt*)]" + }, + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast([fp + (-6)], felt*)]" + }, + { + "ap_tracking_data": { + "group": 8, + "offset": 0 + }, + "pc": 107, + "value": "[cast([fp + (-6)] + 1, felt*)]" + }, + { + "ap_tracking_data": { + "group": 9, + "offset": 0 + }, + "pc": 133, + "value": "[cast(fp + (-3), felt*)]" + }, + { + "ap_tracking_data": { + "group": 9, + "offset": 1 + }, + "pc": 135, + "value": "[cast(fp, felt*)]" + }, + { + "ap_tracking_data": { + "group": 10, + "offset": 0 + }, + "pc": 151, + "value": "[cast(fp + (-3), felt*)]" + } + ] + } + } +} diff --git a/projectile_path/contracts/constants.cairo b/projectile_path/contracts/constants.cairo new file mode 100644 index 0000000..10fbd69 --- /dev/null +++ b/projectile_path/contracts/constants.cairo @@ -0,0 +1,38 @@ +%lang starknet + +// +// Fixed point math constants +// +const SCALE_FP = 10**20; +const SCALE_FP_SQRT = 10**10; +const RANGE_CHECK_BOUND = 2 ** 120; + +// +// Constants for felts, not used yet +// +// const PRIME = 3618502788666131213697322783095070105623107215331596699973092056135872020481; +// const HALF_PRIME = 1809251394333065606848661391547535052811553607665798349986546028067936010240; + +// +// Math constants +// +const PI_fp = 3141592654 * SCALE_FP / 1000000000; +const HALF_PI_fp = 1570796327 * SCALE_FP / 1000000000; + +// +// Physical parameters +// +// Gravitational acceleration magnitude +const g_fp = 98 * SCALE_FP / 10; +// Initial position +const x_0_fp = 0 * SCALE_FP; +const y_0_fp = 0 * SCALE_FP; + +// +// Plot parameters +// +// Min and max values for axes. +const x_max_fp = 1000 * SCALE_FP; +const x_min_fp = -x_max_fp; +const y_max_fp = 500 * SCALE_FP; +const y_min_fp = -y_max_fp; \ No newline at end of file diff --git a/projectile_path/contracts/math.cairo b/projectile_path/contracts/math.cairo new file mode 100644 index 0000000..38c005a --- /dev/null +++ b/projectile_path/contracts/math.cairo @@ -0,0 +1,172 @@ +%lang starknet + +from starkware.cairo.common.cairo_builtins import HashBuiltin +from starkware.cairo.common.alloc import alloc +from starkware.cairo.common.math import abs_value, signed_div_rem, sqrt +from starkware.cairo.common.math_cmp import is_le, is_nn + +from contracts.constants import SCALE_FP, SCALE_FP_SQRT, RANGE_CHECK_BOUND, PI_fp, HALF_PI_fp + +// Takes square root of fixed point quantity "x_fp" +func sqrt_fp{range_check_ptr}(x_fp: felt) -> felt { + let x_ = sqrt(x_fp); // notice: sqrt() now returns a single felt, not a tuple anymore (tuple is returned for cairo < 0.10) + let y_fp = x_ * SCALE_FP_SQRT; // compensate for the square root + return y_fp; +} + +// Multiplies fixed point quantity "a_fp" by fixed point quantity "b_fp", with range check +func mul_fp{range_check_ptr}(a_fp: felt, b_fp: felt) -> felt { + // signed_div_rem by SCALE_FP after multiplication + tempvar product = a_fp * b_fp; + let (c_fp, _) = signed_div_rem(product, SCALE_FP, RANGE_CHECK_BOUND); + return c_fp; +} + +// Divides fixed point quantity "a_fp" by fixed point quantity "b_fp", with range check +func div_fp{range_check_ptr}(a_fp: felt, b_fp: felt) -> felt { + // multiply by SCALE_FP before signed_div_rem + tempvar a_scaled = a_fp * SCALE_FP; + let (c_fp, _) = signed_div_rem(a_scaled, b_fp, RANGE_CHECK_BOUND); + return c_fp; +} + +// Multiplies fixed point quantity "a_fp" by non-fixed point quantity "b" +func mul_fp_nfp{range_check_ptr}(a_fp: felt, b: felt) -> felt { + let c_fp = a_fp * b; + return c_fp; +} + +// Divides fixed point quantity "a_fp" by non-fixed point quantity "b", with range check +func div_fp_nfp{range_check_ptr}(a_fp: felt, b: felt) -> felt { + let (c_fp, _) = signed_div_rem(a_fp, b, RANGE_CHECK_BOUND); + return c_fp; +} + +// Finds distance between fixed point coordinate values (x0, y0) and (x, y) +func distance_two_points_fp{range_check_ptr}(x0_fp: felt, y0_fp: felt, x_fp: felt, y_fp: felt) -> felt { + let x_diff_fp = x_fp - x0_fp; + let y_diff_fp = y_fp - y0_fp; + let x_diff_sq_fp = mul_fp(x_diff_fp, x_diff_fp); + let y_diff_sq_fp = mul_fp(y_diff_fp, y_diff_fp); + let sum_fp = x_diff_sq_fp + y_diff_sq_fp; + let r_fp = sqrt_fp(sum_fp); + return r_fp; +} + +//////////////////////////////////////////////////////// +// Below are two versions of Taylor series approximation for cosine: +// - Using either 5 (8th order) or 4 (6th order) terms +// - May be able to use only 4 terms if -pi/2 <= theta <= pi/2 +//////////////////////////////////////////////////////// + +// Taylor series approximation of cosine(theta) for FP theta value +// Uses 5 terms (to 8th order) +// NO SHIFT: Assumes -pi <= theta <= +pi +@view +func cosine_8th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { + // + // cos(theta) ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + theta^8/8! + + let theta_2_fp = mul_fp(theta_fp, theta_fp); + let theta_4_fp = mul_fp(theta_2_fp, theta_2_fp); + let theta_6_fp = mul_fp(theta_2_fp, theta_4_fp); + let theta_8_fp = mul_fp(theta_2_fp, theta_6_fp); + + let theta_2_div2_fp = div_fp_nfp(theta_2_fp, 2); + let theta_4_div24_fp = div_fp_nfp(theta_4_fp, 24); + let theta_6_div720_fp = div_fp_nfp(theta_6_fp, 720); + let theta_8_div40320_fp = div_fp_nfp(theta_8_fp, 40320); + + let value_fp = 1 * SCALE_FP - theta_2_div2_fp + theta_4_div24_fp - theta_6_div720_fp + theta_8_div40320_fp; + + return (value_fp=value_fp); +} + + +// Taylor series approximation of cosine(theta) for FP theta value +// Uses 4 terms (to 6th order) +// NO SHIFT: Assumes -pi <= theta <= +pi, but is best used with -pi/2 <= theta <= pi/2 +@view +func cosine_6th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { + // cos(theta) ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + let theta_2_fp = mul_fp(theta_fp, theta_fp); + let theta_4_fp = mul_fp(theta_2_fp, theta_2_fp); + let theta_6_fp = mul_fp(theta_2_fp, theta_4_fp); + + let theta_2_div2_fp = div_fp_nfp(theta_2_fp, 2); + let theta_4_div24_fp = div_fp_nfp(theta_4_fp, 24); + let theta_6_div720_fp = div_fp_nfp(theta_6_fp, 720); + + let value_fp = 1 * SCALE_FP - theta_2_div2_fp + theta_4_div24_fp - theta_6_div720_fp; + + return (value_fp=value_fp); +} + + +// Cosine approximation: +// To allow using fewer (n = 4, or maybe 3?) terms in Taylor series and still be accurate: +// If theta_0 is in 2nd/3rd quadrant: +// (1) move angle to 1st/4th quadrant for cosine approximation n +// (more accurate if -pi/2 <= theta <= +pi/2) +// (2) force negative sign for cosine(theta) +// Then call cosine_6th_fp or cosine_8th_fp +@view +func cosine_approx{range_check_ptr}(theta_fp: felt) -> (cos_theta_fp: felt) { + alloc_locals; + local range_check_ptr = range_check_ptr; + + let bool1 = is_le(HALF_PI_fp, theta_fp); + if (bool1 == 1) { + // If in 2nd quadrant, move to 1st, but force cos_theta_fp to be negative: + let theta_moved_fp = PI_fp - theta_fp; + //let (non_neg_cos_theta_fp) = cosine_6th_fp(theta_moved_fp); + let (non_neg_cos_theta_fp) = cosine_8th_fp(theta_moved_fp); + tempvar cos_theta_fp = -non_neg_cos_theta_fp; + tempvar range_check_ptr = range_check_ptr; + + } else { + let bool2 = is_le(theta_fp, -HALF_PI_fp); + if (bool2 == 1) { + // If in 3rd quadrant, move to 4th, but force cos_theta_fp to be negative: + let theta_moved_fp = -PI_fp - theta_fp; + //let (non_neg_cos_theta_fp) = cosine_6th_fp(theta_moved_fp); + let (non_neg_cos_theta_fp) = cosine_8th_fp(theta_moved_fp); + tempvar cos_theta_fp = -non_neg_cos_theta_fp; + tempvar range_check_ptr = range_check_ptr; + + } else { + // If in 1st or 4th quadrant, all is good + //let (temp_cos_theta_fp) = cosine_6th_fp(theta_fp); + let (temp_cos_theta_fp) = cosine_8th_fp(theta_fp); + + tempvar cos_theta_fp = temp_cos_theta_fp; + tempvar range_check_ptr = range_check_ptr; + } + } + + return (cos_theta_fp=cos_theta_fp); +} + + +// Sine approximation: need to force correct signs +func sine_approx{range_check_ptr}(theta_fp: felt, cos_theta_fp: felt) -> (sin_theta_fp: felt) { + alloc_locals; + local range_check_ptr = range_check_ptr; + + let cos_theta_squared_fp = mul_fp(cos_theta_fp, cos_theta_fp); + let diff_fp = 1 * SCALE_FP - cos_theta_squared_fp; + let root = sqrt_fp(diff_fp); + + let bool = is_nn(theta_fp); + if (bool == 1) { + // If theta >= 0, then sin_theta >= 0 + tempvar sin_theta_fp = root; + tempvar range_check_ptr = range_check_ptr; + } else { + // If theta < 0, then sin_theta < 0 + tempvar sin_theta_fp = -root; + tempvar range_check_ptr = range_check_ptr; + } + + return (sin_theta_fp=sin_theta_fp); +} \ No newline at end of file diff --git a/projectile_path/contracts/physics.cairo b/projectile_path/contracts/physics.cairo new file mode 100644 index 0000000..4435802 --- /dev/null +++ b/projectile_path/contracts/physics.cairo @@ -0,0 +1,92 @@ +%lang starknet + +from starkware.cairo.common.cairo_builtins import HashBuiltin +from starkware.cairo.common.math import abs_value +from starkware.cairo.common.math_cmp import is_le + +from contracts.math import sqrt_fp, mul_fp, mul_fp_nfp, div_fp, div_fp_nfp +from contracts.constants import PI_fp, g_fp, x_0_fp, y_0_fp, x_min_fp, x_max_fp, y_min_fp +// +// Functions for physics +// + +// Time of projectile in plot area +func time_in_plot_fp{range_check_ptr}(theta_0_deg: felt, v_0x_fp: felt, v_0y_fp: felt) -> felt { + alloc_locals; + local range_check_ptr = range_check_ptr; + + // Max time needed for y-direction + let v_0y_squared_fp = mul_fp(v_0y_fp, v_0y_fp); + let delta_y_max_fp = y_min_fp - y_0_fp; + let g_delta_y_max_fp = mul_fp(g_fp, delta_y_max_fp); + let two_g_delta_y_max_fp = mul_fp_nfp (g_delta_y_max_fp, 2); + let diff_fp = v_0y_squared_fp - two_g_delta_y_max_fp; + let root_fp = sqrt_fp(diff_fp); + let sum_fp = v_0y_fp + root_fp; + let t_max_y_fp = div_fp(sum_fp, g_fp); + + // + // Find max time needed for x_direction, t_max_x + // Then t_max is minimum of t_max_x and t_max_y + // + // Check if abs(theta_0_deg) <, =, or > 90 degrees + // Use theta_0_deg because calculated theta_0 in radians is slightly rounded + // Then find t_max_x, and then t_max + let abs_value_theta_0_deg = abs_value(theta_0_deg); + let bool1 = is_le(abs_value_theta_0_deg, 90); + if (bool1 == 1) { + // abs(theta_0_deg) <= 90 + if (abs_value_theta_0_deg == 90) { + // abs(theta_0_deg) = 90, so v_0x = 0, so t_max_x = infinite, so + tempvar t_max_fp = t_max_y_fp; + tempvar range_check_ptr = range_check_ptr; + + } else { + // abs(theta_0_deg) < 90, so v_0x > 0, so projectile moves toward x_max + let delta_x_max_fp = x_max_fp - x_0_fp; + let t_max_x_fp = div_fp(delta_x_max_fp, v_0x_fp); + + let bool2 = is_le(t_max_x_fp,t_max_y_fp); + if (bool2 == 1) { + tempvar t_max_fp = t_max_x_fp; + tempvar range_check_ptr = range_check_ptr; + } else { + tempvar t_max_fp = t_max_y_fp; + tempvar range_check_ptr = range_check_ptr; + } + } + + } else { + // abs(theta_0_deg) > 90, so v_0x < 0, so projectile moves toward x_min + let delta_x_max_fp = x_min_fp - x_0_fp; + let t_max_x_fp = div_fp(delta_x_max_fp, v_0x_fp); + let bool2 = is_le(t_max_x_fp,t_max_y_fp); + + if (bool2 == 1) { + tempvar t_max_fp = t_max_x_fp; + tempvar range_check_ptr = range_check_ptr; + } else { + tempvar t_max_fp = t_max_y_fp; + tempvar range_check_ptr = range_check_ptr; + } + } + + return t_max_fp; +} + +// Horizontal position +func x_value_fp{range_check_ptr}(v_0x_fp: felt, t_fp: felt) -> felt { + let v_0x_t_fp = mul_fp(v_0x_fp, t_fp); + let x_fp = x_0_fp + v_0x_t_fp; + return x_fp; +} + +// Vertical position +func y_value_fp{range_check_ptr}(v_0y_fp: felt, t_fp: felt) -> felt { + let v_0y_t_fp = mul_fp(v_0y_fp, t_fp); + let t_squared_fp = mul_fp(t_fp, t_fp); + let g_t_squared_fp = mul_fp(g_fp, t_squared_fp); + let half_g_t_squared_fp = div_fp_nfp(g_t_squared_fp, 2); + let y_fp = y_0_fp + v_0y_t_fp - half_g_t_squared_fp; + return y_fp; +} \ No newline at end of file diff --git a/projectile_path/contracts/projectile_plot.cairo b/projectile_path/contracts/projectile_plot.cairo new file mode 100644 index 0000000..10ed4fc --- /dev/null +++ b/projectile_path/contracts/projectile_plot.cairo @@ -0,0 +1,99 @@ +%lang starknet + +from starkware.cairo.common.alloc import alloc +from starkware.cairo.common.cairo_builtins import HashBuiltin +from starkware.cairo.common.math import abs_value +from starkware.cairo.common.math_cmp import is_le, is_nn + +from contracts.constants import SCALE_FP, PI_fp, g_fp, x_0_fp, y_0_fp, x_min_fp, x_max_fp, y_min_fp, y_max_fp +from contracts.math import mul_fp, div_fp, div_fp_nfp, cosine_approx, sine_approx +from contracts.physics import time_in_plot_fp, x_value_fp, y_value_fp + +// +// Functions to fill arrays +// + +// Calculate position coordinate values and fill arrays +func position_fp_s_filler{range_check_ptr}(num_pts: felt, v_0x_fp: felt, v_0y_fp: felt, delta_t_fp: felt, t_fp: felt, x_fp_s: felt*, y_fp_s: felt*) { + + // Return after cuing up all coordinate values + if (num_pts == 0) { + return (); + } + + // Recursively call to go through all coordinate values + position_fp_s_filler(num_pts - 1, v_0x_fp, v_0y_fp, delta_t_fp, t_fp + delta_t_fp, x_fp_s + 1, y_fp_s + 1); + + // after return from 0, now num_pts = 1, t_fp = t_max_fp, begin to fill arrays in reverse + assert x_fp_s[0] = x_value_fp(v_0x_fp, t_fp); + assert y_fp_s[0] = y_value_fp(v_0y_fp, t_fp); + + return (); +} + +// +// View function for input of num_pts, lambda, and d; then create intensity plot data +// +@view +func projectile_path{range_check_ptr}(num_pts: felt, theta_0_deg: felt, v_0: felt) -> ( + x_fp_s_len : felt, x_fp_s: felt*, y_fp_s_len : felt, y_fp_s: felt*, +) { + alloc_locals; + + // Check inputs + with_attr error_message("Check that 2 <=num_pts <= 25") { + assert is_le(1, num_pts) = 1; + } + with_attr error_message("Check that 2 <=num_pts <= 25") { + assert is_le(num_pts, 25) = 1; + } + + with_attr error_message("Check that -180 <= theta_0_deg <= +180") { + tempvar abs_value_theta_0_deg = abs_value(theta_0_deg); + assert is_le(abs_value_theta_0_deg, 180) = 1; + } + + with_attr error_message("Check that v_0 >= 0") { + assert is_nn(v_0) = 1; + } + + // Scale up inputs to be fixed point values + let theta_0_deg_fp = theta_0_deg * SCALE_FP; + let v_0_fp = v_0 * SCALE_FP; + + // Convert angle to radians + let PI_in_deg_fp = 180 * SCALE_FP; + let pi_over_180_fp = div_fp(PI_fp, PI_in_deg_fp); + let theta_0_fp = mul_fp(theta_0_deg_fp, pi_over_180_fp); + + // Trig function approximations + let (cos_theta_0_fp) = cosine_approx(theta_0_fp); + let (sin_theta_0_fp) = sine_approx(theta_0_fp, cos_theta_0_fp); + + // Initial velocity vector components + let v_0x_fp = mul_fp(v_0_fp, cos_theta_0_fp); + let v_0y_fp = mul_fp(v_0_fp, sin_theta_0_fp); + + // Total time projectile remains in plot area + let t_max_fp = time_in_plot_fp(theta_0_deg, v_0x_fp, v_0y_fp); + + // Time step size + let delta_t_fp = div_fp_nfp(t_max_fp, num_pts - 1); + + // Initial time + let t_0_fp = 0 * SCALE_FP; + + // Allocate memory segments for position coordinate arrays + //let (position_fp_s: Position_fp*) = alloc(); + let (x_fp_s: felt*) = alloc(); + let (y_fp_s: felt*) = alloc(); + + // Fill position arrays + position_fp_s_filler(num_pts, v_0x_fp, v_0y_fp, delta_t_fp, t_0_fp, x_fp_s, y_fp_s); + + // Length of arrays + let x_fp_s_len = num_pts; + let y_fp_s_len = num_pts; + + return (x_fp_s_len=x_fp_s_len , x_fp_s=x_fp_s, y_fp_s_len=y_fp_s_len, y_fp_s=y_fp_s); +} diff --git a/projectile_path/contracts/structs.cairo b/projectile_path/contracts/structs.cairo new file mode 100644 index 0000000..f504b0f --- /dev/null +++ b/projectile_path/contracts/structs.cairo @@ -0,0 +1,9 @@ +%lang starknet + +// NOT USING ANY STRUCTS (YET?) + +// Position +struct Position_fp { + x_fp: felt, + y_fp: felt, +} \ No newline at end of file diff --git a/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb b/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb new file mode 100644 index 0000000..0d80324 --- /dev/null +++ b/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb @@ -0,0 +1,359 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "700a09bb", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "7d7134bf", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "id": "b04dd2ed", + "metadata": {}, + "source": [ + "## Inputs" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "ac10d3a4", + "metadata": {}, + "outputs": [], + "source": [ + "# Number of points to plot\n", + "num_pts = 20\n", + "# Launch angle in degrees: -180 <= theta_0_deg <= +180\n", + "theta_0_deg = 25\n", + "# Launch velocity magnitude: v_0 = ~100 is enough to reach top of plot area on vertical shot\n", + "v_0 = 100" + ] + }, + { + "cell_type": "markdown", + "id": "8e2ec1b1", + "metadata": {}, + "source": [ + "## Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "2494abc5", + "metadata": {}, + "outputs": [], + "source": [ + "#\n", + "# Math constants\n", + "#\n", + "# Number of terms in cosine Taylor series approximation\n", + "n = 4\n", + "# pi approximation\n", + "PI = 3.141592654\n", + "\n", + "#\n", + "# Physical parameters\n", + "#\n", + "# Gravitational acceleration in m/s^2\n", + "g = 9.8\n", + "# Initial position\n", + "x_0 = 0\n", + "y_0 = 0\n", + "\n", + "# \n", + "# Plot parameters\n", + "#\n", + "# Min and max values for axes\n", + "x_max = 1000\n", + "x_min = -x_max\n", + "y_max = 500\n", + "y_min = -y_max" + ] + }, + { + "cell_type": "markdown", + "id": "57478d5e", + "metadata": {}, + "source": [ + "## Math functions" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "92ea27fe", + "metadata": {}, + "outputs": [], + "source": [ + "# Cosine from Taylor series approximation\n", + "# Assume -pi <= theta <= +pi, so no need to shift theta\n", + "# Accuracy is improved if instead -pi/2 <= theta <= +pi/2\n", + "def cosine_n_terms(theta,n):\n", + " # n = number of terms (not order)\n", + " # 2(n-1) = order\n", + " # cosine(theta) ~= ((-1)^n)*(theta^(2n))/(2n)!\n", + " # ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + ...\n", + " cos_nth = 0\n", + "\n", + " for i in range(n):\n", + " power_neg_one = (-1)**i\n", + " power_theta = theta**(2*i)\n", + " fact = np.math.factorial(2*i) \n", + " cos_nth += power_neg_one * power_theta / fact\n", + " return cos_nth\n", + "\n", + "\n", + "# Cosine approximation: \n", + "# To allow using fewer (n = 4, or maybe 3?) terms in Taylor series and still be accurate:\n", + "# If theta_0 is in 2nd/3rd quadrant:\n", + "# (1) move angle to 1st/4th quadrant for cosine approximation \n", + "# (more accurate if -pi/2 <= theta <= +pi/2)\n", + "# (2) force negative sign for cosine(theta)\n", + "def cosine_approx(theta, PI, n):\n", + " if theta >= PI/2:\n", + " # If in 2nd quadrant, move to 1st, but force cos_theta to be negative:\n", + " theta = PI - theta \n", + " cos_theta = -cosine_n_terms(theta, n)\n", + " else:\n", + " if theta <= -PI/2:\n", + " # If in 3rd quadrant, move to 4th, but force cos_theta to be negative:\n", + " theta = -PI - theta\n", + " cos_theta = -cosine_n_terms(theta, n)\n", + " \n", + " else:\n", + " # If in 1st or 4th quadrant, all is good\n", + " cos_theta = cosine_n_terms(theta, n) \n", + " \n", + " return cos_theta\n", + "\n", + "\n", + "# Sine approximation: need to force correct signs\n", + "def sine_approx(theta, cos_theta):\n", + " if theta >= 0:\n", + " # If theta >= 0, then sin_theta >= 0\n", + " sin_theta = (1 - cos_theta**2)**0.5\n", + " else:\n", + " # If theta < 0, then sin_theta < 0\n", + " sin_theta = -(1 - cos_theta**2)**0.5\n", + "\n", + " return sin_theta" + ] + }, + { + "cell_type": "markdown", + "id": "54318202", + "metadata": {}, + "source": [ + "## Physics functions" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "c29aebb5", + "metadata": {}, + "outputs": [], + "source": [ + "# Time of projectile in plot area\n", + "def time_in_plot(theta_0_deg, x_0, y_0, x_min, x_max, y_min, v_0x, v_0y, g): \n", + " \n", + " # Max time needed for y-direction\n", + " t_max_y = (v_0y + (v_0y**2 - 2 * g * (y_min - y_0))**0.5) / g\n", + " \n", + " print ('t_max_y = ', t_max_y)\n", + "\n", + " #\n", + " # Find max time needed for x_direction, t_max_x\n", + " # Then t_max is minimum of t_max_x and t_max_y\n", + " #\n", + " # Check if abs(theta_0_deg) <, =, or > 90 degrees \n", + " # Use theta_0_deg because calculated theta_0 in radians is slightly rounded\n", + " # Then find t_max_x, and then t_max\n", + " if abs(theta_0_deg) <= 90:\n", + " if abs(theta_0_deg) == 90:\n", + " # abs(theta_0_deg) = 90, so v_0x = 0, so t_max_x = infinite, so\n", + " t_max = t_max_y\n", + " \n", + " print ('t_max_x is ~infinite')\n", + " \n", + " else:\n", + " # abs(theta_0_deg) < 90, so v_0x > 0, so projectile moves toward x_max\n", + " t_max_x = (x_max - x_0) / v_0x \n", + " t_max = min(t_max_x, t_max_y)\n", + " \n", + " print ('t_max_x = ', t_max_x)\n", + " \n", + " else:\n", + " # abs(theta_0_deg) > 90, so v_0x < 0, so projectile moves toward x_min\n", + " t_max_x = (x_min - x_0) / v_0x\n", + " t_max = min(t_max_x, t_max_y)\n", + " \n", + " print ('t_max_x = ', t_max_x)\n", + " \n", + "\n", + " print ('t_max = ', t_max)\n", + " \n", + " return t_max\n", + "\n", + "# Horizontal position\n", + "def x_value(x_0, v_0x, t):\n", + " x = x_0 + v_0x * t\n", + " return x\n", + "\n", + "# Vertical position\n", + "def y_value(y_0, v_0y, g, t):\n", + " y = y_0 + v_0y * t - 0.5 * g * t**2\n", + " return y" + ] + }, + { + "cell_type": "markdown", + "id": "2081be1b", + "metadata": {}, + "source": [ + "## Projectile calculations" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "df8f26d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta_0 = 0.43633231305555553\n", + "v_0x = 90.6307754496346\n", + "v_0y = 42.261833152359934\n", + "t_max_y = 15.29595987968376\n", + "t_max_x = 11.03377958578453\n", + "t_max = 11.03377958578453\n", + "x_s = [ 0. 52.63157895 105.26315789 157.89473684 210.52631579\n", + " 263.15789474 315.78947368 368.42105263 421.05263158 473.68421053\n", + " 526.31578947 578.94736842 631.57894737 684.21052632 736.84210526\n", + " 789.47368421 842.10526316 894.73684211 947.36842105 1000. ]\n", + "y_s = [ 0. 22.89002841 42.47508712 58.75517613 71.73029544\n", + " 81.40044506 87.76562498 90.82583519 90.58107572 87.03134654\n", + " 80.17664766 70.01697909 56.55234081 39.78273284 19.70815517\n", + " -3.6713922 -30.35590926 -60.34539603 -93.63985249 -130.23927865]\n" + ] + } + ], + "source": [ + "# Convert launch angle to radians\n", + "theta_0 = theta_0_deg * PI / 180\n", + "print ('theta_0 = ', theta_0)\n", + "\n", + "# Trig function approximations\n", + "cos_theta_0 = cosine_approx(theta_0, PI, n)\n", + "sin_theta_0 = sine_approx(theta_0, cos_theta_0)\n", + " \n", + "# Initial velocity vector components\n", + "v_0x = v_0 * cos_theta_0\n", + "v_0y = v_0 * sin_theta_0\n", + "\n", + "print ('v_0x = ', v_0x)\n", + "print ('v_0y = ', v_0y)\n", + "\n", + "# Total time projectile remains in plot area\n", + "t_max = time_in_plot(theta_0_deg, x_0, y_0, x_min, x_max, y_min, v_0x, v_0y, g) \n", + " \n", + "# Time values array, evenly spaced\n", + "t_s = np.linspace(0, t_max, num_pts)\n", + "\n", + "# Horizontal positions array\n", + "x_s = x_value(x_0, v_0x, t_s) \n", + "\n", + "# Vertical positions array\n", + "y_s = y_value(y_0, v_0y, g, t_s)\n", + "\n", + "print ('x_s =', x_s)\n", + "print ('y_s =', y_s)" + ] + }, + { + "cell_type": "markdown", + "id": "213d92b8", + "metadata": {}, + "source": [ + "## Plot" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "f9a52462", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "# Labels\n", + "ax.set_xlabel('x (m)')\n", + "ax.set_ylabel('y (m)')\n", + "ax.set_title('Projectile path')\n", + "\n", + "# Ranges of axes\n", + "plt.xlim(x_min, x_max)\n", + "plt.ylim(y_min, y_max)\n", + "\n", + "# Grid lines\n", + "plt.grid()\n", + "\n", + "ax.plot(x_s, y_s, 'b.')\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From aefb62411e94a3b268df9617a9e632c1b6e2cd47 Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Sat, 7 Jan 2023 19:26:52 -0800 Subject: [PATCH 2/7] bug fixes, add pytest --- projectile_path/contracts/math.cairo | 104 ++++--- projectile_path/contracts/physics.cairo | 4 +- .../contracts/projectile_plot.cairo | 15 +- .../jupyter/prototype_projectile_plot.ipynb | 112 +++---- projectile_path/tests/test_projectile_plot.py | 277 ++++++++++++++++++ .../tests/test_projectile_plot_cairo.json | 1 + .../tests/test_projectile_plot_python.json | 1 + 7 files changed, 415 insertions(+), 99 deletions(-) create mode 100644 projectile_path/tests/test_projectile_plot.py create mode 100644 projectile_path/tests/test_projectile_plot_cairo.json create mode 100644 projectile_path/tests/test_projectile_plot_python.json diff --git a/projectile_path/contracts/math.cairo b/projectile_path/contracts/math.cairo index 38c005a..a2d23a7 100644 --- a/projectile_path/contracts/math.cairo +++ b/projectile_path/contracts/math.cairo @@ -26,6 +26,13 @@ func mul_fp{range_check_ptr}(a_fp: felt, b_fp: felt) -> felt { func div_fp{range_check_ptr}(a_fp: felt, b_fp: felt) -> felt { // multiply by SCALE_FP before signed_div_rem tempvar a_scaled = a_fp * SCALE_FP; + // 2nd argument in signed_div_rem must be positive + let bool = is_nn(b_fp); + if (bool == 0) { + // if b_fp < 0, then use negatives of first two arguments + let (c_fp, _) = signed_div_rem(-a_scaled, -b_fp, RANGE_CHECK_BOUND); + return c_fp; + } let (c_fp, _) = signed_div_rem(a_scaled, b_fp, RANGE_CHECK_BOUND); return c_fp; } @@ -38,14 +45,21 @@ func mul_fp_nfp{range_check_ptr}(a_fp: felt, b: felt) -> felt { // Divides fixed point quantity "a_fp" by non-fixed point quantity "b", with range check func div_fp_nfp{range_check_ptr}(a_fp: felt, b: felt) -> felt { + // 2nd argument in signed_div_rem must be positive + let bool = is_nn(b); + if (bool == 0) { + // if b_fp < 0, then use negatives of first two arguments + let (c_fp, _) = signed_div_rem(-a_fp, -b, RANGE_CHECK_BOUND); + return c_fp; + } let (c_fp, _) = signed_div_rem(a_fp, b, RANGE_CHECK_BOUND); return c_fp; } -// Finds distance between fixed point coordinate values (x0, y0) and (x, y) -func distance_two_points_fp{range_check_ptr}(x0_fp: felt, y0_fp: felt, x_fp: felt, y_fp: felt) -> felt { - let x_diff_fp = x_fp - x0_fp; - let y_diff_fp = y_fp - y0_fp; +// Finds distance between fixed point coordinate values (x_1, y_1) and (x_2, y_2) +func distance_two_points_fp{range_check_ptr}(x_1_fp: felt, y_1_fp: felt, x_2_fp: felt, y_2_fp: felt) -> felt { + let x_diff_fp = x_2_fp - x_1_fp; + let y_diff_fp = y_2_fp - y_1_fp; let x_diff_sq_fp = mul_fp(x_diff_fp, x_diff_fp); let y_diff_sq_fp = mul_fp(y_diff_fp, y_diff_fp); let sum_fp = x_diff_sq_fp + y_diff_sq_fp; @@ -103,70 +117,84 @@ func cosine_6th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { } -// Cosine approximation: -// To allow using fewer (n = 4, or maybe 3?) terms in Taylor series and still be accurate: +// Cosine approximation: +// Taylor series approximation is more accurate if -pi/2 <= theta_0 <= +pi/2. So: // If theta_0 is in 2nd/3rd quadrant: -// (1) move angle to 1st/4th quadrant for cosine approximation n -// (more accurate if -pi/2 <= theta <= +pi/2) -// (2) force negative sign for cosine(theta) +// (1) move angle to 1st/4th quadrant for cosine approximation +// (2) force negative sign for cosine(theta_0) +// (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded) // Then call cosine_6th_fp or cosine_8th_fp @view -func cosine_approx{range_check_ptr}(theta_fp: felt) -> (cos_theta_fp: felt) { +func cosine_approx{range_check_ptr}(theta_0_fp: felt, theta_0_deg: felt) -> (cos_theta_0_fp: felt) { alloc_locals; local range_check_ptr = range_check_ptr; - let bool1 = is_le(HALF_PI_fp, theta_fp); + let bool1 = is_le(90, theta_0_deg); if (bool1 == 1) { - // If in 2nd quadrant, move to 1st, but force cos_theta_fp to be negative: - let theta_moved_fp = PI_fp - theta_fp; - //let (non_neg_cos_theta_fp) = cosine_6th_fp(theta_moved_fp); - let (non_neg_cos_theta_fp) = cosine_8th_fp(theta_moved_fp); - tempvar cos_theta_fp = -non_neg_cos_theta_fp; - tempvar range_check_ptr = range_check_ptr; + if (theta_0_deg == 90) { + // If 90 degrees, use exact value of cos_theta_0 + tempvar cos_theta_0_fp = 0; + tempvar range_check_ptr = range_check_ptr; + + } else { + // If in 2nd quadrant, move to 1st, but force cos_theta_0_fp to be negative: + let theta_0_moved_fp = PI_fp - theta_0_fp; + //let (non_neg_cos_theta_0_fp) = cosine_6th_fp(theta_0_moved_fp); + let (non_neg_cos_theta_0_fp) = cosine_8th_fp(theta_0_moved_fp); + tempvar cos_theta_0_fp = -non_neg_cos_theta_0_fp; + tempvar range_check_ptr = range_check_ptr; + } } else { - let bool2 = is_le(theta_fp, -HALF_PI_fp); + let bool2 = is_le(theta_0_deg, -90); if (bool2 == 1) { - // If in 3rd quadrant, move to 4th, but force cos_theta_fp to be negative: - let theta_moved_fp = -PI_fp - theta_fp; - //let (non_neg_cos_theta_fp) = cosine_6th_fp(theta_moved_fp); - let (non_neg_cos_theta_fp) = cosine_8th_fp(theta_moved_fp); - tempvar cos_theta_fp = -non_neg_cos_theta_fp; - tempvar range_check_ptr = range_check_ptr; - + if (theta_0_deg == -90) { + // If -90 degrees, use exact value of cos_theta_0 + tempvar cos_theta_0_fp = 0; + tempvar range_check_ptr = range_check_ptr; + + } else { + // If in 3rd quadrant, move to 4th, but force cos_theta_0_fp to be negative: + let theta_0_moved_fp = -PI_fp - theta_0_fp; + //let (non_neg_cos_theta_0_fp) = cosine_6th_fp(theta_0_moved_fp); + let (non_neg_cos_theta_0_fp) = cosine_8th_fp(theta_0_moved_fp); + tempvar cos_theta_0_fp = -non_neg_cos_theta_0_fp; + tempvar range_check_ptr = range_check_ptr; + } + } else { // If in 1st or 4th quadrant, all is good - //let (temp_cos_theta_fp) = cosine_6th_fp(theta_fp); - let (temp_cos_theta_fp) = cosine_8th_fp(theta_fp); + //let (temp_cos_theta_0_fp) = cosine_6th_fp(theta_0_fp); + let (temp_cos_theta_0_fp) = cosine_8th_fp(theta_0_fp); - tempvar cos_theta_fp = temp_cos_theta_fp; + tempvar cos_theta_0_fp = temp_cos_theta_0_fp; tempvar range_check_ptr = range_check_ptr; } } - return (cos_theta_fp=cos_theta_fp); + return (cos_theta_0_fp=cos_theta_0_fp); } // Sine approximation: need to force correct signs -func sine_approx{range_check_ptr}(theta_fp: felt, cos_theta_fp: felt) -> (sin_theta_fp: felt) { +func sine_approx{range_check_ptr}(theta_0_fp: felt, cos_theta_0_fp: felt) -> (sin_theta_0_fp: felt) { alloc_locals; local range_check_ptr = range_check_ptr; - let cos_theta_squared_fp = mul_fp(cos_theta_fp, cos_theta_fp); - let diff_fp = 1 * SCALE_FP - cos_theta_squared_fp; + let cos_theta_0_squared_fp = mul_fp(cos_theta_0_fp, cos_theta_0_fp); + let diff_fp = 1 * SCALE_FP - cos_theta_0_squared_fp; let root = sqrt_fp(diff_fp); - let bool = is_nn(theta_fp); + let bool = is_nn(theta_0_fp); if (bool == 1) { - // If theta >= 0, then sin_theta >= 0 - tempvar sin_theta_fp = root; + // If theta_0 >= 0, then sin_theta_0 >= 0 + tempvar sin_theta_0_fp = root; tempvar range_check_ptr = range_check_ptr; } else { - // If theta < 0, then sin_theta < 0 - tempvar sin_theta_fp = -root; + // If theta_0 < 0, then sin_theta_0 < 0 + tempvar sin_theta_0_fp = -root; tempvar range_check_ptr = range_check_ptr; } - return (sin_theta_fp=sin_theta_fp); + return (sin_theta_0_fp=sin_theta_0_fp); } \ No newline at end of file diff --git a/projectile_path/contracts/physics.cairo b/projectile_path/contracts/physics.cairo index 4435802..0f36fa3 100644 --- a/projectile_path/contracts/physics.cairo +++ b/projectile_path/contracts/physics.cairo @@ -30,7 +30,7 @@ func time_in_plot_fp{range_check_ptr}(theta_0_deg: felt, v_0x_fp: felt, v_0y_fp: // Then t_max is minimum of t_max_x and t_max_y // // Check if abs(theta_0_deg) <, =, or > 90 degrees - // Use theta_0_deg because calculated theta_0 in radians is slightly rounded + // (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded) // Then find t_max_x, and then t_max let abs_value_theta_0_deg = abs_value(theta_0_deg); let bool1 = is_le(abs_value_theta_0_deg, 90); @@ -60,7 +60,7 @@ func time_in_plot_fp{range_check_ptr}(theta_0_deg: felt, v_0x_fp: felt, v_0y_fp: // abs(theta_0_deg) > 90, so v_0x < 0, so projectile moves toward x_min let delta_x_max_fp = x_min_fp - x_0_fp; let t_max_x_fp = div_fp(delta_x_max_fp, v_0x_fp); - let bool2 = is_le(t_max_x_fp,t_max_y_fp); + let bool2 = is_le(t_max_x_fp, t_max_y_fp); if (bool2 == 1) { tempvar t_max_fp = t_max_x_fp; diff --git a/projectile_path/contracts/projectile_plot.cairo b/projectile_path/contracts/projectile_plot.cairo index 10ed4fc..54243f1 100644 --- a/projectile_path/contracts/projectile_plot.cairo +++ b/projectile_path/contracts/projectile_plot.cairo @@ -6,7 +6,7 @@ from starkware.cairo.common.math import abs_value from starkware.cairo.common.math_cmp import is_le, is_nn from contracts.constants import SCALE_FP, PI_fp, g_fp, x_0_fp, y_0_fp, x_min_fp, x_max_fp, y_min_fp, y_max_fp -from contracts.math import mul_fp, div_fp, div_fp_nfp, cosine_approx, sine_approx +from contracts.math import mul_fp, div_fp, div_fp_nfp, cosine_6th_fp, cosine_8th_fp, cosine_approx, sine_approx from contracts.physics import time_in_plot_fp, x_value_fp, y_value_fp // @@ -42,7 +42,7 @@ func projectile_path{range_check_ptr}(num_pts: felt, theta_0_deg: felt, v_0: fel // Check inputs with_attr error_message("Check that 2 <=num_pts <= 25") { - assert is_le(1, num_pts) = 1; + assert is_le(2, num_pts) = 1; } with_attr error_message("Check that 2 <=num_pts <= 25") { assert is_le(num_pts, 25) = 1; @@ -53,8 +53,8 @@ func projectile_path{range_check_ptr}(num_pts: felt, theta_0_deg: felt, v_0: fel assert is_le(abs_value_theta_0_deg, 180) = 1; } - with_attr error_message("Check that v_0 >= 0") { - assert is_nn(v_0) = 1; + with_attr error_message("Check that v_0 >= 1") { + assert is_le(1, v_0) = 1; } // Scale up inputs to be fixed point values @@ -62,12 +62,13 @@ func projectile_path{range_check_ptr}(num_pts: felt, theta_0_deg: felt, v_0: fel let v_0_fp = v_0 * SCALE_FP; // Convert angle to radians - let PI_in_deg_fp = 180 * SCALE_FP; - let pi_over_180_fp = div_fp(PI_fp, PI_in_deg_fp); + let pi_over_180_fp = div_fp_nfp(PI_fp, 180); let theta_0_fp = mul_fp(theta_0_deg_fp, pi_over_180_fp); // Trig function approximations - let (cos_theta_0_fp) = cosine_approx(theta_0_fp); + // Use below instead of this: let (cos_theta_0_fp) = cosine_8th_fp(theta_0_fp); + // for better approx of cosine + let (cos_theta_0_fp) = cosine_approx(theta_0_fp, theta_0_deg); let (sin_theta_0_fp) = sine_approx(theta_0_fp, cos_theta_0_fp); // Initial velocity vector components diff --git a/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb b/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb index 0d80324..9efcc2c 100644 --- a/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb +++ b/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 147, "id": "7d7134bf", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 148, "id": "ac10d3a4", "metadata": {}, "outputs": [], @@ -37,7 +37,7 @@ "# Number of points to plot\n", "num_pts = 20\n", "# Launch angle in degrees: -180 <= theta_0_deg <= +180\n", - "theta_0_deg = 25\n", + "theta_0_deg = 90\n", "# Launch velocity magnitude: v_0 = ~100 is enough to reach top of plot area on vertical shot\n", "v_0 = 100" ] @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 149, "id": "2494abc5", "metadata": {}, "outputs": [], @@ -61,7 +61,7 @@ "# Math constants\n", "#\n", "# Number of terms in cosine Taylor series approximation\n", - "n = 4\n", + "n = 5\n", "# pi approximation\n", "PI = 3.141592654\n", "\n", @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 150, "id": "92ea27fe", "metadata": {}, "outputs": [], @@ -102,7 +102,7 @@ "# Cosine from Taylor series approximation\n", "# Assume -pi <= theta <= +pi, so no need to shift theta\n", "# Accuracy is improved if instead -pi/2 <= theta <= +pi/2\n", - "def cosine_n_terms(theta,n):\n", + "def cosine_n_terms(theta, n):\n", " # n = number of terms (not order)\n", " # 2(n-1) = order\n", " # cosine(theta) ~= ((-1)^n)*(theta^(2n))/(2n)!\n", @@ -117,40 +117,49 @@ " return cos_nth\n", "\n", "\n", - "# Cosine approximation: \n", - "# To allow using fewer (n = 4, or maybe 3?) terms in Taylor series and still be accurate:\n", + "# Cosine approximation:\n", + "# Taylor series approximation is more accurate if -pi/2 <= theta_0 <= +pi/2. So:\n", "# If theta_0 is in 2nd/3rd quadrant:\n", - "# (1) move angle to 1st/4th quadrant for cosine approximation \n", - "# (more accurate if -pi/2 <= theta <= +pi/2)\n", - "# (2) force negative sign for cosine(theta)\n", - "def cosine_approx(theta, PI, n):\n", - " if theta >= PI/2:\n", - " # If in 2nd quadrant, move to 1st, but force cos_theta to be negative:\n", - " theta = PI - theta \n", - " cos_theta = -cosine_n_terms(theta, n)\n", + "# (1) move angle to 1st/4th quadrant for cosine approximation\n", + "# (2) force negative sign for cosine(theta_0)\n", + "# (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded)\n", + "# Then call cosine_n_terms\n", + "def cosine_approx(theta_0, theta_0_deg, PI, n):\n", + " if theta_0_deg >= 90:\n", + " if theta_0_deg == 90:\n", + " # If 90 degrees, use exact value of cos_theta_0\n", + " cos_theta_0 = 0\n", + " else:\n", + " # If in 2nd quadrant, move to 1st, but force cos_theta_0 to be negative:\n", + " theta_0 = PI - theta_0\n", + " cos_theta_0 = -cosine_n_terms(theta_0, n)\n", " else:\n", - " if theta <= -PI/2:\n", - " # If in 3rd quadrant, move to 4th, but force cos_theta to be negative:\n", - " theta = -PI - theta\n", - " cos_theta = -cosine_n_terms(theta, n)\n", - " \n", + " if theta_0_deg <= -90:\n", + " if theta_0_deg == -90:\n", + " # If -90 degrees, use exact value of cos_theta_0\n", + " cos_theta_0 = 0\n", + " else:\n", + " # If in 3rd quadrant, move to 4th, but force cos_theta_0 to be negative:\n", + " theta_0 = -PI - theta_0\n", + " cos_theta_0 = -cosine_n_terms(theta_0, n)\n", + "\n", " else:\n", " # If in 1st or 4th quadrant, all is good\n", - " cos_theta = cosine_n_terms(theta, n) \n", - " \n", - " return cos_theta\n", + " cos_theta_0 = cosine_n_terms(theta_0, n)\n", + "\n", + " return cos_theta_0\n", "\n", "\n", "# Sine approximation: need to force correct signs\n", - "def sine_approx(theta, cos_theta):\n", - " if theta >= 0:\n", - " # If theta >= 0, then sin_theta >= 0\n", - " sin_theta = (1 - cos_theta**2)**0.5\n", + "def sine_approx(theta_0, cos_theta_0):\n", + " if theta_0 >= 0:\n", + " # If theta_0 >= 0, then sin_theta_0 >= 0\n", + " sin_theta_0 = (1 - cos_theta_0**2) ** 0.5\n", " else:\n", - " # If theta < 0, then sin_theta < 0\n", - " sin_theta = -(1 - cos_theta**2)**0.5\n", + " # If theta_0 < 0, then sin_theta_0 < 0\n", + " sin_theta_0 = -((1 - cos_theta_0**2) ** 0.5)\n", "\n", - " return sin_theta" + " return sin_theta_0" ] }, { @@ -163,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 151, "id": "c29aebb5", "metadata": {}, "outputs": [], @@ -181,7 +190,7 @@ " # Then t_max is minimum of t_max_x and t_max_y\n", " #\n", " # Check if abs(theta_0_deg) <, =, or > 90 degrees \n", - " # Use theta_0_deg because calculated theta_0 in radians is slightly rounded\n", + " # (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded)\n", " # Then find t_max_x, and then t_max\n", " if abs(theta_0_deg) <= 90:\n", " if abs(theta_0_deg) == 90:\n", @@ -230,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 152, "id": "df8f26d3", "metadata": {}, "outputs": [ @@ -238,20 +247,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "theta_0 = 0.43633231305555553\n", - "v_0x = 90.6307754496346\n", - "v_0y = 42.261833152359934\n", - "t_max_y = 15.29595987968376\n", - "t_max_x = 11.03377958578453\n", - "t_max = 11.03377958578453\n", - "x_s = [ 0. 52.63157895 105.26315789 157.89473684 210.52631579\n", - " 263.15789474 315.78947368 368.42105263 421.05263158 473.68421053\n", - " 526.31578947 578.94736842 631.57894737 684.21052632 736.84210526\n", - " 789.47368421 842.10526316 894.73684211 947.36842105 1000. ]\n", - "y_s = [ 0. 22.89002841 42.47508712 58.75517613 71.73029544\n", - " 81.40044506 87.76562498 90.82583519 90.58107572 87.03134654\n", - " 80.17664766 70.01697909 56.55234081 39.78273284 19.70815517\n", - " -3.6713922 -30.35590926 -60.34539603 -93.63985249 -130.23927865]\n" + "theta_0 = 1.570796327\n", + "v_0x = 0\n", + "v_0y = 100.0\n", + "t_max_y = 24.562497223949272\n", + "t_max_x is ~infinite\n", + "t_max = 24.562497223949272\n", + "x_s = [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", + "y_s = [ 0. 121.08724378 225.79637275 314.12738691 386.08028627\n", + " 441.65507082 480.85174057 503.67029552 510.11073565 500.17306098\n", + " 473.85727151 431.16336723 372.09134815 296.64121426 204.81296556\n", + " 96.60660206 -27.97787625 -168.94046936 -326.28117728 -500. ]\n" ] } ], @@ -261,7 +267,9 @@ "print ('theta_0 = ', theta_0)\n", "\n", "# Trig function approximations\n", - "cos_theta_0 = cosine_approx(theta_0, PI, n)\n", + "# Don't use cos_theta_0 = cosine_n_terms(theta_0, n),\n", + "# because results are bad near PI radians\n", + "cos_theta_0 = cosine_approx(theta_0, theta_0_deg, PI, n)\n", "sin_theta_0 = sine_approx(theta_0, cos_theta_0)\n", " \n", "# Initial velocity vector components\n", @@ -297,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 153, "id": "f9a52462", "metadata": { "scrolled": false @@ -305,7 +313,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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hVVVVamgoKDO8NcUap5ryZIlZ/wk4umrenUpKCioc6wmEBUXF+udd97RnDlzdN999znnlJWV6ccff2xM6QDcgMOFACw3ePBgHT9+XG+++abL+AsvvODcfibDhw/Xd999p/DwcPXt27fWn5pPB1533XWSpKeffvqstZzLKs6AAQPUtm1b7dq1q85a+vbtK39//199nH/84x8uJ+zv379fW7Zs0aBBgyRVB1VjjOx2u8v9li1bpqqqqlr9SGJlCmiBWMkCYLnf//73evLJJzVu3Djt27dPiYmJ2rx5sxYsWKDf/e53uvbaa89432nTpmn16tW6+uqrdc899+iiiy6Sw+HQgQMHtHbtWk2fPl1XXHGFrrrqKo0dO1YPPPCADh8+rOHDh8tut2vHjh0KCgrSXXfdJUlKTEzUypUrtWrVKnXv3l0BAQFKTEysVx/nnXeelixZonHjxunHH3/UzTffrI4dO+rIkSP64osvdOTIkV8NeVL1Ct5//Md/aPz48SouLtacOXMUEBCgmTNnSpJCQ0N19dVX69FHH1VERIRiY2O1ceNGZWRkqG3bti6PVXNF96VLlyokJEQBAQGKi4ur8zAhgOZFyAJguYCAAK1fv16zZs3So48+qiNHjqhz586aMWOG5syZU2v+qYcUg4OD9fHHH+uhhx7S0qVLtXfvXgUGBqpr16669tprXa5yvnz5cl166aXKyMjQ8uXLFRgYqF69eun+++93zpk7d64OHTqk8ePH69ixY+rWrVuDvjbn9ttvV9euXfXII49owoQJOnbsmDp27KjevXvX++uAFixYoOzsbP3hD39QSUmJLr/8cq1cudLlavOvvPKKpk6dqnvvvVeVlZUaMGCAsrKyXC7PIElxcXFavHix/vrXv2rQoEGqqqpSZmampV9NBKB+bObUNWsAcLP27dvrj3/8ox577DF3l9LkNmzYoKSkJL322mtnPXkeQOvAShaAFuHLL7/Ue++9p6NHj6pfv37uLgcAzhkhC0CLMHXqVH399deaMWPGr14FHgA8AYcLAQAALMAlHAAAACxAyAIAALAAIQsAAMACnPjeCA6HQ/n5+QoJCanzK0QAAEDLY4zRsWPHFB0drTZtrF9nImQ1Qn5+vrp06eLuMgAAQCN8//33iomJsfx5CFmNEBISIknau3ev2rdv7+Zqmk9FRYXWrl2roUOHys/P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jejjI8XHu6ceAJ6PkAUAkmJipKVLJR8fI6n657PPVo8DQGMQsgDgpNRUKTe3UvPnb1ZubqVSU91dEQBPRsgCgFPExEiJiUWsYAE4Z4QsAAAACxCyAOAUXIwUQFMhZAHASVyMFEBTImQBgLgYKYCmR8gCAHExUgBNj5AFAOJipACaHiELAMTFSAE0PUIWAJzExUgBNCVCFgCcgouRAmgqhCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwgG9DJhcXF2vNmjX6+OOPtW/fPpWWlqpDhw665JJLlJycrP79+1tVJwAAgEep10rWoUOHNH78eHXq1Enz5s3Tzz//rN69e2vw4MGKiYnR+vXrNWTIEPXq1UurVq2yumYAAIAWr14rWRdffLF+//vf69NPP1VCQkKdc06cOKE333xTixYt0vfff68ZM2Y0aaEAAACepF4ha+fOnerQocNZ5wQGBmrUqFEaNWqUjhw50iTFAQAAeKp6HS78tYB1rvMBAABamwad+F7j4MGD+p//+R8VFhbK4XC4bLv77rubpDAAAABP1uCQlZmZqYkTJ8rf31/h4eGy2WzObTabjZAFAACgRoSsv/zlL/rLX/6imTNnqk0bLrMFAABQlwanpNLSUo0cOZKABQAAcBYNTkqpqal67bXXrKgFAACg1Wjw4cKFCxdq+PDh+uc//6nExET5+fm5bF+0aFGTFQcAAOCpGhyyFixYoA8++EC//e1vJanWie8AAABoRMhatGiRnn/+eaWkpFhQTvN56qmn9Oijj+rQoUO68MILtXjxYl111VXuLgsAALQSDT4ny263a8CAAVbU0mxWrVqladOmadasWdqxY4euuuoqXXfddTpw4IC7SwPgZnl5Uk5OhPLy3F0JAE/X4JA1depULVmyxIpams2iRYuUmpqqO+64Qz179tTixYvVpUsXPf300+4uDYAbZWRI8fG+mj17gOLjfZWR4e6KAHiyBh8u/PTTT/XRRx/pnXfe0YUXXljrxPc33nijyYqzQnl5ubZv36777rvPZXzo0KHasmVLnfcpKytTWVmZ83ZJSYkkqaKiQhUVFdYV28LU9OpNPUv07S195+VJd97pK4ej+txS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2e12lzkzZ87Uvn37FBcXV+dzlZWVqayszHm7pKREklRRUaGKioqmbq3FqunVm3qW6Ju+vQN907c3aO5+PTJkfffdd1qyZIkef/xx51hBQYEiIyNd5rVr107+/v4qKChwzomNjXWZU3OfgoKCM4ashQsXau7cubXG169fr6CgoHNpxSNlZWW5uwS3oG/vQt/ehb69Q2lpabM+n1tDVnp6ep3h5VTZ2dnq27ev83Z+fr6GDRumW265RXfccYfL3LoO9xljXMZPn1Nz0vvZDhXOnDlTaWlpztslJSXq0qWLkpKSFB4eftb6W5OKigplZWVpyJAh8vPzc3c5zYa+6dsb0Dd9e4OioqJmfT63hqwpU6Zo5MiRZ51z6spTfn6+kpKS1K9fPy1dutRlXlRUlLZt2+YydvToUVVUVDhXq6KiopyrWjUKCwslqdYq2KnsdrvLIcYafn5+XvXmrEHf3oW+vQt9exdv67u5e3VryIqIiFBERES95h48eFBJSUnq06ePMjMz1aaN69Un+vXrpwcffFCHDh1Sp06dJFWfDG+329WnTx/nnPvvv1/l5eXy9/d3zomOjq51GBEAAOBceMR1svLz8zVo0CB16dJFjz32mI4cOaKCggKXVamhQ4eqV69eGjt2rHbs2KEPP/xQM2bM0Pjx4xUaGipJGj16tOx2u1JSUvTVV19pzZo1WrBgAZ8sBAAATc4jTnxfu3atdu/erd27dyvmtG9trTmnysfHR++++64mTZqkAQMGKDAwUKNHj3Ze4kGSwsLClJWVpcmTJ6tv375q166d0tLSXM63AgAAaAoeEbJSUlKUkpLyq/O6du2qd95556xzEhMTtWnTpiaqDAAAoG4ecbgQAADA0xCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAOAUeXlSTk6E8vLcXQkAT0fIAoCTMjKk+HhfzZ49QPHxvsrIcHdFADwZIQsAVL2CdeedksNhk1T9c8IEsaIFoNEIWQAgKTdXcjhcx6qqpN273VMPAM9HyAIAST16SG1O+43o4yPFx7unHgCej5AFAJJiYqSlSyUfHyOp+uezz1aPA0BjELIA4KTUVCk3t1Lz529Wbm6lUlPdXREAT0bIAoBTxMRIiYlFrGABOGeELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALeFzIKisrU+/evWWz2fT555+7bDtw4IBuuOEGBQcHKyIiQnfffbfKy8td5uTk5GjgwIEKDAxU586dNW/ePBljmrEDAADgDXzdXUBD3XvvvYqOjtYXX3zhMl5VVaXrr79eHTp00ObNm1VUVKRx48bJGKMlS5ZIkkpKSjRkyBAlJSUpOztb3377rVJSUhQcHKzp06e7ox0AANBKeVTIev/997V27VqtXr1a77//vsu2tWvXateuXfr+++8VHR0tSXr88ceVkpKiBx98UKGhoXr55Zf1yy+/aPny5bLb7UpISNC3336rRYsWKS0tTTabzR1tAQCAVshjDhcePnxY48eP14svvqigoKBa27du3aqEhARnwJKk5ORklZWVafv27c45AwcOlN1ud5mTn5+vffv2Wd4DAADwHh6xkmWMUUpKiiZOnKi+ffvWGYgKCgoUGRnpMtauXTv5+/uroKDAOSc2NtZlTs19CgoKFBcXV+fzl5WVqayszHm7pKREklRRUaGKiorGtuVxanr1pp4l+qZv70Df9O0Nmrtft4as9PR0zZ0796xzsrOztWXLFpWUlGjmzJlnnVvX4T5jjMv46XNqTno/26HChQsX1lnn+vXr61xVa+2ysrLcXYJb0Ld3oW/vQt/eobS0tFmfz60ha8qUKRo5cuRZ58TGxuqBBx7QJ5984nKYT5L69u2rMWPGaMWKFYqKitK2bdtcth89elQVFRXO1aqoqCjnqlaNwsJCSaq1CnaqmTNnKi0tzXm7pKREXbp0UVJSksLDw3+90VaioqJCWVlZGjJkiPz8/NxdTrOhb/r2BvRN396gqKioWZ/PrSErIiJCERERvzrvb3/7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\n", "text/plain": [ "
" ] diff --git a/projectile_path/tests/test_projectile_plot.py b/projectile_path/tests/test_projectile_plot.py new file mode 100644 index 0000000..05f3378 --- /dev/null +++ b/projectile_path/tests/test_projectile_plot.py @@ -0,0 +1,277 @@ +from re import S +import pytest +import os +from starkware.starknet.testing.starknet import Starknet +import asyncio +import numpy as np +import json + +################################################# +# Input parameters +# +# Number of points to plot +num_pts = 20 + +# Launch angle in degrees: -180 <= theta_0_deg <= +180 +theta_0_deg = 45 + +# Launch velocity magnitude: v_0 >=1 +# note that v_0 = ~100 is enough to reach top of plot area on vertical shot if y_max = ~500 +v_0 = 100 + + +################################################# +# Equivalent to constants.cairo contract +# +# Fixed point math constants +SCALE_FP = 10**20 +SCALE_FP_SQRT = 10**10 +RANGE_CHECK_BOUND = 2**120 + +# Constants for felts +PRIME = 3618502788666131213697322783095070105623107215331596699973092056135872020481 +HALF_PRIME = ( + 1809251394333065606848661391547535052811553607665798349986546028067936010240 +) + +# +# Math constants +# +# Number of terms in cosine Taylor series approximation +n = 5 +# Fixed point values +PI_fp = 3141592654 * SCALE_FP / 1000000000 +HALF_PI_fp = 1570796327 * SCALE_FP / 1000000000 +# Non fixed point values +PI = PI_fp / SCALE_FP +HALF_PI = HALF_PI_fp / SCALE_FP + +# +# Physical parameters +# +# Gravitational acceleration in m/s^2 +g = 9.8 +# Initial position +x_0 = 0 +y_0 = 0 + +# +# Plot parameters +# +# Min and max values for axes +x_max = 1000 +x_min = -x_max +y_max = 500 +y_min = -y_max + + +################################################# +# Math functions +# Equivalent to part of math.cairo contract +# + +# Cosine from Taylor series approximation +# Assume -pi <= theta <= +pi, so no need to shift theta +# Accuracy is improved if instead -pi/2 <= theta <= +pi/2 +def cosine_n_terms(theta, n): + # n = number of terms (not order) + # 2(n-1) = order + # cosine(theta) ~= ((-1)^n)*(theta^(2n))/(2n)! + # ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + ... + cos_nth = 0 + + for i in range(n): + power_neg_one = (-1) ** i + power_theta = theta ** (2 * i) + fact = np.math.factorial(2 * i) + cos_nth += power_neg_one * power_theta / fact + return cos_nth + + +# Cosine approximation: +# Taylor series approximation is more accurate if -pi/2 <= theta_0 <= +pi/2. So: +# If theta_0 is in 2nd/3rd quadrant: +# (1) move angle to 1st/4th quadrant for cosine approximation +# (2) force negative sign for cosine(theta_0) +# (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded) +# Then call cosine_n_terms +def cosine_approx(theta_0, theta_0_deg, PI, n): + if theta_0_deg >= 90: + if theta_0_deg == 90: + # If 90 degrees, use exact value of cos_theta_0 + cos_theta_0 = 0 + else: + # If in 2nd quadrant, move to 1st, but force cos_theta_0 to be negative: + theta_0 = PI - theta_0 + cos_theta_0 = -cosine_n_terms(theta_0, n) + else: + if theta_0_deg <= -90: + if theta_0_deg == -90: + # If -90 degrees, use exact value of cos_theta_0 + cos_theta_0 = 0 + else: + # If in 3rd quadrant, move to 4th, but force cos_theta_0 to be negative: + theta_0 = -PI - theta_0 + cos_theta_0 = -cosine_n_terms(theta_0, n) + + else: + # If in 1st or 4th quadrant, all is good + cos_theta_0 = cosine_n_terms(theta_0, n) + + return cos_theta_0 + + +# Sine approximation: need to force correct signs +def sine_approx(theta_0, cos_theta_0): + if theta_0 >= 0: + # If theta_0 >= 0, then sin_theta_0 >= 0 + sin_theta_0 = (1 - cos_theta_0**2) ** 0.5 + else: + # If theta_0 < 0, then sin_theta_0 < 0 + sin_theta_0 = -((1 - cos_theta_0**2) ** 0.5) + + return sin_theta_0 + + +################################################# +# Physics functions +# Equivalent to physics.cairo contract +# + +# Time of projectile in plot area +def time_in_plot(theta_0_deg, x_0, y_0, x_min, x_max, y_min, v_0x, v_0y, g): + + # Max time needed for y-direction + t_max_y = (v_0y + (v_0y**2 - 2 * g * (y_min - y_0)) ** 0.5) / g + + # + # Find max time needed for x_direction, t_max_x + # Then t_max is minimum of t_max_x and t_max_y + # + # Check if abs(theta_0_deg) <, =, or > 90 degrees + # (Use theta_0_deg because calculated theta_0 in radians is slightly rounded) + # Then find t_max_x, and then t_max + if abs(theta_0_deg) <= 90: + if abs(theta_0_deg) == 90: + # abs(theta_0_deg) = 90, so v_0x = 0, so t_max_x = infinite, so + t_max = t_max_y + + else: + # abs(theta_0_deg) < 90, so v_0x > 0, so projectile moves toward x_max + t_max_x = (x_max - x_0) / v_0x + t_max = min(t_max_x, t_max_y) + + else: + # abs(theta_0_deg) > 90, so v_0x < 0, so projectile moves toward x_min + t_max_x = (x_min - x_0) / v_0x + t_max = min(t_max_x, t_max_y) + + return t_max + + +# Horizontal position +def x_value(x_0, v_0x, t): + x = x_0 + v_0x * t + return x + + +# Vertical position +def y_value(y_0, v_0y, g, t): + y = y_0 + v_0y * t - 0.5 * g * t**2 + return y + + +################################################# +# Projectile calculations +# Equivalent to projectile_plot.cairo contract +# +def projectile_path(num_pts, theta_0_deg, v_0): + + # Convert launch angle to radians + theta_0 = theta_0_deg * PI / 180 + + # Trig function approximations + # Don't use cos_theta_0 = cosine_n_terms(theta_0, n), + # because results are bad near PI radians + cos_theta_0 = cosine_approx(theta_0, theta_0_deg, PI, n) + sin_theta_0 = sine_approx(theta_0, cos_theta_0) + + # Initial velocity vector components + v_0x = v_0 * cos_theta_0 + v_0y = v_0 * sin_theta_0 + + # Total time projectile remains in plot area + t_max = time_in_plot(theta_0_deg, x_0, y_0, x_min, x_max, y_min, v_0x, v_0y, g) + + # Time values array, evenly spaced + t_s = np.linspace(0, t_max, num_pts) + + # Horizontal positions array + x_s = x_value(x_0, v_0x, t_s) + + # Vertical positions array + y_s = y_value(y_0, v_0y, g, t_s) + + return (x_s, y_s) + + +################################################# +# Pytest +# + +# The path to the contract source code. +CONTRACT_FILE = os.path.join("contracts", "projectile_plot.cairo") + + +@pytest.mark.asyncio +async def test(): + + starknet = await Starknet.empty() + contract = await starknet.deploy( + source=CONTRACT_FILE, + ) + print() # print blank line + + # Cairo: position coordinate arrays + ret = await contract.projectile_path(num_pts, theta_0_deg, v_0).call() + # dump to json file + with open("tests/test_projectile_plot_cairo.json", "w") as outfile: + json.dump(ret.result, outfile) + + # Python: position coordinate arrays as a tuple + coordinate_s = projectile_path(num_pts, theta_0_deg, v_0) + coordinate_s_as_list = [coordinate_s[0].tolist(), coordinate_s[1].tolist()] + # dump to a different json file + with open("tests/test_projectile_plot_python.json", "w") as outfile: + json.dump(coordinate_s_as_list, outfile) + + print( + f"> path for (num_pts={num_pts}, theta_0_deg={theta_0_deg}, v_0={v_0}) returns:" + ) + print() + print(f"> array coordinates") + print(f"> member cairo x python x*SCALE_FP cairo y python y*SCALE_FP") + + # Print array members one line at a time: + for p in range(0, num_pts): + + if ret.result[0][p] <= HALF_PRIME: + x_coordinate_ca = ret.result[0][p] + else: + x_coordinate_ca = ret.result[0][p] - PRIME + + if ret.result[1][p] <= HALF_PRIME: + y_coordinate_ca = ret.result[1][p] + else: + y_coordinate_ca = ret.result[1][p] - PRIME + + x_coordinate_py = int(SCALE_FP * coordinate_s[0][p]) + y_coordinate_py = int(SCALE_FP * coordinate_s[1][p]) + + print( + f"> {p} {x_coordinate_ca} {x_coordinate_py} {y_coordinate_ca} {y_coordinate_py}" + ) + + # print ret.call_info.execution_resources to get n_steps + print() + print(ret.call_info.execution_resources) diff --git a/projectile_path/tests/test_projectile_plot_cairo.json b/projectile_path/tests/test_projectile_plot_cairo.json new file mode 100644 index 0000000..90ac9da --- /dev/null +++ b/projectile_path/tests/test_projectile_plot_cairo.json @@ -0,0 +1 @@ +[[0, 5263157894736842105252, 10526315789473684210504, 15789473684210526315756, 21052631578947368421008, 26315789473684210526260, 31578947368421052631512, 36842105263157894736764, 42105263157894736842016, 47368421052631578947268, 52631578947368421052520, 57894736842105263157772, 63157894736842105263024, 68421052631578947368276, 73684210526315789473528, 78947368421052631578780, 84210526315789473684032, 89473684210526315789284, 94736842105263157894536, 99999999999999999999788], [0, 4991689405391993787597, 9440442560202554281073, 13346259464431681480427, 16709140118079375385661, 19529084521145635996769, 21806092673630463313759, 23540164575533857336624, 24731300226855818065368, 25379499627596345499990, 25484762777755439640492, 25047089677333100486872, 24066480326329328039131, 22542934724744122297264, 20476452872577483261281, 17867034769829410931171, 14714680416499905306945, 11019389812588966388594, 6781162958096594176120, 1999999853022788669526]] \ No newline at end of file diff --git a/projectile_path/tests/test_projectile_plot_python.json b/projectile_path/tests/test_projectile_plot_python.json new file mode 100644 index 0000000..25b3c6b --- /dev/null +++ b/projectile_path/tests/test_projectile_plot_python.json @@ -0,0 +1 @@ +[[0.0, 52.631578947368425, 105.26315789473685, 157.8947368421053, 210.5263157894737, 263.15789473684214, 315.7894736842106, 368.42105263157896, 421.0526315789474, 473.68421052631584, 526.3157894736843, 578.9473684210526, 631.5789473684212, 684.2105263157896, 736.8421052631579, 789.4736842105264, 842.1052631578948, 894.7368421052633, 947.3684210526317, 1000.0], [0.0, 49.91689405855817, 94.40442561130202, 133.46259465823152, 167.0914011993467, 195.29084523464758, 218.06092676413408, 235.40164578780625, 247.31300230566407, 253.79499631770761, 254.84762782393682, 250.4708968243516, 240.66480331895212, 225.42934730773834, 204.7645287907102, 178.67034776786772, 147.14680423921084, 110.19389820473953, 67.81162966445424, 19.999998618354425]] \ No newline at end of file From 97c2dfda68f458ccd22972e41118a0fd52944a1d Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Mon, 9 Jan 2023 16:58:00 -0800 Subject: [PATCH 3/7] add jupyter test --- projectile_path/LICENSE.md | 21 + projectile_path/README.md | 68 + .../artifacts/projectile_plot_abi.json | 17 - .../artifacts/projectile_plot_compiled.json | 5715 ++++++++++------- projectile_path/contracts/math.cairo | 3 - .../prototype_projectile_plot.ipynb | 14 +- .../tests/test_projectile_plot.ipynb | 172 + projectile_path/tests/test_projectile_plot.py | 2 +- .../tests/test_projectile_plot_cairo.json | 2 +- .../tests/test_projectile_plot_python.json | 2 +- 10 files changed, 3542 insertions(+), 2474 deletions(-) create mode 100644 projectile_path/LICENSE.md create mode 100644 projectile_path/README.md rename projectile_path/tests/{jupyter => }/prototype_projectile_plot.ipynb (99%) create mode 100644 projectile_path/tests/test_projectile_plot.ipynb diff --git a/projectile_path/LICENSE.md b/projectile_path/LICENSE.md new file mode 100644 index 0000000..4c20739 --- /dev/null +++ b/projectile_path/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 whatthedev.eth + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/projectile_path/README.md b/projectile_path/README.md new file mode 100644 index 0000000..20a2136 --- /dev/null +++ b/projectile_path/README.md @@ -0,0 +1,68 @@ +# Projectile path plot generator + +Simulated here is a projectile path under gravity, assuming g = 9.8 m/s^2. +- A "side-view" 2-D plot is created. +- The origin is at the lower left corner of the plot, the +x-axis is to the right, and the +y-axis is up. + + +## User Inputs + +Only these *integer* inputs for now: +- `num_pts` = number of points to plot along the path +- `theta_0_deg` = launch angle in degrees measured from the +x-axis: -180 <= `theta_0_deg` <= +180 degrees +- `v_0 = launch velocity magnitude: 0 <= `v_0` <= 100 (in units of m/s) + +After input, `theta_0_deg` and `v_0` are scaled up to be FP (fixed point) values, and `theta_0_deg` is also converted to radians, resulting in `theta_0_fp` and `v_0_fp`. The FP scale is `SCALE_FP` = 10**20. + + +## Cairo files + +**projectile_plot.cairo** contains: +- `projectile_plot_arr`- The view function which accepts user inputs and initiates all calculations +- ???????????????????- Other functions to calculate x coordinates, y coordinates, intensities at each position (x, y), and fill arrays for each of these + +**physics.cairo** contains functions for physics calculations of: +- ?????????????????? + +**math.cairo** contains math functions to use with fixed point quantities: +- ???????????????????? +- Square root, multiplication, division +- Distance between two points +- Shift any angle `theta` to equivalent angle `theta_shifted` within range -pi to pi +- Cosine approximation using Taylor series, requires -pi <= angle <= pi + +**structs.cairo** contains struct definitions for: +- ?????????????????????????? + +**constants.cairo** contains: +- FP math constants +- Other math constants +- Physical parameters (except those that are user inputs) +- Plot parameters (except those that are user inputs) + + +## Tests + +**test_projectile_plot.py** +- ????????????????????Contains input parameters which are fed into both Cairo and Python calculations +- Contains other constants and parameters (that should match those in **constants.cairo**) for Python calculations +- Contains Python calculations of intensity array, to compare to Cairo calculations done by calling `intensity_plot_arr` function from **intensity_plot.cairo** using same input parameters +- Dumps `intensity_plot_arr` return to **test_intensity_plot.json** to be used by Jupyter notebook +- Prints for comparison the values (as FP) from the intensity arrays found with Cairo and Python +- To run: `pytest -s tests/test_intensity_plot.py` + + +**test_projectile_plot.ipynb** +- ?????????????????????????Jupyter notebook which plots two intensity arrays: + - Array calculated in Cairo by **projectile_plot.cairo** + - Array calculated in Python by **test_projectile_plot.py** +- Gets data from .json files created in **test_projectile_plot.py** +- To run: + - Install [Jupyter Notebook](https://jupyter.org/install) + - `jupyter notebook`, follow instructions to open notebook in browser + - Open file **test_projectile_plot.ipynb** + + +## License + +This repository is licensed under the MIT license. \ No newline at end of file diff --git a/projectile_path/artifacts/projectile_plot_abi.json b/projectile_path/artifacts/projectile_plot_abi.json index 7e308cf..94a8062 100644 --- a/projectile_path/artifacts/projectile_plot_abi.json +++ b/projectile_path/artifacts/projectile_plot_abi.json @@ -1,21 +1,4 @@ [ - { - "inputs": [ - { - "name": "theta_fp", - "type": "felt" - } - ], - "name": "cosine_approx", - "outputs": [ - { - "name": "cos_theta_fp", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { diff --git a/projectile_path/artifacts/projectile_plot_compiled.json b/projectile_path/artifacts/projectile_plot_compiled.json index af940f8..77520a2 100644 --- a/projectile_path/artifacts/projectile_plot_compiled.json +++ b/projectile_path/artifacts/projectile_plot_compiled.json @@ -1,22 +1,5 @@ { "abi": [ - { - "inputs": [ - { - "name": "theta_fp", - "type": "felt" - } - ], - "name": "cosine_approx", - "outputs": [ - { - "name": "cos_theta_fp", - "type": "felt" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -59,12 +42,8 @@ "CONSTRUCTOR": [], "EXTERNAL": [ { - "offset": "0x2a8", + "offset": "0x2ef", "selector": "0x145f8fb6964795aa4eb149cfb427fadbe70e058414b5ee81697e737096af268" - }, - { - "offset": "0x159", - "selector": "0x2e5ea079ccfe363adfcff0c69de0c501ab2b9d02f7c4645b30d739223d2c2e5" } ], "L1_HANDLER": [] @@ -77,7 +56,7 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 552, + "end_pc": 620, "flow_tracking_data": { "ap_tracking": { "group": 32, @@ -86,7 +65,7 @@ "reference_ids": {} }, "name": "error_message", - "start_pc": 543, + "start_pc": 611, "value": "Check that 2 <=num_pts <= 25" }, { @@ -95,7 +74,7 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 561, + "end_pc": 629, "flow_tracking_data": { "ap_tracking": { "group": 32, @@ -104,7 +83,7 @@ "reference_ids": {} }, "name": "error_message", - "start_pc": 552, + "start_pc": 620, "value": "Check that 2 <=num_pts <= 25" }, { @@ -113,7 +92,7 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 572, + "end_pc": 640, "flow_tracking_data": { "ap_tracking": { "group": 32, @@ -122,7 +101,7 @@ "reference_ids": {} }, "name": "error_message", - "start_pc": 561, + "start_pc": 629, "value": "Check that -180 <= theta_0_deg <= +180" }, { @@ -131,7 +110,7 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 579, + "end_pc": 649, "flow_tracking_data": { "ap_tracking": { "group": 32, @@ -140,8 +119,8 @@ "reference_ids": {} }, "name": "error_message", - "start_pc": 572, - "value": "Check that v_0 >= 0" + "start_pc": 640, + "value": "Check that v_0 >= 1" } ], "builtins": [ @@ -361,12 +340,30 @@ "0x484680017ffc8000", "0x56bc75e2d63100000", "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc3", + "0x20680017fff7fff", + "0xe", + "0x48127ffe7fff8000", + "0x484480017fe38000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x484680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x480680017fff8000", + "0x1000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8c", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", "0x48127ffe7fff8000", + "0x48127fe37fff8000", "0x480a7ffd7fff8000", "0x480680017fff8000", "0x1000000000000000000000000000000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff94", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff82", "0x48127ffd7fff8000", "0x48127ffd7fff8000", "0x208b7fff7fff7ffe", @@ -374,12 +371,30 @@ "0x484a7ffd7ffc8000", "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa4", + "0x20680017fff7fff", + "0xe", + "0x48127ffe7fff8000", + "0x484680017ffc8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x484680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x480680017fff8000", + "0x1000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6d", + "0x48127ffd7fff8000", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffe7fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x480680017fff8000", "0x1000000000000000000000000000000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff87", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff63", "0x48127ffd7fff8000", "0x48127ffd7fff8000", "0x208b7fff7fff7ffe", @@ -387,127 +402,159 @@ "0x480a7ffd7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd9", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb5", "0x48127fff7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd6", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffb2", "0x48127ffe7fff8000", "0x48127fd47fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd1", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffad", "0x48127ffe7fff8000", "0x48127fa87fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcc", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa8", "0x48127ffe7fff8000", "0x48127f7c7fff8000", "0x480680017fff8000", "0x2", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe1", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcf", "0x48127ffe7fff8000", - "0x48127f7b7fff8000", + "0x48127f607fff8000", "0x480680017fff8000", "0x18", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffdb", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc9", "0x48127ffe7fff8000", - "0x48127f7c7fff8000", + "0x48127f467fff8000", "0x480680017fff8000", "0x2d0", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc3", "0x48127ffe7fff8000", - "0x48127f7d7fff8000", + "0x48127f2c7fff8000", "0x480680017fff8000", "0x9d80", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcf", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbd", "0x480680017fff8000", "0x56bc75e2d63100000", - "0x48307f7d80007fff", - "0x48307fa77fff8000", - "0x48307fd180007fff", + "0x48307f2c80007fff", + "0x48307f717fff8000", + "0x48307fb680007fff", "0x48127ffa7fff8000", "0x48307ffa7ffe8000", "0x208b7fff7fff7ffe", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff83", + "0x48127fff7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff80", + "0x48127ffe7fff8000", + "0x48127fd47fff8000", + "0x48127ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7b", + "0x48127ffe7fff8000", + "0x48127fa87fff8000", + "0x480680017fff8000", + "0x2", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa2", + "0x48127ffe7fff8000", + "0x48127f8c7fff8000", + "0x480680017fff8000", + "0x18", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9c", + "0x48127ffe7fff8000", + "0x48127f727fff8000", + "0x480680017fff8000", + "0x2d0", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff96", + "0x480680017fff8000", + "0x56bc75e2d63100000", + "0x48307f7280007fff", + "0x48307fb77fff8000", + "0x48127ffb7fff8000", + "0x48307ffb80007ffe", + "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x1", - "0x400b7ffc7fff8000", + "0x400b7ffb7fff8000", "0x480a80007fff8000", "0x480680017fff8000", - "0x883eaf5b274555800", + "0x5a", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff96", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4c", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", - "0xd", + "0x16", + "0x482680017ffd8000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa7", + "0x20680017fff7fff", + "0x7", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x10780017fff7fff", + "0xb", "0x480680017fff8000", "0x1107d5eb64e8aab000", - "0x48127ffc7fff8000", - "0x48287ffd80007ffe", + "0x48127ffb7fff8000", + "0x48287ffc80007ffe", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbe", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8f", "0x484480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x48127ffd7fff8000", "0x10780017fff7fff", - "0x1c", + "0x25", "0x48127ffd7fff8000", "0x480a7ffd7fff8000", "0x480680017fff8000", - "0x800000000000010fffffffffffffffffffffffffffffff77c150a4d8baaa801", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa7", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff81", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff2e", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", - "0xd", + "0x16", + "0x482680017ffd8000", + "0x5a", + "0x20680017fff7fff", + "0x7", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x10780017fff7fff", + "0xb", "0x480680017fff8000", "0x800000000000010ffffffffffffffffffffffffffffffeef82a149b17555001", - "0x48127ffc7fff8000", - "0x48287ffd80007ffe", + "0x48127ffb7fff8000", + "0x48287ffc80007ffe", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa9", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff71", "0x484480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x48127ffd7fff8000", "0x10780017fff7fff", "0x7", "0x48127ffd7fff8000", - "0x480a7ffd7fff8000", + "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa0", - "0x48127ffe7fff8000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff68", "0x48127ffe7fff8000", - "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x4003800080007ffc", - "0x4826800180008000", - "0x1", - "0x480a7ffd7fff8000", - "0x4828800080007ffe", - "0x480a80007fff8000", - "0x208b7fff7fff7ffe", - "0x482680017ffd8000", - "0x1", - "0x402a7ffd7ffc7fff", - "0x480280017ffb8000", - "0x480280007ffd8000", - "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbf", "0x48127ffe7fff8000", - "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff0", - "0x480280007ffb8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", - "0x48127ffc7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x1", @@ -516,17 +563,17 @@ "0x480a7ffd7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff58", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff14", "0x480680017fff8000", "0x56bc75e2d63100000", "0x48127ffd7fff8000", "0x48307ffd80007ffe", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4a", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff06", "0x48127ffe7fff8000", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff20", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffedc", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", @@ -547,36 +594,36 @@ "0x480a7ffd7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff39", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffef5", "0x48127ffe7fff8000", "0x480680017fff8000", "0x35203b67bccad00000", "0x480680017fff8000", "0x800000000000010fffffffffffffffffffffffffffff5697e9c0f5a84c00001", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff32", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeee", "0x480680017fff8000", "0x2", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff46", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff14", "0x48127ffe7fff8000", "0x48307ffe80007fcd", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff22", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffede", "0x48127ffe7fff8000", "0x48327ffe7ffd8000", "0x480680017fff8000", "0x35203b67bccad00000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff30", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeec", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb7", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe73", "0x480680017fff8000", "0x5a", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0f", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecb", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", @@ -594,10 +641,10 @@ "0x152d02c7e14af6800000", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff16", - "0x48127fac7fff8000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed2", + "0x48127f917fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffefa", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb6", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", @@ -606,7 +653,7 @@ "0x48127ffc7fff8000", "0x10780017fff7fff", "0x4", - "0x48127f8d7fff8000", + "0x48127f727fff8000", "0x48127ffc7fff8000", "0x10780017fff7fff", "0x15", @@ -615,10 +662,10 @@ "0x800000000000010ffffffffffffffffffffffffffffead2fd381eb509800001", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff01", - "0x48127fad7fff8000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffebd", + "0x48127f927fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee5", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffea1", "0x482480017fff8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x20680017fff7fff", @@ -627,7 +674,7 @@ "0x48127ffc7fff8000", "0x10780017fff7fff", "0x4", - "0x48127f8e7fff8000", + "0x48127f737fff8000", "0x48127ffc7fff8000", "0x48127ffe7fff8000", "0x208b7fff7fff7ffe", @@ -635,30 +682,30 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee1", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe9d", "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffedb", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe97", "0x48127ffe7fff8000", "0x480a7ffd7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed6", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe92", "0x48127ffe7fff8000", "0x480680017fff8000", "0x35203b67bccad00000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed0", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8c", "0x480680017fff8000", "0x2", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffee7", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeb5", "0x48127ffe7fff8000", - "0x48307ffe80007f7d", + "0x48307ffe80007f62", "0x208b7fff7fff7ffe", "0x20780017fff7ff7", "0x4", @@ -694,10 +741,10 @@ "0x5", "0x480a7ffa7fff8000", "0x480680017fff8000", - "0x1", + "0x2", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe96", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe52", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", @@ -706,25 +753,27 @@ "0x480680017fff8000", "0x19", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8d", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe49", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", "0x48127ffd7fff8000", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2a", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffde6", "0x480680017fff8000", "0xb4", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe82", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3e", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x1", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5a", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe35", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", @@ -732,54 +781,55 @@ "0x480680017fff8000", "0x1107d5eb64e8aab000", "0x480680017fff8000", - "0x3cfc82e37e9a7400000", + "0xb4", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe8a", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe65", "0x48127ffe7fff8000", "0x484680017ffc8000", "0x56bc75e2d63100000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe78", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe32", "0x40137fff7fff8000", "0x48127ffe7fff8000", "0x480a80007fff8000", + "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffeca", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecd", "0x48127ffe7fff8000", "0x480a80007fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff11", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0e", "0x48127ffe7fff8000", "0x484680017ffd8000", "0x56bc75e2d63100000", "0x48127f727fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe68", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe21", "0x40137fff7fff8001", "0x48127ffe7fff8000", "0x484680017ffd8000", "0x56bc75e2d63100000", "0x48127fd17fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe61", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1a", "0x40137fff7fff8002", "0x48127ffe7fff8000", "0x480a7ffc7fff8000", "0x480a80017fff8000", "0x480a80027fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1c", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff19", "0x482680017ffb8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe71", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3c", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd8f", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd48", "0x40137fff7fff8003", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd8c", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd45", "0x40137fff7fff8004", "0x48127ff87fff8000", "0x480a7ffb7fff8000", @@ -791,7 +841,7 @@ "0x480a80037fff8000", "0x480a80047fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7f", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7c", "0x480a7ffb7fff8000", "0x480a80037fff8000", "0x480a7ffb7fff8000", @@ -811,7 +861,7 @@ "0x480a7ffa7fff8000", "0x480a7ff97fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd6f", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd28", "0x4003800080027ffb", "0x4003800080017ffb", "0x4027800180018003", @@ -824,7 +874,7 @@ "0x480a7ffc7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd62", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd1b", "0x480a80037fff8000", "0x4829800080008004", "0x480a80007fff8000", @@ -839,7 +889,7 @@ "0x480280017ffd8000", "0x480280027ffd8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6d", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6a", "0x48127ffb7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5", @@ -852,26 +902,19 @@ "debug_info": { "file_contents": { "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo": "assert [cast(fp + (-4), felt*)] = __calldata_actual_size;\n", - "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo": "let __calldata_arg_theta_fp = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", "autogen/starknet/arg_processor/34bbff67a133e4365abf52fae8cae61c5b11c7cfaa07a043d34d6d4c40f4e33d.cairo": "// Check that the length is non-negative.\nassert [range_check_ptr] = ret_value.x_fp_s_len;\n// Store the updated range_check_ptr as a local variable to keep it available after\n// the memcpy.\nlocal range_check_ptr = range_check_ptr + 1;\n// Keep a reference to __return_value_ptr.\nlet __return_value_ptr_copy = __return_value_ptr;\n// Store the updated __return_value_ptr as a local variable to keep it available after\n// the memcpy.\nlocal __return_value_ptr: felt* = __return_value_ptr + ret_value.x_fp_s_len * 1;\nmemcpy(\n dst=__return_value_ptr_copy,\n src=ret_value.x_fp_s,\n len=ret_value.x_fp_s_len * 1);\n", "autogen/starknet/arg_processor/49503690c9800a7192f4fee865f0a3cf7509eae82929a7159aacfcb1b52a3cd6.cairo": "assert [__return_value_ptr] = ret_value.x_fp_s_len;\nlet __return_value_ptr = __return_value_ptr + 1;\n", "autogen/starknet/arg_processor/5fffe1ed5734d91b22dde2a81cd68aed70637565ea43d46429271514008fcbdf.cairo": "assert [__return_value_ptr] = ret_value.y_fp_s_len;\nlet __return_value_ptr = __return_value_ptr + 1;\n", "autogen/starknet/arg_processor/65a20f10d7caf1d03741bf9c2f9806749f2bb9f218dcc1aea4459cd312506325.cairo": "let __calldata_arg_v_0 = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", - "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo": "assert [__return_value_ptr] = ret_value.cos_theta_fp;\nlet __return_value_ptr = __return_value_ptr + 1;\n", "autogen/starknet/arg_processor/bb06c3077113f2124a4a9d7af51d7585c56d8847c66c69ad89747c83a5440b75.cairo": "let __calldata_arg_theta_0_deg = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", "autogen/starknet/arg_processor/c31620b02d4d706f0542c989b2aadc01b0981d1f6a5933a8fe4937ace3d70d92.cairo": "let __calldata_actual_size = __calldata_ptr - cast([cast(fp + (-3), felt**)], felt*);\n", "autogen/starknet/arg_processor/c638b396e893f218e111e980dc6b4bd9b920c7d1e5ba7f10d057848a40f59f0d.cairo": "// Check that the length is non-negative.\nassert [range_check_ptr] = ret_value.y_fp_s_len;\n// Store the updated range_check_ptr as a local variable to keep it available after\n// the memcpy.\nlocal range_check_ptr = range_check_ptr + 1;\n// Keep a reference to __return_value_ptr.\nlet __return_value_ptr_copy = __return_value_ptr;\n// Store the updated __return_value_ptr as a local variable to keep it available after\n// the memcpy.\nlocal __return_value_ptr: felt* = __return_value_ptr + ret_value.y_fp_s_len * 1;\nmemcpy(\n dst=__return_value_ptr_copy,\n src=ret_value.y_fp_s,\n len=ret_value.y_fp_s_len * 1);\n", "autogen/starknet/arg_processor/f46f114cc4d8fd9014fb47439f85f8da3563c025a19e5ac96c355f64fbbbf76e.cairo": "let __calldata_arg_num_pts = [__calldata_ptr];\nlet __calldata_ptr = __calldata_ptr + 1;\n", - "autogen/starknet/external/cosine_approx/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo": "let syscall_ptr = [cast([cast(fp + (-5), felt**)] + 0, felt*)];\n", - "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo": "return (syscall_ptr,range_check_ptr,retdata_size,retdata);\n", - "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo": "let ret_value = __wrapped_func{range_check_ptr=range_check_ptr}(theta_fp=__calldata_arg_theta_fp,);\nlet (range_check_ptr, retdata_size, retdata) = cosine_approx_encode_return(ret_value, range_check_ptr);\n", - "autogen/starknet/external/cosine_approx/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo": "let range_check_ptr = [cast([cast(fp + (-5), felt**)] + 1, felt*)];\n", "autogen/starknet/external/projectile_path/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo": "let syscall_ptr = [cast([cast(fp + (-5), felt**)] + 0, felt*)];\n", "autogen/starknet/external/projectile_path/5009e69acb9f1df6a2d62a28c7e96edb5c98f51f19cdfb65aeddcfd211ca1a93.cairo": "func projectile_path() -> (syscall_ptr: felt, range_check_ptr: felt, size: felt, retdata: felt*) {\n alloc_locals;\n}\n", "autogen/starknet/external/projectile_path/6c86a55d58c9cb790d105af505da92a179bad55397669a420df57ba438d9e9e3.cairo": "let ret_value = __wrapped_func{range_check_ptr=range_check_ptr}(num_pts=__calldata_arg_num_pts, theta_0_deg=__calldata_arg_theta_0_deg, v_0=__calldata_arg_v_0,);\nlet (range_check_ptr, retdata_size, retdata) = projectile_path_encode_return(ret_value, range_check_ptr);\n", "autogen/starknet/external/projectile_path/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo": "return (syscall_ptr,range_check_ptr,retdata_size,retdata);\n", "autogen/starknet/external/projectile_path/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo": "let range_check_ptr = [cast([cast(fp + (-5), felt**)] + 1, felt*)];\n", - "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo": "func cosine_approx_encode_return(ret_value: (cos_theta_fp: felt), range_check_ptr) -> (\n range_check_ptr: felt, data_len: felt, data: felt*) {\n %{ memory[ap] = segments.add() %}\n alloc_locals;\n local __return_value_ptr_start: felt*;\n let __return_value_ptr = __return_value_ptr_start;\n with range_check_ptr {\n }\n return (\n range_check_ptr=range_check_ptr,\n data_len=__return_value_ptr - __return_value_ptr_start,\n data=__return_value_ptr_start);\n}\n", "autogen/starknet/external/return/projectile_path/06c24b5f91763b7259e8fc5ae3b466ed5763e7e6b1d70f59c44a95a7037861a0.cairo": "func projectile_path_encode_return(ret_value: (x_fp_s_len: felt, x_fp_s: felt*, y_fp_s_len: felt, y_fp_s: felt*), range_check_ptr) -> (\n range_check_ptr: felt, data_len: felt, data: felt*) {\n %{ memory[ap] = segments.add() %}\n alloc_locals;\n local __return_value_ptr_start: felt*;\n let __return_value_ptr = __return_value_ptr_start;\n with range_check_ptr {\n }\n return (\n range_check_ptr=range_check_ptr,\n data_len=__return_value_ptr - __return_value_ptr_start,\n data=__return_value_ptr_start);\n}\n" }, "instruction_locations": { @@ -4544,25 +4587,25 @@ }, "parent_location": [ { - "end_col": 36, - "end_line": 325, + "end_col": 27, + "end_line": 18, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 70, - "end_line": 29, + "end_col": 27, + "end_line": 30, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 21, - "start_line": 29 + "start_col": 16, + "start_line": 30 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 325 + "start_col": 12, + "start_line": 18 }, "While expanding the reference 'range_check_ptr' in:" ], @@ -4571,35 +4614,6 @@ } }, "212": { - "accessible_scopes": [ - "contracts.math", - "contracts.math.div_fp" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 21, - "end_line": 28, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "parent_location": [ - { - "end_col": 44, - "end_line": 29, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 36, - "start_line": 29 - }, - "While expanding the reference 'a_scaled' in:" - ], - "start_col": 13, - "start_line": 28 - } - }, - "213": { "accessible_scopes": [ "contracts.math", "contracts.math.div_fp" @@ -4614,13 +4628,13 @@ }, "parent_location": [ { - "end_col": 50, - "end_line": 29, + "end_col": 26, + "end_line": 30, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 46, - "start_line": 29 + "start_col": 22, + "start_line": 30 }, "While expanding the reference 'b_fp' in:" ], @@ -4628,7 +4642,7 @@ "start_line": 26 } }, - "214": { + "213": { "accessible_scopes": [ "contracts.math", "contracts.math.div_fp" @@ -4636,16 +4650,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 69, - "end_line": 29, + "end_col": 27, + "end_line": 30, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 52, - "start_line": 29 + "start_col": 16, + "start_line": 30 } }, - "216": { + "215": { "accessible_scopes": [ "contracts.math", "contracts.math.div_fp" @@ -4653,16 +4667,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 70, - "end_line": 29, + "end_col": 7, + "end_line": 31, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 21, - "start_line": 29 + "start_col": 5, + "start_line": 31 } }, - "218": { + "217": { "accessible_scopes": [ "contracts.math", "contracts.math.div_fp" @@ -4670,52 +4684,52 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 36, - "end_line": 325, + "end_col": 27, + "end_line": 18, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 70, - "end_line": 29, + "end_col": 27, + "end_line": 30, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 28, - "end_line": 26, + "end_col": 36, + "end_line": 325, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" }, "parent_location": [ { - "end_col": 17, - "end_line": 30, + "end_col": 76, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 30 + "start_col": 25, + "start_line": 33 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 26 + "start_col": 21, + "start_line": 325 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 29 + "start_col": 16, + "start_line": 30 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 325 + "start_col": 12, + "start_line": 18 } }, - "219": { + "218": { "accessible_scopes": [ "contracts.math", "contracts.math.div_fp" @@ -4723,25 +4737,13 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 14, - "end_line": 29, + "end_col": 49, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 16, - "end_line": 30, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 12, - "start_line": 30 - }, - "While expanding the reference 'c_fp' in:" - ], - "start_col": 10, - "start_line": 29 + "start_col": 40, + "start_line": 33 } }, "220": { @@ -4752,239 +4754,297 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 17, - "end_line": 30, + "end_col": 56, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 30 + "start_col": 51, + "start_line": 33 } }, - "221": { + "222": { "accessible_scopes": [ "contracts.math", - "contracts.math.mul_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 34, + "end_col": 75, + "end_line": 33, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 58, + "start_line": 33 + } + }, + "224": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 76, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "start_col": 25, + "start_line": 33 + } + }, + "226": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, "parent_location": [ { - "end_col": 32, - "end_line": 34, + "end_col": 76, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 17, - "end_line": 36, + "end_col": 28, + "end_line": 26, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 36 + "parent_location": [ + { + "end_col": 21, + "end_line": 34, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 34 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 26 }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 34 + "start_col": 25, + "start_line": 33 }, - "While expanding the reference 'range_check_ptr' in:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 34 + "start_col": 21, + "start_line": 325 } }, - "222": { + "227": { "accessible_scopes": [ "contracts.math", - "contracts.math.mul_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 24, - "end_line": 35, + "end_col": 18, + "end_line": 33, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 16, - "end_line": 36, + "end_col": 20, + "end_line": 34, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 12, - "start_line": 36 + "start_col": 16, + "start_line": 34 }, "While expanding the reference 'c_fp' in:" ], - "start_col": 16, - "start_line": 35 + "start_col": 14, + "start_line": 33 } }, - "223": { + "228": { "accessible_scopes": [ "contracts.math", - "contracts.math.mul_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 17, - "end_line": 36, + "end_col": 21, + "end_line": 34, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 36 + "start_col": 9, + "start_line": 34 } }, - "224": { + "229": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 40, + "end_col": 27, + "end_line": 18, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 36, - "end_line": 325, + "end_col": 27, + "end_line": 30, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 63, - "end_line": 41, + "end_col": 36, + "end_line": 325, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" }, + "parent_location": [ + { + "end_col": 70, + "end_line": 36, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 36 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], "start_col": 21, - "start_line": 41 + "start_line": 325 }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 325 + "start_col": 16, + "start_line": 30 }, - "While expanding the reference 'range_check_ptr' in:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 12, + "start_line": 18 } }, - "225": { + "230": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 44, - "end_line": 40, + "end_col": 21, + "end_line": 28, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 40, - "end_line": 41, + "end_col": 44, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 36, - "start_line": 41 + "start_line": 36 }, - "While expanding the reference 'a_fp' in:" + "While expanding the reference 'a_scaled' in:" ], - "start_col": 34, - "start_line": 40 + "start_col": 13, + "start_line": 28 } }, - "226": { + "231": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 40, + "end_col": 52, + "end_line": 26, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 43, - "end_line": 41, + "end_col": 50, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 42, - "start_line": 41 + "start_col": 46, + "start_line": 36 }, - "While expanding the reference 'b' in:" + "While expanding the reference 'b_fp' in:" ], - "start_col": 46, - "start_line": 40 + "start_col": 42, + "start_line": 26 } }, - "227": { + "232": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 62, - "end_line": 41, + "end_col": 69, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 45, - "start_line": 41 + "start_col": 52, + "start_line": 36 } }, - "229": { + "234": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 63, - "end_line": 41, + "end_col": 70, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 21, - "start_line": 41 + "start_line": 36 } }, - "231": { + "236": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], @@ -4996,37 +5056,37 @@ }, "parent_location": [ { - "end_col": 63, - "end_line": 41, + "end_col": 70, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 32, - "end_line": 40, + "end_col": 28, + "end_line": 26, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 17, - "end_line": 42, + "end_line": 37, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 42 + "start_line": 37 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 13, + "start_line": 26 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 21, - "start_line": 41 + "start_line": 36 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -5034,686 +5094,708 @@ "start_line": 325 } }, - "232": { + "237": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { "end_col": 14, - "end_line": 41, + "end_line": 36, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 42, + "end_line": 37, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 12, - "start_line": 42 + "start_line": 37 }, "While expanding the reference 'c_fp' in:" ], "start_col": 10, - "start_line": 41 + "start_line": 36 } }, - "233": { + "238": { "accessible_scopes": [ "contracts.math", - "contracts.math.div_fp_nfp" + "contracts.math.div_fp" ], "flow_tracking_data": null, "hints": [], "inst": { "end_col": 17, - "end_line": 42, + "end_line": 37, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 42 + "start_line": 37 } }, - "234": { + "239": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.mul_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 66, + "end_col": 32, + "end_line": 41, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 28, - "end_line": 18, + "end_col": 32, + "end_line": 41, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 48, - "end_line": 70, + "end_col": 17, + "end_line": 43, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 70 + "start_col": 5, + "start_line": 43 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 18 + "start_col": 17, + "start_line": 41 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 66 + "start_col": 17, + "start_line": 41 } }, - "235": { + "240": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.mul_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 66, + "end_col": 24, + "end_line": 42, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 37, - "end_line": 70, + "end_col": 16, + "end_line": 43, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 29, - "start_line": 70 + "start_col": 12, + "start_line": 43 }, - "While expanding the reference 'theta_fp' in:" + "While expanding the reference 'c_fp' in:" ], - "start_col": 37, - "start_line": 66 + "start_col": 16, + "start_line": 42 } }, - "236": { + "241": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.mul_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 66, + "end_col": 17, + "end_line": 43, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 47, - "end_line": 70, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 39, - "start_line": 70 - }, - "While expanding the reference 'theta_fp' in:" - ], - "start_col": 37, - "start_line": 66 + "start_col": 5, + "start_line": 43 } }, - "237": { + "242": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 48, - "end_line": 70, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 70 + "parent_location": [ + { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 24, + "end_line": 49, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 16, + "start_line": 49 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 47 } }, - "239": { + "243": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 70, + "end_col": 53, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 51, - "end_line": 71, + "end_col": 23, + "end_line": 49, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 41, - "start_line": 71 + "start_col": 22, + "start_line": 49 }, - "While expanding the reference 'theta_2_fp' in:" + "While expanding the reference 'b' in:" ], - "start_col": 9, - "start_line": 70 + "start_col": 46, + "start_line": 47 } }, - "240": { + "244": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 52, - "end_line": 71, + "end_col": 24, + "end_line": 49, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 71 + "start_col": 16, + "start_line": 49 } }, - "242": { + "246": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 28, - "end_line": 18, + "end_col": 7, + "end_line": 50, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "start_col": 5, + "start_line": 50 + } + }, + "248": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, "parent_location": [ { - "end_col": 52, - "end_line": 71, + "end_col": 24, + "end_line": 49, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 28, - "end_line": 18, + "end_col": 36, + "end_line": 325, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" }, "parent_location": [ { - "end_col": 52, - "end_line": 72, + "end_col": 69, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 72 + "start_col": 25, + "start_line": 52 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 18 + "start_col": 21, + "start_line": 325 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 22, - "start_line": 71 + "start_col": 16, + "start_line": 49 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 13, + "start_col": 12, "start_line": 18 } }, - "243": { + "249": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 70, + "end_col": 45, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 39, - "end_line": 72, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 29, - "start_line": 72 - }, - "While expanding the reference 'theta_2_fp' in:" - ], - "start_col": 9, - "start_line": 70 + "start_col": 40, + "start_line": 52 } }, - "244": { + "251": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 71, + "end_col": 49, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 51, - "end_line": 72, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 41, - "start_line": 72 - }, - "While expanding the reference 'theta_4_fp' in:" - ], - "start_col": 9, - "start_line": 71 + "start_col": 47, + "start_line": 52 } }, - "245": { + "253": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 52, - "end_line": 72, + "end_col": 68, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 72 + "start_col": 51, + "start_line": 52 } }, - "247": { + "255": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 28, - "end_line": 18, + "end_col": 69, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "start_col": 25, + "start_line": 52 + } + }, + "257": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, "parent_location": [ { - "end_col": 52, - "end_line": 72, + "end_col": 69, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 28, - "end_line": 18, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 52, - "end_line": 73, + "end_col": 21, + "end_line": 53, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 73 + "start_col": 9, + "start_line": 53 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 18 + "start_col": 17, + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 22, - "start_line": 72 + "start_col": 25, + "start_line": 52 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 18 + "start_col": 21, + "start_line": 325 } }, - "248": { + "258": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 70, + "end_col": 18, + "end_line": 52, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 39, - "end_line": 73, + "end_col": 20, + "end_line": 53, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 29, - "start_line": 73 + "start_col": 16, + "start_line": 53 }, - "While expanding the reference 'theta_2_fp' in:" + "While expanding the reference 'c_fp' in:" ], - "start_col": 9, - "start_line": 70 + "start_col": 14, + "start_line": 52 } }, - "249": { + "259": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 72, + "end_col": 21, + "end_line": 53, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 51, - "end_line": 73, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 41, - "start_line": 73 - }, - "While expanding the reference 'theta_6_fp' in:" - ], "start_col": 9, - "start_line": 72 - } - }, - "250": { - "accessible_scopes": [ - "contracts.math", - "contracts.math.cosine_8th_fp" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 52, - "end_line": 73, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 22, - "start_line": 73 + "start_line": 53 } }, - "252": { + "260": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 28, + "end_col": 27, "end_line": 18, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 52, - "end_line": 73, + "end_col": 24, + "end_line": 49, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 32, - "end_line": 40, + "end_col": 36, + "end_line": 325, "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" }, "parent_location": [ { - "end_col": 52, - "end_line": 75, + "end_col": 63, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 27, - "start_line": 75 + "start_col": 21, + "start_line": 55 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 21, + "start_line": 325 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 22, - "start_line": 73 + "start_col": 16, + "start_line": 49 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 13, + "start_col": 12, "start_line": 18 } }, - "253": { + "261": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 70, + "end_col": 44, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 48, - "end_line": 75, + "end_col": 40, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 38, - "start_line": 75 + "start_col": 36, + "start_line": 55 }, - "While expanding the reference 'theta_2_fp' in:" + "While expanding the reference 'a_fp' in:" ], - "start_col": 9, - "start_line": 70 + "start_col": 34, + "start_line": 47 } }, - "254": { + "262": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 75, + "end_col": 53, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 50, - "start_line": 75 + "parent_location": [ + { + "end_col": 43, + "end_line": 55, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 55 + }, + "While expanding the reference 'b' in:" + ], + "start_col": 46, + "start_line": 47 } }, - "256": { + "263": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 52, - "end_line": 75, + "end_col": 62, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 27, - "start_line": 75 + "start_col": 45, + "start_line": 55 } }, - "258": { + "265": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 40, + "end_col": 63, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "start_col": 21, + "start_line": 55 + } + }, + "267": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.div_fp_nfp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 36, + "end_line": 325, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + }, "parent_location": [ { - "end_col": 52, - "end_line": 75, + "end_col": 63, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 32, - "end_line": 40, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 54, - "end_line": 76, + "end_col": 17, + "end_line": 56, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 28, - "start_line": 76 + "start_col": 5, + "start_line": 56 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 17, - "start_line": 40 + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 27, - "start_line": 75 + "start_col": 21, + "start_line": 55 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 21, + "start_line": 325 } }, - "259": { + "268": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 71, + "end_col": 14, + "end_line": 55, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 49, - "end_line": 76, + "end_col": 16, + "end_line": 56, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 39, - "start_line": 76 + "start_col": 12, + "start_line": 56 }, - "While expanding the reference 'theta_4_fp' in:" + "While expanding the reference 'c_fp' in:" ], - "start_col": 9, - "start_line": 71 + "start_col": 10, + "start_line": 55 } }, - "260": { + "269": { "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_8th_fp" + "contracts.math.div_fp_nfp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 76, + "end_col": 17, + "end_line": 56, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 51, - "start_line": 76 + "start_col": 5, + "start_line": 56 } }, - "262": { + "270": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5721,16 +5803,40 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 54, - "end_line": 76, + "end_col": 35, + "end_line": 79, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 28, - "start_line": 76 + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 48, + "end_line": 83, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 83 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 79 } }, - "264": { + "271": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5738,52 +5844,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 40, + "end_col": 51, + "end_line": 79, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 54, - "end_line": 76, + "end_col": 37, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 32, - "end_line": 40, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "parent_location": [ - { - "end_col": 56, - "end_line": 77, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 29, - "start_line": 77 - }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" - ], - "start_col": 17, - "start_line": 40 - }, - "While expanding the reference 'range_check_ptr' in:" - ], - "start_col": 28, - "start_line": 76 + "start_col": 29, + "start_line": 83 }, - "While trying to update the implicit return value 'range_check_ptr' in:" + "While expanding the reference 'theta_fp' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 37, + "start_line": 79 } }, - "265": { + "272": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5791,28 +5873,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 72, + "end_col": 51, + "end_line": 79, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 50, - "end_line": 77, + "end_col": 47, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 40, - "start_line": 77 + "start_col": 39, + "start_line": 83 }, - "While expanding the reference 'theta_6_fp' in:" + "While expanding the reference 'theta_fp' in:" ], - "start_col": 9, - "start_line": 72 + "start_col": 37, + "start_line": 79 } }, - "266": { + "273": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5820,16 +5902,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 55, - "end_line": 77, + "end_col": 48, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 52, - "start_line": 77 + "start_col": 22, + "start_line": 83 } }, - "268": { + "275": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5837,16 +5919,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 56, - "end_line": 77, + "end_col": 19, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 29, - "start_line": 77 + "parent_location": [ + { + "end_col": 51, + "end_line": 84, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 84 + }, + "While expanding the reference 'theta_2_fp' in:" + ], + "start_col": 9, + "start_line": 83 } }, - "270": { + "276": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5854,52 +5948,69 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 40, + "end_col": 52, + "end_line": 84, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 84 + } + }, + "278": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_8th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 56, - "end_line": 77, + "end_col": 52, + "end_line": 84, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 32, - "end_line": 40, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 60, - "end_line": 78, + "end_col": 52, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 31, - "start_line": 78 + "start_col": 22, + "start_line": 85 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 13, + "start_line": 18 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 29, - "start_line": 77 + "start_col": 22, + "start_line": 84 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 13, + "start_line": 18 } }, - "271": { + "279": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5908,27 +6019,27 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 73, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 52, - "end_line": 78, + "end_col": 39, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 42, - "start_line": 78 + "start_col": 29, + "start_line": 85 }, - "While expanding the reference 'theta_8_fp' in:" + "While expanding the reference 'theta_2_fp' in:" ], "start_col": 9, - "start_line": 73 + "start_line": 83 } }, - "272": { + "280": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5936,16 +6047,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 59, - "end_line": 78, + "end_col": 19, + "end_line": 84, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 54, - "start_line": 78 + "parent_location": [ + { + "end_col": 51, + "end_line": 85, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 85 + }, + "While expanding the reference 'theta_4_fp' in:" + ], + "start_col": 9, + "start_line": 84 } }, - "274": { + "281": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5953,16 +6076,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 60, - "end_line": 78, + "end_col": 52, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 31, - "start_line": 78 + "start_col": 22, + "start_line": 85 } }, - "276": { + "283": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5970,28 +6093,52 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 80, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 30, - "end_line": 82, + "end_col": 52, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "parent_location": [ + { + "end_col": 28, + "end_line": 18, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 52, + "end_line": 86, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 86 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 + }, + "While expanding the reference 'range_check_ptr' in:" + ], "start_col": 22, - "start_line": 82 + "start_line": 85 }, - "While expanding the reference 'value_fp' in:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 80 + "start_col": 13, + "start_line": 18 } }, - "278": { + "284": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -5999,28 +6146,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 50, - "end_line": 80, + "end_col": 19, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 30, - "end_line": 82, + "end_col": 39, + "end_line": 86, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 82 + "start_col": 29, + "start_line": 86 }, - "While expanding the reference 'value_fp' in:" + "While expanding the reference 'theta_2_fp' in:" ], - "start_col": 20, - "start_line": 80 + "start_col": 9, + "start_line": 83 } }, - "279": { + "285": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -6028,28 +6175,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 69, - "end_line": 80, + "end_col": 19, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 30, - "end_line": 82, + "end_col": 51, + "end_line": 86, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 82 + "start_col": 41, + "start_line": 86 }, - "While expanding the reference 'value_fp' in:" + "While expanding the reference 'theta_6_fp' in:" ], - "start_col": 20, - "start_line": 80 + "start_col": 9, + "start_line": 85 } }, - "280": { + "286": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -6057,28 +6204,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 89, - "end_line": 80, + "end_col": 52, + "end_line": 86, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 30, - "end_line": 82, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 22, - "start_line": 82 - }, - "While expanding the reference 'value_fp' in:" - ], - "start_col": 20, - "start_line": 80 + "start_col": 22, + "start_line": 86 } }, - "281": { + "288": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -6086,52 +6221,52 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 40, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 60, - "end_line": 78, + "end_col": 52, + "end_line": 86, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 35, - "end_line": 66, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 32, - "end_line": 82, + "end_col": 52, + "end_line": 88, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 82 + "start_col": 27, + "start_line": 88 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 66 + "start_col": 17, + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 31, - "start_line": 78 + "start_col": 22, + "start_line": 86 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 40 + "start_col": 13, + "start_line": 18 } }, - "282": { + "289": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -6139,28 +6274,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 111, - "end_line": 80, + "end_col": 19, + "end_line": 83, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 30, - "end_line": 82, + "end_col": 48, + "end_line": 88, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 22, - "start_line": 82 + "start_col": 38, + "start_line": 88 }, - "While expanding the reference 'value_fp' in:" + "While expanding the reference 'theta_2_fp' in:" ], - "start_col": 20, - "start_line": 80 + "start_col": 9, + "start_line": 83 } }, - "283": { + "290": { "accessible_scopes": [ "contracts.math", "contracts.math.cosine_8th_fp" @@ -6168,1854 +6303,2552 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 32, - "end_line": 82, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 5, - "start_line": 82 - } - }, - "284": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 18, - "end_line": 115, + "end_col": 51, + "end_line": 88, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 115 + "start_col": 50, + "start_line": 88 } }, - "286": { + "292": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 45, - "end_line": 116, + "end_col": 52, + "end_line": 88, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 116 + "start_col": 27, + "start_line": 88 } }, - "287": { + "294": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 26, - "end_line": 116, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 27, - "end_line": 42, + "end_col": 52, + "end_line": 88, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 44, - "end_line": 118, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, + "parent_location": [ + { + "end_col": 54, + "end_line": 89, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 28, + "start_line": 89 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], "start_col": 17, - "start_line": 118 + "start_line": 47 }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 12, - "start_line": 42 + "start_col": 27, + "start_line": 88 }, - "While expanding the reference 'range_check_ptr' in:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 11, - "start_line": 116 - } - }, - "288": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 33, - "end_line": 118, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 23, - "start_line": 118 + "start_col": 17, + "start_line": 47 } }, - "290": { + "295": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 114, + "end_col": 19, + "end_line": 84, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 43, - "end_line": 118, + "end_col": 49, + "end_line": 89, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 35, - "start_line": 118 + "start_col": 39, + "start_line": 89 }, - "While expanding the reference 'theta_fp' in:" + "While expanding the reference 'theta_4_fp' in:" ], - "start_col": 37, - "start_line": 114 - } - }, - "291": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 44, - "end_line": 118, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 17, - "start_line": 118 - } - }, - "293": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 19, - "end_line": 119, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, "start_col": 9, - "start_line": 119 + "start_line": 84 } }, - "295": { + "296": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 7, - "end_line": 119, + "end_col": 53, + "end_line": 89, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 119 + "start_col": 51, + "start_line": 89 } }, - "297": { + "298": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 121, + "end_col": 54, + "end_line": 89, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 66, - "end_line": 123, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 52, - "start_line": 123 - }, - "While expanding the reference 'theta_moved_fp' in:" - ], - "start_col": 30, - "start_line": 121 + "start_col": 28, + "start_line": 89 } }, - "299": { + "300": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 27, - "end_line": 42, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 44, - "end_line": 118, + "end_col": 54, + "end_line": 89, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 35, - "end_line": 66, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 67, - "end_line": 123, + "end_col": 56, + "end_line": 90, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 38, - "start_line": 123 + "start_col": 29, + "start_line": 90 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 66 + "start_col": 17, + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 17, - "start_line": 118 + "start_col": 28, + "start_line": 89 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 12, - "start_line": 42 + "start_col": 17, + "start_line": 47 } }, - "300": { + "301": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 46, - "end_line": 121, + "end_col": 19, + "end_line": 85, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 66, - "end_line": 123, + "end_col": 50, + "end_line": 90, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 52, - "start_line": 123 + "start_col": 40, + "start_line": 90 }, - "While expanding the reference 'theta_moved_fp' in:" + "While expanding the reference 'theta_6_fp' in:" ], - "start_col": 30, - "start_line": 121 + "start_col": 9, + "start_line": 85 } }, - "301": { + "302": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 67, - "end_line": 123, + "end_col": 55, + "end_line": 90, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 38, - "start_line": 123 + "start_col": 52, + "start_line": 90 } }, - "303": { + "304": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 124, + "end_col": 56, + "end_line": 90, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 32, - "start_line": 124 + "start_col": 29, + "start_line": 90 } }, - "305": { + "306": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 66, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 67, - "end_line": 123, + "end_col": 56, + "end_line": 90, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 50, - "end_line": 125, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 35, - "start_line": 125 + "parent_location": [ + { + "end_col": 60, + "end_line": 91, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 31, + "start_line": 91 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 38, - "start_line": 123 + "start_col": 29, + "start_line": 90 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 66 + "start_col": 17, + "start_line": 47 } }, - "306": { + "307": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 7, - "end_line": 119, + "end_col": 19, + "end_line": 86, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 119 - } - }, - "308": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 27, - "end_line": 42, - "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" - }, "parent_location": [ { - "end_col": 44, - "end_line": 118, + "end_col": 52, + "end_line": 91, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 27, - "end_line": 42, - "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" - }, - "parent_location": [ - { - "end_col": 49, - "end_line": 128, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 21, - "start_line": 128 - }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" - ], - "start_col": 12, - "start_line": 42 - }, - "While expanding the reference 'range_check_ptr' in:" - ], - "start_col": 17, - "start_line": 118 + "start_col": 42, + "start_line": 91 }, - "While trying to update the implicit return value 'range_check_ptr' in:" + "While expanding the reference 'theta_8_fp' in:" ], - "start_col": 12, - "start_line": 42 + "start_col": 9, + "start_line": 86 } }, - "309": { + "308": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 114, + "end_col": 59, + "end_line": 91, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 35, - "end_line": 128, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 27, - "start_line": 128 - }, - "While expanding the reference 'theta_fp' in:" - ], - "start_col": 37, - "start_line": 114 + "start_col": 54, + "start_line": 91 } }, "310": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 48, - "end_line": 128, + "end_col": 60, + "end_line": 91, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 37, - "start_line": 128 + "start_col": 31, + "start_line": 91 } }, "312": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 49, - "end_line": 128, + "end_col": 32, + "end_line": 93, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 21, - "start_line": 128 + "parent_location": [ + { + "end_col": 30, + "end_line": 95, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 95 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 93 } }, "314": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 23, - "end_line": 129, + "end_col": 50, + "end_line": 93, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 13, - "start_line": 129 + "parent_location": [ + { + "end_col": 30, + "end_line": 95, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 95 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 93 } }, - "316": { + "315": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 11, - "end_line": 129, + "end_col": 69, + "end_line": 93, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 9, - "start_line": 129 + "parent_location": [ + { + "end_col": 30, + "end_line": 95, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 95 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 93 } }, - "318": { + "316": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 40, - "end_line": 131, + "end_col": 89, + "end_line": 93, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 70, - "end_line": 133, + "end_col": 30, + "end_line": 95, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 56, - "start_line": 133 + "start_col": 22, + "start_line": 95 }, - "While expanding the reference 'theta_moved_fp' in:" + "While expanding the reference 'value_fp' in:" ], - "start_col": 34, - "start_line": 131 + "start_col": 20, + "start_line": 93 } }, - "320": { + "317": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 27, - "end_line": 42, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 49, - "end_line": 128, + "end_col": 60, + "end_line": 91, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 35, - "end_line": 66, + "end_line": 79, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 71, - "end_line": 133, + "end_col": 32, + "end_line": 95, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 42, - "start_line": 133 + "start_col": 5, + "start_line": 95 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 20, - "start_line": 66 + "start_line": 79 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 128 + "start_col": 31, + "start_line": 91 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 12, - "start_line": 42 + "start_col": 17, + "start_line": 47 } }, - "321": { + "318": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 131, + "end_col": 111, + "end_line": 93, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 70, - "end_line": 133, + "end_col": 30, + "end_line": 95, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 56, - "start_line": 133 + "start_col": 22, + "start_line": 95 }, - "While expanding the reference 'theta_moved_fp' in:" + "While expanding the reference 'value_fp' in:" ], - "start_col": 34, - "start_line": 131 + "start_col": 20, + "start_line": 93 } }, - "322": { + "319": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_8th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 71, - "end_line": 133, + "end_col": 32, + "end_line": 95, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 42, - "start_line": 133 + "start_col": 5, + "start_line": 95 } }, - "324": { + "320": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 57, - "end_line": 134, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 36, - "start_line": 134 - } - }, - "326": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" - ], - "flow_tracking_data": null, - "hints": [], - "inst": { - "end_col": 35, - "end_line": 66, + "end_col": 35, + "end_line": 102, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 71, - "end_line": 133, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 54, - "end_line": 135, + "end_col": 48, + "end_line": 104, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 39, - "start_line": 135 + "start_col": 22, + "start_line": 104 }, - "While expanding the reference 'range_check_ptr' in:" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 42, - "start_line": 133 + "start_col": 13, + "start_line": 18 }, - "While trying to update the implicit return value 'range_check_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], "start_col": 20, - "start_line": 66 + "start_line": 102 } }, - "327": { + "321": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 11, - "end_line": 129, + "end_col": 51, + "end_line": 102, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 9, - "start_line": 129 + "parent_location": [ + { + "end_col": 37, + "end_line": 104, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 104 + }, + "While expanding the reference 'theta_fp' in:" + ], + "start_col": 37, + "start_line": 102 } }, - "329": { + "322": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 27, - "end_line": 42, + "end_col": 51, + "end_line": 102, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 49, - "end_line": 128, + "end_col": 47, + "end_line": 104, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 35, - "end_line": 66, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "parent_location": [ - { - "end_col": 62, - "end_line": 140, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 39, - "start_line": 140 - }, - "While trying to retrieve the implicit argument 'range_check_ptr' in:" - ], - "start_col": 20, - "start_line": 66 - }, - "While expanding the reference 'range_check_ptr' in:" - ], - "start_col": 21, - "start_line": 128 + "start_col": 39, + "start_line": 104 }, - "While trying to update the implicit return value 'range_check_ptr' in:" + "While expanding the reference 'theta_fp' in:" ], - "start_col": 12, - "start_line": 42 + "start_col": 37, + "start_line": 102 } }, - "330": { + "323": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 48, + "end_line": 104, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 104 + } + }, + "325": { + "accessible_scopes": [ "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 51, - "end_line": 114, + "end_col": 19, + "end_line": 104, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 61, - "end_line": 140, + "end_col": 51, + "end_line": 105, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 53, - "start_line": 140 + "start_col": 41, + "start_line": 105 }, - "While expanding the reference 'theta_fp' in:" + "While expanding the reference 'theta_2_fp' in:" ], - "start_col": 37, - "start_line": 114 + "start_col": 9, + "start_line": 104 } }, - "331": { + "326": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 62, - "end_line": 140, + "end_col": 52, + "end_line": 105, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 39, - "start_line": 140 + "start_col": 22, + "start_line": 105 } }, - "333": { + "328": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 66, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 62, - "end_line": 140, + "end_col": 52, + "end_line": 105, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 54, - "end_line": 143, + "end_col": 28, + "end_line": 18, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 39, - "start_line": 143 + "parent_location": [ + { + "end_col": 52, + "end_line": 106, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 106 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 13, + "start_line": 18 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 39, - "start_line": 140 + "start_col": 22, + "start_line": 105 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 66 + "start_col": 13, + "start_line": 18 } }, - "334": { + "329": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 33, - "end_line": 142, + "end_col": 19, + "end_line": 104, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 38, - "end_line": 147, + "end_col": 39, + "end_line": 106, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 26, - "start_line": 147 + "start_col": 29, + "start_line": 106 }, - "While expanding the reference 'cos_theta_fp' in:" + "While expanding the reference 'theta_2_fp' in:" ], - "start_col": 21, - "start_line": 142 + "start_col": 9, + "start_line": 104 } }, - "335": { + "330": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "contracts.math.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 40, - "end_line": 147, + "end_col": 19, + "end_line": 105, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 5, - "start_line": 147 - } - }, - "336": { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" - ], - "flow_tracking_data": null, - "hints": [ - { - "location": { - "end_col": 38, - "end_line": 3, - "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" - }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While handling return value of" - ], - "start_col": 5, - "start_line": 3 - }, - "n_prefix_newlines": 0 - } - ], - "inst": { - "end_col": 18, - "end_line": 4, - "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" - }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 51, + "end_line": 106, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 41, + "start_line": 106 }, - "While handling return value of" + "While expanding the reference 'theta_4_fp' in:" ], - "start_col": 5, - "start_line": 4 + "start_col": 9, + "start_line": 105 } }, - "338": { + "331": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 54, - "end_line": 1, + "end_col": 52, + "end_line": 106, "input_file": { - "filename": "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 75, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 57, - "start_line": 114 - }, - "While handling return value 'cos_theta_fp'" - ], - "start_col": 1, - "start_line": 1 + "start_col": 22, + "start_line": 106 } }, - "339": { + "333": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 48, - "end_line": 2, + "end_col": 28, + "end_line": 18, "input_file": { - "filename": "autogen/starknet/arg_processor/97c443455cc30bbc97c337ab633a9b9fec2603fc6416501e00406df3d5873487.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 75, - "end_line": 114, + "end_col": 52, + "end_line": 106, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 36, - "end_line": 11, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 52, + "end_line": 108, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 27, + "start_line": 108 }, - "While handling return value of" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 18, - "start_line": 11 + "start_col": 17, + "start_line": 47 }, - "While expanding the reference '__return_value_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 57, - "start_line": 114 + "start_col": 22, + "start_line": 106 }, - "While handling return value 'cos_theta_fp'" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 26, - "start_line": 2 + "start_col": 13, + "start_line": 18 } }, - "341": { + "334": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 82, - "end_line": 1, + "end_col": 19, + "end_line": 104, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 48, + "end_line": 108, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 40, - "end_line": 10, - "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" - }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While handling return value of" - ], - "start_col": 25, - "start_line": 10 - }, - "While expanding the reference 'range_check_ptr' in:" - ], - "start_col": 6, - "start_line": 114 + "start_col": 38, + "start_line": 108 }, - "While handling return value of" + "While expanding the reference 'theta_2_fp' in:" ], - "start_col": 67, - "start_line": 1 + "start_col": 9, + "start_line": 104 } }, - "342": { + "335": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 63, - "end_line": 11, + "end_col": 51, + "end_line": 108, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While handling return value of" - ], - "start_col": 18, - "start_line": 11 + "start_col": 50, + "start_line": 108 } }, - "343": { + "337": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 52, + "end_line": 108, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 108 + } + }, + "339": { + "accessible_scopes": [ "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 5, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 52, + "end_line": 108, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 38, - "end_line": 12, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 54, + "end_line": 109, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 28, + "start_line": 109 }, - "While handling return value of" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 14, - "start_line": 12 + "start_col": 17, + "start_line": 47 }, - "While expanding the reference '__return_value_ptr_start' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 114 + "start_col": 27, + "start_line": 108 }, - "While handling return value of" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 11, - "start_line": 5 + "start_col": 17, + "start_line": 47 } }, - "344": { + "340": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 40, - "end_line": 12, + "end_col": 19, + "end_line": 105, "input_file": { - "filename": "autogen/starknet/external/return/cosine_approx/c3f371cbde8513a58999b8499941e2e9320313ea558f5ca545521b8732885451.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 49, + "end_line": 109, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 39, + "start_line": 109 }, - "While handling return value of" + "While expanding the reference 'theta_4_fp' in:" ], - "start_col": 5, - "start_line": 9 + "start_col": 9, + "start_line": 105 } }, - "345": { + "341": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 53, + "end_line": 109, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 51, + "start_line": 109 + } + }, + "343": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 109, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 28, + "start_line": 109 + } + }, + "345": { + "accessible_scopes": [ "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 40, - "end_line": 2, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 51, - "end_line": 114, + "end_col": 54, + "end_line": 109, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 45, - "end_line": 1, + "end_col": 32, + "end_line": 47, "input_file": { - "filename": "autogen/starknet/arg_processor/c31620b02d4d706f0542c989b2aadc01b0981d1f6a5933a8fe4937ace3d70d92.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 56, + "end_line": 110, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 57, - "end_line": 1, - "input_file": { - "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" - }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While handling calldata of" - ], - "start_col": 35, - "start_line": 1 - }, - "While expanding the reference '__calldata_actual_size' in:" - ], - "start_col": 6, - "start_line": 114 + "start_col": 29, + "start_line": 110 }, - "While handling calldata of" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 31, - "start_line": 1 + "start_col": 17, + "start_line": 47 }, - "While expanding the reference '__calldata_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 37, - "start_line": 114 + "start_col": 28, + "start_line": 109 }, - "While handling calldata argument 'theta_fp'" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 22, - "start_line": 2 + "start_col": 17, + "start_line": 47 } }, - "347": { + "346": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_6th_fp" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 58, - "end_line": 1, + "end_col": 19, + "end_line": 106, "input_file": { - "filename": "autogen/starknet/arg_processor/01cba52f8515996bb9d7070bde81ff39281d096d7024a558efcba6e1fd2402cf.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 50, + "end_line": 110, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 40, + "start_line": 110 }, - "While handling calldata of" + "While expanding the reference 'theta_6_fp' in:" ], - "start_col": 1, - "start_line": 1 + "start_col": 9, + "start_line": 106 + } + }, + "347": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 55, + "end_line": 110, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 52, + "start_line": 110 + } + }, + "349": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 56, + "end_line": 110, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 29, + "start_line": 110 + } + }, + "351": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 112, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 114 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 112 + } + }, + "353": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 50, + "end_line": 112, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 114 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 112 + } + }, + "354": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 69, + "end_line": 112, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 114 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 112 + } + }, + "355": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 47, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 56, + "end_line": 110, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 102, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 32, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 114 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 102 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 29, + "start_line": 110 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 47 + } + }, + "356": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 89, + "end_line": 112, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 30, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 22, + "start_line": 114 + }, + "While expanding the reference 'value_fp' in:" + ], + "start_col": 20, + "start_line": 112 + } + }, + "357": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_6th_fp" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 32, + "end_line": 114, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 114 + } + }, + "358": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 18, + "end_line": 126, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 126 + } + }, + "360": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 45, + "end_line": 127, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 127 + } + }, + "361": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 127, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 17, + "start_line": 129 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 11, + "start_line": 127 + } + }, + "362": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 25, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 23, + "start_line": 129 + } + }, + "364": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 72, + "end_line": 125, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 129 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 55, + "start_line": 125 + } + }, + "365": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 17, + "start_line": 129 + } + }, + "367": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 19, + "end_line": 130, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 130 + } + }, + "369": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 130, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 130 + } + }, + "371": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 30, + "end_line": 131, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 13, + "start_line": 131 + } + }, + "373": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 131, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 131 + } + }, + "375": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 133, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 38, + "start_line": 133 + } + }, + "377": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 134, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 134 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 129 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "378": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 131, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 131 + } + }, + "380": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 41, + "end_line": 138, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 74, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 58, + "start_line": 140 + }, + "While expanding the reference 'theta_0_moved_fp' in:" + ], + "start_col": 36, + "start_line": 138 + } + }, + "382": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 35, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 75, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 44, + "start_line": 140 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 79 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 129 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "383": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 54, + "end_line": 138, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 74, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 58, + "start_line": 140 + }, + "While expanding the reference 'theta_0_moved_fp' in:" + ], + "start_col": 36, + "start_line": 138 + } + }, + "384": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 75, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 44, + "start_line": 140 + } + }, + "386": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 61, + "end_line": 141, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 38, + "start_line": 141 + } + }, + "388": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 79, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 75, + "end_line": 140, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 54, + "end_line": 142, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 39, + "start_line": 142 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 44, + "start_line": 140 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 20, + "start_line": 79 + } + }, + "389": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 7, + "end_line": 130, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 130 + } + }, + "391": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 129, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 44, + "end_line": 146, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 146 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 17, + "start_line": 129 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "392": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 72, + "end_line": 125, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "parent_location": [ + { + "end_col": 38, + "end_line": 146, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 27, + "start_line": 146 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 55, + "start_line": 125 + } + }, + "393": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 43, + "end_line": 146, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 40, + "start_line": 146 + } + }, + "395": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 146, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 21, + "start_line": 146 + } + }, + "397": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 147, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 13, + "start_line": 147 + } + }, + "399": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 147, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 147 + } + }, + "401": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 35, + "end_line": 148, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 17, + "start_line": 148 + } + }, + "403": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 15, + "end_line": 148, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 13, + "start_line": 148 + } + }, + "405": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 43, + "end_line": 150, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 150 } }, - "348": { + "407": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 67, - "end_line": 1, + "end_col": 27, + "end_line": 42, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/fd099223670ab5d428127810c2328d37c65c29951c7abc7cebaa651b40be0a6a.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 35, - "end_line": 114, + "end_col": 44, + "end_line": 146, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 63, - "end_line": 1, + "end_col": 58, + "end_line": 151, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While constructing the external wrapper for:" - ], - "start_col": 48, - "start_line": 1 + "start_col": 43, + "start_line": 151 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 20, - "start_line": 114 + "start_col": 21, + "start_line": 146 }, - "While constructing the external wrapper for:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 23, - "start_line": 1 + "start_col": 12, + "start_line": 42 } }, - "349": { + "408": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 47, - "end_line": 1, + "end_col": 15, + "end_line": 148, "input_file": { - "filename": "autogen/starknet/arg_processor/20a84ff7494d332664699be1349dfc09896033b8e9e5b6645c77021730f84d44.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 51, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "parent_location": [ - { - "end_col": 97, - "end_line": 1, - "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" - }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While constructing the external wrapper for:" - ], - "start_col": 74, - "start_line": 1 - }, - "While expanding the reference '__calldata_arg_theta_fp' in:" - ], - "start_col": 37, - "start_line": 114 - }, - "While handling calldata argument 'theta_fp'" - ], - "start_col": 31, - "start_line": 1 + "start_col": 13, + "start_line": 148 } }, - "350": { + "410": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 19, - "end_line": 114, + "end_col": 46, + "end_line": 155, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "parent_location": [ + { + "end_col": 78, + "end_line": 157, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 62, + "start_line": 157 + }, + "While expanding the reference 'theta_0_moved_fp' in:" + ], + "start_col": 40, + "start_line": 155 } }, - "352": { + "412": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 63, - "end_line": 1, + "end_col": 27, + "end_line": 42, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 44, + "end_line": 146, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 102, - "end_line": 2, + "end_col": 35, + "end_line": 79, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 79, + "end_line": 157, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 48, + "start_line": 157 }, - "While constructing the external wrapper for:" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 87, - "start_line": 2 + "start_col": 20, + "start_line": 79 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 114 + "start_col": 21, + "start_line": 146 }, - "While constructing the external wrapper for:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 48, - "start_line": 1 + "start_col": 12, + "start_line": 42 } }, - "353": { + "413": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 103, - "end_line": 2, + "end_col": 59, + "end_line": 155, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 78, + "end_line": 157, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 62, + "start_line": 157 }, - "While constructing the external wrapper for:" + "While expanding the reference 'theta_0_moved_fp' in:" ], + "start_col": 40, + "start_line": 155 + } + }, + "414": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 79, + "end_line": 157, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, "start_col": 48, - "start_line": 2 + "start_line": 157 } }, - "355": { + "416": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 65, + "end_line": 158, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 42, + "start_line": 158 + } + }, + "418": { + "accessible_scopes": [ "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 63, - "end_line": 1, + "end_col": 35, + "end_line": 79, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/3f2c77ab4e9866f148094b3f3c2497496b7ce8700b8370e7f1bc10658a33d640.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 79, + "end_line": 157, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 20, - "end_line": 1, + "end_col": 58, + "end_line": 159, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While constructing the external wrapper for:" - ], - "start_col": 9, - "start_line": 1 + "start_col": 43, + "start_line": 159 }, - "While expanding the reference 'syscall_ptr' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 114 + "start_col": 48, + "start_line": 157 }, - "While constructing the external wrapper for:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 19, - "start_line": 1 + "start_col": 20, + "start_line": 79 } }, - "356": { + "419": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 11, + "end_line": 147, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 9, + "start_line": 147 + } + }, + "421": { + "accessible_scopes": [ "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 21, - "end_line": 2, + "end_col": 27, + "end_line": 42, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 44, + "end_line": 146, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 36, - "end_line": 1, + "end_col": 35, + "end_line": 79, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 66, + "end_line": 165, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 41, + "start_line": 165 }, - "While constructing the external wrapper for:" + "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 21, - "start_line": 1 + "start_col": 20, + "start_line": 79 }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 114 + "start_col": 21, + "start_line": 146 }, - "While constructing the external wrapper for:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 2 + "start_col": 12, + "start_line": 42 } }, - "357": { + "422": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 35, - "end_line": 2, + "end_col": 53, + "end_line": 125, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 65, + "end_line": 165, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 49, - "end_line": 1, - "input_file": { - "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" - }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While constructing the external wrapper for:" - ], - "start_col": 37, - "start_line": 1 - }, - "While expanding the reference 'retdata_size' in:" - ], - "start_col": 6, - "start_line": 114 + "start_col": 55, + "start_line": 165 }, - "While constructing the external wrapper for:" + "While expanding the reference 'theta_0_fp' in:" ], - "start_col": 23, - "start_line": 2 + "start_col": 37, + "start_line": 125 } }, - "358": { + "423": { "accessible_scopes": [ "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 66, + "end_line": 165, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 41, + "start_line": 165 + } + }, + "425": { + "accessible_scopes": [ "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 44, - "end_line": 2, + "end_col": 35, + "end_line": 79, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/d846828f6e66889c16c24e01dc0490835ef36278c4df5a09fc2cfde86de65fbc.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 66, + "end_line": 165, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 57, - "end_line": 1, + "end_col": 54, + "end_line": 168, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "parent_location": [ - { - "end_col": 19, - "end_line": 114, - "input_file": { - "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" - }, - "start_col": 6, - "start_line": 114 - }, - "While constructing the external wrapper for:" - ], - "start_col": 50, - "start_line": 1 + "start_col": 39, + "start_line": 168 }, - "While expanding the reference 'retdata' in:" + "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 6, - "start_line": 114 + "start_col": 41, + "start_line": 165 }, - "While constructing the external wrapper for:" + "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 37, - "start_line": 2 + "start_col": 20, + "start_line": 79 } }, - "359": { + "426": { "accessible_scopes": [ "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx" + "contracts.math.cosine_approx" ], "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 59, - "end_line": 1, + "end_col": 35, + "end_line": 167, "input_file": { - "filename": "autogen/starknet/external/cosine_approx/93099bea078b47105ec080392b498d5fa602cf51e6076f4584216f16f5b4c273.cairo" + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 19, - "end_line": 114, + "end_col": 42, + "end_line": 172, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 6, - "start_line": 114 + "start_col": 28, + "start_line": 172 }, - "While constructing the external wrapper for:" + "While expanding the reference 'cos_theta_0_fp' in:" ], - "start_col": 1, - "start_line": 1 + "start_col": 21, + "start_line": 167 } }, - "360": { + "427": { + "accessible_scopes": [ + "contracts.math", + "contracts.math.cosine_approx" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 44, + "end_line": 172, + "input_file": { + "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" + }, + "start_col": 5, + "start_line": 172 + } + }, + "428": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8024,15 +8857,15 @@ "hints": [], "inst": { "end_col": 18, - "end_line": 153, + "end_line": 178, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 153 + "start_line": 178 } }, - "362": { + "430": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8041,15 +8874,15 @@ "hints": [], "inst": { "end_col": 45, - "end_line": 154, + "end_line": 179, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 154 + "start_line": 179 } }, - "363": { + "431": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8058,7 +8891,7 @@ "hints": [], "inst": { "end_col": 26, - "end_line": 154, + "end_line": 179, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, @@ -8071,13 +8904,13 @@ }, "parent_location": [ { - "end_col": 66, - "end_line": 156, + "end_col": 72, + "end_line": 181, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 32, - "start_line": 156 + "start_col": 34, + "start_line": 181 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -8087,10 +8920,10 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 11, - "start_line": 154 + "start_line": 179 } }, - "364": { + "432": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8098,28 +8931,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 69, - "end_line": 152, + "end_col": 73, + "end_line": 177, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 51, - "end_line": 156, + "end_col": 55, + "end_line": 181, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 39, - "start_line": 156 + "start_col": 41, + "start_line": 181 }, - "While expanding the reference 'cos_theta_fp' in:" + "While expanding the reference 'cos_theta_0_fp' in:" ], - "start_col": 51, - "start_line": 152 + "start_col": 53, + "start_line": 177 } }, - "365": { + "433": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8127,28 +8960,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 69, - "end_line": 152, + "end_col": 73, + "end_line": 177, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 65, - "end_line": 156, + "end_col": 71, + "end_line": 181, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 53, - "start_line": 156 + "start_col": 57, + "start_line": 181 }, - "While expanding the reference 'cos_theta_fp' in:" + "While expanding the reference 'cos_theta_0_fp' in:" ], - "start_col": 51, - "start_line": 152 + "start_col": 53, + "start_line": 177 } }, - "366": { + "434": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8156,16 +8989,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 66, - "end_line": 156, + "end_col": 72, + "end_line": 181, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 32, - "start_line": 156 + "start_col": 34, + "start_line": 181 } }, - "368": { + "436": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8174,27 +9007,27 @@ "hints": [], "inst": { "end_col": 31, - "end_line": 157, + "end_line": 182, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 31, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 24, - "start_line": 158 + "start_line": 183 }, "While expanding the reference 'diff_fp' in:" ], "start_col": 19, - "start_line": 157 + "start_line": 182 } }, - "370": { + "438": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8209,8 +9042,8 @@ }, "parent_location": [ { - "end_col": 66, - "end_line": 156, + "end_col": 72, + "end_line": 181, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, @@ -8224,12 +9057,12 @@ "parent_location": [ { "end_col": 32, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 16, - "start_line": 158 + "start_line": 183 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -8238,8 +9071,8 @@ }, "While expanding the reference 'range_check_ptr' in:" ], - "start_col": 32, - "start_line": 156 + "start_col": 34, + "start_line": 181 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -8247,7 +9080,7 @@ "start_line": 18 } }, - "371": { + "439": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8255,28 +9088,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 54, - "end_line": 157, + "end_col": 56, + "end_line": 182, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 31, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 24, - "start_line": 158 + "start_line": 183 }, "While expanding the reference 'diff_fp' in:" ], "start_col": 19, - "start_line": 157 + "start_line": 182 } }, - "372": { + "440": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8285,15 +9118,15 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 16, - "start_line": 158 + "start_line": 183 } }, - "374": { + "442": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8309,7 +9142,7 @@ "parent_location": [ { "end_col": 32, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, @@ -8322,13 +9155,13 @@ }, "parent_location": [ { - "end_col": 31, - "end_line": 160, + "end_col": 33, + "end_line": 185, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 16, - "start_line": 160 + "start_line": 185 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -8338,7 +9171,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 16, - "start_line": 158 + "start_line": 183 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -8346,7 +9179,7 @@ "start_line": 11 } }, - "375": { + "443": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8354,28 +9187,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 49, - "end_line": 152, + "end_col": 51, + "end_line": 177, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 30, - "end_line": 160, + "end_col": 32, + "end_line": 185, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 22, - "start_line": 160 + "start_line": 185 }, - "While expanding the reference 'theta_fp' in:" + "While expanding the reference 'theta_0_fp' in:" ], "start_col": 35, - "start_line": 152 + "start_line": 177 } }, - "376": { + "444": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8383,16 +9216,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 31, - "end_line": 160, + "end_col": 33, + "end_line": 185, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 16, - "start_line": 160 + "start_line": 185 } }, - "378": { + "446": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8401,15 +9234,15 @@ "hints": [], "inst": { "end_col": 18, - "end_line": 161, + "end_line": 186, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 9, - "start_line": 161 + "start_line": 186 } }, - "380": { + "448": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8418,15 +9251,15 @@ "hints": [], "inst": { "end_col": 7, - "end_line": 161, + "end_line": 186, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 161 + "start_line": 186 } }, - "382": { + "450": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8435,27 +9268,27 @@ "hints": [], "inst": { "end_col": 13, - "end_line": 158, + "end_line": 183, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 36, - "end_line": 163, + "end_col": 38, + "end_line": 188, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 32, - "start_line": 163 + "start_col": 34, + "start_line": 188 }, "While expanding the reference 'root' in:" ], "start_col": 9, - "start_line": 158 + "start_line": 183 } }, - "383": { + "451": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8470,25 +9303,25 @@ }, "parent_location": [ { - "end_col": 31, - "end_line": 160, + "end_col": 33, + "end_line": 185, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 164, + "end_line": 189, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 35, - "start_line": 164 + "start_line": 189 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 16, - "start_line": 160 + "start_line": 185 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -8496,7 +9329,7 @@ "start_line": 18 } }, - "384": { + "452": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8505,15 +9338,15 @@ "hints": [], "inst": { "end_col": 7, - "end_line": 161, + "end_line": 186, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 161 + "start_line": 186 } }, - "386": { + "454": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8521,16 +9354,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 37, - "end_line": 167, + "end_col": 39, + "end_line": 192, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 32, - "start_line": 167 + "start_col": 34, + "start_line": 192 } }, - "388": { + "456": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8545,25 +9378,25 @@ }, "parent_location": [ { - "end_col": 31, - "end_line": 160, + "end_col": 33, + "end_line": 185, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 168, + "end_line": 193, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 35, - "start_line": 168 + "start_line": 193 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 16, - "start_line": 160 + "start_line": 185 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -8571,7 +9404,7 @@ "start_line": 18 } }, - "389": { + "457": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8579,28 +9412,28 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 29, - "end_line": 167, + "end_col": 31, + "end_line": 192, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 38, - "end_line": 171, + "end_col": 42, + "end_line": 196, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, - "start_col": 26, - "start_line": 171 + "start_col": 28, + "start_line": 196 }, - "While expanding the reference 'sin_theta_fp' in:" + "While expanding the reference 'sin_theta_0_fp' in:" ], "start_col": 17, - "start_line": 167 + "start_line": 192 } }, - "390": { + "458": { "accessible_scopes": [ "contracts.math", "contracts.math.sine_approx" @@ -8608,16 +9441,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 40, - "end_line": 171, + "end_col": 44, + "end_line": 196, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "start_col": 5, - "start_line": 171 + "start_line": 196 } }, - "391": { + "459": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8634,7 +9467,7 @@ "start_line": 15 } }, - "393": { + "461": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8651,7 +9484,7 @@ "start_line": 16 } }, - "394": { + "462": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8692,7 +9525,7 @@ "start_line": 16 } }, - "395": { + "463": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8721,7 +9554,7 @@ "start_line": 14 } }, - "396": { + "464": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8750,7 +9583,7 @@ "start_line": 14 } }, - "397": { + "465": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8767,7 +9600,7 @@ "start_line": 19 } }, - "399": { + "467": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8820,7 +9653,7 @@ "start_line": 18 } }, - "400": { + "468": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8837,7 +9670,7 @@ "start_line": 21 } }, - "402": { + "470": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8866,7 +9699,7 @@ "start_line": 20 } }, - "404": { + "472": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8883,7 +9716,7 @@ "start_line": 21 } }, - "406": { + "474": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8900,7 +9733,7 @@ "start_line": 22 } }, - "408": { + "476": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8917,7 +9750,7 @@ "start_line": 22 } }, - "410": { + "478": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8926,7 +9759,7 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 34, + "end_line": 41, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, @@ -8967,10 +9800,10 @@ "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 17, - "start_line": 34 + "start_line": 41 } }, - "411": { + "479": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -8999,7 +9832,7 @@ "start_line": 23 } }, - "412": { + "480": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9016,7 +9849,7 @@ "start_line": 24 } }, - "414": { + "482": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9069,7 +9902,7 @@ "start_line": 11 } }, - "415": { + "483": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9098,7 +9931,7 @@ "start_line": 25 } }, - "416": { + "484": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9115,7 +9948,7 @@ "start_line": 26 } }, - "418": { + "486": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9132,7 +9965,7 @@ "start_line": 26 } }, - "420": { + "488": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9185,7 +10018,7 @@ "start_line": 26 } }, - "421": { + "489": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9214,7 +10047,7 @@ "start_line": 14 } }, - "422": { + "490": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9231,7 +10064,7 @@ "start_line": 35 } }, - "424": { + "492": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9248,7 +10081,7 @@ "start_line": 36 } }, - "426": { + "494": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9265,7 +10098,7 @@ "start_line": 36 } }, - "428": { + "496": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9282,7 +10115,7 @@ "start_line": 37 } }, - "430": { + "498": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9299,7 +10132,7 @@ "start_line": 37 } }, - "432": { + "500": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9316,7 +10149,7 @@ "start_line": 39 } }, - "434": { + "502": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9333,7 +10166,7 @@ "start_line": 39 } }, - "436": { + "504": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9362,7 +10195,7 @@ "start_line": 26 } }, - "437": { + "505": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9403,7 +10236,7 @@ "start_line": 42 } }, - "438": { + "506": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9420,7 +10253,7 @@ "start_line": 39 } }, - "440": { + "508": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9473,7 +10306,7 @@ "start_line": 42 } }, - "441": { + "509": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9502,7 +10335,7 @@ "start_line": 46 } }, - "443": { + "511": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9531,7 +10364,7 @@ "start_line": 14 } }, - "444": { + "512": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9548,7 +10381,7 @@ "start_line": 47 } }, - "446": { + "514": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9577,7 +10410,7 @@ "start_line": 26 } }, - "447": { + "515": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9594,7 +10427,7 @@ "start_line": 49 } }, - "449": { + "517": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9611,7 +10444,7 @@ "start_line": 50 } }, - "451": { + "519": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9628,7 +10461,7 @@ "start_line": 50 } }, - "453": { + "521": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9657,7 +10490,7 @@ "start_line": 47 } }, - "454": { + "522": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9698,7 +10531,7 @@ "start_line": 42 } }, - "455": { + "523": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9715,7 +10548,7 @@ "start_line": 50 } }, - "457": { + "525": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9744,7 +10577,7 @@ "start_line": 26 } }, - "458": { + "526": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9785,7 +10618,7 @@ "start_line": 42 } }, - "459": { + "527": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9802,7 +10635,7 @@ "start_line": 37 } }, - "461": { + "529": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9855,7 +10688,7 @@ "start_line": 42 } }, - "462": { + "530": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9884,7 +10717,7 @@ "start_line": 61 } }, - "464": { + "532": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9913,7 +10746,7 @@ "start_line": 14 } }, - "465": { + "533": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9930,7 +10763,7 @@ "start_line": 62 } }, - "467": { + "535": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9945,12 +10778,12 @@ }, "parent_location": [ { - "end_col": 48, + "end_col": 49, "end_line": 63, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" }, - "start_col": 38, + "start_col": 39, "start_line": 63 }, "While expanding the reference 't_max_y_fp' in:" @@ -9959,7 +10792,7 @@ "start_line": 26 } }, - "468": { + "536": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9967,7 +10800,7 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 49, + "end_col": 50, "end_line": 63, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" @@ -9976,7 +10809,7 @@ "start_line": 63 } }, - "470": { + "538": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -9993,7 +10826,7 @@ "start_line": 65 } }, - "472": { + "540": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10010,7 +10843,7 @@ "start_line": 65 } }, - "474": { + "542": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10039,7 +10872,7 @@ "start_line": 62 } }, - "475": { + "543": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10054,7 +10887,7 @@ }, "parent_location": [ { - "end_col": 49, + "end_col": 50, "end_line": 63, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" @@ -10080,7 +10913,7 @@ "start_line": 42 } }, - "476": { + "544": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10097,7 +10930,7 @@ "start_line": 65 } }, - "478": { + "546": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10126,7 +10959,7 @@ "start_line": 26 } }, - "479": { + "547": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10141,7 +10974,7 @@ }, "parent_location": [ { - "end_col": 49, + "end_col": 50, "end_line": 63, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/physics.cairo" @@ -10167,7 +11000,7 @@ "start_line": 42 } }, - "480": { + "548": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10196,7 +11029,7 @@ "start_line": 69 } }, - "481": { + "549": { "accessible_scopes": [ "contracts.physics", "contracts.physics.time_in_plot_fp" @@ -10213,7 +11046,7 @@ "start_line": 74 } }, - "482": { + "550": { "accessible_scopes": [ "contracts.physics", "contracts.physics.x_value_fp" @@ -10254,7 +11087,7 @@ "start_line": 78 } }, - "483": { + "551": { "accessible_scopes": [ "contracts.physics", "contracts.physics.x_value_fp" @@ -10283,7 +11116,7 @@ "start_line": 78 } }, - "484": { + "552": { "accessible_scopes": [ "contracts.physics", "contracts.physics.x_value_fp" @@ -10312,7 +11145,7 @@ "start_line": 78 } }, - "485": { + "553": { "accessible_scopes": [ "contracts.physics", "contracts.physics.x_value_fp" @@ -10329,7 +11162,7 @@ "start_line": 79 } }, - "487": { + "555": { "accessible_scopes": [ "contracts.physics", "contracts.physics.x_value_fp" @@ -10346,7 +11179,7 @@ "start_line": 81 } }, - "488": { + "556": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10387,7 +11220,7 @@ "start_line": 85 } }, - "489": { + "557": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10416,7 +11249,7 @@ "start_line": 85 } }, - "490": { + "558": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10445,7 +11278,7 @@ "start_line": 85 } }, - "491": { + "559": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10462,7 +11295,7 @@ "start_line": 86 } }, - "493": { + "561": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10515,7 +11348,7 @@ "start_line": 18 } }, - "494": { + "562": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10544,7 +11377,7 @@ "start_line": 85 } }, - "495": { + "563": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10573,7 +11406,7 @@ "start_line": 85 } }, - "496": { + "564": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10590,7 +11423,7 @@ "start_line": 87 } }, - "498": { + "566": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10643,7 +11476,7 @@ "start_line": 18 } }, - "499": { + "567": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10660,7 +11493,7 @@ "start_line": 88 } }, - "501": { + "569": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10689,7 +11522,7 @@ "start_line": 87 } }, - "502": { + "570": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10706,7 +11539,7 @@ "start_line": 88 } }, - "504": { + "572": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10723,7 +11556,7 @@ "start_line": 89 } }, - "506": { + "574": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10740,7 +11573,7 @@ "start_line": 89 } }, - "508": { + "576": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10749,7 +11582,7 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 40, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, @@ -10790,10 +11623,10 @@ "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 17, - "start_line": 40 + "start_line": 47 } }, - "509": { + "577": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10822,7 +11655,7 @@ "start_line": 90 } }, - "510": { + "578": { "accessible_scopes": [ "contracts.physics", "contracts.physics.y_value_fp" @@ -10839,7 +11672,7 @@ "start_line": 91 } }, - "511": { + "579": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -10856,7 +11689,7 @@ "start_line": 20 } }, - "513": { + "581": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -10897,7 +11730,7 @@ "start_line": 17 } }, - "514": { + "582": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -10914,7 +11747,7 @@ "start_line": 21 } }, - "515": { + "583": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -10955,7 +11788,7 @@ "start_line": 17 } }, - "516": { + "584": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -10972,7 +11805,7 @@ "start_line": 25 } }, - "518": { + "586": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11001,7 +11834,7 @@ "start_line": 17 } }, - "519": { + "587": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11030,7 +11863,7 @@ "start_line": 17 } }, - "520": { + "588": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11059,7 +11892,7 @@ "start_line": 17 } }, - "521": { + "589": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11076,7 +11909,7 @@ "start_line": 25 } }, - "522": { + "590": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11093,7 +11926,7 @@ "start_line": 25 } }, - "524": { + "592": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11110,7 +11943,7 @@ "start_line": 25 } }, - "526": { + "594": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11127,7 +11960,7 @@ "start_line": 25 } }, - "528": { + "596": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11156,7 +11989,7 @@ "start_line": 17 } }, - "529": { + "597": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11185,7 +12018,7 @@ "start_line": 17 } }, - "530": { + "598": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11202,7 +12035,7 @@ "start_line": 28 } }, - "532": { + "600": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11219,7 +12052,7 @@ "start_line": 28 } }, - "533": { + "601": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11272,7 +12105,7 @@ "start_line": 78 } }, - "534": { + "602": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11301,7 +12134,7 @@ "start_line": 17 } }, - "535": { + "603": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11330,7 +12163,7 @@ "start_line": 17 } }, - "536": { + "604": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11347,7 +12180,7 @@ "start_line": 29 } }, - "538": { + "606": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11364,7 +12197,7 @@ "start_line": 29 } }, - "539": { + "607": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11417,7 +12250,7 @@ "start_line": 85 } }, - "540": { + "608": { "accessible_scopes": [ "__main__", "__main__.position_fp_s_filler" @@ -11434,7 +12267,7 @@ "start_line": 31 } }, - "541": { + "609": { "accessible_scopes": [ "__main__", "__main__", @@ -11452,7 +12285,7 @@ "start_line": 41 } }, - "543": { + "611": { "accessible_scopes": [ "__main__", "__main__", @@ -11494,7 +12327,7 @@ "start_line": 38 } }, - "544": { + "612": { "accessible_scopes": [ "__main__", "__main__", @@ -11512,7 +12345,7 @@ "start_line": 45 } }, - "546": { + "614": { "accessible_scopes": [ "__main__", "__main__", @@ -11542,7 +12375,7 @@ "start_line": 38 } }, - "547": { + "615": { "accessible_scopes": [ "__main__", "__main__", @@ -11560,7 +12393,7 @@ "start_line": 45 } }, - "549": { + "617": { "accessible_scopes": [ "__main__", "__main__", @@ -11578,7 +12411,7 @@ "start_line": 45 } }, - "551": { + "619": { "accessible_scopes": [ "__main__", "__main__", @@ -11596,7 +12429,7 @@ "start_line": 45 } }, - "552": { + "620": { "accessible_scopes": [ "__main__", "__main__", @@ -11650,7 +12483,7 @@ "start_line": 42 } }, - "553": { + "621": { "accessible_scopes": [ "__main__", "__main__", @@ -11680,7 +12513,7 @@ "start_line": 38 } }, - "554": { + "622": { "accessible_scopes": [ "__main__", "__main__", @@ -11698,7 +12531,7 @@ "start_line": 48 } }, - "556": { + "624": { "accessible_scopes": [ "__main__", "__main__", @@ -11716,7 +12549,7 @@ "start_line": 48 } }, - "558": { + "626": { "accessible_scopes": [ "__main__", "__main__", @@ -11734,7 +12567,7 @@ "start_line": 48 } }, - "560": { + "628": { "accessible_scopes": [ "__main__", "__main__", @@ -11752,7 +12585,7 @@ "start_line": 48 } }, - "561": { + "629": { "accessible_scopes": [ "__main__", "__main__", @@ -11806,7 +12639,7 @@ "start_line": 42 } }, - "562": { + "630": { "accessible_scopes": [ "__main__", "__main__", @@ -11836,7 +12669,7 @@ "start_line": 38 } }, - "563": { + "631": { "accessible_scopes": [ "__main__", "__main__", @@ -11854,7 +12687,7 @@ "start_line": 52 } }, - "565": { + "633": { "accessible_scopes": [ "__main__", "__main__", @@ -11872,7 +12705,7 @@ "start_line": 53 } }, - "567": { + "635": { "accessible_scopes": [ "__main__", "__main__", @@ -11890,7 +12723,7 @@ "start_line": 53 } }, - "569": { + "637": { "accessible_scopes": [ "__main__", "__main__", @@ -11908,7 +12741,7 @@ "start_line": 53 } }, - "571": { + "639": { "accessible_scopes": [ "__main__", "__main__", @@ -11926,7 +12759,7 @@ "start_line": 53 } }, - "572": { + "640": { "accessible_scopes": [ "__main__", "__main__", @@ -11950,13 +12783,13 @@ "parent_location": [ { "end_col": 27, - "end_line": 18, + "end_line": 42, "input_file": { "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 26, + "end_col": 29, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" @@ -11967,7 +12800,7 @@ "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 12, - "start_line": 18 + "start_line": 42 }, "While expanding the reference 'range_check_ptr' in:" ], @@ -11980,7 +12813,25 @@ "start_line": 42 } }, - "573": { + "641": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 23, + "end_line": 57, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 57 + } + }, + "643": { "accessible_scopes": [ "__main__", "__main__", @@ -11996,12 +12847,12 @@ }, "parent_location": [ { - "end_col": 25, + "end_col": 28, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 22, + "start_col": 25, "start_line": 57 }, "While expanding the reference 'v_0' in:" @@ -12010,7 +12861,7 @@ "start_line": 38 } }, - "574": { + "644": { "accessible_scopes": [ "__main__", "__main__", @@ -12019,7 +12870,7 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 26, + "end_col": 29, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" @@ -12028,7 +12879,7 @@ "start_line": 57 } }, - "576": { + "646": { "accessible_scopes": [ "__main__", "__main__", @@ -12037,16 +12888,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 30, + "end_col": 33, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 29, + "start_col": 32, "start_line": 57 } }, - "578": { + "648": { "accessible_scopes": [ "__main__", "__main__", @@ -12055,7 +12906,7 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 31, + "end_col": 34, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" @@ -12064,7 +12915,7 @@ "start_line": 57 } }, - "579": { + "649": { "accessible_scopes": [ "__main__", "__main__", @@ -12074,38 +12925,38 @@ "hints": [], "inst": { "end_col": 27, - "end_line": 18, + "end_line": 42, "input_file": { "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 26, + "end_col": 29, "end_line": 57, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { - "end_col": 28, - "end_line": 26, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 53, - "end_line": 66, + "end_col": 48, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 66 + "start_line": 65 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 26 + "start_col": 17, + "start_line": 47 }, "While expanding the reference 'range_check_ptr' in:" ], @@ -12115,10 +12966,10 @@ "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 12, - "start_line": 18 + "start_line": 42 } }, - "580": { + "650": { "accessible_scopes": [ "__main__", "__main__", @@ -12127,16 +12978,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 38, - "end_line": 66, + "end_col": 42, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 33, - "start_line": 66 + "start_col": 37, + "start_line": 65 } }, - "582": { + "652": { "accessible_scopes": [ "__main__", "__main__", @@ -12145,28 +12996,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 38, + "end_col": 47, "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "parent_location": [ - { - "end_col": 52, - "end_line": 66, - "input_file": { - "filename": "contracts/projectile_plot.cairo" - }, - "start_col": 40, - "start_line": 66 - }, - "While expanding the reference 'PI_in_deg_fp' in:" - ], - "start_col": 24, + "start_col": 44, "start_line": 65 } }, - "584": { + "654": { "accessible_scopes": [ "__main__", "__main__", @@ -12175,16 +13014,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 66, + "end_col": 48, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 66 + "start_line": 65 } }, - "586": { + "656": { "accessible_scopes": [ "__main__", "__main__", @@ -12193,15 +13032,15 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 28, - "end_line": 26, + "end_col": 32, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 53, - "end_line": 66, + "end_col": 48, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12215,12 +13054,12 @@ "parent_location": [ { "end_col": 60, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 67 + "start_line": 66 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12230,15 +13069,15 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 26, - "start_line": 66 + "start_line": 65 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], - "start_col": 13, - "start_line": 26 + "start_col": 17, + "start_line": 47 } }, - "587": { + "657": { "accessible_scopes": [ "__main__", "__main__", @@ -12255,12 +13094,12 @@ "parent_location": [ { "end_col": 43, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 29, - "start_line": 67 + "start_line": 66 }, "While expanding the reference 'theta_0_deg_fp' in:" ], @@ -12268,7 +13107,7 @@ "start_line": 61 } }, - "589": { + "659": { "accessible_scopes": [ "__main__", "__main__", @@ -12278,27 +13117,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 66, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 59, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 45, - "start_line": 67 + "start_line": 66 }, "While expanding the reference 'pi_over_180_fp' in:" ], "start_col": 9, - "start_line": 66 + "start_line": 65 } }, - "590": { + "660": { "accessible_scopes": [ "__main__", "__main__", @@ -12308,15 +13147,15 @@ "hints": [], "inst": { "end_col": 60, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 67 + "start_line": 66 } }, - "592": { + "662": { "accessible_scopes": [ "__main__", "__main__", @@ -12326,27 +13165,27 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 67 + "start_line": 66 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 67 + "start_line": 66 } }, - "593": { + "663": { "accessible_scopes": [ "__main__", "__main__", @@ -12363,36 +13202,36 @@ "parent_location": [ { "end_col": 60, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 35, - "end_line": 114, + "end_line": 125, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 53, - "end_line": 70, + "end_col": 66, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 70 + "start_line": 71 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 20, - "start_line": 114 + "start_line": 125 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 22, - "start_line": 67 + "start_line": 66 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -12400,7 +13239,7 @@ "start_line": 18 } }, - "594": { + "664": { "accessible_scopes": [ "__main__", "__main__", @@ -12410,39 +13249,39 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 52, - "end_line": 70, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 42, - "start_line": 70 + "start_line": 71 }, "While expanding the reference 'theta_0_fp' in:" ], "start_col": 9, - "start_line": 67 + "start_line": 66 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 67 + "start_line": 66 } }, - "595": { + "665": { "accessible_scopes": [ "__main__", "__main__", @@ -12451,16 +13290,46 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 70, + "end_col": 71, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 65, + "end_line": 71, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 54, + "start_line": 71 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 54, + "start_line": 38 + } + }, + "666": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 66, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 70 + "start_line": 71 } }, - "597": { + "668": { "accessible_scopes": [ "__main__", "__main__", @@ -12470,51 +13339,51 @@ "hints": [], "inst": { "end_col": 35, - "end_line": 114, + "end_line": 125, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { - "end_col": 53, - "end_line": 70, + "end_col": 66, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 33, - "end_line": 152, + "end_line": 177, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 67, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 71 + "start_line": 72 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 18, - "start_line": 152 + "start_line": 177 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 28, - "start_line": 70 + "start_line": 71 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 20, - "start_line": 114 + "start_line": 125 } }, - "598": { + "669": { "accessible_scopes": [ "__main__", "__main__", @@ -12524,39 +13393,39 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 67, + "end_line": 66, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 40, - "start_line": 71 + "start_line": 72 }, "While expanding the reference 'theta_0_fp' in:" ], "start_col": 9, - "start_line": 67 + "start_line": 66 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 67 + "start_line": 66 } }, - "599": { + "670": { "accessible_scopes": [ "__main__", "__main__", @@ -12566,27 +13435,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 70, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 66, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 52, - "start_line": 71 + "start_line": 72 }, "While expanding the reference 'cos_theta_0_fp' in:" ], "start_col": 10, - "start_line": 70 + "start_line": 71 } }, - "600": { + "671": { "accessible_scopes": [ "__main__", "__main__", @@ -12596,15 +13465,15 @@ "hints": [], "inst": { "end_col": 67, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 71 + "start_line": 72 } }, - "602": { + "673": { "accessible_scopes": [ "__main__", "__main__", @@ -12614,14 +13483,14 @@ "hints": [], "inst": { "end_col": 33, - "end_line": 152, + "end_line": 177, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 67, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12635,12 +13504,12 @@ "parent_location": [ { "end_col": 49, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 74 + "start_line": 75 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12650,15 +13519,15 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 28, - "start_line": 71 + "start_line": 72 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 18, - "start_line": 152 + "start_line": 177 } }, - "603": { + "674": { "accessible_scopes": [ "__main__", "__main__", @@ -12675,12 +13544,12 @@ "parent_location": [ { "end_col": 32, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 74 + "start_line": 75 }, "While expanding the reference 'v_0_fp' in:" ], @@ -12688,7 +13557,7 @@ "start_line": 62 } }, - "605": { + "676": { "accessible_scopes": [ "__main__", "__main__", @@ -12698,27 +13567,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 70, + "end_line": 71, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 48, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 34, - "start_line": 74 + "start_line": 75 }, "While expanding the reference 'cos_theta_0_fp' in:" ], "start_col": 10, - "start_line": 70 + "start_line": 71 } }, - "606": { + "677": { "accessible_scopes": [ "__main__", "__main__", @@ -12728,15 +13597,15 @@ "hints": [], "inst": { "end_col": 49, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 74 + "start_line": 75 } }, - "608": { + "679": { "accessible_scopes": [ "__main__", "__main__", @@ -12746,27 +13615,27 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 74 + "start_line": 75 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 74 + "start_line": 75 } }, - "609": { + "680": { "accessible_scopes": [ "__main__", "__main__", @@ -12783,7 +13652,7 @@ "parent_location": [ { "end_col": 49, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12797,12 +13666,12 @@ "parent_location": [ { "end_col": 49, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 75 + "start_line": 76 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12812,7 +13681,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 19, - "start_line": 74 + "start_line": 75 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -12820,7 +13689,7 @@ "start_line": 18 } }, - "610": { + "681": { "accessible_scopes": [ "__main__", "__main__", @@ -12837,12 +13706,12 @@ "parent_location": [ { "end_col": 32, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 75 + "start_line": 76 }, "While expanding the reference 'v_0_fp' in:" ], @@ -12850,7 +13719,7 @@ "start_line": 62 } }, - "612": { + "683": { "accessible_scopes": [ "__main__", "__main__", @@ -12860,27 +13729,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 71, + "end_line": 72, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 48, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 34, - "start_line": 75 + "start_line": 76 }, "While expanding the reference 'sin_theta_0_fp' in:" ], "start_col": 10, - "start_line": 71 + "start_line": 72 } }, - "613": { + "684": { "accessible_scopes": [ "__main__", "__main__", @@ -12890,15 +13759,15 @@ "hints": [], "inst": { "end_col": 49, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 75 + "start_line": 76 } }, - "615": { + "686": { "accessible_scopes": [ "__main__", "__main__", @@ -12908,27 +13777,27 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 75 + "start_line": 76 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 76 } }, - "616": { + "687": { "accessible_scopes": [ "__main__", "__main__", @@ -12945,7 +13814,7 @@ "parent_location": [ { "end_col": 49, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12959,12 +13828,12 @@ "parent_location": [ { "end_col": 66, - "end_line": 78, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 20, - "start_line": 78 + "start_line": 79 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12974,7 +13843,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 19, - "start_line": 75 + "start_line": 76 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -12982,7 +13851,7 @@ "start_line": 18 } }, - "617": { + "688": { "accessible_scopes": [ "__main__", "__main__", @@ -12999,12 +13868,12 @@ "parent_location": [ { "end_col": 47, - "end_line": 78, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 36, - "start_line": 78 + "start_line": 79 }, "While expanding the reference 'theta_0_deg' in:" ], @@ -13012,7 +13881,7 @@ "start_line": 38 } }, - "618": { + "689": { "accessible_scopes": [ "__main__", "__main__", @@ -13022,39 +13891,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 56, - "end_line": 78, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 49, - "start_line": 78 + "start_line": 79 }, "While expanding the reference 'v_0x_fp' in:" ], "start_col": 9, - "start_line": 74 + "start_line": 75 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 74 + "start_line": 75 } }, - "619": { + "690": { "accessible_scopes": [ "__main__", "__main__", @@ -13064,39 +13933,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 65, - "end_line": 78, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 58, - "start_line": 78 + "start_line": 79 }, "While expanding the reference 'v_0y_fp' in:" ], "start_col": 9, - "start_line": 75 + "start_line": 76 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 76 } }, - "620": { + "691": { "accessible_scopes": [ "__main__", "__main__", @@ -13106,15 +13975,15 @@ "hints": [], "inst": { "end_col": 66, - "end_line": 78, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 20, - "start_line": 78 + "start_line": 79 } }, - "622": { + "693": { "accessible_scopes": [ "__main__", "__main__", @@ -13124,15 +13993,15 @@ "hints": [], "inst": { "end_col": 54, - "end_line": 81, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 43, - "start_line": 81 + "start_line": 82 } }, - "624": { + "695": { "accessible_scopes": [ "__main__", "__main__", @@ -13142,15 +14011,15 @@ "hints": [], "inst": { "end_col": 55, - "end_line": 81, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 81 + "start_line": 82 } }, - "626": { + "697": { "accessible_scopes": [ "__main__", "__main__", @@ -13160,15 +14029,15 @@ "hints": [], "inst": { "end_col": 34, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 27, - "start_line": 88 + "start_line": 89 } }, - "628": { + "699": { "accessible_scopes": [ "__main__", "__main__", @@ -13178,27 +14047,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 10, - "start_line": 88 + "start_line": 89 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 88 + "start_line": 89 } }, - "629": { + "700": { "accessible_scopes": [ "__main__", "__main__", @@ -13208,15 +14077,15 @@ "hints": [], "inst": { "end_col": 34, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 27, - "start_line": 89 + "start_line": 90 } }, - "631": { + "702": { "accessible_scopes": [ "__main__", "__main__", @@ -13226,27 +14095,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 10, - "start_line": 89 + "start_line": 90 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 90 } }, - "632": { + "703": { "accessible_scopes": [ "__main__", "__main__", @@ -13256,14 +14125,14 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 40, + "end_line": 47, "input_file": { "filename": "/home/whatthedev/projectile-path/contracts/math.cairo" }, "parent_location": [ { "end_col": 55, - "end_line": 81, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13277,12 +14146,12 @@ "parent_location": [ { "end_col": 88, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 92 + "start_line": 93 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13292,15 +14161,15 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 22, - "start_line": 81 + "start_line": 82 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], "start_col": 17, - "start_line": 40 + "start_line": 47 } }, - "633": { + "704": { "accessible_scopes": [ "__main__", "__main__", @@ -13317,12 +14186,12 @@ "parent_location": [ { "end_col": 33, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'num_pts' in:" ], @@ -13330,7 +14199,7 @@ "start_line": 38 } }, - "634": { + "705": { "accessible_scopes": [ "__main__", "__main__", @@ -13340,39 +14209,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 74, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 42, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 35, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'v_0x_fp' in:" ], "start_col": 9, - "start_line": 74 + "start_line": 75 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 74 + "start_line": 75 } }, - "635": { + "706": { "accessible_scopes": [ "__main__", "__main__", @@ -13382,39 +14251,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 76, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 51, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 44, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'v_0y_fp' in:" ], "start_col": 9, - "start_line": 75 + "start_line": 76 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 76 } }, - "636": { + "707": { "accessible_scopes": [ "__main__", "__main__", @@ -13424,27 +14293,27 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 81, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 63, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 53, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'delta_t_fp' in:" ], "start_col": 9, - "start_line": 81 + "start_line": 82 } }, - "637": { + "708": { "accessible_scopes": [ "__main__", "__main__", @@ -13454,27 +14323,27 @@ "hints": [], "inst": { "end_col": 30, - "end_line": 84, + "end_line": 85, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 71, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 65, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 't_0_fp' in:" ], "start_col": 18, - "start_line": 84 + "start_line": 85 } }, - "639": { + "710": { "accessible_scopes": [ "__main__", "__main__", @@ -13484,39 +14353,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 79, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 73, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'x_fp_s' in:" ], "start_col": 10, - "start_line": 88 + "start_line": 89 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 88 + "start_line": 89 } }, - "640": { + "711": { "accessible_scopes": [ "__main__", "__main__", @@ -13526,39 +14395,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 87, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 81, - "start_line": 92 + "start_line": 93 }, "While expanding the reference 'y_fp_s' in:" ], "start_col": 10, - "start_line": 89 + "start_line": 90 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 90 } }, - "641": { + "712": { "accessible_scopes": [ "__main__", "__main__", @@ -13568,15 +14437,15 @@ "hints": [], "inst": { "end_col": 88, - "end_line": 92, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 92 + "start_line": 93 } }, - "643": { + "714": { "accessible_scopes": [ "__main__", "__main__", @@ -13593,24 +14462,24 @@ "parent_location": [ { "end_col": 29, - "end_line": 95, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 34, - "end_line": 98, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 24, - "start_line": 98 + "start_line": 99 }, "While expanding the reference 'x_fp_s_len' in:" ], "start_col": 22, - "start_line": 95 + "start_line": 96 }, "While expanding the reference 'num_pts' in:" ], @@ -13618,7 +14487,7 @@ "start_line": 38 } }, - "644": { + "715": { "accessible_scopes": [ "__main__", "__main__", @@ -13628,39 +14497,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 88, + "end_line": 89, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 98, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 44, - "start_line": 98 + "start_line": 99 }, "While expanding the reference 'x_fp_s' in:" ], "start_col": 10, - "start_line": 88 + "start_line": 89 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 88 + "start_line": 89 } }, - "645": { + "716": { "accessible_scopes": [ "__main__", "__main__", @@ -13677,24 +14546,24 @@ "parent_location": [ { "end_col": 29, - "end_line": 96, + "end_line": 97, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 73, - "end_line": 98, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 63, - "start_line": 98 + "start_line": 99 }, "While expanding the reference 'y_fp_s_len' in:" ], "start_col": 22, - "start_line": 96 + "start_line": 97 }, "While expanding the reference 'num_pts' in:" ], @@ -13702,7 +14571,7 @@ "start_line": 38 } }, - "646": { + "717": { "accessible_scopes": [ "__main__", "__main__", @@ -13712,39 +14581,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 90, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 88, - "end_line": 98, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 82, - "start_line": 98 + "start_line": 99 }, "While expanding the reference 'y_fp_s' in:" ], "start_col": 10, - "start_line": 89 + "start_line": 90 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 90 } }, - "647": { + "718": { "accessible_scopes": [ "__main__", "__main__", @@ -13754,15 +14623,15 @@ "hints": [], "inst": { "end_col": 90, - "end_line": 98, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 98 + "start_line": 99 } }, - "648": { + "719": { "accessible_scopes": [ "__main__", "__main__", @@ -13818,7 +14687,7 @@ "start_line": 4 } }, - "650": { + "721": { "accessible_scopes": [ "__main__", "__main__", @@ -13849,7 +14718,7 @@ "start_line": 1 } }, - "651": { + "722": { "accessible_scopes": [ "__main__", "__main__", @@ -13880,7 +14749,7 @@ "start_line": 2 } }, - "652": { + "723": { "accessible_scopes": [ "__main__", "__main__", @@ -13911,7 +14780,7 @@ "start_line": 5 } }, - "654": { + "725": { "accessible_scopes": [ "__main__", "__main__", @@ -13966,7 +14835,7 @@ "start_line": 2 } }, - "656": { + "727": { "accessible_scopes": [ "__main__", "__main__", @@ -13997,7 +14866,7 @@ "start_line": 10 } }, - "657": { + "728": { "accessible_scopes": [ "__main__", "__main__", @@ -14076,7 +14945,7 @@ "start_line": 2 } }, - "659": { + "730": { "accessible_scopes": [ "__main__", "__main__", @@ -14107,7 +14976,7 @@ "start_line": 13 } }, - "660": { + "731": { "accessible_scopes": [ "__main__", "__main__", @@ -14138,7 +15007,7 @@ "start_line": 14 } }, - "661": { + "732": { "accessible_scopes": [ "__main__", "__main__", @@ -14169,7 +15038,7 @@ "start_line": 11 } }, - "663": { + "734": { "accessible_scopes": [ "__main__", "__main__", @@ -14200,7 +15069,7 @@ "start_line": 1 } }, - "664": { + "735": { "accessible_scopes": [ "__main__", "__main__", @@ -14231,7 +15100,7 @@ "start_line": 2 } }, - "665": { + "736": { "accessible_scopes": [ "__main__", "__main__", @@ -14262,7 +15131,7 @@ "start_line": 5 } }, - "667": { + "738": { "accessible_scopes": [ "__main__", "__main__", @@ -14317,7 +15186,7 @@ "start_line": 2 } }, - "669": { + "740": { "accessible_scopes": [ "__main__", "__main__", @@ -14348,7 +15217,7 @@ "start_line": 10 } }, - "670": { + "741": { "accessible_scopes": [ "__main__", "__main__", @@ -14427,7 +15296,7 @@ "start_line": 2 } }, - "672": { + "743": { "accessible_scopes": [ "__main__", "__main__", @@ -14458,7 +15327,7 @@ "start_line": 13 } }, - "673": { + "744": { "accessible_scopes": [ "__main__", "__main__", @@ -14489,7 +15358,7 @@ "start_line": 14 } }, - "674": { + "745": { "accessible_scopes": [ "__main__", "__main__", @@ -14520,7 +15389,7 @@ "start_line": 11 } }, - "676": { + "747": { "accessible_scopes": [ "__main__", "__main__", @@ -14575,7 +15444,7 @@ "start_line": 5 } }, - "677": { + "748": { "accessible_scopes": [ "__main__", "__main__", @@ -14606,7 +15475,7 @@ "start_line": 11 } }, - "678": { + "749": { "accessible_scopes": [ "__main__", "__main__", @@ -14661,7 +15530,7 @@ "start_line": 5 } }, - "679": { + "750": { "accessible_scopes": [ "__main__", "__main__", @@ -14692,7 +15561,7 @@ "start_line": 9 } }, - "680": { + "751": { "accessible_scopes": [ "__main__", "__main__", @@ -14723,7 +15592,7 @@ "start_line": 2 } }, - "682": { + "753": { "accessible_scopes": [ "__main__", "__main__", @@ -14802,7 +15671,7 @@ "start_line": 2 } }, - "684": { + "755": { "accessible_scopes": [ "__main__", "__main__", @@ -14833,7 +15702,7 @@ "start_line": 1 } }, - "685": { + "756": { "accessible_scopes": [ "__main__", "__main__", @@ -14888,7 +15757,7 @@ "start_line": 1 } }, - "686": { + "757": { "accessible_scopes": [ "__main__", "__main__", @@ -14943,7 +15812,7 @@ "start_line": 1 } }, - "687": { + "758": { "accessible_scopes": [ "__main__", "__main__", @@ -14998,7 +15867,7 @@ "start_line": 1 } }, - "688": { + "759": { "accessible_scopes": [ "__main__", "__main__", @@ -15053,7 +15922,7 @@ "start_line": 1 } }, - "689": { + "760": { "accessible_scopes": [ "__main__", "__main__", @@ -15072,7 +15941,7 @@ "start_line": 38 } }, - "691": { + "762": { "accessible_scopes": [ "__main__", "__main__", @@ -15127,7 +15996,7 @@ "start_line": 1 } }, - "692": { + "763": { "accessible_scopes": [ "__main__", "__main__", @@ -15158,7 +16027,7 @@ "start_line": 2 } }, - "694": { + "765": { "accessible_scopes": [ "__main__", "__main__", @@ -15213,7 +16082,7 @@ "start_line": 1 } }, - "695": { + "766": { "accessible_scopes": [ "__main__", "__main__", @@ -15268,7 +16137,7 @@ "start_line": 2 } }, - "696": { + "767": { "accessible_scopes": [ "__main__", "__main__", @@ -15323,7 +16192,7 @@ "start_line": 2 } }, - "697": { + "768": { "accessible_scopes": [ "__main__", "__main__", @@ -15378,7 +16247,7 @@ "start_line": 2 } }, - "698": { + "769": { "accessible_scopes": [ "__main__", "__main__", @@ -15662,25 +16531,7 @@ } } ], - "336": [ - { - "accessible_scopes": [ - "contracts.math", - "contracts.math", - "__wrappers__", - "__wrappers__.cosine_approx_encode_return" - ], - "code": "memory[ap] = segments.add()", - "flow_tracking_data": { - "ap_tracking": { - "group": 21, - "offset": 0 - }, - "reference_ids": {} - } - } - ], - "648": [ + "719": [ { "accessible_scopes": [ "__main__", @@ -15720,6 +16571,14 @@ "destination": "starkware.cairo.common.alloc.alloc", "type": "alias" }, + "__main__.cosine_6th_fp": { + "destination": "contracts.math.cosine_6th_fp", + "type": "alias" + }, + "__main__.cosine_8th_fp": { + "destination": "contracts.math.cosine_8th_fp", + "type": "alias" + }, "__main__.cosine_approx": { "destination": "contracts.math.cosine_approx", "type": "alias" @@ -15750,7 +16609,7 @@ }, "__main__.position_fp_s_filler": { "decorators": [], - "pc": 511, + "pc": 579, "type": "function" }, "__main__.position_fp_s_filler.Args": { @@ -15811,7 +16670,7 @@ "decorators": [ "view" ], - "pc": 541, + "pc": 609, "type": "function" }, "__main__.projectile_path.Args": { @@ -15892,80 +16751,11 @@ "destination": "contracts.physics.y_value_fp", "type": "alias" }, - "__wrappers__.cosine_approx": { - "decorators": [ - "view" - ], - "pc": 345, - "type": "function" - }, - "__wrappers__.cosine_approx.Args": { - "full_name": "__wrappers__.cosine_approx.Args", - "members": {}, - "size": 0, - "type": "struct" - }, - "__wrappers__.cosine_approx.ImplicitArgs": { - "full_name": "__wrappers__.cosine_approx.ImplicitArgs", - "members": {}, - "size": 0, - "type": "struct" - }, - "__wrappers__.cosine_approx.Return": { - "cairo_type": "(syscall_ptr: felt, range_check_ptr: felt, size: felt, retdata: felt*)", - "type": "type_definition" - }, - "__wrappers__.cosine_approx.SIZEOF_LOCALS": { - "type": "const", - "value": 0 - }, - "__wrappers__.cosine_approx.__wrapped_func": { - "destination": "contracts.math.cosine_approx", - "type": "alias" - }, - "__wrappers__.cosine_approx_encode_return": { - "decorators": [], - "pc": 336, - "type": "function" - }, - "__wrappers__.cosine_approx_encode_return.Args": { - "full_name": "__wrappers__.cosine_approx_encode_return.Args", - "members": { - "range_check_ptr": { - "cairo_type": "felt", - "offset": 1 - }, - "ret_value": { - "cairo_type": "(cos_theta_fp: felt)", - "offset": 0 - } - }, - "size": 2, - "type": "struct" - }, - "__wrappers__.cosine_approx_encode_return.ImplicitArgs": { - "full_name": "__wrappers__.cosine_approx_encode_return.ImplicitArgs", - "members": {}, - "size": 0, - "type": "struct" - }, - "__wrappers__.cosine_approx_encode_return.Return": { - "cairo_type": "(range_check_ptr: felt, data_len: felt, data: felt*)", - "type": "type_definition" - }, - "__wrappers__.cosine_approx_encode_return.SIZEOF_LOCALS": { - "type": "const", - "value": 1 - }, - "__wrappers__.cosine_approx_encode_return.memcpy": { - "destination": "starkware.cairo.common.memcpy.memcpy", - "type": "alias" - }, "__wrappers__.projectile_path": { "decorators": [ "view" ], - "pc": 680, + "pc": 751, "type": "function" }, "__wrappers__.projectile_path.Args": { @@ -15994,7 +16784,7 @@ }, "__wrappers__.projectile_path_encode_return": { "decorators": [], - "pc": 648, + "pc": 719, "type": "function" }, "__wrappers__.projectile_path_encode_return.Args": { @@ -16110,9 +16900,44 @@ "destination": "starkware.cairo.common.alloc.alloc", "type": "alias" }, + "contracts.math.cosine_6th_fp": { + "decorators": [], + "pc": 320, + "type": "function" + }, + "contracts.math.cosine_6th_fp.Args": { + "full_name": "contracts.math.cosine_6th_fp.Args", + "members": { + "theta_fp": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_6th_fp.ImplicitArgs": { + "full_name": "contracts.math.cosine_6th_fp.ImplicitArgs", + "members": { + "range_check_ptr": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "contracts.math.cosine_6th_fp.Return": { + "cairo_type": "(value_fp: felt)", + "type": "type_definition" + }, + "contracts.math.cosine_6th_fp.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, "contracts.math.cosine_8th_fp": { "decorators": [], - "pc": 234, + "pc": 270, "type": "function" }, "contracts.math.cosine_8th_fp.Args": { @@ -16146,21 +16971,23 @@ "value": 0 }, "contracts.math.cosine_approx": { - "decorators": [ - "view" - ], - "pc": 284, + "decorators": [], + "pc": 358, "type": "function" }, "contracts.math.cosine_approx.Args": { "full_name": "contracts.math.cosine_approx.Args", "members": { - "theta_fp": { + "theta_0_deg": { + "cairo_type": "felt", + "offset": 1 + }, + "theta_0_fp": { "cairo_type": "felt", "offset": 0 } }, - "size": 1, + "size": 2, "type": "struct" }, "contracts.math.cosine_approx.ImplicitArgs": { @@ -16175,7 +17002,7 @@ "type": "struct" }, "contracts.math.cosine_approx.Return": { - "cairo_type": "(cos_theta_fp: felt)", + "cairo_type": "(cos_theta_0_fp: felt)", "type": "type_definition" }, "contracts.math.cosine_approx.SIZEOF_LOCALS": { @@ -16223,7 +17050,7 @@ }, "contracts.math.div_fp_nfp": { "decorators": [], - "pc": 224, + "pc": 242, "type": "function" }, "contracts.math.div_fp_nfp.Args": { @@ -16309,7 +17136,7 @@ }, "contracts.math.mul_fp_nfp": { "decorators": [], - "pc": 221, + "pc": 239, "type": "function" }, "contracts.math.mul_fp_nfp.Args": { @@ -16352,17 +17179,17 @@ }, "contracts.math.sine_approx": { "decorators": [], - "pc": 360, + "pc": 428, "type": "function" }, "contracts.math.sine_approx.Args": { "full_name": "contracts.math.sine_approx.Args", "members": { - "cos_theta_fp": { + "cos_theta_0_fp": { "cairo_type": "felt", "offset": 1 }, - "theta_fp": { + "theta_0_fp": { "cairo_type": "felt", "offset": 0 } @@ -16382,7 +17209,7 @@ "type": "struct" }, "contracts.math.sine_approx.Return": { - "cairo_type": "(sin_theta_fp: felt)", + "cairo_type": "(sin_theta_0_fp: felt)", "type": "type_definition" }, "contracts.math.sine_approx.SIZEOF_LOCALS": { @@ -16470,7 +17297,7 @@ }, "contracts.physics.time_in_plot_fp": { "decorators": [], - "pc": 391, + "pc": 459, "type": "function" }, "contracts.physics.time_in_plot_fp.Args": { @@ -16525,7 +17352,7 @@ }, "contracts.physics.x_value_fp": { "decorators": [], - "pc": 482, + "pc": 550, "type": "function" }, "contracts.physics.x_value_fp.Args": { @@ -16572,7 +17399,7 @@ }, "contracts.physics.y_value_fp": { "decorators": [], - "pc": 488, + "pc": 556, "type": "function" }, "contracts.physics.y_value_fp.Args": { diff --git a/projectile_path/contracts/math.cairo b/projectile_path/contracts/math.cairo index a2d23a7..ad9ccf4 100644 --- a/projectile_path/contracts/math.cairo +++ b/projectile_path/contracts/math.cairo @@ -76,7 +76,6 @@ func distance_two_points_fp{range_check_ptr}(x_1_fp: felt, y_1_fp: felt, x_2_fp: // Taylor series approximation of cosine(theta) for FP theta value // Uses 5 terms (to 8th order) // NO SHIFT: Assumes -pi <= theta <= +pi -@view func cosine_8th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { // // cos(theta) ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + theta^8/8! @@ -100,7 +99,6 @@ func cosine_8th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { // Taylor series approximation of cosine(theta) for FP theta value // Uses 4 terms (to 6th order) // NO SHIFT: Assumes -pi <= theta <= +pi, but is best used with -pi/2 <= theta <= pi/2 -@view func cosine_6th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { // cos(theta) ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! let theta_2_fp = mul_fp(theta_fp, theta_fp); @@ -124,7 +122,6 @@ func cosine_6th_fp{range_check_ptr}(theta_fp: felt) -> (value_fp: felt) { // (2) force negative sign for cosine(theta_0) // (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded) // Then call cosine_6th_fp or cosine_8th_fp -@view func cosine_approx{range_check_ptr}(theta_0_fp: felt, theta_0_deg: felt) -> (cos_theta_0_fp: felt) { alloc_locals; local range_check_ptr = range_check_ptr; diff --git a/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb b/projectile_path/tests/prototype_projectile_plot.ipynb similarity index 99% rename from projectile_path/tests/jupyter/prototype_projectile_plot.ipynb rename to projectile_path/tests/prototype_projectile_plot.ipynb index 9efcc2c..e47eef0 100644 --- a/projectile_path/tests/jupyter/prototype_projectile_plot.ipynb +++ b/projectile_path/tests/prototype_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 1, "id": "7d7134bf", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 2, "id": "ac10d3a4", "metadata": {}, "outputs": [], @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 149, + "execution_count": 3, "id": "2494abc5", "metadata": {}, "outputs": [], @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 4, "id": "92ea27fe", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 5, "id": "c29aebb5", "metadata": {}, "outputs": [], @@ -239,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 6, "id": "df8f26d3", "metadata": {}, "outputs": [ @@ -305,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 7, "id": "f9a52462", "metadata": { "scrolled": false diff --git a/projectile_path/tests/test_projectile_plot.ipynb b/projectile_path/tests/test_projectile_plot.ipynb new file mode 100644 index 0000000..fad05b2 --- /dev/null +++ b/projectile_path/tests/test_projectile_plot.ipynb @@ -0,0 +1,172 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9afa1d68", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4cfb0384", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import json\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "26986f52", + "metadata": {}, + "source": [ + "## Import arrays from .json files\n", + "\n", + "Results for calculations done in Cairo and in Python are each in two separate .json files" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "db9bfb8b", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# Fixed point math constants\n", + "SCALE_FP = 10**20\n", + "\n", + "# Constants for felts\n", + "PRIME = 3618502788666131213697322783095070105623107215331596699973092056135872020481\n", + "HALF_PRIME = (\n", + " 1809251394333065606848661391547535052811553607665798349986546028067936010240\n", + ")\n", + "\n", + "# Cairo-calculated data\n", + "with open('test_projectile_plot_cairo.json') as json_file_cairo:\n", + " data_cairo = json.load(json_file_cairo)\n", + " \n", + " # Position coordinate arrays\n", + " x_s_cairo_fp_felt = np.array(data_cairo[0])\n", + " y_s_cairo_fp_felt = np.array(data_cairo[1])\n", + " \n", + " # Find num_pts = array length \n", + " num_pts = len(x_s_cairo)\n", + " # Declare empty arrays with dimensions\n", + " x_s_cairo = np.empty(num_pts)\n", + " y_s_cairo = np.empty(num_pts)\n", + " \n", + " for p in range(0, num_pts):\n", + "\n", + " if x_s_cairo_fp_felt[p] <= HALF_PRIME:\n", + " x_s_cairo[p] = x_s_cairo_fp_felt[p] / SCALE_FP\n", + " else:\n", + " x_s_cairo[p] = (x_s_cairo_fp_felt[p] - PRIME) / SCALE_FP\n", + "\n", + " if y_s_cairo_fp_felt[p] <= HALF_PRIME:\n", + " y_s_cairo[p] = y_s_cairo_fp_felt[p] / SCALE_FP\n", + " else:\n", + " y_s_cairo[p] = (y_s_cairo_fp_felt[p] - PRIME) / SCALE_FP\n", + "\n", + "# Python-calculated data\n", + "with open('test_projectile_plot_python.json') as json_file_python:\n", + " data_python = json.load(json_file_python)\n", + "\n", + " # Position coordinate arrays\n", + " x_s_python = np.array(data_python[0])\n", + " y_s_python = np.array(data_python[1])" + ] + }, + { + "cell_type": "markdown", + "id": "82e30484", + "metadata": {}, + "source": [ + "## Create plots" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "6aa22a99", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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owEiIiICX3zxBbRaLbp169Zgfkuvb5cuXSxei5aEhYWha9euKCsra/NZoX379iE2Nlb62dHREYGBga16z3Tp0qXZjupERLaEl6iasXjxYhQUFODee+/Ft99+i+LiYuzduxfTp0/H3LlzAdSe6VmzZg30ej2+/vprvPPOO23ezzPPPIOff/4Zb775Jo4fP47Fixfjk08+segAWt/jjz8OV1dXTJgwAT/++COOHz+O9PR0nDt3Dn5+fujSpQuWLl2KkydPYtmyZfj3v//d5LZuu+02PP7443jiiSfw7bff4uTJk/j3v/+NPXv2AADuvvtu7Ny5E5999hny8/Mxbdq0Zr9OHRgYiK+//hoHDx7EwYMHMWXKFIs//L169ULXrl3x//7f/8Pvv/+Oy5cvIzQ0FI888ggmTpyIb775BkVFRdi5cyemT58udSSeNm0a5syZg++++w4///wznnnmmUYDRX3ffPMNMjIyUFBQgJdeegnnz59v9iaH9913H/r27YuEhAQcOXIEW7duxVtvvdXk72PSpEno2rUrJkyYgP3790Ov12Pz5s1S5+mWXl9/f38UFBQgPz8f586da/Hsh7u7O55//nk888wz+PTTT1FUVITdu3dj9uzZ+OWXX5pdNzU1FXv37sXevXvxt7/9DY8//ji6d+/eqveMv78/8vLyUFxcbPFNQSIimyRrDyA7cOLECfHkk0+KXr16CY1GI3Q6nZg+fbowGAxCCCH27dsnBgwYIDQajbj99tvFJ598YtFptbFOxvU77AohxFdffSX69+8vunTpIgIDA8WqVatarK2wsFA88MADwtnZWbi7u4tRo0ZJHUbr9uvs7Cz+8pe/iPfee0/4+/s3WcfFixfFtGnThJeXl3BychJRUVFi7969QgghzGazeOWVV4S3t7fo0aOH+N///d9mOxmfPXtWjB49Wjg5OYmAgADxr3/9S/Tp08eiM/D//d//iV69egmVSiXeeustIURt59kZM2aI3r17i65du4q+ffuK5ORkcfnyZSGEEFevXhVPPfWUcHZ2Fr1795aOsaVOxmlpaWL06NFCo9GI4OBgsW3bNml+/d9PnePHj4t7771XdOvWTfj4+IiXX35Z6vBbt926TsZCCFFcXCzGjRsnPDw8hLOzsxgwYIBYsGBBq17fqqoqMWbMGOHq6iq9d5rrZCyEEDU1NWL+/Pki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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a Figure 'fig' and Axes 'ax'. \n", + "# Subplots args included (nrows, ncols)\n", + "fig, ax_s = plt.subplots(1,2)\n", + "\n", + "# Reduce default font size for plots\n", + "plt.rcParams.update({'font.size':8})\n", + " \n", + "# Create plot titles\n", + "title_str_cairo = 'Cairo-calculated projectile path'\n", + "title_str_python = 'Python-calculated projectile path'\n", + "\n", + "# Axes title (reduce pad from default of 6)\n", + "ax_s[0].set_title(title_str_cairo, pad=2)\n", + "ax_s[1].set_title(title_str_python, pad=2)\n", + "\n", + "# Axes labels\n", + "ax_s[0].set_xlabel('x (m)')\n", + "ax_s[0].set_ylabel('y (m)')\n", + "ax_s[1].set_xlabel('x (m)')\n", + "ax_s[1].set_ylabel('y (m)')\n", + "\n", + "# Ranges of axes\n", + "#plt.xlim(x_min, x_max)\n", + "#plt.ylim(y_min, y_max)\n", + "\n", + "# Grid lines\n", + "#plt.grid()\n", + " \n", + "ax_s[0].plot(x_s_cairo, y_s_cairo, 'b.')\n", + "ax_s[1].plot(x_s_python, y_s_python, 'g.')\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/projectile_path/tests/test_projectile_plot.py b/projectile_path/tests/test_projectile_plot.py index 05f3378..770d193 100644 --- a/projectile_path/tests/test_projectile_plot.py +++ b/projectile_path/tests/test_projectile_plot.py @@ -13,7 +13,7 @@ num_pts = 20 # Launch angle in degrees: -180 <= theta_0_deg <= +180 -theta_0_deg = 45 +theta_0_deg = -45 # Launch velocity magnitude: v_0 >=1 # note that v_0 = ~100 is enough to reach top of plot area on vertical shot if y_max = ~500 diff --git a/projectile_path/tests/test_projectile_plot_cairo.json b/projectile_path/tests/test_projectile_plot_cairo.json index 90ac9da..4bd1703 100644 --- a/projectile_path/tests/test_projectile_plot_cairo.json +++ b/projectile_path/tests/test_projectile_plot_cairo.json @@ -1 +1 @@ -[[0, 5263157894736842105252, 10526315789473684210504, 15789473684210526315756, 21052631578947368421008, 26315789473684210526260, 31578947368421052631512, 36842105263157894736764, 42105263157894736842016, 47368421052631578947268, 52631578947368421052520, 57894736842105263157772, 63157894736842105263024, 68421052631578947368276, 73684210526315789473528, 78947368421052631578780, 84210526315789473684032, 89473684210526315789284, 94736842105263157894536, 99999999999999999999788], [0, 4991689405391993787597, 9440442560202554281073, 13346259464431681480427, 16709140118079375385661, 19529084521145635996769, 21806092673630463313759, 23540164575533857336624, 24731300226855818065368, 25379499627596345499990, 25484762777755439640492, 25047089677333100486872, 24066480326329328039131, 22542934724744122297264, 20476452872577483261281, 17867034769829410931171, 14714680416499905306945, 11019389812588966388594, 6781162958096594176120, 1999999853022788669526]] \ No newline at end of file +[[0, 1934653847463416431117, 3869307694926832862235, 5803961542390249293353, 7738615389853665724471, 9673269237317082155589, 11607923084780498586707, 13542576932243915017825, 15477230779707331448942, 17411884627170747880060, 19346538474634164311178, 21281192322097580742296, 23215846169560997173414, 25150500017024413604532, 27085153864487830035650, 29019807711951246466768, 30954461559414662897885, 32889115406878079329003, 34823769254341495760121, 36758423101804912191239], [0, 3618502788666131213697322783095070105623107215331596698001758067033817314112, 3618502788666131213697322783095070105623107215331596695957063527013369979071, 3618502788666131213697322783095070105623107215331596693839008436074530015359, 3618502788666131213697322783095070105623107215331596691647592794217297422985, 3618502788666131213697322783095070105623107215331596689382816601441672201941, 3618502788666131213697322783095070105623107215331596687044679857747654352225, 3618502788666131213697322783095070105623107215331596684633182563135243873848, 3618502788666131213697322783095070105623107215331596682148324717604440766800, 3618502788666131213697322783095070105623107215331596679590106321155245031080, 3618502788666131213697322783095070105623107215331596676958527373787656666699, 3618502788666131213697322783095070105623107215331596674253587875501675673647, 3618502788666131213697322783095070105623107215331596671475287826297302051923, 3618502788666131213697322783095070105623107215331596668623627226174535801538, 3618502788666131213697322783095070105623107215331596665698606075133376922483, 3618502788666131213697322783095070105623107215331596662700224373173825414756, 3618502788666131213697322783095070105623107215331596659628482120295881278367, 3618502788666131213697322783095070105623107215331596656483379316499544513307, 3618502788666131213697322783095070105623107215331596653264915961784815119576, 3618502788666131213697322783095070105623107215331596649973092056151693097184]] \ No newline at end of file diff --git a/projectile_path/tests/test_projectile_plot_python.json b/projectile_path/tests/test_projectile_plot_python.json index 25b3c6b..cdeba10 100644 --- a/projectile_path/tests/test_projectile_plot_python.json +++ b/projectile_path/tests/test_projectile_plot_python.json @@ -1 +1 @@ -[[0.0, 52.631578947368425, 105.26315789473685, 157.8947368421053, 210.5263157894737, 263.15789473684214, 315.7894736842106, 368.42105263157896, 421.0526315789474, 473.68421052631584, 526.3157894736843, 578.9473684210526, 631.5789473684212, 684.2105263157896, 736.8421052631579, 789.4736842105264, 842.1052631578948, 894.7368421052633, 947.3684210526317, 1000.0], [0.0, 49.91689405855817, 94.40442561130202, 133.46259465823152, 167.0914011993467, 195.29084523464758, 218.06092676413408, 235.40164578780625, 247.31300230566407, 253.79499631770761, 254.84762782393682, 250.4708968243516, 240.66480331895212, 225.42934730773834, 204.7645287907102, 178.67034776786772, 147.14680423921084, 110.19389820473953, 67.81162966445424, 19.999998618354425]] \ No newline at end of file +[[0.0, 19.346538473648025, 38.69307694729605, 58.03961542094408, 77.3861538945921, 96.73269236824012, 116.07923084188816, 135.4257693155362, 154.7723077891842, 174.11884626283222, 193.46538473648025, 212.81192321012827, 232.15846168377632, 251.50500015742435, 270.8515386310724, 290.19807710472037, 309.5446155783684, 328.8911540520165, 348.23769252566444, 367.5842309993125], [0.0, -19.713339891701956, -40.16028529251305, -61.340836202433294, -83.25499262146266, -105.90275454960118, -129.28412198684885, -153.39909493320562, -178.24767338867153, -203.82985735324664, -230.14564682693083, -257.19504180972416, -284.9780423016267, -313.4946483026383, -342.74485981275905, -372.72867683198893, -403.446099360328, -434.8971273977762, -467.0817609443335, -500.0]] \ No newline at end of file From f9080e3a8973f597bc5f720b2efa65e43fa15aa1 Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Mon, 9 Jan 2023 17:00:58 -0800 Subject: [PATCH 4/7] add test_projectile_plot.ipynb --- projectile_path/tests/test_projectile_plot.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/projectile_path/tests/test_projectile_plot.ipynb b/projectile_path/tests/test_projectile_plot.ipynb index fad05b2..cac144f 100644 --- a/projectile_path/tests/test_projectile_plot.ipynb +++ b/projectile_path/tests/test_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "id": "4cfb0384", "metadata": { "scrolled": false @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "db9bfb8b", "metadata": { "scrolled": false @@ -95,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "6aa22a99", "metadata": { "scrolled": false @@ -103,7 +103,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAHDCAYAAAApyGCxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABQXElEQVR4nO3de1yUZf4//tcw6MjZOKjpcDCGkyuCWG6pFGqGJZVbipaZGBvYwbY0Ki0qXY1PrfXxY2rCiofEVbTDmpb1LUOl9ZyUmoKMgjCJmaAMnkZhrt8f/LjX4UwO3DM3r+fjcT9k5j6972Hm4uV9X3NfKiGEABEREZGCOMhdABEREZG1MeAQERGR4jDgEBERkeIw4BAREZHiMOAQERGR4jDgEBERkeIw4BAREZHiMOAQERGR4jDgEBERkeIw4LSzVatWQavVyl1GAwkJCXjiiSestj2VSoXvvvvOattrLa1Wi1WrVnX4fgMCArB8+fJ22/727duhUqlQXV0NAHj77bcxbNiwdtvfH2Wr728iIgacFhQXFyMhIQG9e/dGt27dEBwcjBdeeAEGg6FV60+YMAF5eXntXKV90ev1UKlUKC4ulruUP2z//v2YNGmSVbb1xhtvICYmxuK5IUOGoKysDI6OjlbZhzU88cQTSEhIkLsMIqJWYcBpRkFBAW6//XaUl5cjOzsbhYWFWL16Naqrq/G///u/rdqGk5MTfHx8mpx/7do1a5VLVtDa34ePjw+cnJzarY6uXbuiV69e7bZ9IiKlY8BpxnPPPYfAwEB88cUXiI6Ohq+vL+666y4sXboUqampAIBdu3Zh+PDh6N69O3x8fPDYY4/h3Llz0jbqn8JPSEjApEmT8Morr8Db2xvjx48HAGzduhXh4eHQaDTQ6XT4+OOPW6zvxIkTePjhh+Hu7g4PDw/ce++9OH/+PAAgMzMTkZGRcHFxgb+/P1JTU6XLHY25dOkSnn/+efTq1QtOTk6IiorC3r17pZrrX86KiYnBG2+80ei2fvvtN4wbNw69evWCm5sb7r77bvz000/S/KCgIABA3759oVKp8PbbbwMALl++jOeeew4+Pj7o3r074uLiLM7yXLt2DUlJSXB1dYWvry/WrFnT4msUEBCAd999Fw8++CCcnJwQGhqK7du3S/Prfj9r167Fbbfdhp49ewIACgsLcd9998HJyQk9evRASkqKxetX/xLVyZMn8eCDD8LV1RW9e/fG888/j8uXL7f4+q5atQrz58/Hjh07oFKppDNb9S9R1VdTU4PU1FRotVq4ubkhJiYGhw4davJ1qNveV199heDgYDg5OeGRRx7BhQsXpGWae8+8/fbbWLt2LVavXi3VeaNPPvkEffv2Rffu3fHUU0/BZDK1+LshImpPDDhNOHfuHL7//nvMmDGjQWMOAN27dwcAXLx4Ec888wwOHDiArVu3orS0FM8++2yz2960aRNMJhP+85//YMGCBSguLsbYsWMxduxYHDp0CC+++CKeeuop/Oc//2lyGyaTCffddx/MZjNycnKwd+9ePPLII6ipqQEAmM1mLFiwAEeOHMGyZcuwfPlyZGRkNLm9pKQkfPfdd/j4449x5MgRvP766zCbza14pRq6cuUK7r77bnz77bf48ccf0a9fPzz00EO4evUqAGD37t0AgH379qGsrAwvv/wyAGDatGkoLCzE1q1bsXfvXvTo0QMPPvigdExpaWnYvHkzPvvsM2zZsgWZmZkoLy9vsZ7/+Z//wZgxY5CXl4dRo0Zh7NixqKyslOafO3cOq1atwqefforc3FzU1NTg4Ycfhkajwb59+7B69Wp8/PHHeO+99xrd/rVr1xAbG4ugoCD8+OOP2LRpE/bv34+ZM2e2+PpOmDABL774Iu666y6UlZWhrKwMvr6+LR7TnDlz8NVXX2HdunXIy8vD0KFDMWrUKBiNxmbXe+utt7B69Wrk5OQgPz8fL774ojSvuffMyy+/jEcffRTx8fFSnXXKy8uxevVqfPHFF/j888+xadOmZt9rREQdQlCj9uzZIwCIvLy8Nq23e/du4ejoKKqrq4UQQqxcuVL06dNHmj9lyhRx2223iZqaGum5V199Vdxxxx0W25kwYYIYN25ck/tZsWKF8PHxEZcuXWpVXWlpaWL48OEWdUyaNEkIIcSJEycEALF///5G171x2Tr33HOPeP3116XHAMS3337b6PrV1dXCxcVF7NixQwghRGFhoQAgioqKpGWKiopE165dRUVFhfTctWvXhLOzs8jNzRVCCNGjRw/x0UcfSfOPHTsmAIiVK1c2edz+/v5iwoQJFrX4+fmJDz/8UAhR+/upX8vWrVtFt27dRHl5ufTcRx99JLy9vS22+89//lMIIcTq1avFoEGDLPb7n//8R3Tt2lVUV1e3+Pq+/vrr4p577rF4LicnRwAQ169fF0II8dZbb4mhQ4cKIYS4cuWKcHJyEocPH7ZYJygoSKxZs6bRfdRtb+vWrdJz3377rXB0dBTnz59vdJ3675lJkyaJKVOmWCyzcuVKoVKpxJkzZ6TnkpKSxKOPPtroNomIOgrP4Nwkg8GAyZMn47bbboObmxtGjhyJ6upqnDlzpsl1IiIi4ODw35e+oKAAd955p8Uyd911FwoKCgAA77zzDlxdXaUJAI4cOYLBgwfD2dm50X3s2rUL9913H/r06QNXV1e8/fbbKC0tbXTZX375BS4uLrj99tvbdOxNuX79OmbPno2wsDB0794dHh4euHz5cpP7r6vh+vXr8PX1lY7zlltuwZUrV3Dy5ElUVlbi7NmzGDx4sLROaGgo3NzcWqznxnXUajUGDRokvbYAcMsttyAgIEB6XFBQgKCgIHh6ekrP3XXXXTh37hwqKioabP/w4cP4+eefLX5Ho0aNwrVr1/Drr79a/fU9ceIErly5gjvvvNNinydOnMDJkyebXffG12Lw4MGorq7GiRMnALTtPXMjHx8f6dIeAPTq1Qtnz579g0dHRGQdtvMVDRsTGBgIlUqFgoICREZGNrlcQkICrl27hn/+85/o06cPioqK8MADD+D69etNrlM/lAghmq1l2rRpiI+Pb/U6VVVVGDNmDOLj4zF37lx4enriX//6V5NfpxZCNHoZro6Dg0OD/TV3fO+++y5Wr16NRYsWISQkBN26dcPgwYObXefixYtwcnKy6KtTp0ePHtLlsubqbEpL67T191HfxYsXcffddyM9Pb3BvFtvvRU//fTTH6q7uf0Btf1q6i6V1rkxlDXmxjpu/Lmt75kbdenSpcE+/ujlTSIia2HAaYK3tzeGDx+OhQsXIj4+vsEfqMrKSnh4eGDPnj3IysrCyJEjAdR+fbitQkND8f3331s8t3v3boSGhgKo/aNV/w9XeHg41q5di8uXLzf4A11QUIALFy7g3Xfflf4ANvc/8f79++PixYs4cOBAo2cZfHx8cODAAenxtWvXUFBQgOHDhze6vT179mD8+PF49NFHpX3XdX4G/vsHsa5vDVB7Vuvy5cu4cuUKwsPDG91ujx49sG/fPgwcOFA6zqqqqiaPq86+ffukn81mMw4ePIgRI0Y0uXxoaCgKCwtRUVEhve67d++Gj49PowEiIiICX3zxBbRaLbp169Zgfkuvb5cuXSxei5aEhYWha9euKCsra/NZoX379iE2Nlb62dHREYGBga16z3Tp0qXZjupERLaEl6iasXjxYhQUFODee+/Ft99+i+LiYuzduxfTp0/H3LlzAdSe6VmzZg30ej2+/vprvPPOO23ezzPPPIOff/4Zb775Jo4fP47Fixfjk08+segAWt/jjz8OV1dXTJgwAT/++COOHz+O9PR0nDt3Dn5+fujSpQuWLl2KkydPYtmyZfj3v//d5LZuu+02PP7443jiiSfw7bff4uTJk/j3v/+NPXv2AADuvvtu7Ny5E5999hny8/Mxbdq0Zr9OHRgYiK+//hoHDx7EwYMHMWXKFIs//L169ULXrl3x//7f/8Pvv/+Oy5cvIzQ0FI888ggmTpyIb775BkVFRdi5cyemT58udSSeNm0a5syZg++++w4///wznnnmmUYDRX3ffPMNMjIyUFBQgJdeegnnz59v9iaH9913H/r27YuEhAQcOXIEW7duxVtvvdXk72PSpEno2rUrJkyYgP3790Ov12Pz5s1S5+mWXl9/f38UFBQgPz8f586da/Hsh7u7O55//nk888wz+PTTT1FUVITdu3dj9uzZ+OWXX5pdNzU1FXv37sXevXvxt7/9DY8//ji6d+/eqveMv78/8vLyUFxcbPFNQSIimyRrDyA7cOLECfHkk0+KXr16CY1GI3Q6nZg+fbowGAxCCCH27dsnBgwYIDQajbj99tvFJ598YtFptbFOxvU77AohxFdffSX69+8vunTpIgIDA8WqVatarK2wsFA88MADwtnZWbi7u4tRo0ZJHUbr9uvs7Cz+8pe/iPfee0/4+/s3WcfFixfFtGnThJeXl3BychJRUVFi7969QgghzGazeOWVV4S3t7fo0aOH+N///d9mOxmfPXtWjB49Wjg5OYmAgADxr3/9S/Tp08eiM/D//d//iV69egmVSiXeeustIURt59kZM2aI3r17i65du4q+ffuK5ORkcfnyZSGEEFevXhVPPfWUcHZ2Fr1795aOsaVOxmlpaWL06NFCo9GI4OBgsW3bNml+/d9PnePHj4t7771XdOvWTfj4+IiXX35Z6vBbt926TsZCCFFcXCzGjRsnPDw8hLOzsxgwYIBYsGBBq17fqqoqMWbMGOHq6iq9d5rrZCyEEDU1NWL+/Pki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\n", + "image/png": "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AJAdO3Y0Oq+/Yaehuro6iY2NlY0bN4qIiM1mEwBSVlbmeU194KuurvaMO3XqlMTExMjmzZtFRKRnz57y+uuve6bv3btXALQYdiZMmODVlqSkJHn11VdFxP35NGzL2rVrpVOnTp7/fEREXn/9denevbvXcusLx+LFi2XIkCFe7/uf//xHOnbsKHV1dS1u38cff/ysAttc2Dlx4oRER0fLrl27vOYxGo2ydOnSRt+jfnn1/3mJiHz00UcSGRkpP//8c6PzNNxnbr/9dq9wJOLefhqNRn744QfPuLy8PLnlllsaXabanHkcnDp1SubOnSsRERGeumEymWTGjBme148ePdrruOnbt+9Z++/kyZPlkksu8RqXmprq2Wdff/116dOnj1dYeOSRR+Tyyy/3PAcgzz77rOf5li1bBIDnP76Gjh8/LlFRUbJ69Wqf1vvgwYMCQL799lsROXt/vfrqq+Wee+5pdN5zCTsN5efny1133eV5Pnz4cHnyySe9XjN69GjPNqv35z//WXJzc0VE5OGHH5bf/OY3XtN/85vftBh2oqOjverU448/7nX8A5BZs2Z5zderVy+vPzarqqokOjpaioqKPMv15/hubvs2Vl9Fmg87d911lzz44INer58zZ45cc801TW6LlmprQw33mY8++kgaO//i777bFF7GCjBFUTBp0iRcfPHF6NKlC6655hrU1dXhhx9+aHKeQYMGISLi9EdRWlqKK664wus1V155JUpLSwEAzzzzDDp37ux5AMDu3bsxbNgwxMTENPoeW7ZswXXXXYe+ffuic+fOmDVrFiorKxt97TfffIPY2Fhcfvnlfq17U3799VfMmDED6enp6Nq1K+Lj43H8+PEm37++Db/++isSExM963nBBRfgxIkTOHDgAGpqanDo0CGvywL9+vVDly5dWmzPmfNotVoMGTLEs20B4IILLvA69V1aWgqj0eh1Df3KK6/E4cOHUV1dfdbyd+3aha+++srrMxozZgxOnTqF7777LuDbd//+/Thx4gSuuOIKr/fcv38/Dhw40Oy8Z26LYcOGoa6uDvv37wfg3z5zph49engu/wFA7969cejQoXNcu/Dz3HPPoXPnzoiJicHzzz+P119/HYMHDwbgvsSybNkyiAgqKyuxceNG3HnnnS0us3///l7Pz9ympaWlGDJkiNfN62fWi3oDBgzwmh8A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zJmD3bt3t7ittFot/vSnP2HPnj1455138Morr+Cee+5pdp6//vWveOqpp7BmzRp88803yMnJgV6vP+usE+Db8d3c9m2svrZk+vTpKCoqwhNPPIE9e/bgm2++waJFizB//vxm52uutra0z+j1egDAmjVrcPjw4cB/g9OvO3xI9u/fL3feeaf07t1boqKixGAwyLRp00RRFBER2b59uwwcOFCioqLk8ssvl7feesvr5jBfb7xbs2aN9O/fXzp06CApKSmyaNGiFttms9nk+uuvl5iYGImLi5MxY8Z4bjatf9+YmBj54x//KM8995zo9fom23Hs2DGZOnWqdOvWTaKjoyUjI0M+//xzERFxuVzy8MMPS/fu3aVnz57y8ssvN3uD8qFDh2Ts2LESHR0tycnJ8s9//vOsGzH//ve/S+/evUWj0XhuLDxx4oQ88MAD0qdPH+nYsaNcdNFFkp+f77lL/+TJkzJlyhSJiYmRPn36eNaxpRuU586dK2PHjpWoqChJTU2VTz75xDO94edTb9++fXLttddKp06dpEePHvLQQw953VB55s1+IiLl5eUybtw4iY+Pl5iYGBk4cKC88MILPm3fo0ePyg033CCdO3f27DstfRvL6XTKnDlzJDk5WTp06CA6nU7uuOMOz7ekGqpf3vvvvy8pKSkSFRUlN910k9eNli3tM4qiyMiRIyU6OtpzY2Fj269hW9WssW9jNSYtLU1uvvnms8ZbrVZJS0uTyMhIz42xvnwh4PPPP5ff/OY30rFjR+nbt6/XDZ0iZ39hoOENqY359ddfZcaMGXLhhRdKVFSUpKene26gtdlsctVVV0mnTp0kPT1d1q1bJwDEarV61gMNbjpetmyZ9OvXz7N/nvltxk8//VTS09MlOjpa/vCHP8hLL73UbJ185plnpEePHtKlSxfJzc2Vhx56yOtG4l27dslll10mHTt29Npn33nnHc/47t27i8lk8nwbS0RkxYoVkpiYKDExMXLbbbfJAw880OINysOHD5e5c+dKt27dJD4+Xh555BFxuVxNbvv6bTt9+nTp0aOHdOrUSa655hrZt2/fWcut58vx3dz2bay+NneDsojIxo0bZcSIEdKpUyfp2rWrXH311Z5vvDWmpdra0j4j4r6xvlu3bl5fNDmXfbcxmv8ujKhdSE5OxhNPPIE//elPAV3uhRdeiJdeegm3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\n", "text/plain": [ "
" ] From 5c0ab28b9fbb6b765c7305b208c4008f5250047a Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Tue, 10 Jan 2023 16:09:04 -0800 Subject: [PATCH 5/7] minor fixes, add README --- projectile_path/README.md | 53 +- .../artifacts/projectile_plot_compiled.json | 887 +++++++++++------- .../contracts/projectile_plot.cairo | 14 +- .../tests/prototype_projectile_plot.ipynb | 45 +- .../tests/test_projectile_plot.ipynb | 23 +- projectile_path/tests/test_projectile_plot.py | 10 +- .../tests/test_projectile_plot_cairo.json | 2 +- .../tests/test_projectile_plot_python.json | 2 +- 8 files changed, 609 insertions(+), 427 deletions(-) diff --git a/projectile_path/README.md b/projectile_path/README.md index 20a2136..ab3acae 100644 --- a/projectile_path/README.md +++ b/projectile_path/README.md @@ -1,16 +1,17 @@ -# Projectile path plot generator +# Projectile plot generator Simulated here is a projectile path under gravity, assuming g = 9.8 m/s^2. -- A "side-view" 2-D plot is created. -- The origin is at the lower left corner of the plot, the +x-axis is to the right, and the +y-axis is up. +- A "side-view" 2-D plot of the path is created. +- The origin is at center of the plot, the +x-axis is to the right, and the +y-axis is up. Min and max values of x and y are hard coded. ## User Inputs -Only these *integer* inputs for now: -- `num_pts` = number of points to plot along the path -- `theta_0_deg` = launch angle in degrees measured from the +x-axis: -180 <= `theta_0_deg` <= +180 degrees -- `v_0 = launch velocity magnitude: 0 <= `v_0` <= 100 (in units of m/s) +*Integer* inputs: +- `num_pts` = number of points to plot along the path >=2 +- `theta_0_deg` = launch angle in degrees measured from the +x-axis: + -179 <= `theta_0_deg` <= +180 degrees +- `v_0 = launch velocity magnitude: 1 <= `v_0` (in units of m/s) After input, `theta_0_deg` and `v_0` are scaled up to be FP (fixed point) values, and `theta_0_deg` is also converted to radians, resulting in `theta_0_fp` and `v_0_fp`. The FP scale is `SCALE_FP` = 10**20. @@ -18,21 +19,22 @@ After input, `theta_0_deg` and `v_0` are scaled up to be FP (fixed point) values ## Cairo files **projectile_plot.cairo** contains: -- `projectile_plot_arr`- The view function which accepts user inputs and initiates all calculations -- ???????????????????- Other functions to calculate x coordinates, y coordinates, intensities at each position (x, y), and fill arrays for each of these +- `projectile_path`- The view function which accepts user inputs and initiates all calculations +- `position_fp_s_filler` - The function which fills an array of x-coordinates and an array of y-coordinates -**physics.cairo** contains functions for physics calculations of: -- ?????????????????? +**physics.cairo** contains functions for physics calculations: +- `time_in_plot_fp` - Calculates the time that the projectile is in the plot area +- `x_value_fp` - Calculates the x-coordinate of the projectile at a given time +- `y_value_fp` - Calculates the y-coordinate of the projectile at a given time -**math.cairo** contains math functions to use with fixed point quantities: -- ???????????????????? +**math.cairo** contains several math functions to use with fixed point quantities: - Square root, multiplication, division - Distance between two points -- Shift any angle `theta` to equivalent angle `theta_shifted` within range -pi to pi -- Cosine approximation using Taylor series, requires -pi <= angle <= pi - -**structs.cairo** contains struct definitions for: -- ?????????????????????????? +- `cosine_6th_fp` or `cosine_8th_fp` - Taylor series approximation of cosine (to 6th order, or to 8th order), requires -pi <= angle <= pi +- `cosine_approx` + - Increases accuracy of Taylor series approximation of cosine (above) for angles in 2nd (`theta_0_deg` > 90) or 3rd (`theta_0_deg` < -90) quadrant, by (1) moving the angle to 1st or 4th quadrant (i.e. finding the mirror image of the angle, flipped across the y-axis), then (2) calling `cosine_6th_fp` or `cosine_8th_fp`, and then (3) forcing the cosine value to be negative (as it would be back in the 2nd or 3rd quadrant). + - If `theta_0_deg` = 90 or -90, then it assigns the exact value, 0, to the cosine (rather than approximating). +- `sine_approx` - Finds the sine of an angle, using a trig identity and the cosine of the angle. **constants.cairo** contains: - FP math constants @@ -44,16 +46,16 @@ After input, `theta_0_deg` and `v_0` are scaled up to be FP (fixed point) values ## Tests **test_projectile_plot.py** -- ????????????????????Contains input parameters which are fed into both Cairo and Python calculations -- Contains other constants and parameters (that should match those in **constants.cairo**) for Python calculations -- Contains Python calculations of intensity array, to compare to Cairo calculations done by calling `intensity_plot_arr` function from **intensity_plot.cairo** using same input parameters -- Dumps `intensity_plot_arr` return to **test_intensity_plot.json** to be used by Jupyter notebook -- Prints for comparison the values (as FP) from the intensity arrays found with Cairo and Python -- To run: `pytest -s tests/test_intensity_plot.py` +- Contains input parameters which are fed into both Cairo and Python calculations +- Contains other constants and parameters (that should match those in **constants.cairo**) for Python calculations +- Contains Python calculations of projectile path coordinates, to compare to same Cairo calculations done by calling `projectile_path` function from **projectile_plot.cairo**, using same input parameters +- Dumps calculated values to .json files (one each for cairo and python calculations) to be used by Jupyter notebook, **test_projectile_plot.ipynb** +- Prints for comparison the values (as FP) from the coordinate arrays found with Cairo and Python +- To run: `pytest -s tests/test_projectile_plot.py` **test_projectile_plot.ipynb** -- ?????????????????????????Jupyter notebook which plots two intensity arrays: +- Jupyter notebook which plots two projectile paths: - Array calculated in Cairo by **projectile_plot.cairo** - Array calculated in Python by **test_projectile_plot.py** - Gets data from .json files created in **test_projectile_plot.py** @@ -62,6 +64,7 @@ After input, `theta_0_deg` and `v_0` are scaled up to be FP (fixed point) values - `jupyter notebook`, follow instructions to open notebook in browser - Open file **test_projectile_plot.ipynb** +(An additional Jupyter notebook, **prototype_projectile_plot.ipynb**, was used to first prototype all calculations that were done in the Cairo files. The Python calculations here were then duplicated in **test_projectile_plot.ipynb**.) ## License diff --git a/projectile_path/artifacts/projectile_plot_compiled.json b/projectile_path/artifacts/projectile_plot_compiled.json index 77520a2..cd98c61 100644 --- a/projectile_path/artifacts/projectile_plot_compiled.json +++ b/projectile_path/artifacts/projectile_plot_compiled.json @@ -42,7 +42,7 @@ "CONSTRUCTOR": [], "EXTERNAL": [ { - "offset": "0x2ef", + "offset": "0x2f6", "selector": "0x145f8fb6964795aa4eb149cfb427fadbe70e058414b5ee81697e737096af268" } ], @@ -66,7 +66,7 @@ }, "name": "error_message", "start_pc": 611, - "value": "Check that 2 <=num_pts <= 25" + "value": "Check that 2 <= num_pts <= 25; integer only" }, { "accessible_scopes": [ @@ -84,7 +84,7 @@ }, "name": "error_message", "start_pc": 620, - "value": "Check that 2 <=num_pts <= 25" + "value": "Check that 2 <= num_pts <= 25; integer only" }, { "accessible_scopes": [ @@ -92,7 +92,7 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 640, + "end_pc": 638, "flow_tracking_data": { "ap_tracking": { "group": 32, @@ -102,7 +102,7 @@ }, "name": "error_message", "start_pc": 629, - "value": "Check that -180 <= theta_0_deg <= +180" + "value": "Check that -179 <= theta_0_deg <= +180; integer only" }, { "accessible_scopes": [ @@ -110,17 +110,35 @@ "__main__", "__main__.projectile_path" ], - "end_pc": 649, + "end_pc": 647, "flow_tracking_data": { "ap_tracking": { "group": 32, - "offset": 109 + "offset": 104 }, "reference_ids": {} }, "name": "error_message", - "start_pc": 640, - "value": "Check that v_0 >= 1" + "start_pc": 638, + "value": "Check that -179 <= theta_0_deg <= +180; integer only" + }, + { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "end_pc": 656, + "flow_tracking_data": { + "ap_tracking": { + "group": 32, + "offset": 137 + }, + "reference_ids": {} + }, + "name": "error_message", + "start_pc": 647, + "value": "Check that v_0 >= 1; integer only" } ], "builtins": [ @@ -758,13 +776,20 @@ "0x1", "0x40127fff7fff7ffe", "0x48127ffd7fff8000", + "0x480680017fff8000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4e", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffde6", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe40", + "0x480680017fff8000", + "0x1", + "0x40127fff7fff7ffe", + "0x48127ffd7fff8000", + "0x480a7ffc7fff8000", "0x480680017fff8000", "0xb4", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3e", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe37", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", @@ -773,7 +798,7 @@ "0x1", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe35", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2e", "0x480680017fff8000", "0x1", "0x40127fff7fff7ffe", @@ -783,53 +808,53 @@ "0x480680017fff8000", "0xb4", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe65", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe5e", "0x48127ffe7fff8000", "0x484680017ffc8000", "0x56bc75e2d63100000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe32", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe2b", "0x40137fff7fff8000", "0x48127ffe7fff8000", "0x480a80007fff8000", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffecd", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffec6", "0x48127ffe7fff8000", "0x480a80007fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0e", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff07", "0x48127ffe7fff8000", "0x484680017ffd8000", "0x56bc75e2d63100000", "0x48127f727fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe21", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1a", "0x40137fff7fff8001", "0x48127ffe7fff8000", "0x484680017ffd8000", "0x56bc75e2d63100000", "0x48127fd17fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe1a", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe13", "0x40137fff7fff8002", "0x48127ffe7fff8000", "0x480a7ffc7fff8000", "0x480a80017fff8000", "0x480a80027fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff19", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff12", "0x482680017ffb8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe3c", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffe35", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd48", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd41", "0x40137fff7fff8003", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd45", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd3e", "0x40137fff7fff8004", "0x48127ff87fff8000", "0x480a7ffb7fff8000", @@ -841,7 +866,7 @@ "0x480a80037fff8000", "0x480a80047fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7c", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff75", "0x480a7ffb7fff8000", "0x480a80037fff8000", "0x480a7ffb7fff8000", @@ -861,7 +886,7 @@ "0x480a7ffa7fff8000", "0x480a7ff97fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd28", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd21", "0x4003800080027ffb", "0x4003800080017ffb", "0x4027800180018003", @@ -874,7 +899,7 @@ "0x480a7ffc7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd1b", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffd14", "0x480a80037fff8000", "0x4829800080008004", "0x480a80007fff8000", @@ -889,7 +914,7 @@ "0x480280017ffd8000", "0x480280027ffd8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6a", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff63", "0x48127ffb7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffd5", @@ -12608,25 +12633,25 @@ }, "parent_location": [ { - "end_col": 31, - "end_line": 242, + "end_col": 27, + "end_line": 42, "input_file": { - "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math.cairo" + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" }, "parent_location": [ { - "end_col": 63, + "end_col": 40, "end_line": 52, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 41, + "start_col": 16, "start_line": 52 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], - "start_col": 16, - "start_line": 242 + "start_col": 12, + "start_line": 42 }, "While expanding the reference 'range_check_ptr' in:" ], @@ -12640,6 +12665,24 @@ } }, "630": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 26, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 52 + } + }, + "632": { "accessible_scopes": [ "__main__", "__main__", @@ -12655,12 +12698,12 @@ }, "parent_location": [ { - "end_col": 62, + "end_col": 39, "end_line": 52, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 51, + "start_col": 28, "start_line": 52 }, "While expanding the reference 'theta_0_deg' in:" @@ -12669,7 +12712,7 @@ "start_line": 38 } }, - "631": { + "633": { "accessible_scopes": [ "__main__", "__main__", @@ -12678,16 +12721,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 63, + "end_col": 40, "end_line": 52, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 41, + "start_col": 16, "start_line": 52 } }, - "633": { + "635": { "accessible_scopes": [ "__main__", "__main__", @@ -12696,16 +12739,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 48, - "end_line": 53, + "end_col": 44, + "end_line": 52, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 45, - "start_line": 53 + "start_col": 43, + "start_line": 52 } }, - "635": { + "637": { "accessible_scopes": [ "__main__", "__main__", @@ -12714,16 +12757,136 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 49, - "end_line": 53, + "end_col": 45, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 9, + "start_line": 52 + } + }, + "638": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 40, + "end_line": 52, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 27, + "end_line": 42, + "input_file": { + "filename": "/home/whatthedev/cairo_venv/lib/python3.9/site-packages/starkware/cairo/common/math_cmp.cairo" + }, + "parent_location": [ + { + "end_col": 39, + "end_line": 56, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 16, + "start_line": 56 + }, + "While trying to retrieve the implicit argument 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + }, + "While expanding the reference 'range_check_ptr' in:" + ], + "start_col": 16, + "start_line": 52 + }, + "While trying to update the implicit return value 'range_check_ptr' in:" + ], + "start_col": 12, + "start_line": 42 + } + }, + "639": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 71, + "end_line": 38, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "parent_location": [ + { + "end_col": 33, + "end_line": 56, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 22, + "start_line": 56 + }, + "While expanding the reference 'theta_0_deg' in:" + ], + "start_col": 54, + "start_line": 38 + } + }, + "640": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 38, + "end_line": 56, + "input_file": { + "filename": "contracts/projectile_plot.cairo" + }, + "start_col": 35, + "start_line": 56 + } + }, + "642": { + "accessible_scopes": [ + "__main__", + "__main__", + "__main__.projectile_path" + ], + "flow_tracking_data": null, + "hints": [], + "inst": { + "end_col": 39, + "end_line": 56, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 16, - "start_line": 53 + "start_line": 56 } }, - "637": { + "644": { "accessible_scopes": [ "__main__", "__main__", @@ -12732,16 +12895,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 53, - "end_line": 53, + "end_col": 43, + "end_line": 56, "input_file": { "filename": "contracts/projectile_plot.cairo" }, - "start_col": 52, - "start_line": 53 + "start_col": 42, + "start_line": 56 } }, - "639": { + "646": { "accessible_scopes": [ "__main__", "__main__", @@ -12750,16 +12913,16 @@ "flow_tracking_data": null, "hints": [], "inst": { - "end_col": 54, - "end_line": 53, + "end_col": 44, + "end_line": 56, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 53 + "start_line": 56 } }, - "640": { + "647": { "accessible_scopes": [ "__main__", "__main__", @@ -12775,8 +12938,8 @@ }, "parent_location": [ { - "end_col": 49, - "end_line": 53, + "end_col": 39, + "end_line": 56, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12790,12 +12953,12 @@ "parent_location": [ { "end_col": 29, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 16, - "start_line": 57 + "start_line": 60 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12805,7 +12968,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 16, - "start_line": 53 + "start_line": 56 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -12813,7 +12976,7 @@ "start_line": 42 } }, - "641": { + "648": { "accessible_scopes": [ "__main__", "__main__", @@ -12823,15 +12986,15 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 57 + "start_line": 60 } }, - "643": { + "650": { "accessible_scopes": [ "__main__", "__main__", @@ -12848,12 +13011,12 @@ "parent_location": [ { "end_col": 28, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 25, - "start_line": 57 + "start_line": 60 }, "While expanding the reference 'v_0' in:" ], @@ -12861,7 +13024,7 @@ "start_line": 38 } }, - "644": { + "651": { "accessible_scopes": [ "__main__", "__main__", @@ -12871,15 +13034,15 @@ "hints": [], "inst": { "end_col": 29, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 16, - "start_line": 57 + "start_line": 60 } }, - "646": { + "653": { "accessible_scopes": [ "__main__", "__main__", @@ -12889,15 +13052,15 @@ "hints": [], "inst": { "end_col": 33, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 32, - "start_line": 57 + "start_line": 60 } }, - "648": { + "655": { "accessible_scopes": [ "__main__", "__main__", @@ -12907,15 +13070,15 @@ "hints": [], "inst": { "end_col": 34, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 57 + "start_line": 60 } }, - "649": { + "656": { "accessible_scopes": [ "__main__", "__main__", @@ -12932,7 +13095,7 @@ "parent_location": [ { "end_col": 29, - "end_line": 57, + "end_line": 60, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -12946,12 +13109,12 @@ "parent_location": [ { "end_col": 48, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 65 + "start_line": 68 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -12961,7 +13124,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 16, - "start_line": 57 + "start_line": 60 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -12969,7 +13132,7 @@ "start_line": 42 } }, - "650": { + "657": { "accessible_scopes": [ "__main__", "__main__", @@ -12979,15 +13142,15 @@ "hints": [], "inst": { "end_col": 42, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 37, - "start_line": 65 + "start_line": 68 } }, - "652": { + "659": { "accessible_scopes": [ "__main__", "__main__", @@ -12997,15 +13160,15 @@ "hints": [], "inst": { "end_col": 47, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 44, - "start_line": 65 + "start_line": 68 } }, - "654": { + "661": { "accessible_scopes": [ "__main__", "__main__", @@ -13015,15 +13178,15 @@ "hints": [], "inst": { "end_col": 48, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 65 + "start_line": 68 } }, - "656": { + "663": { "accessible_scopes": [ "__main__", "__main__", @@ -13040,7 +13203,7 @@ "parent_location": [ { "end_col": 48, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13054,12 +13217,12 @@ "parent_location": [ { "end_col": 60, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 66 + "start_line": 69 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13069,7 +13232,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 26, - "start_line": 65 + "start_line": 68 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13077,7 +13240,7 @@ "start_line": 47 } }, - "657": { + "664": { "accessible_scopes": [ "__main__", "__main__", @@ -13087,27 +13250,27 @@ "hints": [], "inst": { "end_col": 48, - "end_line": 61, + "end_line": 64, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 43, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 29, - "start_line": 66 + "start_line": 69 }, "While expanding the reference 'theta_0_deg_fp' in:" ], "start_col": 26, - "start_line": 61 + "start_line": 64 } }, - "659": { + "666": { "accessible_scopes": [ "__main__", "__main__", @@ -13117,27 +13280,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 65, + "end_line": 68, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 59, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 45, - "start_line": 66 + "start_line": 69 }, "While expanding the reference 'pi_over_180_fp' in:" ], "start_col": 9, - "start_line": 65 + "start_line": 68 } }, - "660": { + "667": { "accessible_scopes": [ "__main__", "__main__", @@ -13147,15 +13310,15 @@ "hints": [], "inst": { "end_col": 60, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 66 + "start_line": 69 } }, - "662": { + "669": { "accessible_scopes": [ "__main__", "__main__", @@ -13165,27 +13328,27 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 66 + "start_line": 69 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 66 + "start_line": 69 } }, - "663": { + "670": { "accessible_scopes": [ "__main__", "__main__", @@ -13202,7 +13365,7 @@ "parent_location": [ { "end_col": 60, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13216,12 +13379,12 @@ "parent_location": [ { "end_col": 66, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 71 + "start_line": 74 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13231,7 +13394,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 22, - "start_line": 66 + "start_line": 69 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13239,7 +13402,7 @@ "start_line": 18 } }, - "664": { + "671": { "accessible_scopes": [ "__main__", "__main__", @@ -13249,39 +13412,39 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 52, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 42, - "start_line": 71 + "start_line": 74 }, "While expanding the reference 'theta_0_fp' in:" ], "start_col": 9, - "start_line": 66 + "start_line": 69 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 66 + "start_line": 69 } }, - "665": { + "672": { "accessible_scopes": [ "__main__", "__main__", @@ -13298,12 +13461,12 @@ "parent_location": [ { "end_col": 65, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 54, - "start_line": 71 + "start_line": 74 }, "While expanding the reference 'theta_0_deg' in:" ], @@ -13311,7 +13474,7 @@ "start_line": 38 } }, - "666": { + "673": { "accessible_scopes": [ "__main__", "__main__", @@ -13321,15 +13484,15 @@ "hints": [], "inst": { "end_col": 66, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 71 + "start_line": 74 } }, - "668": { + "675": { "accessible_scopes": [ "__main__", "__main__", @@ -13346,7 +13509,7 @@ "parent_location": [ { "end_col": 66, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13360,12 +13523,12 @@ "parent_location": [ { "end_col": 67, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 72 + "start_line": 75 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13375,7 +13538,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 28, - "start_line": 71 + "start_line": 74 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13383,7 +13546,7 @@ "start_line": 125 } }, - "669": { + "676": { "accessible_scopes": [ "__main__", "__main__", @@ -13393,39 +13556,39 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 19, - "end_line": 66, + "end_line": 69, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 40, - "start_line": 72 + "start_line": 75 }, "While expanding the reference 'theta_0_fp' in:" ], "start_col": 9, - "start_line": 66 + "start_line": 69 }, "While auto generating local variable for 'theta_0_fp'." ], "start_col": 9, - "start_line": 66 + "start_line": 69 } }, - "670": { + "677": { "accessible_scopes": [ "__main__", "__main__", @@ -13435,27 +13598,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 66, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 52, - "start_line": 72 + "start_line": 75 }, "While expanding the reference 'cos_theta_0_fp' in:" ], "start_col": 10, - "start_line": 71 + "start_line": 74 } }, - "671": { + "678": { "accessible_scopes": [ "__main__", "__main__", @@ -13465,15 +13628,15 @@ "hints": [], "inst": { "end_col": 67, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 28, - "start_line": 72 + "start_line": 75 } }, - "673": { + "680": { "accessible_scopes": [ "__main__", "__main__", @@ -13490,7 +13653,7 @@ "parent_location": [ { "end_col": 67, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13504,12 +13667,12 @@ "parent_location": [ { "end_col": 49, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 75 + "start_line": 78 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13519,7 +13682,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 28, - "start_line": 72 + "start_line": 75 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13527,7 +13690,7 @@ "start_line": 177 } }, - "674": { + "681": { "accessible_scopes": [ "__main__", "__main__", @@ -13537,27 +13700,27 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 62, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 32, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 75 + "start_line": 78 }, "While expanding the reference 'v_0_fp' in:" ], "start_col": 18, - "start_line": 62 + "start_line": 65 } }, - "676": { + "683": { "accessible_scopes": [ "__main__", "__main__", @@ -13567,27 +13730,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 71, + "end_line": 74, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 48, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 34, - "start_line": 75 + "start_line": 78 }, "While expanding the reference 'cos_theta_0_fp' in:" ], "start_col": 10, - "start_line": 71 + "start_line": 74 } }, - "677": { + "684": { "accessible_scopes": [ "__main__", "__main__", @@ -13597,15 +13760,15 @@ "hints": [], "inst": { "end_col": 49, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 75 + "start_line": 78 } }, - "679": { + "686": { "accessible_scopes": [ "__main__", "__main__", @@ -13615,27 +13778,27 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 75 + "start_line": 78 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 78 } }, - "680": { + "687": { "accessible_scopes": [ "__main__", "__main__", @@ -13652,7 +13815,7 @@ "parent_location": [ { "end_col": 49, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13666,12 +13829,12 @@ "parent_location": [ { "end_col": 49, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 76 + "start_line": 79 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13681,7 +13844,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 19, - "start_line": 75 + "start_line": 78 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13689,7 +13852,7 @@ "start_line": 18 } }, - "681": { + "688": { "accessible_scopes": [ "__main__", "__main__", @@ -13699,27 +13862,27 @@ "hints": [], "inst": { "end_col": 32, - "end_line": 62, + "end_line": 65, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 32, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 76 + "start_line": 79 }, "While expanding the reference 'v_0_fp' in:" ], "start_col": 18, - "start_line": 62 + "start_line": 65 } }, - "683": { + "690": { "accessible_scopes": [ "__main__", "__main__", @@ -13729,27 +13892,27 @@ "hints": [], "inst": { "end_col": 24, - "end_line": 72, + "end_line": 75, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 48, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 34, - "start_line": 76 + "start_line": 79 }, "While expanding the reference 'sin_theta_0_fp' in:" ], "start_col": 10, - "start_line": 72 + "start_line": 75 } }, - "684": { + "691": { "accessible_scopes": [ "__main__", "__main__", @@ -13759,15 +13922,15 @@ "hints": [], "inst": { "end_col": 49, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 19, - "start_line": 76 + "start_line": 79 } }, - "686": { + "693": { "accessible_scopes": [ "__main__", "__main__", @@ -13777,27 +13940,27 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 9, - "start_line": 76 + "start_line": 79 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 76 + "start_line": 79 } }, - "687": { + "694": { "accessible_scopes": [ "__main__", "__main__", @@ -13814,7 +13977,7 @@ "parent_location": [ { "end_col": 49, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -13828,12 +13991,12 @@ "parent_location": [ { "end_col": 66, - "end_line": 79, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 20, - "start_line": 79 + "start_line": 82 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -13843,7 +14006,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 19, - "start_line": 76 + "start_line": 79 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -13851,7 +14014,7 @@ "start_line": 18 } }, - "688": { + "695": { "accessible_scopes": [ "__main__", "__main__", @@ -13868,12 +14031,12 @@ "parent_location": [ { "end_col": 47, - "end_line": 79, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 36, - "start_line": 79 + "start_line": 82 }, "While expanding the reference 'theta_0_deg' in:" ], @@ -13881,7 +14044,7 @@ "start_line": 38 } }, - "689": { + "696": { "accessible_scopes": [ "__main__", "__main__", @@ -13891,39 +14054,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 56, - "end_line": 79, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 49, - "start_line": 79 + "start_line": 82 }, "While expanding the reference 'v_0x_fp' in:" ], "start_col": 9, - "start_line": 75 + "start_line": 78 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 78 } }, - "690": { + "697": { "accessible_scopes": [ "__main__", "__main__", @@ -13933,39 +14096,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 65, - "end_line": 79, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 58, - "start_line": 79 + "start_line": 82 }, "While expanding the reference 'v_0y_fp' in:" ], "start_col": 9, - "start_line": 76 + "start_line": 79 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 76 + "start_line": 79 } }, - "691": { + "698": { "accessible_scopes": [ "__main__", "__main__", @@ -13975,15 +14138,15 @@ "hints": [], "inst": { "end_col": 66, - "end_line": 79, + "end_line": 82, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 20, - "start_line": 79 + "start_line": 82 } }, - "693": { + "700": { "accessible_scopes": [ "__main__", "__main__", @@ -13993,15 +14156,15 @@ "hints": [], "inst": { "end_col": 54, - "end_line": 82, + "end_line": 85, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 43, - "start_line": 82 + "start_line": 85 } }, - "695": { + "702": { "accessible_scopes": [ "__main__", "__main__", @@ -14011,15 +14174,15 @@ "hints": [], "inst": { "end_col": 55, - "end_line": 82, + "end_line": 85, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 22, - "start_line": 82 + "start_line": 85 } }, - "697": { + "704": { "accessible_scopes": [ "__main__", "__main__", @@ -14029,15 +14192,15 @@ "hints": [], "inst": { "end_col": 34, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 27, - "start_line": 89 + "start_line": 92 } }, - "699": { + "706": { "accessible_scopes": [ "__main__", "__main__", @@ -14047,27 +14210,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 10, - "start_line": 89 + "start_line": 92 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 92 } }, - "700": { + "707": { "accessible_scopes": [ "__main__", "__main__", @@ -14077,15 +14240,15 @@ "hints": [], "inst": { "end_col": 34, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 27, - "start_line": 90 + "start_line": 93 } }, - "702": { + "709": { "accessible_scopes": [ "__main__", "__main__", @@ -14095,27 +14258,27 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 10, - "start_line": 90 + "start_line": 93 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 90 + "start_line": 93 } }, - "703": { + "710": { "accessible_scopes": [ "__main__", "__main__", @@ -14132,7 +14295,7 @@ "parent_location": [ { "end_col": 55, - "end_line": 82, + "end_line": 85, "input_file": { "filename": "contracts/projectile_plot.cairo" }, @@ -14146,12 +14309,12 @@ "parent_location": [ { "end_col": 88, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 93 + "start_line": 96 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], @@ -14161,7 +14324,7 @@ "While expanding the reference 'range_check_ptr' in:" ], "start_col": 22, - "start_line": 82 + "start_line": 85 }, "While trying to update the implicit return value 'range_check_ptr' in:" ], @@ -14169,7 +14332,7 @@ "start_line": 47 } }, - "704": { + "711": { "accessible_scopes": [ "__main__", "__main__", @@ -14186,12 +14349,12 @@ "parent_location": [ { "end_col": 33, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 26, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'num_pts' in:" ], @@ -14199,7 +14362,7 @@ "start_line": 38 } }, - "705": { + "712": { "accessible_scopes": [ "__main__", "__main__", @@ -14209,39 +14372,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 75, + "end_line": 78, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 42, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 35, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'v_0x_fp' in:" ], "start_col": 9, - "start_line": 75 + "start_line": 78 }, "While auto generating local variable for 'v_0x_fp'." ], "start_col": 9, - "start_line": 75 + "start_line": 78 } }, - "706": { + "713": { "accessible_scopes": [ "__main__", "__main__", @@ -14251,39 +14414,39 @@ "hints": [], "inst": { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 16, - "end_line": 76, + "end_line": 79, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 51, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 44, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'v_0y_fp' in:" ], "start_col": 9, - "start_line": 76 + "start_line": 79 }, "While auto generating local variable for 'v_0y_fp'." ], "start_col": 9, - "start_line": 76 + "start_line": 79 } }, - "707": { + "714": { "accessible_scopes": [ "__main__", "__main__", @@ -14293,27 +14456,27 @@ "hints": [], "inst": { "end_col": 19, - "end_line": 82, + "end_line": 85, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 63, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 53, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'delta_t_fp' in:" ], "start_col": 9, - "start_line": 82 + "start_line": 85 } }, - "708": { + "715": { "accessible_scopes": [ "__main__", "__main__", @@ -14323,27 +14486,27 @@ "hints": [], "inst": { "end_col": 30, - "end_line": 85, + "end_line": 88, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 71, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 65, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 't_0_fp' in:" ], "start_col": 18, - "start_line": 85 + "start_line": 88 } }, - "710": { + "717": { "accessible_scopes": [ "__main__", "__main__", @@ -14353,39 +14516,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 79, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 73, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'x_fp_s' in:" ], "start_col": 10, - "start_line": 89 + "start_line": 92 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 92 } }, - "711": { + "718": { "accessible_scopes": [ "__main__", "__main__", @@ -14395,39 +14558,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 87, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 81, - "start_line": 93 + "start_line": 96 }, "While expanding the reference 'y_fp_s' in:" ], "start_col": 10, - "start_line": 90 + "start_line": 93 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 90 + "start_line": 93 } }, - "712": { + "719": { "accessible_scopes": [ "__main__", "__main__", @@ -14437,15 +14600,15 @@ "hints": [], "inst": { "end_col": 88, - "end_line": 93, + "end_line": 96, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 93 + "start_line": 96 } }, - "714": { + "721": { "accessible_scopes": [ "__main__", "__main__", @@ -14462,24 +14625,24 @@ "parent_location": [ { "end_col": 29, - "end_line": 96, + "end_line": 99, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 34, - "end_line": 99, + "end_line": 102, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 24, - "start_line": 99 + "start_line": 102 }, "While expanding the reference 'x_fp_s_len' in:" ], "start_col": 22, - "start_line": 96 + "start_line": 99 }, "While expanding the reference 'num_pts' in:" ], @@ -14487,7 +14650,7 @@ "start_line": 38 } }, - "715": { + "722": { "accessible_scopes": [ "__main__", "__main__", @@ -14497,39 +14660,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 89, + "end_line": 92, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 50, - "end_line": 99, + "end_line": 102, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 44, - "start_line": 99 + "start_line": 102 }, "While expanding the reference 'x_fp_s' in:" ], "start_col": 10, - "start_line": 89 + "start_line": 92 }, "While auto generating local variable for 'x_fp_s'." ], "start_col": 10, - "start_line": 89 + "start_line": 92 } }, - "716": { + "723": { "accessible_scopes": [ "__main__", "__main__", @@ -14546,24 +14709,24 @@ "parent_location": [ { "end_col": 29, - "end_line": 97, + "end_line": 100, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 73, - "end_line": 99, + "end_line": 102, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 63, - "start_line": 99 + "start_line": 102 }, "While expanding the reference 'y_fp_s_len' in:" ], "start_col": 22, - "start_line": 97 + "start_line": 100 }, "While expanding the reference 'num_pts' in:" ], @@ -14571,7 +14734,7 @@ "start_line": 38 } }, - "717": { + "724": { "accessible_scopes": [ "__main__", "__main__", @@ -14581,39 +14744,39 @@ "hints": [], "inst": { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 23, - "end_line": 90, + "end_line": 93, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "parent_location": [ { "end_col": 88, - "end_line": 99, + "end_line": 102, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 82, - "start_line": 99 + "start_line": 102 }, "While expanding the reference 'y_fp_s' in:" ], "start_col": 10, - "start_line": 90 + "start_line": 93 }, "While auto generating local variable for 'y_fp_s'." ], "start_col": 10, - "start_line": 90 + "start_line": 93 } }, - "718": { + "725": { "accessible_scopes": [ "__main__", "__main__", @@ -14623,15 +14786,15 @@ "hints": [], "inst": { "end_col": 90, - "end_line": 99, + "end_line": 102, "input_file": { "filename": "contracts/projectile_plot.cairo" }, "start_col": 5, - "start_line": 99 + "start_line": 102 } }, - "719": { + "726": { "accessible_scopes": [ "__main__", "__main__", @@ -14687,7 +14850,7 @@ "start_line": 4 } }, - "721": { + "728": { "accessible_scopes": [ "__main__", "__main__", @@ -14718,7 +14881,7 @@ "start_line": 1 } }, - "722": { + "729": { "accessible_scopes": [ "__main__", "__main__", @@ -14749,7 +14912,7 @@ "start_line": 2 } }, - "723": { + "730": { "accessible_scopes": [ "__main__", "__main__", @@ -14780,7 +14943,7 @@ "start_line": 5 } }, - "725": { + "732": { "accessible_scopes": [ "__main__", "__main__", @@ -14835,7 +14998,7 @@ "start_line": 2 } }, - "727": { + "734": { "accessible_scopes": [ "__main__", "__main__", @@ -14866,7 +15029,7 @@ "start_line": 10 } }, - "728": { + "735": { "accessible_scopes": [ "__main__", "__main__", @@ -14945,7 +15108,7 @@ "start_line": 2 } }, - "730": { + "737": { "accessible_scopes": [ "__main__", "__main__", @@ -14976,7 +15139,7 @@ "start_line": 13 } }, - "731": { + "738": { "accessible_scopes": [ "__main__", "__main__", @@ -15007,7 +15170,7 @@ "start_line": 14 } }, - "732": { + "739": { "accessible_scopes": [ "__main__", "__main__", @@ -15038,7 +15201,7 @@ "start_line": 11 } }, - "734": { + "741": { "accessible_scopes": [ "__main__", "__main__", @@ -15069,7 +15232,7 @@ "start_line": 1 } }, - "735": { + "742": { "accessible_scopes": [ "__main__", "__main__", @@ -15100,7 +15263,7 @@ "start_line": 2 } }, - "736": { + "743": { "accessible_scopes": [ "__main__", "__main__", @@ -15131,7 +15294,7 @@ "start_line": 5 } }, - "738": { + "745": { "accessible_scopes": [ "__main__", "__main__", @@ -15186,7 +15349,7 @@ "start_line": 2 } }, - "740": { + "747": { "accessible_scopes": [ "__main__", "__main__", @@ -15217,7 +15380,7 @@ "start_line": 10 } }, - "741": { + "748": { "accessible_scopes": [ "__main__", "__main__", @@ -15296,7 +15459,7 @@ "start_line": 2 } }, - "743": { + "750": { "accessible_scopes": [ "__main__", "__main__", @@ -15327,7 +15490,7 @@ "start_line": 13 } }, - "744": { + "751": { "accessible_scopes": [ "__main__", "__main__", @@ -15358,7 +15521,7 @@ "start_line": 14 } }, - "745": { + "752": { "accessible_scopes": [ "__main__", "__main__", @@ -15389,7 +15552,7 @@ "start_line": 11 } }, - "747": { + "754": { "accessible_scopes": [ "__main__", "__main__", @@ -15444,7 +15607,7 @@ "start_line": 5 } }, - "748": { + "755": { "accessible_scopes": [ "__main__", "__main__", @@ -15475,7 +15638,7 @@ "start_line": 11 } }, - "749": { + "756": { "accessible_scopes": [ "__main__", "__main__", @@ -15530,7 +15693,7 @@ "start_line": 5 } }, - "750": { + "757": { "accessible_scopes": [ "__main__", "__main__", @@ -15561,7 +15724,7 @@ "start_line": 9 } }, - "751": { + "758": { "accessible_scopes": [ "__main__", "__main__", @@ -15592,7 +15755,7 @@ "start_line": 2 } }, - "753": { + "760": { "accessible_scopes": [ "__main__", "__main__", @@ -15671,7 +15834,7 @@ "start_line": 2 } }, - "755": { + "762": { "accessible_scopes": [ "__main__", "__main__", @@ -15702,7 +15865,7 @@ "start_line": 1 } }, - "756": { + "763": { "accessible_scopes": [ "__main__", "__main__", @@ -15757,7 +15920,7 @@ "start_line": 1 } }, - "757": { + "764": { "accessible_scopes": [ "__main__", "__main__", @@ -15812,7 +15975,7 @@ "start_line": 1 } }, - "758": { + "765": { "accessible_scopes": [ "__main__", "__main__", @@ -15867,7 +16030,7 @@ "start_line": 1 } }, - "759": { + "766": { "accessible_scopes": [ "__main__", "__main__", @@ -15922,7 +16085,7 @@ "start_line": 1 } }, - "760": { + "767": { "accessible_scopes": [ "__main__", "__main__", @@ -15941,7 +16104,7 @@ "start_line": 38 } }, - "762": { + "769": { "accessible_scopes": [ "__main__", "__main__", @@ -15996,7 +16159,7 @@ "start_line": 1 } }, - "763": { + "770": { "accessible_scopes": [ "__main__", "__main__", @@ -16027,7 +16190,7 @@ "start_line": 2 } }, - "765": { + "772": { "accessible_scopes": [ "__main__", "__main__", @@ -16082,7 +16245,7 @@ "start_line": 1 } }, - "766": { + "773": { "accessible_scopes": [ "__main__", "__main__", @@ -16137,7 +16300,7 @@ "start_line": 2 } }, - "767": { + "774": { "accessible_scopes": [ "__main__", "__main__", @@ -16192,7 +16355,7 @@ "start_line": 2 } }, - "768": { + "775": { "accessible_scopes": [ "__main__", "__main__", @@ -16247,7 +16410,7 @@ "start_line": 2 } }, - "769": { + "776": { "accessible_scopes": [ "__main__", "__main__", @@ -16531,7 +16694,7 @@ } } ], - "719": [ + "726": [ { "accessible_scopes": [ "__main__", @@ -16755,7 +16918,7 @@ "decorators": [ "view" ], - "pc": 751, + "pc": 758, "type": "function" }, "__wrappers__.projectile_path.Args": { @@ -16784,7 +16947,7 @@ }, "__wrappers__.projectile_path_encode_return": { "decorators": [], - "pc": 719, + "pc": 726, "type": "function" }, "__wrappers__.projectile_path_encode_return.Args": { diff --git a/projectile_path/contracts/projectile_plot.cairo b/projectile_path/contracts/projectile_plot.cairo index 54243f1..979b1c1 100644 --- a/projectile_path/contracts/projectile_plot.cairo +++ b/projectile_path/contracts/projectile_plot.cairo @@ -41,19 +41,21 @@ func projectile_path{range_check_ptr}(num_pts: felt, theta_0_deg: felt, v_0: fel alloc_locals; // Check inputs - with_attr error_message("Check that 2 <=num_pts <= 25") { + with_attr error_message("Check that 2 <= num_pts <= 25; integer only") { assert is_le(2, num_pts) = 1; } - with_attr error_message("Check that 2 <=num_pts <= 25") { + with_attr error_message("Check that 2 <= num_pts <= 25; integer only") { assert is_le(num_pts, 25) = 1; } - with_attr error_message("Check that -180 <= theta_0_deg <= +180") { - tempvar abs_value_theta_0_deg = abs_value(theta_0_deg); - assert is_le(abs_value_theta_0_deg, 180) = 1; + with_attr error_message("Check that -179 <= theta_0_deg <= +180; integer only") { + assert is_le(-179, theta_0_deg) = 1; + } + with_attr error_message("Check that -179 <= theta_0_deg <= +180; integer only") { + assert is_le(theta_0_deg, 180) = 1; } - with_attr error_message("Check that v_0 >= 1") { + with_attr error_message("Check that v_0 >= 1; integer only") { assert is_le(1, v_0) = 1; } diff --git a/projectile_path/tests/prototype_projectile_plot.ipynb b/projectile_path/tests/prototype_projectile_plot.ipynb index e47eef0..9c02c67 100644 --- a/projectile_path/tests/prototype_projectile_plot.ipynb +++ b/projectile_path/tests/prototype_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 8, "id": "7d7134bf", "metadata": {}, "outputs": [], @@ -29,15 +29,15 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 9, "id": "ac10d3a4", "metadata": {}, "outputs": [], "source": [ "# Number of points to plot\n", "num_pts = 20\n", - "# Launch angle in degrees: -180 <= theta_0_deg <= +180\n", - "theta_0_deg = 90\n", + "# Launch angle in degrees: -179 <= theta_0_deg <= +180\n", + "theta_0_deg = 105\n", "# Launch velocity magnitude: v_0 = ~100 is enough to reach top of plot area on vertical shot\n", "v_0 = 100" ] @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 10, "id": "2494abc5", "metadata": {}, "outputs": [], @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "id": "92ea27fe", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 12, "id": "c29aebb5", "metadata": {}, "outputs": [], @@ -239,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 13, "id": "df8f26d3", "metadata": {}, "outputs": [ @@ -247,17 +247,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "theta_0 = 1.570796327\n", - "v_0x = 0\n", - "v_0y = 100.0\n", - "t_max_y = 24.562497223949272\n", - "t_max_x is ~infinite\n", - "t_max = 24.562497223949272\n", - "x_s = [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", - "y_s = [ 0. 121.08724378 225.79637275 314.12738691 386.08028627\n", - " 441.65507082 480.85174057 503.67029552 510.11073565 500.17306098\n", - " 473.85727151 431.16336723 372.09134815 296.64121426 204.81296556\n", - " 96.60660206 -27.97787625 -168.94046936 -326.28117728 -500. ]\n" + "theta_0 = 1.8325957148333336\n", + "v_0x = -25.882306286627742\n", + "v_0y = 96.59247497235584\n", + "t_max_y = 23.969806345067223\n", + "t_max_x = 38.636433280934334\n", + "t_max = 23.969806345067223\n", + "x_s = [ 0. -32.65230892 -65.30461784 -97.95692676 -130.60923567\n", + " -163.26154459 -195.91385351 -228.56616243 -261.21847135 -293.87078027\n", + " -326.52308919 -359.17539811 -391.82770702 -424.48001594 -457.13232486\n", + " -489.78463378 -522.4369427 -555.08925162 -587.74156054 -620.39386945]\n", + "y_s = [ 0. 114.05942535 212.5216046 295.38653777 362.65422484\n", + " 414.32466583 450.39786072 470.87380952 475.75251223 465.03396884\n", + " 438.71817937 396.80514381 339.29486215 266.1873344 177.48256056\n", + " 73.18054063 -46.71872539 -182.2152375 -333.3089957 -500. ]\n" ] } ], @@ -305,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 14, "id": "f9a52462", "metadata": { "scrolled": false @@ -313,7 +316,7 @@ "outputs": [ { "data": { - "image/png": "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hVVVVamgoKDO8NcUap5ryZIlZ/wk4umrenUpKCioc6wmEBUXF+udd97RnDlzdN999znnlJWV6ccff2xM6QDcgMOFACw3ePBgHT9+XG+++abL+AsvvODcfibDhw/Xd999p/DwcPXt27fWn5pPB1533XWSpKeffvqstZzLKs6AAQPUtm1b7dq1q85a+vbtK39//199nH/84x8uJ+zv379fW7Zs0aBBgyRVB1VjjOx2u8v9li1bpqqqqlr9SGJlCmiBWMkCYLnf//73evLJJzVu3Djt27dPiYmJ2rx5sxYsWKDf/e53uvbaa89432nTpmn16tW6+uqrdc899+iiiy6Sw+HQgQMHtHbtWk2fPl1XXHGFrrrqKo0dO1YPPPCADh8+rOHDh8tut2vHjh0KCgrSXXfdJUlKTEzUypUrtWrVKnXv3l0BAQFKTEysVx/nnXeelixZonHjxunHH3/UzTffrI4dO+rIkSP64osvdOTIkV8NeVL1Ct5//Md/aPz48SouLtacOXMUEBCgmTNnSpJCQ0N19dVX69FHH1VERIRiY2O1ceNGZWRkqG3bti6PVXNF96VLlyokJEQBAQGKi4ur8zAhgOZFyAJguYCAAK1fv16zZs3So48+qiNHjqhz586aMWOG5syZU2v+qYcUg4OD9fHHH+uhhx7S0qVLtXfvXgUGBqpr16669tprXa5yvnz5cl166aXKyMjQ8uXLFRgYqF69eun+++93zpk7d64OHTqk8ePH69ixY+rWrVuDvjbn9ttvV9euXfXII49owoQJOnbsmDp27KjevXvX++uAFixYoOzsbP3hD39QSUmJLr/8cq1cudLlavOvvPKKpk6dqnvvvVeVlZUaMGCAsrKyXC7PIElxcXFavHix/vrXv2rQoEGqqqpSZmampV9NBKB+bObUNWsAcLP27dvrj3/8ox577DF3l9LkNmzYoKSkJL322mtnPXkeQOvAShaAFuHLL7/Ue++9p6NHj6pfv37uLgcAzhkhC0CLMHXqVH399deaMWPGr14FHgA8AYcLAQAALMAlHAAAACxAyAIAALAAIQsAAMACnPjeCA6HQ/n5+QoJCanzK0QAAEDLY4zRsWPHFB0drTZtrF9nImQ1Qn5+vrp06eLuMgAAQCN8//33iomJsfx5CFmNEBISIknau3ev2rdv7+Zqmk9FRYXWrl2roUOHys/P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jejjI8XHu6ceAJ6PkAUAkmJipKVLJR8fI6n657PPVo8DQGMQsgDgpNRUKTe3UvPnb1ZubqVSU91dEQBPRsgCgFPExEiJiUWsYAE4Z4QsAAAACxCyAOAUXIwUQFMhZAHASVyMFEBTImQBgLgYKYCmR8gCAHExUgBNj5AFAOJipACaHiELAMTFSAE0PUIWAJzExUgBNCVCFgCcgouRAmgqhCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwgG9DJhcXF2vNmjX6+OOPtW/fPpWWlqpDhw665JJLlJycrP79+1tVJwAAgEep10rWoUOHNH78eHXq1Enz5s3Tzz//rN69e2vw4MGKiYnR+vXrNWTIEPXq1UurVq2yumYAAIAWr14rWRdffLF+//vf69NPP1VCQkKdc06cOKE333xTixYt0vfff68ZM2Y0aaEAAACepF4ha+fOnerQocNZ5wQGBmrUqFEaNWqUjhw50iTFAQAAeKp6HS78tYB1rvMBAABamwad+F7j4MGD+p//+R8VFhbK4XC4bLv77rubpDAAAABP1uCQlZmZqYkTJ8rf31/h4eGy2WzObTabjZAFAACgRoSsv/zlL/rLX/6imTNnqk0bLrMFAABQlwanpNLSUo0cOZKABQAAcBYNTkqpqal67bXXrKgFAACg1Wjw4cKFCxdq+PDh+uc//6nExET5+fm5bF+0aFGTFQcAAOCpGhyyFixYoA8++EC//e1vJanWie8AAABoRMhatGiRnn/+eaWkpFhQTvN56qmn9Oijj+rQoUO68MILtXjxYl111VXuLgsAALQSDT4ny263a8CAAVbU0mxWrVqladOmadasWdqxY4euuuoqXXfddTpw4IC7SwPgZnl5Uk5OhPLy3F0JAE/X4JA1depULVmyxIpams2iRYuUmpqqO+64Qz179tTixYvVpUsXPf300+4uDYAbZWRI8fG+mj17gOLjfZWR4e6KAHiyBh8u/PTTT/XRRx/pnXfe0YUXXljrxPc33nijyYqzQnl5ubZv36777rvPZXzo0KHasmVLnfcpKytTWVmZ83ZJSYkkqaKiQhUVFdYV28LU9OpNPUv07S195+VJd97pK4ej+txS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2e12lzkzZ87Uvn37FBcXV+dzlZWVqayszHm7pKREklRRUaGKioqmbq3FqunVm3qW6Ju+vQN907c3aO5+PTJkfffdd1qyZIkef/xx51hBQYEiIyNd5rVr107+/v4qKChwzomNjXWZU3OfgoKCM4ashQsXau7cubXG169fr6CgoHNpxSNlZWW5uwS3oG/vQt/ehb69Q2lpabM+n1tDVnp6ep3h5VTZ2dnq27ev83Z+fr6GDRumW265RXfccYfL3LoO9xljXMZPn1Nz0vvZDhXOnDlTaWlpztslJSXq0qWLkpKSFB4eftb6W5OKigplZWVpyJAh8vPzc3c5zYa+6dsb0Dd9e4OioqJmfT63hqwpU6Zo5MiRZ51z6spTfn6+kpKS1K9fPy1dutRlXlRUlLZt2+YydvToUVVUVDhXq6KiopyrWjUKCwslqdYq2KnsdrvLIcYafn5+XvXmrEHf3oW+vQt9exdv67u5e3VryIqIiFBERES95h48eFBJSUnq06ePMjMz1aaN69Un+vXrpwcffFCHDh1Sp06dJFWfDG+329WnTx/nnPvvv1/l5eXy9/d3zomOjq51GBEAAOBceMR1svLz8zVo0CB16dJFjz32mI4cOaKCggKXVamhQ4eqV69eGjt2rHbs2KEPP/xQM2bM0Pjx4xUaGipJGj16tOx2u1JSUvTVV19pzZo1WrBgAZ8sBAAATc4jTnxfu3atdu/erd27dyvmtG9trTmnysfHR++++64mTZqkAQMGKDAwUKNHj3Ze4kGSwsLClJWVpcmTJ6tv375q166d0tLSXM63AgAAaAoeEbJSUlKUkpLyq/O6du2qd95556xzEhMTtWnTpiaqDAAAoG4ecbgQAADA0xCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAOAUeXlSTk6E8vLcXQkAT0fIAoCTMjKk+HhfzZ49QPHxvsrIcHdFADwZIQsAVL2CdeedksNhk1T9c8IEsaIFoNEIWQAgKTdXcjhcx6qqpN273VMPAM9HyAIAST16SG1O+43o4yPFx7unHgCej5AFAJJiYqSlSyUfHyOp+uezz1aPA0BjELIA4KTUVCk3t1Lz529Wbm6lUlPdXREAT0bIAoBTxMRIiYlFrGABOGeELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALeFzIKisrU+/evWWz2fT555+7bDtw4IBuuOEGBQcHKyIiQnfffbfKy8td5uTk5GjgwIEKDAxU586dNW/ePBljmrEDAADgDXzdXUBD3XvvvYqOjtYXX3zhMl5VVaXrr79eHTp00ObNm1VUVKRx48bJGKMlS5ZIkkpKSjRkyBAlJSUpOztb3377rVJSUhQcHKzp06e7ox0AANBKeVTIev/997V27VqtXr1a77//vsu2tWvXateuXfr+++8VHR0tSXr88ceVkpKiBx98UKGhoXr55Zf1yy+/aPny5bLb7UpISNC3336rRYsWKS0tTTabzR1tAQCAVshjDhcePnxY48eP14svvqigoKBa27du3aqEhARnwJKk5ORklZWVafv27c45AwcOlN1ud5mTn5+vffv2Wd4DAADwHh6xkmWMUUpKiiZOnKi+ffvWGYgKCgoUGRnpMtauXTv5+/uroKDAOSc2NtZlTs19CgoKFBcXV+fzl5WVqayszHm7pKREklRRUaGKiorGtuVxanr1pp4l+qZv70Df9O0Nmrtft4as9PR0zZ0796xzsrOztWXLFpWUlGjmzJlnnVvX4T5jjMv46XNqTno/26HChQsX1lnn+vXr61xVa+2ysrLcXYJb0Ld3oW/vQt/eobS0tFmfz60ha8qUKRo5cuRZ58TGxuqBBx7QJ5984nKYT5L69u2rMWPGaMWKFYqKitK2bdtcth89elQVFRXO1aqoqCjnqlaNwsJCSaq1CnaqmTNnKi0tzXm7pKREXbp0UVJSksLDw3+90VaioqJCWVlZGjJkiPz8/NxdTrOhb/r2BvRN396gqKioWZ/PrSErIiJCERERvzrvb3/7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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAHFCAYAAADBtOziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA80klEQVR4nO3dfVxUdd7/8feIMNwEqKAgoojhbhmWpd1oW4om2GZeXV3deJMrLZmuWhp6tZm/XdEt7dbcdbuzCO1utTKrq5tNLNS8NGPNyvSqNEVDRJQMVAxG5vv7g2VyBBWUwzAzr+fjwWM63/OdOd/PnAnffM+Zc2zGGCMAAAA0qVaeHgAAAIAvImQBAABYgJAFAABgAUIWAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAE4rUWLFslms7l+Wrdurfj4eN1+++3as2dPk26ra9euSk9Pb9LXPN5TTz2lRYsW1WkvKCiQzWZzW1dbd0FBgWXjOVtbt25VVlZWvWMcMGCAkpOTm39QACRJrT09AADeIycnR+edd56OHj2qNWvWaO7cuVq9erU2b96ssLCwJtnG8uXLFRER0SSvVZ+nnnpK0dHRdYJcx44dtX79ep177rmWbdsKW7du1axZszRgwAB17drV08MBcBxCFoAGS05OVp8+fSRJKSkpqq6u1l/+8he99dZbGjVqVL3PqaioUGhoaIO3cfHFFzfJWBvLbrfriiuu8Mi2AfgmDhcCOGO1oWTXrl2SpPT0dJ1zzjnavHmzUlNTFR4erkGDBkmSfvzxR02YMEGdOnVSUFCQunXrphkzZqiystLtNes7XFheXq5p06YpMTFRQUFB6tSpk6ZMmaIjR4649XM6nVqwYIF69eqlkJAQtWnTRldccYXeeecd12tv2bJFq1evdh36rJ39qe9w4cmsXLlSgwYNUkREhEJDQ3XllVfqo48+Ou3zVq1aJZvNppdfflmZmZmKjY1VSEiI+vfvr02bNrn1/de//qXhw4era9euCgkJUdeuXTVixAjXey3VHM68+eabJdWE3tqaTqwhPz9fV111lUJDQ9WtWzc99NBDcjqdpx0vgLNDyAJwxrZv3y5Jat++vautqqpKw4YN08CBA/X2229r1qxZ+vnnn5WSkqIXX3xRmZmZeu+993TbbbfpkUce0Y033njKbVRUVKh///5avHix7r77bn3wwQf64x//qEWLFmnYsGEyxrj6pqena/Lkybr00ku1dOlSLVmyRMOGDXOdr7R8+XJ169ZNF198sdavX6/169dr+fLljar55ZdfVmpqqiIiIrR48WK99tprateundLS0hoUtCTp/vvv144dO/T888/r+eefV1FRkQYMGKAdO3a4+hQUFOjXv/615s+frw8//FAPP/yw9u7dq0svvVQHDhyQJF133XWaM2eOJOnJJ5901XTddde5Xqe4uFijRo3SbbfdpnfeeUfXXnutpk+frpdffrlRdQM4AwYATiMnJ8dIMp9++qlxOBzm0KFD5t133zXt27c34eHhpri42BhjzJgxY4wk88ILL7g9/5lnnjGSzGuvvebW/vDDDxtJZsWKFa62hIQEM2bMGNfy3LlzTatWrUx+fr7bc9944w0jybz//vvGGGPWrFljJJkZM2acspYLLrjA9O/fv077zp07jSSTk5NTp+6dO3caY4w5cuSIadeunbn++uvdnltdXW0uuugic9lll51y23l5eUaSueSSS4zT6XS1FxQUmMDAQHPHHXec9LnHjh0zhw8fNmFhYeavf/2rq/311183kkxeXl6d5/Tv399IMhs2bHBr79Gjh0lLSzvlWAGcPWayADTYFVdcocDAQIWHh2vo0KGKjY3VBx98oJiYGLd+//Vf/+W2/PHHHyssLEw33XSTW3vtYcFTzQC9++67Sk5OVq9evXTs2DHXT1pammw2m1atWiVJ+uCDDyRJEydOPMsqT27dunX68ccfNWbMGLexOJ1ODRkyRPn5+XUOYdZn5MiRstlsruWEhAT169dPeXl5rrbDhw/rj3/8o5KSktS6dWu1bt1a55xzjo4cOaL/+7//a/CYY2Njddlll7m1XXjhhW6HHQFYgxPfATTYiy++qPPPP1+tW7dWTEyMOnbsWKdPaGhonW8HlpaWKjY21i1YSFKHDh3UunVrlZaWnnSb+/bt0/bt2xUYGFjv+tpDZ/v371dAQIBiY2MbW1aD7du3T5LqhMXj/fjjj6f9pmV9Y4yNjdWXX37pWh45cqQ++ugj/elPf9Kll16qiIgI2Ww2/fa3v9XRo0cbPOaoqKg6bXa7vVGvAeDMELIANNj555/v+nbhyZwYpKSaf+g3bNggY4zb+pKSEh07dkzR0dEnfb3o6GiFhITohRdeOOl6qea8sOrqahUXF9cb/ppC7bYWLFhw0m8injirV5/i4uJ622oDUVlZmd59913NnDlT9913n6tPZWWlfvzxxzMZOgAP4HAhAMsNGjRIhw8f1ltvveXW/uKLL7rWn8zQoUP1/fffKyoqSn369KnzU/vtwGuvvVaS9PTTT59yLGczi3PllVeqTZs22rp1a71j6dOnj4KCgk77Ov/4xz/cTtjftWuX1q1bpwEDBkiqCarGGNntdrfnPf/886qurq5TjyRmpoAWiJksAJb73e9+pyeffFJjxoxRQUGBevbsqbVr12rOnDn67W9/q2uuueakz50yZYqWLVumq6++Wvfcc48uvPBCOZ1O7d69WytWrNDUqVN1+eWX66qrrtLo0aP1wAMPaN++fRo6dKjsdrs2bdqk0NBQ3XXXXZKknj17asmSJVq6dKm6deum4OBg9ezZs0F1nHPOOVqwYIHGjBmjH3/8UTfddJM6dOig/fv368svv9T+/ftPG/Kkmhm8//zP/9TYsWNVVlammTNnKjg4WNOnT5ckRURE6Oqrr9ajjz6q6Ohode3aVatXr1Z2drbatGnj9lq1V3RfuHChwsPDFRwcrMTExHoPEwJoXoQsAJYLDg5WXl6eZsyYoUcffVT79+9Xp06dNG3aNM2cObNO/+MPKYaFhemTTz7RQw89pIULF2rnzp0KCQlRly5ddM0117hd5XzRokW65JJLlJ2drUWLFikkJEQ9evTQ/fff7+oza9Ys7d27V2PHjtWhQ4eUkJDQqNvm3HbbberSpYseeeQRjRs3TocOHVKHDh3Uq1evBt8OaM6cOcrPz9ftt9+u8vJyXXbZZVqyZInb1eZfffVVTZ48Wffee6+OHTumK6+8Urm5uW6XZ5CkxMREzZ8/X3/96181YMAAVVdXKycnx9JbEwFoGJs5fs4aADysXbt2+v3vf6/HHnvM00NpcqtWrVJKSopef/31U548D8A3MJMFoEX46quv9P777+vgwYPq27evp4cDAGeNkAWgRZg8ebK++eYbTZs27bRXgQcAb8DhQgAAAAtwCQcAAAALELIAAAAsQMgCAACwACe+nwGn06mioiKFh4fXewsRAADQ8hhjdOjQIcXFxalVK+vnmQhZZ6CoqEidO3f29DAAAMAZ+OGHHxQfH2/5dghZZyA8PFyStHPnTrVr187Do2k+DodDK1asUGpqqgIDAz09nGZD3dTtD6ibuv3Bjz/+qMTERNe/41YjZJ2B2kOE4eHhioiI8PBomo/D4VBoaKgiIiL86n9K6qZuf0Dd1O0PHA6HJDXbqT6c+A4AAGABQhYAAIAFCFkAAAAWIGQBcCkslPLyah4BAGeHkAVAkpSdLSUkSAMH1jzm5HANOAA4G4QsACoslO68U3I6a5adTmnChAAdOBBcpx8zXQDQMIQsANq27ZeAVau62qa9e8NcyyfOdGVnN/MgAcDLELIAP3Kymaju3aUT7zAREGDUseMR1/NOnOkaN44ZLQA4FUIW4CdONRMVHy8tXCgFBNQsBwRITz1VrejonyWdbKZL2r69mQYPAF6IkAX4gYbMRGVkSAUFNTNdBQXS7bcb17r6Z7qkpCTLhw4AXouQBfiBhs5ExcdLAwbUPJ7YfuJM17PP1u0HAPgF9y4E/EDtTNTxQauxM1EZGVJaWk0wS0oiYAHA6TCTBfiBppqJOtlMVy0u8QAAvyBkAX7ixHOuMjKa9vW5xAMAuCNkAX7kdDNRZ4pLPABAXYQsAGeNSzwAQF2ELABnjUs8AEBdhCzAh3jqxHMu8QAAdRGyAB/h6RPPrT6xHgC8DSEL8AEt5cRzq06sBwBvRMgCfAAnngNAy0PIAnwAJ54DQMtDyAJ8ACeeA0DLw70LAR/BvQUBoGUhZAE+JD6ecAUALQWHCwEAACxAyALQbDx1sVQA8ARCFoBm4emLpQJAcyNkAbBcS7lYKgA0J0IWAMtxsVQA/shrQ9bcuXNls9k0ZcoUV5sxRllZWYqLi1NISIgGDBigLVu2uD2vsrJSd911l6KjoxUWFqZhw4apkD+nAUtxsVQA/sgrQ1Z+fr4WLlyoCy+80K39kUce0bx58/T3v/9d+fn5io2N1eDBg3Xo0CFXnylTpmj58uVasmSJ1q5dq8OHD2vo0KGqrq5u7jIAv8HFUgH4I68LWYcPH9aoUaP03HPPqW3btq52Y4zmz5+vGTNm6MYbb1RycrIWL16siooKvfrqq5KksrIyZWdn6/HHH9c111yjiy++WC+//LI2b96slStXeqokoEG8/Zt5GRlSQUFNDQUFNcsA4Mu87mKkEydO1HXXXadrrrlGDzzwgKt9586dKi4uVmpqqqvNbrerf//+WrduncaNG6eNGzfK4XC49YmLi1NycrLWrVuntLS0erdZWVmpyspK13J5ebkkyeFwyOFwNHWJLVZtrf5Us9Qy6s7JsekPfwiQ02lTq1ZGTz9drdtvN5Zu04q6Y2Jqfmpet8letkm1hP3tCdRN3f6guev1qpC1ZMkSff7558rPz6+zrri4WJIUU/sb/N9iYmK0a9cuV5+goCC3GbDaPrXPr8/cuXM1a9asOu15eXkKDQ1tdB3eLjc319ND8AhP1X3gQLDGj0+VMTZJktNp0x/+0EoBAbmKjv7Z8u2zv/0LdfsXf6u7oqKiWbfnNSHrhx9+0OTJk7VixQoFBweftJ/NZnNbNsbUaTvR6fpMnz5dmZmZruXy8nJ17txZKSkpioqKamAF3s/hcCg3N1eDBw9WYGCgp4fTbDxd96pVNlfAquV0tlJCwiD172/dbJan6/YU6qZuf+CvdZeWljbr9rwmZG3cuFElJSXq3bu3q626ulpr1qzR3//+d3377beSamarOnbs6OpTUlLimt2KjY1VVVWVDh486DabVVJSon79+p1023a7XXa7vU57YGCgX304a1F38zr//Jpv5h1/CYSAAOm881qrOYbD/vYv1O1f/K3u5q7Va058HzRokDZv3qwvvvjC9dOnTx+NGjVKX3zxhbp166bY2Fi3qc+qqiqtXr3aFaB69+6twMBAtz579+7V119/fcqQBXgS38wDAO/kNTNZ4eHhSk5OdmsLCwtTVFSUq33KlCmaM2eOunfvru7du2vOnDkKDQ3VyJEjJUmRkZHKyMjQ1KlTFRUVpXbt2mnatGnq2bOnrrnmmmavCWiojAwpLa3m4p1JSQQsAPAGXhOyGuLee+/V0aNHNWHCBB08eFCXX365VqxYofDwcFefJ554Qq1bt9Ytt9yio0ePatCgQVq0aJECaqcJgBYqPp5wBQDexKtD1qpVq9yWbTabsrKylJWVddLnBAcHa8GCBVqwYIG1gwMAAH7Na87JAgAA8CaELAAAAAsQsgAAACxAyAIAALAAIQtAi+HtN8EGgOMRsgC0CNnZUkKCNHBgzWN2tqdHBABnh5AFwOMKC6U77/zl1kFOpzRuHDNaALwbIQuAx23b5n5vRkmqrq65wj0AeCtCFgCP69695ibYxwsIqLmFEAB4K0IWAI/jJtgAfJFX31YHgO/gJtgAfA0hC0CLwU2wAfgSDhcCAABYgJAFtBBciBMAfAshC2gBuBAnAPgeQhbgYVyIEwB8EyEL8DAuxAkAvomQBXgYF+IEAN9EyAI8jAtxAoBv4jpZQAvAhTgBwPcQsoAWggtxAoBv4XAhAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAEAAFiAkAUAAGABQhYAr1FYKOXl1TwCQEtHyALgFbKzpYQEaeDAmsfsbE+PCABOjZAFoMUrLJTuvFNyOmuWnU5p3DhmtAC0bIQsAC3etm2/BKxa1dU1N9QGgJaKkAWgxeveXWp1wm+rgAApKckz4wGAhiBkAWjx4uOlhQtrgpVU8/jsszXtANBStfb0AACgITIypLS0mkOESUkELAAtHyELgNeIjydcAfAeHC4EAACwACELAADAAoQsAAAACxCygGbCLWEAwL8QsoBmwC1hAMD/ELIAi3FLGADwT4QswGLcEgYA/BMhC7AYt4QBAP9EyAIsxi1hAMA/ccV3oBlwSxgA8D+ELKCZcEsYAPAvHC4EAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIA+IzCQikvr+YRADyNkAXAJ2RnSwkJ0sCBNY/Z2Z4eEQB/R8gC4PUKC6U775Sczpplp1MaN44ZLQCeRcgC4PW2bfslYNWqrpa2b/fMeABA8qKQNXfuXF166aUKDw9Xhw4ddMMNN+jbb79162OMUVZWluLi4hQSEqIBAwZoy5Ytbn0qKyt11113KTo6WmFhYRo2bJgK+XMX8Grdu0utTvhtFhAgJSV5ZjwAIHlRyFq9erUmTpyoTz/9VLm5uTp27JhSU1N15MgRV59HHnlE8+bN09///nfl5+crNjZWgwcP1qFDh1x9pkyZouXLl2vJkiVau3atDh8+rKFDh6q6utoTZQFoAvHx0sKFNcFKqnl89tmadgDwlNaeHkBD/fOf/3RbzsnJUYcOHbRx40ZdffXVMsZo/vz5mjFjhm688UZJ0uLFixUTE6NXX31V48aNU1lZmbKzs/XSSy/pmmuukSS9/PLL6ty5s1auXKm0tLRmrwtA08jIkNLSag4RJiURsAB4nteErBOVlZVJktq1aydJ2rlzp4qLi5WamurqY7fb1b9/f61bt07jxo3Txo0b5XA43PrExcUpOTlZ69atO2nIqqysVGVlpWu5vLxckuRwOORwOJq8tpaqtlZ/qlmibm+qOyam5keSznTY3lh3U6Bu6vYHzV2vV4YsY4wyMzP1m9/8RsnJyZKk4uJiSVJM7W/Yf4uJidGuXbtcfYKCgtS2bds6fWqfX5+5c+dq1qxZddrz8vIUGhp6VrV4o9zcXE8PwSOo279Qt3+hbv9QUVHRrNvzypA1adIkffXVV1q7dm2ddTabzW3ZGFOn7USn6zN9+nRlZma6lsvLy9W5c2elpKQoKiqqkaP3Xg6HQ7m5uRo8eLACAwM9PZxmQ93U7Q+om7r9QWlpabNuz+tC1l133aV33nlHa9asUfxxJ13ExsZKqpmt6tixo6u9pKTENbsVGxurqqoqHTx40G02q6SkRP369TvpNu12u+x2e532wMBAv/pw1qJu/0Ld/oW6/Yu/1d3ctXrNtwuNMZo0aZLefPNNffzxx0pMTHRbn5iYqNjYWLepz6qqKq1evdoVoHr37q3AwEC3Pnv37tXXX399ypAFAADQWF4zkzVx4kS9+uqrevvttxUeHu46hyoyMlIhISGy2WyaMmWK5syZo+7du6t79+6aM2eOQkNDNXLkSFffjIwMTZ06VVFRUWrXrp2mTZumnj17ur5tCAAA0BS8JmQ9/fTTkqQBAwa4tefk5Cg9PV2SdO+99+ro0aOaMGGCDh48qMsvv1wrVqxQeHi4q/8TTzyh1q1b65ZbbtHRo0c1aNAgLVq0SAG1F9gBzlBhYc2Vx7t35/IBAAAvClnGmNP2sdlsysrKUlZW1kn7BAcHa8GCBVqwYEETjg7+Ljv7l3vntWpVc2HMjAxPjwoA4Elec04W0FJxc2IAQH0IWcBZ4ubEAID6ELKAs8TNiQEA9SFkAWeJmxMDAOrjNSe+Ay0ZNycGAJyIkAU0kfh4whUA4BccLgQAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgC4DcKC6W8vJpHALAaIQuAX8jOlhISpIEDax6zsz09IgC+jpAFwOcVFkp33ik5nTXLTqc0bhwzWgCsRcgC4PO2bfslYNWqrpa2b/fMeAD4B0IWAJ/XvbvU6oTfdgEBUlKSZ8YDwD8QsgD4vPh4aeHCmmAl1Tw++2xNOwBYpbWnBwAAzSEjQ0pLqzlEmJREwAJgPUIWAL8RH0+4AtB8OFwIAABgAUIWAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAENVFgo5eVxU2EAQMMQsoAGyM3toqSk1ho4UEpIkLKzPT0iAEBLR8gCTqOwUHrqqV5yOm2SJKdTGjeOGS0AwKkRsoDT2L7dJmNsbm3V1TX3wAMA4GQIWcBpJCUZ2WzGrS0goOYmwwAAnAwhCziN+HhpwoQvFBBQE7QCAqRnn+VGwwCAU2vt6QEA3mDw4N2aOjVZu3YFKimJgAUAOD1CFtBA8fFSYqKnRwEA8BYcLgQAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAo26hENZWZmWL1+uTz75RAUFBaqoqFD79u118cUXKy0tTf369bNqnAAAAF6lQTNZe/fu1dixY9WxY0fNnj1bR44cUa9evTRo0CDFx8crLy9PgwcPVo8ePbR06VKrxwwAANDiNWgm66KLLtLvfvc7ffbZZ0pOTq63z9GjR/XWW29p3rx5+uGHHzRt2rQmHSgAAIA3aVDI2rJli9q3b3/KPiEhIRoxYoRGjBih/fv3N8ngAAAAvFWDDheeLmCdbX8AAABfc0b3LtyzZ4/+93//VyUlJXI6nW7r7r777iYZGAAAgDdrdMjKycnR+PHjFRQUpKioKNlsNtc6m81GyAIAANAZhKw///nP+vOf/6zp06erVSsuswUAAFCfRqekiooKDR8+nIAFAABwCo1OShkZGXr99detGAsAAIDPaPThwrlz52ro0KH65z//qZ49eyowMNBt/bx585pscAAAAN6q0SFrzpw5+vDDD/XrX/9akuqc+A4AAIAzCFnz5s3TCy+8oPT0dAuG03yeeuopPfroo9q7d68uuOACzZ8/X1dddZWnhwUAAHxEo8/JstvtuvLKK60YS7NZunSppkyZohkzZmjTpk266qqrdO2112r37t2eHhoADysslDZvjlZhoadHAsDbNTpkTZ48WQsWLLBiLM1m3rx5ysjI0B133KHzzz9f8+fPV+fOnfX00097emgAPCg7W0pKaq0//elKJSW1Vna2p0cEwJs1+nDhZ599po8//ljvvvuuLrjggjonvr/55ptNNjgrVFVVaePGjbrvvvvc2lNTU7Vu3bp6n1NZWanKykrXcnl5uSTJ4XDI4XBYN9gWprZWf6pZom5/qbuwULrzztZyOmvOLXU6bRo3zmjgwGOKj/fw4JqBv+3vWtTtn3U3l0aHrDZt2ujGG2+0YizN4sCBA6qurlZMTIxbe0xMjIqLi+t9zty5czVr1qw67Xl5eQoNDbVknC1Zbm6up4fgEdTt2zZvjpbT6X4qRHW1Ta+8skE9e5Z6aFTNz1/294mo2z9UVFQ06/ZsxhjTrFv0sKKiInXq1Enr1q1T3759Xe0PPvigXnrpJX3zzTd1nlPfTFbnzp21d+9eRUVFNcu4WwKHw6Hc3FwNHjy4zgymL6Nu/6i7sLDmUGHtTJYkBQQYbdvmPzNZ/rS/a1G3f9VdWlqqjh07qqysTBEREZZv74xuEO3NoqOjFRAQUGfWqqSkpM7sVi273S673V6nPTAw0K8+nLWo27/4S92JidLChdK4cUbV1TYFBBg9+6xNiYm+X/vx/GV/n4i6/UNz19qgE9+HDBly0vOVjnfo0CE9/PDDevLJJ896YFYJCgpS796960yR5ubmql+/fh4aFYCWICND2rbtmP7yl7Xatu2YMjI8PSIA3qxBM1k333yzbrnlFoWHh2vYsGHq06eP4uLiFBwcrIMHD2rr1q1au3at3n//fQ0dOlSPPvqo1eM+K5mZmRo9erT69Omjvn37auHChdq9e7fGjx/v6aEB8LD4eKlnz1K/OEQIwFoNClkZGRkaPXq03njjDS1dulTPPfecfvrpJ0k1V3nv0aOH0tLStHHjRteV4FuyW2+9VaWlpZo9e7b27t2r5ORkvf/++0pISPD00AAAgI9o8DlZQUFBGjlypEaOHClJKisr09GjRxUVFeWVx3MnTJigCRMmeHoYAADAR53xie+RkZGKjIxsyrEAAAD4jEZf8R0AAACnR8gCAACwACELAADAAoQsAAAACzQ6ZKWnp2vNmjVWjAUAAMBnNDpkHTp0SKmpqerevbvmzJmjPXv2WDEuAAAAr9bokLVs2TLt2bNHkyZN0uuvv66uXbvq2muv1RtvvCGHw2HFGIFmUVgo5eXVPAIAcLbO6JysqKgoTZ48WZs2bdJnn32mpKQkjR49WnFxcbrnnnu0bdu2ph4nYKnsbCkhQRo4sOYxO9vTIwIAeLuzOvF97969WrFihVasWKGAgAD99re/1ZYtW9SjRw898cQTTTVGwFKFhdKdd0pOZ82y0ymNG8eMFgDg7DQ6ZDkcDi1btkxDhw5VQkKCXn/9dd1zzz3au3evFi9erBUrVuill17S7NmzrRgv0OS2bfslYNWqrpa2b/fMeAAAvqHRt9Xp2LGjnE6nRowYoc8++0y9evWq0yctLU1t2rRpguEB1uveXWrVyj1oBQRISUmeGxMAwPs1OmQ98cQTuvnmmxUcHHzSPm3bttXOnTvPamBAc4mPlxYurDlEWF1dE7CefbamHQCAM9XokDV69GgrxgF4VEaGlJZWc4gwKYmABQA4e40OWYCvio8nXAEAmg631QEAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQs+I3CQikvr+YRAACrEbLgF7KzpYQEaeDAmsfsbE+PCADg6whZ8HmFhdKdd0pOZ82y0ymNG8eMFgDAWoQs+Lxt234JWLWqq6Xt2z0zHgCAfyBkwed17y61OuGTHhAgJSV5ZjwAAP9AyILPi4+XFi6sCVZSzeOzz9a0AwBgFa8IWQUFBcrIyFBiYqJCQkJ07rnnaubMmaqqqnLrt3v3bl1//fUKCwtTdHS07r777jp9Nm/erP79+yskJESdOnXS7NmzZYxpznLgARkZUkFBzbcLCwpqlgEAsFJrTw+gIb755hs5nU49++yzSkpK0tdff62xY8fqyJEjeuyxxyRJ1dXVuu6669S+fXutXbtWpaWlGjNmjIwxWrBggSSpvLxcgwcPVkpKivLz8/Xdd98pPT1dYWFhmjp1qidLRDOIj2f2CgDQfLwiZA0ZMkRDhgxxLXfr1k3ffvutnn76aVfIWrFihbZu3aoffvhBcXFxkqTHH39c6enpevDBBxUREaFXXnlFP//8sxYtWiS73a7k5GR99913mjdvnjIzM2Wz2TxSHwAA8D1eEbLqU1ZWpnbt2rmW169fr+TkZFfAkqS0tDRVVlZq48aNSklJ0fr169W/f3/Z7Xa3PtOnT1dBQYESExPr3VZlZaUqKytdy+Xl5ZIkh8Mhh8PR1KW1WLW1+lPNEnVTt3+gbur2B81dr1eGrO+//14LFizQ448/7morLi5WTEyMW7+2bdsqKChIxcXFrj5du3Z161P7nOLi4pOGrLlz52rWrFl12vPy8hQaGno2pXil3NxcTw/BI6jbv1C3f6Fu/1BRUdGs2/NoyMrKyqo3vBwvPz9fffr0cS0XFRVpyJAhuvnmm3XHHXe49a3vcJ8xxq39xD61J72f6lDh9OnTlZmZ6VouLy9X586dlZKSoqioqFOO35c4HA7l5uZq8ODBCgwM9PRwmg11U7c/oG7q9gelpaXNuj2PhqxJkyZp+PDhp+xz/MxTUVGRUlJS1LdvXy1cuNCtX2xsrDZs2ODWdvDgQTkcDtdsVWxsrGtWq1ZJSYkk1ZkFO57dbnc7xFgrMDDQrz6ctajbv1C3f6Fu/+JvdTd3rR4NWdHR0YqOjm5Q3z179iglJUW9e/dWTk6OWp1wdcm+ffvqwQcf1N69e9WxY0dJNSfD2+129e7d29Xn/vvvV1VVlYKCglx94uLi6hxGBAAAOBtecZ2soqIiDRgwQJ07d9Zjjz2m/fv3q7i42G1WKjU1VT169NDo0aO1adMmffTRR5o2bZrGjh2riIgISdLIkSNlt9uVnp6ur7/+WsuXL9ecOXP4ZiEAAGhyXnHi+4oVK7R9+3Zt375d8Sdc6Kj2nKqAgAC99957mjBhgq688kqFhIRo5MiRrks8SFJkZKRyc3M1ceJE9enTR23btlVmZqbb+VYAAABNwStCVnp6utLT00/br0uXLnr33XdP2adnz55as2ZNE40MAACgfl5xuBAAAMDbELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELPqOwUMrLq3kEAMDTCFnwCdnZUkKCNHBgzWN2tqdHBADwd4QseL3CQunOOyWns2bZ6ZTGjWNGCwDgWYQseL1t234JWLWqq6Xt2z0zHgAAJEIWfED37lKrEz7JAQFSUpJnxgMAgETIgg+Ij5cWLqwJVlLN47PP1rQDAOAprT09AKApZGRIaWk1hwiTkghYAADPI2TBZ8THE64AAC0HhwsBAAAsQMgCAACwACELAADAAoQsAAAACxCyAAAALEDIAgAAsAAhCwAAwAKELAAAAAsQsgAAACxAyAIAALAAIQsAAMAChCwAAAALELIAAAAsQMgCAACwACELAADAAl4XsiorK9WrVy/ZbDZ98cUXbut2796t66+/XmFhYYqOjtbdd9+tqqoqtz6bN29W//79FRISok6dOmn27NkyxjRjBQAAwB+09vQAGuvee+9VXFycvvzyS7f26upqXXfddWrfvr3Wrl2r0tJSjRkzRsYYLViwQJJUXl6uwYMHKyUlRfn5+fruu++Unp6usLAwTZ061RPlAAAAH+VVIeuDDz7QihUrtGzZMn3wwQdu61asWKGtW7fqhx9+UFxcnCTp8ccfV3p6uh588EFFRETolVde0c8//6xFixbJbrcrOTlZ3333nebNm6fMzEzZbDZPlAUAAHyQ1xwu3Ldvn8aOHauXXnpJoaGhddavX79eycnJroAlSWlpaaqsrNTGjRtdffr37y+73e7Wp6ioSAUFBZbXAAAA/IdXzGQZY5Senq7x48erT58+9Qai4uJixcTEuLW1bdtWQUFBKi4udvXp2rWrW5/a5xQXFysxMbHe7VdWVqqystK1XF5eLklyOBxyOBxnWpbXqa3Vn2qWqJu6/QN1U7c/aO56PRqysrKyNGvWrFP2yc/P17p161ReXq7p06efsm99h/uMMW7tJ/apPen9VIcK586dW+848/Ly6p1V83W5ubmeHoJHULd/oW7/Qt3+oaKiolm359GQNWnSJA0fPvyUfbp27aoHHnhAn376qdthPknq06ePRo0apcWLFys2NlYbNmxwW3/w4EE5HA7XbFVsbKxrVqtWSUmJJNWZBTve9OnTlZmZ6VouLy9X586dlZKSoqioqNMX6iMcDodyc3M1ePBgBQYGeno4zYa6qdsfUDd1+4PS0tJm3Z5HQ1Z0dLSio6NP2+9vf/ubHnjgAddyUVGR0tLStHTpUl1++eWSpL59++rBBx/U3r171bFjR0k1J8Pb7Xb17t3b1ef+++9XVVWVgoKCXH3i4uLqHEY8nt1urxPwJCkwMNCvPpy1qNu/ULd/oW7/4m91N3etXnHie5cuXZScnOz6+dWvfiVJOvfccxUfHy9JSk1NVY8ePTR69Ght2rRJH330kaZNm6axY8cqIiJCkjRy5EjZ7Xalp6fr66+/1vLlyzVnzhy+WQgAAJqcV4SshggICNB7772n4OBgXXnllbrlllt0ww036LHHHnP1iYyMVG5urgoLC9WnTx9NmDBBmZmZbocCAQAAmoJXfLvwRF27dq33Ku1dunTRu+++e8rn9uzZU2vWrLFqaAAAAJJ8aCYLAACgJSFkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAEAAFiAkAUAAGABQhYAAIAFCFkAAAAWIGQBAABYgJAFAABgAUIWAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAEAAFiAkAUAAGABQhYAAIAFCFkAAAAWIGQBAABYgJAFAABgAUIWAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWfAahYVSXl7NIwAALR0hC14hO1tKSJAGDqx5zM729IgAADi11p4egDcyxkiSDh06pMDAQA+Ppvk4HA5VVFSovLy8Weves0caO1b699sup1O6806pXz+pUyfrt++puj2NuqnbH1C3f9V96NAhSb/8O241QtYZKC0tlSQlJiZ6eCT+y+mUevTw9CgAAN6otLRUkZGRlm+HkHUG2rVrJ0navXt3s+yklqK8vFydO3fWDz/8oIiICE8Pp9lQN3X7A+qmbn9QVlamLl26uP4dtxoh6wy0alVzKltkZKRffThrRUREULcfoW7/Qt3+xV/rrv133PLtNMtWAAAA/AwhCwAAwAKErDNgt9s1c+ZM2e12Tw+lWVE3dfsD6qZuf0DdzVO3zTTX9xgBAAD8CDNZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWf/24IMPql+/fgoNDVWbNm3q7bN7925df/31CgsLU3R0tO6++25VVVW59dm8ebP69++vkJAQderUSbNnz65zj6TVq1erd+/eCg4OVrdu3fTMM89YVVajrVq1Sjabrd6f/Px8V7/61p9YR0Pei5aka9eudWq677773Po01WegpSgoKFBGRoYSExMVEhKic889VzNnzqxTky/u7/o89dRTSkxMVHBwsHr37q1PPvnE00M6Y3PnztWll16q8PBwdejQQTfccIO+/fZbtz7p6el19usVV1zh1qeyslJ33XWXoqOjFRYWpmHDhqmwsLA5S2mUrKysOjXFxsa61htjlJWVpbi4OIWEhGjAgAHasmWL22t4W81S/b+/bDabJk6cKMl39vWaNWt0/fXXKy4uTjabTW+99Zbb+qbavwcPHtTo0aMVGRmpyMhIjR49Wj/99FPjB2xgjDHmz3/+s5k3b57JzMw0kZGRddYfO3bMJCcnm5SUFPP555+b3NxcExcXZyZNmuTqU1ZWZmJiYszw4cPN5s2bzbJly0x4eLh57LHHXH127NhhQkNDzeTJk83WrVvNc889ZwIDA80bb7zRHGWeVmVlpdm7d6/bzx133GG6du1qnE6nq58kk5OT49avoqLCtb4h70VLk5CQYGbPnu1W06FDh1zrm+oz0JJ88MEHJj093Xz44Yfm+++/N2+//bbp0KGDmTp1qls/X9zfJ1qyZIkJDAw0zz33nNm6dauZPHmyCQsLM7t27fL00M5IWlqaycnJMV9//bX54osvzHXXXWe6dOliDh8+7OozZswYM2TIELf9Wlpa6vY648ePN506dTK5ubnm888/NykpKeaiiy4yx44da+6SGmTmzJnmggsucKuppKTEtf6hhx4y4eHhZtmyZWbz5s3m1ltvNR07djTl5eWuPt5WszHGlJSUuNWcm5trJJm8vDxjjO/s6/fff9/MmDHDLFu2zEgyy5cvd1vfVPt3yJAhJjk52axbt86sW7fOJCcnm6FDhzZ6vISsE+Tk5NQbst5//33TqlUrs2fPHlfbP/7xD2O3201ZWZkxxpinnnrKREZGmp9//tnVZ+7cuSYuLs4VUO69915z3nnnub32uHHjzBVXXGFBNWevqqrKdOjQwcyePdutvb4P9/Ea8l60NAkJCeaJJ5446fqm+gy0dI888ohJTEx0a/PF/X2iyy67zIwfP96t7bzzzjP33Xefh0bUtEpKSowks3r1alfbmDFjzH/8x3+c9Dk//fSTCQwMNEuWLHG17dmzx7Rq1cr885//tHK4Z2zmzJnmoosuqned0+k0sbGx5qGHHnK1/fzzzyYyMtI888wzxhjvrLk+kydPNueee67r/z9f3Ncn/l5qqv27detWI8l8+umnrj7r1683ksw333zTqDFyuLCB1q9fr+TkZMXFxbna0tLSVFlZqY0bN7r69O/f3+0iZ2lpaSoqKlJBQYGrT2pqqttrp6Wl6V//+pccDof1hTTSO++8owMHDig9Pb3OukmTJik6OlqXXnqpnnnmGTmdTte6hrwXLdHDDz+sqKgo9erVSw8++KDbYbOm+gy0dGVlZfXePNUX93etqqoqbdy4sc7/m6mpqVq3bp2HRtW0ysrKJKnOvl21apU6dOigX/3qVxo7dqxKSkpc6zZu3CiHw+H2vsTFxSk5OblFvy/btm1TXFycEhMTNXz4cO3YsUOStHPnThUXF7vVY7fb1b9/f1c93lrz8aqqqvTyyy/r97//vWw2m6vdF/f18Zpq/65fv16RkZG6/PLLXX2uuOIKRUZGNvq94AbRDVRcXKyYmBi3trZt2yooKEjFxcWuPl27dnXrU/uc4uJiJSYm1vs6MTExOnbsmA4cOKCOHTtaV8QZyM7OVlpamjp37uzW/pe//EWDBg1SSEiIPvroI02dOlUHDhzQ//t//09Sw96Llmby5Mm65JJL1LZtW3322WeaPn26du7cqeeff15S030GWrLvv/9eCxYs0OOPP+7W7ov7+3gHDhxQdXV1vf9v1u5bb2aMUWZmpn7zm98oOTnZ1X7ttdfq5ptvVkJCgnbu3Kk//elPGjhwoDZu3Ci73a7i4mIFBQWpbdu2bq/Xkt+Xyy+/XC+++KJ+9atfad++fXrggQfUr18/bdmyxTXm+vbzrl27JMkraz7RW2+9pZ9++sntj2Nf3Ncnaqr9W1xcrA4dOtR5/Q4dOjT6vfDpkJWVlaVZs2adsk9+fr769OnToNc7/i+CWsYYt/YT+5h/n/jb2D5N7Uzei8LCQn344Yd67bXX6vSt/cdVknr16iVJmj17tlu7J+o8UWPqvueee1xtF154odq2baubbrrJNbslNd1nwGpnsr+Lioo0ZMgQ3Xzzzbrjjjvc+nrL/j5b9dXgTeM/mUmTJumrr77S2rVr3dpvvfVW138nJyerT58+SkhI0Hvvvacbb7zxpK/Xkt+Xa6+91vXfPXv2VN++fXXuuedq8eLFrhO9z2Q/t+SaT5Sdna1rr73WbdbdF/f1yTTF/m3I7/qG8OmQNWnSJA0fPvyUfU786/tkYmNjtWHDBre2gwcPyuFwuFJzbGxsnZRbOx17uj6tW7d2/UNuhTN5L3JychQVFaVhw4ad9vWvuOIKlZeXa9++fYqJiWnQe9EczuYzUPsLefv27YqKimqyz0BzaGzdRUVFSklJUd++fbVw4cLTvn5L3d9nKjo6WgEBAfXW4A3jP5W77rpL77zzjtasWaP4+PhT9u3YsaMSEhK0bds2STWf56qqKh08eNDtL/+SkhL169fP0nE3lbCwMPXs2VPbtm3TDTfcIKlmpuL4owbH72dvr3nXrl1auXKl3nzzzVP288V9Xfst0rPdv7Gxsdq3b1+d19+/f3/jfx806gwuP3C6E9+LiopcbUuWLKlz0nObNm1MZWWlq89DDz1U58T3888/3+21x48f3+JOfHc6nSYxMbHOt8xOZsGCBSY4ONh14nND3ouW7n/+53+MJNe3y5rqM9DSFBYWmu7du5vhw4c3+FtEvri/L7vsMvOHP/zBre3888/32hPfnU6nmThxoomLizPfffddg55z4MABY7fbzeLFi40xv5wkvHTpUlefoqKiFn0y9Il+/vln06lTJzNr1izXidEPP/ywa31lZWW9J0Z7a80zZ840sbGxxuFwnLKfL+xrneTE97Pdv7Unvm/YsMHV59NPPz2jE98JWf+2a9cus2nTJjNr1ixzzjnnmE2bNplNmza5vsJf+/X9QYMGmc8//9ysXLnSxMfHu319/6effjIxMTFmxIgRZvPmzebNN980ERER9V7C4Z577jFbt2412dnZLeoSDrVWrlxpJJmtW7fWWffOO++YhQsXms2bN5vt27eb5557zkRERJi7777b1ach70VLsm7dOjNv3jyzadMms2PHDrN06VITFxdnhg0b5urTVJ+BlmTPnj0mKSnJDBw40BQWFrp9vbuWL+7v+tRewiE7O9ts3brVTJkyxYSFhZmCggJPD+2M/OEPfzCRkZFm1apV9V5649ChQ2bq1Klm3bp1ZufOnSYvL8/07dvXdOrUqc7X3ePj483KlSvN559/bgYOHNjivtZ/vKlTp5pVq1aZHTt2mE8//dQMHTrUhIeHu/bjQw89ZCIjI82bb75pNm/ebEaMGFHvV/y9qeZa1dXVpkuXLuaPf/yjW7sv7etDhw65/n2W5Pq9XfvHcFPt3yFDhpgLL7zQrF+/3qxfv9707NmTSzicjTFjxhhJdX5qrzFiTE0Qu+6660xISIhp166dmTRpkttX1o0x5quvvjJXXXWVsdvtJjY21mRlZdX5S37VqlXm4osvNkFBQaZr167m6aefbo4SG2XEiBGmX79+9a774IMPTK9evcw555xjQkNDTXJyspk/f36dv5wa8l60FBs3bjSXX365iYyMNMHBwebXv/61mTlzpjly5Ihbv6b6DLQUOTk59X7uj5/k9sX9fTJPPvmkSUhIMEFBQeaSSy5xu9yBtznZfs3JyTHGGFNRUWFSU1NN+/btTWBgoOnSpYsZM2aM2b17t9vrHD161EyaNMm0a9fOhISEmKFDh9bp05LUXhcpMDDQxMXFmRtvvNFs2bLFtd7pdLpme+x2u7n66qvN5s2b3V7D22qu9eGHHxpJ5ttvv3Vr96V9nZeXV+/nesyYMcaYptu/paWlZtSoUSY8PNyEh4ebUaNGmYMHDzZ6vDZjvOySzAAAAF6A62QBAABYgJAFAABgAUIWAACABQhZAAAAFiBkAQAAWICQBQAAYAFCFgAAgAUIWQAAABYgZAHwe9nZ2UpNTT2r1ygpKVH79u21Z8+eJhoVAG/HFd8B+LXKykp169ZNS5Ys0VVXXXVWr5WZmany8nI9//zzTTQ6AN6MmSwAfm3ZsmU655xzzjpgSdLtt9+uV155RQcPHmyCkQHwdoQsAD5h//79io2N1Zw5c1xtGzZsUFBQkFasWHHS5y1ZskTDhg1za0tPT9cNN9ygOXPmKCYmRm3atNGsWbN07Ngx/fd//7fatWun+Ph4vfDCC27P69mzp2JjY7V8+fKmLQ6AVyJkAfAJ7du31wsvvKCsrCz961//0uHDh3XbbbdpwoQJpzzf6pNPPlGfPn3qtH/88ccqKirSmjVrNG/ePGVlZWno0KFq27atNmzYoPHjx2v8+PH64Ycf3J532WWX6ZNPPmny+gB4H87JAuBTJk6cqJUrV+rSSy/Vl19+qfz8fAUHB9fb96efflLbtm21Zs0at8OF6enpWrVqlXbs2KFWrWr+Fj3vvPPUoUMHrVmzRpJUXV2tyMhIPf/88xo+fLjruZmZmdq0aZPy8vIsrBKAN2AmC4BPeeyxx3Ts2DG99tpreuWVV04asCTp6NGjklRvnwsuuMAVsCQpJiZGPXv2dC0HBAQoKipKJSUlbs8LCQlRRUXF2ZYBwAcQsgD4lB07dqioqEhOp1O7du06Zd+oqCjZbLZ6T1QPDAx0W7bZbPW2OZ1Ot7Yff/xR7du3P8PRA/AlhCwAPqOqqkqjRo3SrbfeqgceeEAZGRnat2/fSfsHBQWpR48e2rp1a5ON4euvv9bFF1/cZK8HwHsRsgD4jBkzZqisrEx/+9vfdO+99+r8889XRkbGKZ+TlpamtWvXNsn2KyoqtHHjxrO+sCkA30DIAuATVq1apfnz5+ull15SRESEWrVqpZdeeklr167V008/fdLnjR07Vu+//77KysrOegxvv/22unTp0iTX3ALg/fh2IQC/d8stt+jiiy/W9OnTz+p1LrvsMk2ZMkUjR45sopEB8GbMZAHwe48++qjOOeecs3qNkpIS3XTTTRoxYkQTjQqAt2MmCwAAwALMZAEAAFiAkAUAAGABQhYAAIAFCFkAAAAWIGQBAABYgJAFAABgAUIWAACABQhZAAAAFiBkAQAAWOD/Ay8K3mWJPBg5AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] diff --git a/projectile_path/tests/test_projectile_plot.ipynb b/projectile_path/tests/test_projectile_plot.ipynb index cac144f..fc25a9a 100644 --- a/projectile_path/tests/test_projectile_plot.ipynb +++ b/projectile_path/tests/test_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 75, "id": "4cfb0384", "metadata": { "scrolled": false @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 76, "id": "db9bfb8b", "metadata": { "scrolled": false @@ -59,11 +59,13 @@ " y_s_cairo_fp_felt = np.array(data_cairo[1])\n", " \n", " # Find num_pts = array length \n", - " num_pts = len(x_s_cairo)\n", + " num_pts = len(x_s_cairo_fp_felt)\n", + " \n", " # Declare empty arrays with dimensions\n", " x_s_cairo = np.empty(num_pts)\n", " y_s_cairo = np.empty(num_pts)\n", " \n", + " # Convert fixed point felt values to decimal values, to match python results\n", " for p in range(0, num_pts):\n", "\n", " if x_s_cairo_fp_felt[p] <= HALF_PRIME:\n", @@ -95,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 77, "id": "6aa22a99", "metadata": { "scrolled": false @@ -103,7 +105,7 @@ "outputs": [ { "data": { - "image/png": "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AJAdO3Y0Oq+/Yaehuro6iY2NlY0bN4qIiM1mEwBSVlbmeU194KuurvaMO3XqlMTExMjmzZtFRKRnz57y+uuve6bv3btXALQYdiZMmODVlqSkJHn11VdFxP35NGzL2rVrpVOnTp7/fEREXn/9denevbvXcusLx+LFi2XIkCFe7/uf//xHOnbsKHV1dS1u38cff/ysAttc2Dlx4oRER0fLrl27vOYxGo2ydOnSRt+jfnn1/3mJiHz00UcSGRkpP//8c6PzNNxnbr/9dq9wJOLefhqNRn744QfPuLy8PLnlllsaXabanHkcnDp1SubOnSsRERGeumEymWTGjBme148ePdrruOnbt+9Z++/kyZPlkksu8RqXmprq2Wdff/116dOnj1dYeOSRR+Tyyy/3PAcgzz77rOf5li1bBIDnP76Gjh8/LlFRUbJ69Wqf1vvgwYMCQL799lsROXt/vfrqq+Wee+5pdN5zCTsN5efny1133eV5Pnz4cHnyySe9XjN69GjPNqv35z//WXJzc0VE5OGHH5bf/OY3XtN/85vftBh2oqOjverU448/7nX8A5BZs2Z5zderVy+vPzarqqokOjpaioqKPMv15/hubvs2Vl9Fmg87d911lzz44INer58zZ45cc801TW6LlmprQw33mY8++kgaO//i777bFF7GCjBFUTBp0iRcfPHF6NKlC6655hrU1dXhhx9+aHKeQYMGISLi9EdRWlqKK664wus1V155JUpLSwEAzzzzDDp37ux5AMDu3bsxbNgwxMTENPoeW7ZswXXXXYe+ffuic+fOmDVrFiorKxt97TfffIPY2Fhcfvnlfq17U3799VfMmDED6enp6Nq1K+Lj43H8+PEm37++Db/++isSExM963nBBRfgxIkTOHDgAGpqanDo0CGvywL9+vVDly5dWmzPmfNotVoMGTLEs20B4IILLvA69V1aWgqj0eh1Df3KK6/E4cOHUV1dfdbyd+3aha+++srrMxozZgxOnTqF7777LuDbd//+/Thx4gSuuOIKr/fcv38/Dhw40Oy8Z26LYcOGoa6uDvv37wfg3z5zph49engu/wFA7969cejQoXNcu/Dz3HPPoXPnzoiJicHzzz+P119/HYMHDwbgvsSybNkyiAgqKyuxceNG3HnnnS0us3///l7Pz9ympaWlGDJkiNfN62fWi3oDBgzwmh8A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zJmD3bt3t7ittFot/vSnP2HPnj1455138Morr+Cee+5pdp6//vWveOqpp7BmzRp88803yMnJgV6vP+usE+Db8d3c9m2svrZk+vTpKCoqwhNPPIE9e/bgm2++waJFizB//vxm52uutra0z+j1egDAmjVrcPjw4cB/g9OvO3xI9u/fL3feeaf07t1boqKixGAwyLRp00RRFBER2b59uwwcOFCioqLk8ssvl7feesvr5jBfb7xbs2aN9O/fXzp06CApKSmyaNGiFttms9nk+uuvl5iYGImLi5MxY8Z4bjatf9+YmBj54x//KM8995zo9fom23Hs2DGZOnWqdOvWTaKjoyUjI0M+//xzERFxuVzy8MMPS/fu3aVnz57y8ssvN3uD8qFDh2Ts2LESHR0tycnJ8s9//vOsGzH//ve/S+/evUWj0XhuLDxx4oQ88MAD0qdPH+nYsaNcdNFFkp+f77lL/+TJkzJlyhSJiYmRPn36eNaxpRuU586dK2PHjpWoqChJTU2VTz75xDO94edTb9++fXLttddKp06dpEePHvLQQw953VB55s1+IiLl5eUybtw4iY+Pl5iYGBk4cKC88MILPm3fo0ePyg033CCdO3f27DstfRvL6XTKnDlzJDk5WTp06CA6nU7uuOMOz7ekGqpf3vvvvy8pKSkSFRUlN910k9eNli3tM4qiyMiRIyU6OtpzY2Fj269hW9WssW9jNSYtLU1uvvnms8ZbrVZJS0uTyMhIz42xvnwh4PPPP5ff/OY30rFjR+nbt6/XDZ0iZ39hoOENqY359ddfZcaMGXLhhRdKVFSUpKene26gtdlsctVVV0mnTp0kPT1d1q1bJwDEarV61gMNbjpetmyZ9OvXz7N/nvltxk8//VTS09MlOjpa/vCHP8hLL73UbJ185plnpEePHtKlSxfJzc2Vhx56yOtG4l27dslll10mHTt29Npn33nnHc/47t27i8lk8nwbS0RkxYoVkpiYKDExMXLbbbfJAw880OINysOHD5e5c+dKt27dJD4+Xh555BFxuVxNbvv6bTt9+nTp0aOHdOrUSa655hrZt2/fWcut58vx3dz2bay+NneDsojIxo0bZcSIEdKpUyfp2rWrXH311Z5vvDWmpdra0j4j4r6xvlu3bl5fNDmXfbcxmv8ujKhdSE5OxhNPPIE//elPAV3uhRdeiJdeegm33nprQJfbWjZs2IDRo0fj119/DalfZW4PTp06hb59+8JiseD3v/99sJtD52HWrFn4+OOP8dlnnwV0uY899hiKi4v9+vXtYGut2hoorHJwX1v8/vvv0aVLl1b9uWoKPhHBiRMn4HA4ArK8EydOYPv27fjxxx+RlJQUsOW2tl9++QUA4HA4QiLsiAiOHj2KPn36eH0zMZSdS904dOgQ3njjDcTExGDkyJFhs79Q42pra+F0OgP6OZaXl+Pjjz/GsGHDwmr/CHRt9ed9fakdPLMD99fF62+MI6LgqaysDJuORFk3iEJHS7Uj+H/ShYD632aprKxEXFxckFtD1P44HA4kJib69DtJoYJ1gyj4fK0dDDs4/b39uLg4Fi2iIAqny8isG0Sho6XaER4Xx4mIiIjOEcMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqZqqwo7NZsNVV12F1NRUDBs2DHv27Ano8hUFsFrdQyJSh9auGwCgOBRYy6xQHCweRMGgqrCTn5+PvLw87Nu3Dw8//DByc3MDtmyLBdDrgcxM99BiCdiiiSiIWrNuAICl2AJ9gR6ZSzKhL9DDUsziQdTWNCIiwW5EIBw6dAipqak4fPgwIiMjISK48MILsW3bNiQnJ3u9tra2FrW1tZ7n9V3E19TUNNp7saK4A47LdXqcVguUlwM6XSutEFE74nA4EB8f3+Qx2Fpas24A7jM6+gI9XHK6eGg1WpTfXw5dHIsH0fnytXao5sxOZWUl+vTpg8jISADu7t6TkpJQUVFx1mvnzp2L+Ph4zyMxMbHZZdts3kEHAJxOwG4PWPOJKAhas24AgK3K5hV0AMApTtirWTyI2pJqwg7gLlRnauqk1WOPPYaamhrPo7KystnlGo1ARIMtpdUCBsN5NZeIQkBr1Q0AMHYzIkLjXTy0Gi0MCSweRG1JNWEnMTERiqKgrq4OgLtgVVZWIikp6azXRkVFIS4uzuvRHJ0OKCx0BxzAPTSbeQmLKNy1Zt0AAF2cDoVZhdBq3MVDq9HCnGXmJSyiNqaasNOzZ09cdtllWLZsGQDg7bffRnJy8lnX3c9Vbq77Hh2r1T0M8D2MRBQErV03ACA3Ixfl95fDOtmK8vvLkZvB4kHU1lRzgzIAlJaWIicnB1VVVYiLi8PixYtx6aWXtjhfsG6OJCK3YB6DrBtE4cvX4zCyDdvU6tLS0rB169ZgN4OIwgjrBpH6qeYyFhEREVFjGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHZaCTsNJSJ/scNQotbBsNMK2GkoEfmLHYYStR6GnQBTFCAv73RfWi4XkJ/PMzxE1DTFoSCvKM/Tj5ZLXMgvyucZHqIAYdgJMHYaSkT+YoehRK2LYSfA2GkoEfmLHYYStS6GnQBjp6FE5C92GErUulTVXUSoyM0FTCb3pSuDgUGHiFqWm5ELk8EEe7UdhgQDgw5RADHstBKdjiGHiPyji9Mx5BC1Al7GIiIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYCQHsIZ2I/MUe0ol8x7ATZOwhnYj8xR7SifzDsBNE7CGdiPzFHtKJ/MewE0TsIZ2I/MUe0on8x7ATROwhnYj8xR7SifzHsBNE7CGdiPzFHtKJ/MeOQIOMPaQTkb/YQzqRfxh2QgB7SCcif7GHdCLf8TIWERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsNOmGEP6UTkL/aQTu0dw04YYQ/pROQv9pBOxLATNthDOhH5iz2kE7kx7IQJ9pBORP5iD+lEbgw7YYI9pBORv9hDOpEbw06YYA/pROQv9pBO5MaOQMMIe0gnIn+xh3Qihp2wwx7Sichf7CGd2jtexiIiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9hRKUUBrFZ2FEpE/lEcCqxlVnYWSqrCsKNCFgug1wOZme6hxRLsFhFROLAUW6Av0CNzSSb0BXpYilk8SB0YdlRGUYC8vNM9pLtcQH4+z/AQUfMUh4K8ojxPL+kucSG/KJ9neEgVGHZUxmY7HXTqOZ3u/rSIiJpiq7J5gk49pzhhr2bxoPDHsKMyRiMQ0eBT1WrdHYcSETXF2M2ICI138dBqtDAksHhQ+GPYURmdDigsdAccwD00m9l5KBE1TxenQ2FWIbQad/HQarQwZ5nZgSipAns9V6HcXMBkcl+6MhgYdIjIN7kZuTAZTLBX22FIMDDokGow7KiUTseQQ0T+08XpGHJIdXgZi4iIiFSNYYeIiIhUjWGHiIiIVC2kws6CBQswYMAAREZGYt68eV7TXC4Xpk2bhpSUFBgMBsyfP99r+uzZs5GSkoKUlBTMnDmzLZtNREHEukFELQmpG5SHDBmCN998E3Pnzj1r2rJly7Bnzx7s27cPNTU1yMjIQGZmJvr164dNmzZhxYoV+PrrrxEZGYnhw4djxIgRMJlMQVgLImpLrBtE1JKQOrMzaNAgpKenI6Lhr+IBWLVqFaZOnQqtVouEhARkZ2dj5cqVnmk5OTmIjY1FVFQUpkyZghUrVjT5PrW1tXA4HF4PIgpPrBtE1JKQCjvNqaiogF6v9zxPTk5GRUVFi9MaM3fuXMTHx3seiYmJrddwIgoa1g0iAto47IwcORLdu3dv9FFZWdni/BqNxvNvEfF5WkOPPfYYampqPA9f3lvNFAWwWtlZKIUm1o3QpTgUWMus7CyUQl6b3rOzefPmc543KSkJ5eXlGDp0KADg22+/RVJSkte0emdOa0xUVBSioqLOuS1qYrGc7iU9IsLd1URubrBbRXQa60ZoshRbPL2kR2giUJhViNwMFg8KTWFzGWv8+PEwm81wOp2orq7GqlWrMGHCBM+0xYsX45dffkFtbS0WLFiAiRMnBrnFoU9RTgcdwD3Mz+cZHlIP1o3WoTgUT9ABAJe4kF+UzzM8FLJCKuwsW7YMOp0Oq1evxsyZM6HT6bBz504AwKRJk5CWlobU1FQMHToU06dPR3p6OgBg1KhRyM7OxoABA5Ceno7rrrsOY8eODeaqhAWb7XTQqed0uvvUIgoXrBttz1Zl8wSdek5xwl7N4kGhSSMtXahuBxwOB+Lj41FTU4O4uLhgN6fNKAqg13sHHq0WKC9nv1rUtsLxGAzHNgeK4lCgL9B7BR6tRovy+8vZrxa1KV+Pw5A6s0NtS6dz36Oj1bqfa7WA2cygQ0TN08XpUJhVCK3GXTy0Gi3MWWYGHQpZIfWjgtT2cnMBk8l96cpgYNAhIt/kZuTCZDDBXm2HIcHAoEMhjWGHoNMx5BCR/3RxOoYcCgu8jEVERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ35RFMBqZc/oROQ7xaHAWmZlr+gUNAw75DOLxd1xaGame2ixBLtFRBTqLMUW6Av0yFySCX2BHpZiFg5qeww75BNFAfLyTveQ7nIB+fk8w0NETVMcCvKK8jy9o7vEhfyifJ7hoTbHsEM+sdlOB516Tqe7A1EiosbYqmyeoFPPKU7Yq1k4qG0x7JBPjEYgosHeotW6e0onImqMsZsRERrvwqHVaGFIYOGgtsWwQz7R6YDCQnfAAdxDs5m9pRNR03RxOhRmFUKrcRcOrUYLc5aZPaVTm4sMdgMofOTmAiaT+9KVwcCgQ0Qty83Ihclggr3aDkOCgUGHgoJhh/yi0zHkEJF/dHE6hhwKKl7GIiIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ihVqMogNXKntGJyHeKQ4G1zMqe0SmgGHaoVVgsgF4PZGa6hxZLsFtERKHOUmyBvkCPzCWZ0BfoYSlm4aDAYNihgFMUIC8PcLncz10uID+fZ3iIqGmKQ0FeUR5c4i4cLnEhvyifZ3goIBh2KOBsttNBp57T6e5AlIioMbYqmyfo1HOKE/ZqFg46fww7FHBGIxDRYM/Sat09pRMRNcbYzYgIjXfh0Gq0MCSwcND5Y9ihgNPpgMJCd8AB3EOzmb2lE1HTdHE6FGYVQqtxFw6tRgtzlpm9pVNARAa7AaROubmAyeS+dGUwMOgQUctyM3JhMphgr7bDkGBg0KGAYdihVqPTMeQQkX90cTqGHAo4XsYiIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ihoFMUwGp1D4mIfKU4FFjLrFAcLB7UPIYdCiqLBdDrgcxM99BiCXaLiCgcWIot0BfokbkkE/oCPSzFLB7UNIYdChpFAfLyAJfL/dzlAvLzeYaHiJqnOBTkFeXBJe7i4RIX8ovyeYaHmsSwQ0Fjs50OOvWcTndP6URETbFV2TxBp55TnLBXs3hQ4xh2KGiMRiCiwR6o1QIGQ3DaQ0ThwdjNiAiNd/HQarQwJLB4UOMYdihodDqgsNAdcAD30Gx2jyciaoouTofCrEJoNe7iodVoYc4yQxfH4kGNiwx2A6h9y80FTCb3pSuDgUGHiHyTm5ELk8EEe7UdhgQDgw41i2GHgk6nY8ghIv/p4nQMOeQTXsYiIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVC6mwM2PGDKSnp2PQoEEYNmwYPv30U880l8uFadOmISUlBQaDAfPnz/ead/bs2UhJSUFKSgpmzpzZ1k0noiBh3SCiloTU7+yMHDkSM2fORHR0NL766iuMGjUKBw8eRKdOnbBs2TLs2bMH+/btQ01NDTIyMpCZmYl+/fph06ZNWLFiBb7++mtERkZi+PDhGDFiBEwmU7BXiYhaGesGEbUkpM7s/O53v0N0dDQAYMCAAXA6nTh8+DAAYNWqVZg6dSq0Wi0SEhKQnZ2NlStXeqbl5OQgNjYWUVFRmDJlClasWNHk+9TW1sLhcHg9iCg8sW4QUUtCKuycaeHChUhJSYHuvz+tW1FRAb1e75menJyMioqKFqc1Zu7cuYiPj/c8EhMTW2ktKNAUBbBa3UOihlg3qCmKQ4G1zArFweLRHrVp2Bk5ciS6d+/e6KOystLzuk8++QRPPfWU5y+wehqNxvNvEfF5WkOPPfYYampqPI8z35tCl8UC6PVAZqZ7aLEEu0XUFlg36HxZii3QF+iRuSQT+gI9LMUsHu1Nm96zs3nz5hZfs3HjRtx111344IMPkJaW5hmflJSE8vJyDB06FADw7bffIikpyWtavTOnNSYqKgpRUVHnuBYUDIoC5OUBLpf7ucsF5Oe7OxFlv1rqxrpB50NxKMgryoNL3MXDJS7kF+XDZDCxX612JKQuY23atAmTJk3Ce++9h0GDBnlNGz9+PMxmM5xOJ6qrq7Fq1SpMmDDBM23x4sX45ZdfUFtbiwULFmDixInBWAVqJTbb6aBTz+l095ZO7RvrBjXHVmXzBJ16TnHCXs3i0Z6E1LexcnNzUVtbi7vuusszbunSpRgwYAAmTZqEHTt2IDU1FQAwffp0pKenAwBGjRqF7OxsDBgwAAAwceJEjB07tu1XgFqN0QhERHgHHq0WMBiC1yYKDawb1BxjNyMiNBFegUer0cKQwOLRnmikpQvV7YDD4UB8fDxqamoQFxcX7OZQEywW96Urp9MddMxmIDc32K2iQAjHYzAc29xeWYotyC/Kh1Oc0Gq0MGeZkZvB4qEGvh6HIXVmh6g5ubnue3TsdvcZHd6rQ0S+yM3Ihclggr3aDkOCgffqtEMMOxRWdDqGHCLyny5Ox5DTjoXUDcpEREREgcawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ6qlKIDV6h4SEflKcSiwllmhOFg81IJhh1TJYgH0eiAz0z20WILdIiIKB5ZiC/QFemQuyYS+QA9LMYuHGjDskOooCpCXB7hc7ucuF5CfzzM8RNQ8xaEgrygPLnEXD5e4kF+UzzM8KsCwQ6pjs50OOvWcTsBuD057iCg82KpsnqBTzylO2KtZPMJdpD8v/uSTT/DJJ59AURRER0dj0KBBuOmmm9C3b9/Wah+R34xGICLCO/BotYDBELw2tXesHRQOjN2MiNBEeAUerUYLQwKLR7jz6czOypUr0a9fP7z44ouIjo7GyJEj0b9/f+zevRuZmZmYPHkyfvjhh9ZuK5FPdDqgsNAdcAD30Gx2j6e2xdpB4UQXp0NhViG0Gnfx0Gq0MGeZoYtj8Qh3Pp3Z+eKLL7B582b06NGj0enr16/H5s2bMX78+IA2juhc5eYCJpP70pXBwKATLL7WDpPJ1MYtI2pcbkYuTAYT7NV2GBIMDDoqoRERCXYjgs3hcCA+Ph41NTWIi4sLdnOI2p1wPAbDsc1EauPrcejXPTsAYLfbceDAAdTV1XnGXX/99efWSiJqN1g7iChY/Ao7Dz74IJYtW4a0tDRo/3tDhEajYcEiomaxdhBRMPkVdt577z2UlZUhJiamtdpDRCrE2kFEweTX7+zo9Xp07NixtdpCRCrF2kFEweTXmZ0XX3wRN954I8aMGYNOnTp5xv/lL38JeMOISD1YO4gomPwKO3PnzsXBgwfx5Zdfel13JyJqDmsHEQWTX2GnuLgY+/btY5EiIr+wdhBRMPl1z06/fv3wyy+/tFZbiEilWDuIKJj8OrPTpUsXDBkyBCaTyeu6+3PPPRfwhhGRerB2EFEw+RV20tLSkJaW1lptISKVYu0gomBidxHgz74ToCiAzebuMZ39aLW9cDwGw7HNFFiKQ4GtygZjNyP70AoSX49Dn+7ZefPNN5ud/v3332PLli3+tZAoRFgsgF4PZGa6hxZLsFukHqwdpFaWYgv0BXpkLsmEvkAPSzELRyjz6TLW559/jqeeegrjxo3DVVddhd69e+PEiRMoKSnBmjVrUFZWBrPZ3NptJQo4RQHy8gCXy/3c5QLy8909pvMMz/lj7SA1UhwK8ory4BJ34XCJC/lF+TAZTDzDE6J8voz1/fffY8GCBdiwYQMURUFMTAwGDhyIcePG4YYbbgjrr5TydHT7ZbW6z+g0Nn7UqDZvjir5UjvC8RgMxzZTYFjLrMhccnbhsE62YlTyqLZvUDvm63HIe3bAotWeKYr70lX9mR0A0GqB8nKe2WlL4XgMhmObKTAUhwJ9gd5zZgcAtBotyu8v55mdNhbQe3aI1EqnAwoL3QEHcA/NZgYdImqaLk6HwqxCaDXuwqHVaGHOMjPohDC/vnpOpEa5ue57dOx2wGBg0CGiluVm5MJkMMFebYchwcCgE+IYdojgDjgMOUTkD12cjiEnTPh1GevIkSOt1AwiUjPWDiIKJr/CjtFoxJ///Gd89dVXrdUeIlIh1g4iCia/wo7dbkd6ejrGjRuHkSNH4s0334TT6WytthGRSrB2EFEwnfNXzz/88EPcfffdcDqd+Mtf/oL7778fsbGxgW5fm+BXSInaTmO1w+l0ht0xyLpBFHyt9tXzo0eP4tVXX8VDDz2ESy+9FK+++iq+//57jB079rwaTETqxtpBRMHi17expk6divfeew+33HIL3n33XU8vxjfffDPS09NbpYFEFP5YO4gomPwKOwaDASUlJYiPjz9r2qeffhqwRhGRurB2EFEwsbsI8No7UbCF4zEYjm0mUht2F0FEREQEhh0iIiJSOYYdIj8pCmC1uodERL5QHAqsZVYoDhaOYGDYIfKDxQLo9UBmpntosQS7RUQU6izFFugL9Mhckgl9gR6WYhaOtsawQ+QjRQHy8gCXy/3c5QLy83mGh4iapjgU5BXlwSXuwuESF/KL8nmGp40x7BD5yGY7HXTqOZ2A3R6c9hBR6LNV2TxBp55TnLBXs3C0JYYdIh8ZjUBEgyNGqwUMhuC0h4hCn7GbEREa78Kh1WhhSGDhaEsMO0Q+0umAwkJ3wAHcQ7PZPZ6IqDG6OB0Kswqh1bgLh1ajhTnLDF0cC0db8usXlInau9xcwGRyX7oyGBh0iKhluRm5MBlMsFfbYUgwMOgEAcMOkZ90OoYcIvKPLk7HkBNEvIxFREREqsawQ0RERKoWUmHn8ccfx4ABAzB48GAMHjwYq1at8kxzuVyYNm0aUlJSYDAYMH/+fK95Z8+ejZSUFKSkpGDmzJlt3XQiChLWDSJqkYSQn3/+2fPv7777Trp06SLV1dUiIrJ48WLJzMyUuro6qaqqEr1eL3v37hURkY0bN8oll1wix44dk5MnT8qQIUNk3bp1Pr9vTU2NAJCampqArg8R+eZ8jkHWDaL2y9fjMKTO7HTt2tXz76NHj0Kj0cD1319xW7VqFaZOnQqtVouEhARkZ2dj5cqVnmk5OTmIjY1FVFQUpkyZghUrVgRjFYiojbFuEFFLQirsAMArr7yCtLQ0ZGRkoLCwEN26dQMAVFRUQK/Xe16XnJyMioqKFqc1pra2Fg6Hw+tBROGLdYOImtOmYWfkyJHo3r17o4/KykoAwH333YfS0lJs2bIFs2fPRlVVlWd+jUbj+beIeC27uWkNzZ07F/Hx8Z5HYmJiIFaPiFoB6wYRna82DTubN2/G4cOHG300LByDBg1C3759sWHDBgBAUlISysvLPdO//fZbJCUltTitMY899hhqamo8j/qCSUShh3WDiM5XSF3G2rt3r+ff+/fvx86dO3HJJZcAAMaPHw+z2Qyn04nq6mqsWrUKEyZM8ExbvHgxfvnlF9TW1mLBggWYOHFik+8TFRWFuLg4rwcRhSfWDSJqSUj9gvKjjz4Ku92ODh06IDIyEvPmzUN6ejoAYNKkSdixYwdSU1MBANOnT/dMGzVqFLKzszFgwAAAwMSJEzF27NjgrAQRtSnWDSJqiUZaulDdDjgcDsTHx6OmpoZ/rREFQTgeg+HYZiK18fU4DKnLWERERESBxrBD1EoUBbBa3UMiIl8pDgXWMisUB4tHoDDsELUCiwXQ64HMTPfQYgl2i4goHFiKLdAX6JG5JBP6Aj0sxSwegcCwQxRgigLk5QH//RFfuFxAfj7P8BBR8xSHgryiPLjEXTxc4kJ+UT7P8AQAww5RgNlsp4NOPacTsNuD0x4iCg+2Kpsn6NRzihP2ahaP88WwQxRgRiMQ0eDI0moBgyE47SGi8GDsZkSExrt4aDVaGBJYPM4Xww5RgOl0QGGhO+AA7qHZ7B5PRNQUXZwOhVmF0GrcxUOr0cKcZYYujsXjfIXUjwoSqUVuLmAyuS9dGQwMOkTkm9yMXJgMJtir7TAkGBh0AoRhh6iV6HQMOUTkP12cjiEnwHgZi4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHKAQoCmC1uodERL5SHAqsZVYoDhaP5jDsEAWZxQLo9UBmpntosQS7RUQUDizFFugL9Mhckgl9gR6WYhaPpjDsEAWRogB5eYDL5X7ucgH5+TzDQ0TNUxwK8ory4BJ38XCJC/lF+TzD0wSGHaIgstlOB516TidgtwenPUQUHmxVNk/QqecUJ+zVLB6NYdghCiKjEYhocBRqtYDBEJz2EFF4MHYzIkLjXTy0Gi0MCSwejWHYIQoinQ4oLHQHHMA9NJvd44mImqKL06EwqxBajbt4aDVamLPM0MWxeDQmMtgNIGrvcnMBk8l96cpgYNAhIt/kZuTCZDDBXm2HIcHAoNMMhh2iEKDTMeQQkf90cTqGHB/wMhYRERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww5RmFEUwGp1D4mIfKU4FFjLrFAc7a94MOwQhRGLBdDrgcxM99BiCXaLiCgcWIot0BfokbkkE/oCPSzF7at4MOwQhQlFAfLyAJfL/dzlAvLzeYaHiJqnOBTkFeXBJe7i4RIX8ovy29UZHoYdojBhs50OOvWcTsBuD057iCg82KpsnqBTzylO2KvbT/Fg2CEKE0YjENHgiNVqAYMhOO0hovBg7GZEhMa7eGg1WhgS2k/xYNghChM6HVBY6A44gHtoNrvHExE1RRenQ2FWIbQad/HQarQwZ5mhi2s/xSMy2A0gIt/l5gImk/vSlcHAoENEvsnNyIXJYIK92g5DgqFdBR2AYYco7Oh0DDlE5D9dnK7dhZx6vIxFREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKrGsENERESqxrBDREREqsawQ0RERKoWkmFnw4YN0Gq1mDdvnmecy+XCtGnTkJKSAoPBgPnz53vNM3v2bKSkpCAlJQUzZ85s6yYTUZCxbhBRU0KuI9CjR4/ikUcewe9+9zuv8cuWLcOePXuwb98+1NTUICMjA5mZmejXrx82bdqEFStW4Ouvv0ZkZCSGDx+OESNGwGQyBWktiKgtsW4QUXNC7szOAw88gOnTp6N79+5e41etWoWpU6dCq9UiISEB2dnZWLlypWdaTk4OYmNjERUVhSlTpmDFihVNvkdtbS0cDofXg0iNFAWwWt1DNWPdIAocxaHAWmaF4lBP4QipsLN27VocOXIE48aNO2taRUUF9Hq953lycjIqKipanNaYuXPnIj4+3vNITEwM4FoQhQaLBdDrgcxM99BiCXaLWgfrBlHgWIot0BfokbkkE/oCPSzF6igcbRp2Ro4cie7duzf6qKysxKOPPorXXnutyfk1Go3n3yLi87SGHnvsMdTU1HgelZWV57hGRKFJUYC8PMDlcj93uYD8/PA8w8O6QdQ2FIeCvKI8uMRdOFziQn5RvirO8LTpPTubN29uctpnn32GgwcPYtiwYQCAw4cP44MPPsBPP/2Ep556CklJSSgvL8fQoUMBAN9++y2SkpIAwDOt3pnTGhMVFYWoqKgArBFRaLLZTgedek4nYLcDOl1w2nSuWDeI2oatyuYJOvWc4oS92g5dXJgVjoYkRE2ePFleffVVz/OFCxfKNddcI3V1dVJVVSVJSUmyZ88eERGxWq1y6aWXyrFjx+TkyZMyZMgQWbt2rc/vVVNTIwCkpqYm4OtBFAyVlSIRESLA6YdW6x4figJ1DLJuEJ27yppKiXgqQjALnof2Ka1U1oRo4RDfj8OQumenOZMmTUJaWhpSU1MxdOhQTJ8+Henp6QCAUaNGITs7GwMGDEB6ejquu+46jB07NsgtJgoenQ4oLAS0WvdzrRYwm8PvrM75Yt0g8p0uTofCrEJoNe7CodVoYc4yh/9ZHQAakRYuVLcDDocD8fHxqKmpQVxcXLCbQxQwiuK+dGUwhHbQCcdjMBzbTOQLxaHAXm2HIcEQ8kHH1+Mw5H5nh4gCR6cL7ZBDRKFHF6cL+ZDjr7C5jEVERER0Lhh2iIiISNUYdoiIiEjVGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHaIiIhI1Rh2iIiISNUYdoiIiEjVGHaIiIhI1Rh2iAgAoCiA1eoeEhH5QnEosJZZoThCu3Aw7BARLBZArwcyM91DiyXYLSKiUGcptkBfoEfmkkzoC/SwFIdu4WDYIWrnFAXIywNcLvdzlwvIz+cZHiJqmuJQkFeUB5e4C4dLXMgvyg/ZMzwMO0TtnM12OujUczoBuz047SGi0GersnmCTj2nOGGvDs3CwbBD1M4ZjUBEg0qg1QIGQ3DaQ0Shz9jNiAiNd+HQarQwJIRm4WDYIWrndDqgsNAdcAD30Gx2jyciaowuTofCrEJoNe7CodVoYc4yQxcXmoUjMtgNIKLgy80FTCb3pSuDgUGHiFqWm5ELk8EEe7UdhgRDyAYdgGGHiP5Lp2PIISL/6OJ0IR1y6vEyFhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOEflFUQCr1T0kIvKV4lBgLbNCcbR98WDYISKfWSyAXg9kZrqHFkuwW0RE4cBSbIG+QI/MJZnQF+hhKW7b4sGwQ0Q+URQgLw9wudzPXS4gP59neIioeYpDQV5RHlziLh4ucSG/KL9Nz/Aw7BCRT2y200GnntMJ2O3BaQ8RhQdblc0TdOo5xQl7ddsVD4YdIvKJ0QhENKgYWi1gMASnPUQUHozdjIjQeBcPrUYLQ0LbFQ+GHSLyiU4HFBa6Aw7gHprN7vFERE3RxelQmFUIrcZdPLQaLcxZZuji2q54RLbZOxFR2MvNBUwm96Urg4FBh4h8k5uRC5PBBHu1HYYEQ5sGHYBhh4j8pNMx5BCR/3RxujYPOfV4GYuIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVI1hh4iIiFSNYYeIiIhUjWGHiIiIVC2kwk5OTg50Oh0GDx6MwYMHY/r06Z5pLpcL06ZNQ0pKCgwGA+bPn+817+zZs5GSkoKUlBTMnDmzrZtORI1QFMBqdQ9bC+sGkfooDgXWMisUR2CKR2RAlhJAjz76KO69996zxi9btgx79uzBvn37UFNTg4yMDGRmZqJfv37YtGkTVqxYga+//hqRkZEYPnw4RowYAZPJFIQ1ICIAsFiAvDzA5QIiIoDCQiA3t3Xei3WDSD0sxRbkFeXBJS5EaCJQmFWI3IzzKx4hdWanOatWrcLUqVOh1WqRkJCA7OxsrFy50jMtJycHsbGxiIqKwpQpU7BixYoml1VbWwuHw+H1IKLAUZTTQQdwD/PzW/cMT2NYN4jCi+JQPEEHAFziQn5R/nmf4Qm5sPPSSy9h4MCByMrKwpdffukZX1FRAb1e73menJyMioqKFqc1Zu7cuYiPj/c8EhMTA78iRO2YzXY66NRzOgG7vXXej3WDSB1sVTZP0KnnFCfs1edXPNr0MtbIkSOxd+/eRqft3LkTc+bMwYUXXoiIiAj861//wu9+9zvYbDZ07twZAKDRaDyvFxGv+Zub1tBjjz2GBx54wPPc4XCwcBEFkNHovnR1ZuDRagGDwf9lsW4QtR/GbkZEaCK8Ao9Wo4Uh4RyKxxna9MzO5s2bcfjw4UYfiYmJ6Nu3LyIi3E364x//iLi4OJSWlgIAkpKSUF5e7lnWt99+i6SkpBanNSYqKgpxcXFeDyIKHJ3OfY+OVut+rtUCZrN7vL9YN4jaD12cDoVZhdBq3MVDq9HCnGWGLu4ciseZJIRUVlZ6/r1161bp1q2bHDlyREREFi5cKNdcc43U1dVJVVWVJCUlyZ49e0RExGq1yqWXXirHjh2TkydPypAhQ2Tt2rU+v29NTY0AkJqamsCuEFE7V1kpYrW6h805n2OQdYNIfSprKsVaZpXKmuaLh6/HYUh9GysnJwc//vgjtFotoqOjsXr1asTHxwMAJk2ahB07diA1NRUAMH36dKSnpwMARo0ahezsbAwYMAAAMHHiRIwdOzY4K0FEHjrduZ3N8QfrBpH66OJ053825wwakRYuVLcDDocD8fHxqKmp4alpoiAIx2MwHNtMpDa+Hoch920sIiIiokBi2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlULqb6xgqW+xwyHwxHklhC1T/XHXjj1XsO6QRR8vtYOhh0AR48eBQAkJiYGuSVE7dvRo0c9nXiGOtYNotDRUu1gR6AAXC4Xvv/+e3Tp0gUajabJ1zkcDiQmJqKyslKVHf9x/cJXuK+biODo0aPo06cPIiLC4+q6r3UDCP/PpzlqXjeA6xfqfK0dPLMDICIiAjqd713Jx8XFheVO4SuuX/gK53ULlzM69fytG0B4fz4tUfO6AVy/UOZL7QiPP6GIiIiIzhHDDhEREakaw44foqKi8OSTTyIqKirYTWkVXL/wpeZ1UwM1fz5qXjeA66cWvEGZiIiIVI1ndoiIiEjVGHaIiIhI1Rh2iIiISNUYdnxks9lw1VVXITU1FcOGDcOePXuC3SS/3HfffUhOToZGo8Hu3bs94w8dOoSxY8fCaDSif//++OyzzzzTjh8/jltvvRUGgwGpqal45513gtF0n5w8eRJ/+MMfkJqaisGDB2Ps2LEoLy8HoJ51vO666zBw4EAMHjwYI0eOxJdffglAPeunVqwdobvfsW6E//r5TMgno0ePloULF4qIyOrVq+WKK64IboP8tHHjRqmsrBS9Xi+7du3yjL/rrrvkySefFBGR7du3S1JSkvz6668iIvLUU0/J5MmTRUTkwIED0qtXL6murm7rpvvkxIkT8uGHH4rL5RIRkVdffVXGjBkjIupZx59//tnz73/9619y2WWXiYh61k+tWDtCd79j3XhSRMJ7/XzFsOODH3/8UeLj4z07gsvlkl69eklZWVlwG3YOGhas2NhYOXTokOf50KFDxWq1iojIJZdcItu3b/dMGz9+vKdoh7odO3ZISkqKiKhzHRctWiRDhgwREXWun1qwdriFy37HumEVkfBdv+awuwgfVFZWok+fPoiMdG8ujUaDpKQkVFRUIDk5ObiNOw9VVVVwuVzo0aOHZ1xycjIqKioAABUVFdDr9Y1OC3WvvPIKbrzxRtWt45133gmr1QoAWLdunerWT21YO86eFspYN8Jz/XzBe3Z81LCjP1HJzxO1tF5nTg+XdX7mmWdgs9kwZ84cAOpaxyVLlqCyshKzZ8/G9OnTAahr/dSItSM81pl1I3zXzxcMOz5ITEyEoiioq6sD4P7gKysrkZSUFOSWnZ9u3boBAH766SfPuG+//dazXklJSZ6b9RpOC1UvvPAC3nnnHaxduxYxMTGqXEcAmDx5sucvNUB966cWrB1nTwtFrBvqWL/mMOz4oGfPnrjsssuwbNkyAMDbb7+N5OTksD4NXW/8+PF47bXXAAA7duzADz/8gBEjRpw1raysDBs3bsTvf//7oLW1JS+99BJWrFiBjz76CF27dvWMV8M6OhwOfP/9957n//rXv9CtWzckJCSoYv3UirUj9Pc71o3wXT+/tP1tQuGppKRErrjiCjEajTJkyBDZvXt3sJvkl7/85S/St29f0Wq10qtXL89NeD/88IOMGTNGDAaDXHLJJbJhwwbPPMeOHZPs7GxJSUkRo9Eoq1evDlbzW1RZWSkA5OKLL5ZBgwbJoEGDZNiwYSKijnWsqKiQoUOHSv/+/WXgwIFyzTXXyM6dO0VEHeunZqwdobvfsW6E9/r5g31jERERkarxMhYRERGpGsMOERERqRrDDhEREakaww4RERGpGsMOERERqRrDDhEREakaww4RERGpGsMOhbUHHngAK1eu9Hu+Bx98ECtWrGiFFhFRqGPdaH/4o4IUtr777jtce+212LNnz1md2rXk0KFDGDlyJPbu3YuICGZ+ovaCdaN94qdFIaWkpAQ6nQ4HDhwAADz//PO4/vrrG+11d8GCBRg3bpynYM2aNQu33norsrKyYDAYkJ2djZ07dyIzMxMXX3wxHnjgAc+8PXv2xEUXXYRPPvmkbVaMiFoN6wa1hGGHQkq/fv3w/PPPIzs7Gxs2bMD8+fOxZMmSRv8C27BhA6666iqvcV988QWWL1+O0tJSlJaW4tFHH8XatWuxa9cuLFu2DPv27fO89qqrrmLRIlIB1g1qCcMOhZxbb70VGRkZMJlMWLp0Kbp3797o6xRFQe/evb3GmUwmxMfHQ6vVYuDAgRgzZgyioqIQGxuLtLQ0z19+ANC7d28oitKq60JEbYN1g5rDsEMhp66uDrt370ZCQgK+++67Jl8XExODEydOeI3r1KmT599arfas53V1dZ7nJ0+eRHR0dABbTkTBwrpBzWHYoZDz6KOPIi0tDZs2bcKDDz4Iu93e6OsGDhyIkpKSc36fvXv3YtCgQec8PxGFDtYNag7DDoWUoqIirFu3Dq+99hqMRiNeeOEFjB8/HidPnjzrtePGjcPatWvP6X1EBJ988gluuumm820yEQUZ6wa1hF89p7DlcrkwdOhQvPfee9DpdH7Nu27dOixfvhxLly5tpdYRUShi3WifeGaHwlZERATMZjPKy8v9nrempgbPPvts4BtFRCGNdaN94pkdIiIiUjWe2SEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVWPYISIiIlVj2CEiIiJVY9ghIiIiVfv/SdYfn0hf1s0AAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAAG2CAYAAACAm6lmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEY0lEQVR4nO3deXhU5d3/8c9kkBCWBNmFSQbIhEVBLCquKERpqMXaKuBe0LQJau1jVVyoFvAS+dmqpa5PqBEUrKLWq1Yq8LiExUcQbFygSEggkYwFkVATkM1kvr8/5slIlpMFksxM8n5dV65h5sxy32fO+fKZc+5zjsvMTAAAAKghJtwNAAAAiFQEJQAAAAcEJQAAAAcEJQAAAAcEJQAAAAcEJQAAAAcEJQAAAAcEJQAAAAcEJQAAAAcEpRa2cOFCeTyecDejhqlTp+q6665rsvdzuVx65513muz9Gsrj8WjhwoUt/rn9+/fXs88+22zvv3LlSrlcLpWXl0uSZs2apfPPP7/ZPu9YReryHc2aet1sCdWX1+MVrnlw3333acyYMS3+uS2xfh9ds4qKiuRyuVRQUNCsn3kswvV/ydEISo1UVFSkqVOnqm/fvurQoYMGDRqkX//61/L7/Q16/ZVXXqmPP/64mVsZXQoKCuRyuVRUVBTuphyzDRs26Nprr22S96qtOJ977rnauXOn2rVr1ySf0RSuu+46TZ06NdzNiChjxoyRy+WSy+VS586dNWrUKK1YsaLBrw9X0G9tzj//fM2aNSvczThmd955p/7+9783yXs51demrFlN4Z133pHL5Qp3M2pFUGqEvLw8nXHGGSopKdGSJUuUn5+v559/XuXl5frjH//YoPeIi4tTz549HacfOXKkqZqLJtDQ76Nnz56Ki4trtna0b99effr0abb3R9O57bbbtHPnTn388ccaOXKkLrvssoj8pY6WZ2b67rvv6n1e586d1a1bt2ZtS3PXrNaEoNQIt9xyi5KTk/X3v/9do0ePVmJios455xw9/fTTuv/++yVJH3zwgcaOHauuXbuqZ8+euvrqq7Vnz57Qe1TfNTF16lRde+21uuuuu9SjRw9NmjRJkrRs2TINHz5csbGx8vl8euGFF+pt37Zt23TZZZcpPj5eCQkJuvjii/Wf//xHkpSdna3TTjtNnTp1ktfr1f3331/nZvFvv/1Wv/rVr9SnTx/FxcVp5MiR+vDDD0Ntrr4ZfMyYMbrvvvtqfa+vvvpKEydOVJ8+fdSlSxddcMEF+uSTT0LTU1JSJEkDBgyQy+UK/RI8cOCAbrnlFvXs2VNdu3bVhAkTqvwqOnLkiDIyMtS5c2clJiZq0aJF9c6j/v376+GHH9all16quLg4DRkyRCtXrgxNr/x+XnzxRQ0cOFC9e/eWJOXn5+uHP/yh4uLi1KtXL02fPr3K/Ku+62379u269NJL1blzZ/Xt21e/+tWvdODAgXrn78KFCzVnzhytWrUqtGWiqKio3l0ZFRUVuv/+++XxeNSlSxeNGTNGn332meN8qHy/t956S4MGDVJcXJwuv/xyffPNN6Hn1LXMzJo1Sy+++KKef/75UDuP9tprr2nAgAHq2rWrbrzxRh0+fLje76a16NSpk/r06aOUlBQ9+eSTcrvdeuedd/T//t//06hRo6o8d9++ferUqZNWrlypMWPG6Msvv9QNN9wgl8tVY6vifffdp27duqlv37567LHHqkxbv369zjnnHMXGxioxMVG///3vq0x3uVxauHChLr74YnXs2FGnn356ncuHJJWXl+t3v/udkpKS1KFDBw0dOlRvvvmmJGnLli265JJL1KNHD3Xt2lWXXHKJCgsL63y/l19+OVTTPB6PHnzwQUm176arbxfu3LlzNXToUHXs2FEpKSl6/PHHQ9OmTp2q//3f/9Xs2bPlcrnUv3//Km04+eSTFRcXp2HDhum1116r8r6vvvqqvF6vOnXqpJ///Oc6dOhQnX2q3EX2hz/8Qb169dKJJ56oGTNm6OhrzbtcLj377LNKTU1VXFycli5dqvLyct11113q1auX4uLiNG7cOOXn59d430oNWb+d5q9Tfa1vuMA777yjM844Q3FxcRo0aJCeeuqpOudFfbW1rmWmqKhI48aNC82vyuW1kt/vb9Sy2+QMDfL111+by+Wyl19+uc7nrVixwpYsWWL5+fm2YcMGO++882zSpEmh6QsWLLB+/fqF7k+ZMsU6depkv/71r23Lli22detWKywstPbt29t9991nW7ZssSeeeMLcbre9//77jp976NAhGzhwoE2YMME++ugj+/zzz+2pp56yr7/+2szM5s+fb2+//bZt377d3nrrLevTp4899dRTVdpx7bXXhu5fc801NnjwYFuxYoUVFBTYa6+9Zh988EGtzzUzu/DCC+23v/1t6L4ke/vtt83MrLCw0P70pz/ZZ599Znl5eZaZmWmJiYl28OBBMzNbu3atSbL169fbzp07bd++fWZmdv3119u4ceNsw4YNtmXLFrvhhhts2LBhVl5ebmZms2bNsj59+tiKFSvsk08+sQsvvNA6dOhgCxYscJxPXq/Xunbtas8884x9/vnn9qtf/coSEhLsm2++CX0/sbGxdvHFF1tubq5t3LjRysvLbejQoTZhwgT77LPP7K233rJevXrZnDlzqrzvn//8ZzMzO3z4sPl8PvvNb35jW7ZssfXr19uoUaNs2rRp9c7fAwcO2G233WbnnHOO7dy503bu3Gnl5eWWk5Njkuy7774zM7OZM2faeeedF3q/+++/30aOHGmrV6+2/Px8mzFjhvXq1ctKS0trnQ+V73fGGWfYBx98YGvXrrWhQ4falClTQs+pa5nZt2+fXXHFFTZ58uRQOyvnX4cOHULz6r333rNu3brZ448/7vidtCbV1wMzs4SEBHv88cfN7/eb2+22LVu2hKYtWLDAvF6vBQIBKykpsZNOOsnmzZtnO3futJKSEjMLrm9dunSxu+66y/Ly8iwrK8sk2aeffmpmZmVlZda9e3dLT0+3zZs321/+8hfr2LGjvfjii6HPkWQDBgywv/3tb5aXl2cTJkywkSNH1tmXGTNmWJ8+feyvf/2rFRQU2FtvvWXLli0zM7MNGzZYdna2ff7557Zx40a77LLLbNSoUaHXVl9eV6xYYSeccII9+uijtnXrVvvggw/s2WefrfW5lfOlep08uuY8+uijtmbNGtu+fbstWbLEOnXqZP/4xz/MzOybb76xUaNG2R133GE7d+603bt3m5nZu+++az169LBXXnnFtm3bZi+++KLFxcXZ2rVrzcysoKDA2rVrZw888IBt2bLFHnjgAevcubNdeOGFjvNo5syZ1rlzZ/vZz35mmzZtsldffdW6dOlSpQZJsn79+tmrr75q27Zts6+++srmzJljvXr1sqVLl9rGjRvt0ksvtSFDhoRqW2PX77rmr1N9PbpmFRYWmiTLz883M7MtW7ZYly5d7Nlnn7Vt27bZm2++aT179qzz/7/6amtdy0x5ebm98sorJilUTw4cOBCaf41ddpsaQamB1q1bZ5Ls448/btTr1q5da+3atQutALUVgIEDB1pFRUXosbvvvtvOPPPMKu9z5ZVX2sSJEx0/57nnnrOePXvat99+26B2zZ0718aOHVulHZWFaNu2bSbJNmzYUOtrGxuUqisvL7dOnTrZqlWrzMwsPz/fJFlhYWHoOZVhce/evaHHjhw5Yh07drQ1a9aYmVmvXr3smWeeCU3//PPPTVK9QenKK6+s0pakpCR74oknzCz4/VRvy7Jly6xDhw6h/7jMzJ555hnr0aNHlfetLDrPP/+8nX766VU+93//93+tffv2Vl5eXu/8/e1vf1ujONcVlA4ePGhxcXG2cePGKq9JSUmxRYsW1foZle9X+R+fmdnbb79t7dq1s//85z+1vqb6MnPttddWCVZmwfnncrls165doccyMjLsiiuuqPU9W5uj14MjR47Y3LlzLSYmJlQ30tLSbMaMGaHnjx07tsp6069fvxrL75QpU+zkk0+u8tigQYNCy+wzzzxjffv2rRI07r77bjvjjDNC9yXZww8/HLr/wQcfmKTQf5rVHThwwGJjY+3VV19tUL937txpkuyLL74ws5rL6wUXXGC33HJLra89lqBUXWZmpt1www2h++edd57NnDmzynPGjh0bmmeVfvnLX1p6erqZmd1111121llnVZl+1lln1RuU4uLiqtSp3/72t1XWf0k2a9asKq/r3bt3lR+qJSUlFhcXZ0uXLg29b2PW77rmb2311azuoHTDDTfYHXfcUeX5c+bMsYsuushxXtRXW6urvsy8/fbbVtu2m8Yuu82BXW9NzO/36/rrr9fAgQPVpUsXXXTRRSovL9euXbscXzNixAjFxHz/VeTl5enss8+u8pxzzjlHeXl5kqSHHnpInTt3Dv1J0qZNmzRq1Ch17Nix1s/44IMP9MMf/lD9+vVT586dNWvWLBUXF9f63H/961/q1KmTzjjjjEb13cl3332nGTNmaOjQoeratasSEhJ04MABx8+vbMN3332nxMTEUD9PPPFEHTx4UNu3b1dpaal2795dZVfGkCFD1KVLl3rbc/Rr3G63Tj/99NC8laQTTzyxyub6vLw8paSkVBkzcM4552jPnj3au3dvjfffuHGjPv300yrf0bhx43TkyBF9+eWXTT5/t23bpoMHD+rss8+u8pnbtm3T9u3b63zt0fNi1KhRKi8v17Zt2yQ1bpk5Ws+ePUO7LCWpT58+2r179zH2Lvr8/ve/V+fOndWxY0f94Q9/0DPPPKPTTjtNUnC30OLFi2VmKi4u1qpVq/Tzn/+83vccNmxYlftHz9O8vDydfvrpVQb6H10vKg0fPrzK6yVp9+7d2rFjR5Xl5sUXX1RBQYEOHz7seMRXaWmpbrnlFqWkpCg+Pl4+n0+SHJePTZs2NenRY//4xz90/vnnq3fv3urcubOee+65epfNjRs3avr06VX6unDhwtA6kpeXV2PXaPX7tfH5fDrxxBOrvKb6vP/BD34Q+ndpaam++uqrKjW+W7duGjx4cI3XSQ1bv5t6/m7cuFFPPvlklc974IEHGlVPqtfWxi4zR3NadltK5BxCE+GSk5PlcrmUl5cXKnq1mTp1qo4cOaI///nP6tevnwoLC3XJJZfUOYCverixo/Zv12batGmaPHlyg1+zb98+/fjHP9bkyZP1wAMPqFu3bvrLX/7ieHSNmdV59EFMTEyNz6urfw8//LCef/55Pf744xo8eLA6dOigUaNG1fma/fv3Ky4urspYpkq9evVSIBCQpGM6SqK+1zT2+6hu//79uuCCC5SVlVVj2kknnaRPPvmkSY/u2L9/v6TgWI+uXbtWmVbfgNCj23H0vxu7zBzthBNOqPEZld9XW/DLX/5Sv/nNb9S5c+caA/B/+tOf6qabbtKqVau0du1ajRo1SoMGDar3Peuapw1dPo9+j8rvOhAIqG/fvlXWs969e9c73uiOO+7QunXrNG/ePA0YMEDl5eUaMWJEgwYqV1f5I/HoftT1Ptu3b9fll1+uu+++W/PmzVNCQoIefvjhegfM79+/X4888ojS0tKqPF45oLm+uuekIa9x+gHbEMezfh/PZ95+++268cYbqzxe31G3dc2L41lmnJbdlkJQaqAePXpo7NixmjdvniZPnlxjgSgtLVVCQoLWrVunxYsX66KLLpIUPASzsYYMGaL33nuvymNr167VkCFDJAVXjuoryPDhw/Xiiy/qwIEDNVbKvLw8ffPNN3r44YdDK1pdKX7YsGHav3+/Pvroo1q3evTs2VMfffRR6P6RI0eUl5ensWPH1vp+69at06RJk3TFFVeEPrtykLn0/UpQUVERemzEiBE6cOCADh48WOXXxNF69eql9evXh36t5eXlad++fY79qrR+/frQvwOBgHJzc5Wamur4/CFDhig/P1979+4Nzfe1a9eqZ8+etRaqESNG6O9//7s8Ho86dOhQY3p98/eEE06oMi/qM3ToULVv3147d+5s9Faq9evXh/7jWL9+vdq1a6fk5OQGLTMnnHBCk50npzU58cQTQ7+Wq+vQoYOuuuoqLVq0SGvXrtWtt95aZXpjv3spuHy++uqrKi8vD/1HdnS9qE+7du1qtDclJUWxsbFauXKlJk6cWOM169at0y9+8Qv9+Mc/liStWbOmzs8YNmyY43tVHgW8a9cuJSYmSgpu0XCSm5uruLg4PfDAA6HHqge72ubjiBEjtH37dsfvZvDgwTX6sWHDBsXGxtbRs+CBHt98801oPdmwYYMGDx7s+PyEhAT17t1b69at08iRIyVJe/fuVV5eXq3fWUPW77rmb231tT4jRoxQXl6e47xyUldtrW+ZObqdbre7UZ/b3Nj11ghPPvmk8vLydPHFF+vtt99WUVGRPvzwQ916662hlTY5OVmLFi1SQUGBli9froceeqjRn3PTTTfp008/1e9+9ztt3bpVTz75pF577TXddtttjq+55ppr1LlzZ1155ZX65z//qa1btyorK0t79uxRUlKSTjjhBD399NPavn27/vu//1t/+9vfHN9r4MCBuuaaa3Tdddfp7bff1vbt2/W3v/1N69atkyRdcMEFWr16tV5//XVt2bJF06ZNq/Mw+uTkZC1fvly5ubnKzc3VlClTqgSIPn36qH379vqf//kfff311zpw4ICGDBmiyy+/XFdddZVWrFihwsJCrV69WrfeeqtKSkokBbeszZ49W++8844+/fRT3XTTTbUGk+pWrFih+fPnKy8vT7/5zW/0n//8p86T2f3whz/UgAEDNHXqVG3atEnLli3TzJkzHb+Pa6+9Vu3bt9eVV16pDRs2qKCgQG+++abuvPPOBs1fr9ervLw8bdmyRXv27Kn3l1N8fLx+9atf6aabbtJf//pXFRYWau3atZoxY4b+9a9/1fna+++/Xx9++KE+/PBD/dd//ZeuueYade3atUHLjNfr1ccff6yioqIqR3aiblOnTtWiRYu0bds2XXnllVWmeb1erV69Wrt27VJpaWmD3u/aa6/V4cOHddNNN2nLli166aWX9MQTT9RZL+oTFxenO+64Q7/+9a/1+uuvq7CwUP/zP/+j5cuXSwqu06+99po2b96s999/X9OnT6/z/X77299q/vz5+uMf/6j8/HytX79eCxYskBTcddW3b1/NmjVLBQUFWrx4sV555RXH90pOTlZZWZkWLlyogoICPfjggzV+kHq9Xq1bt05ffvll6EfZjBkz9NRTT+mPf/yjtm7dqk8//VRPPvmklixZIknKyMjQhg0bNGfOHG3dulVz5szRpk2b6p1Xbrdbv/jFL7R582a9/vrrevzxx3XLLbfU+Zr/+q//0uzZs/XWW2/pX//6l6ZOnSqv11tja5fUsPW7rvlbW32tz/Tp07V06VLdd9992rx5s/71r39p4cKFevrpp+t8XV21tb5lxuv1SpLeeust7dmzJ7KOlG2x0VCtxLZt2+znP/+59enTx2JjY83n89mtt95qfr/fzMzWr19vp556qsXGxtoZZ5xhr732WpWBdA0dpPjWW2/ZsGHD7IQTTrDk5GRbuHBhvW3Lz8+3Sy65xDp27Gjx8fE2bty40MDcys/t2LGj/exnP7Pf//735vV6Hduxf/9+mzZtmnXv3t3i4uJs5MiR9uGHH5qZWSAQsLvuust69OhhvXr1sj/+8Y91DubevXu3jR8/3uLi4qx///72l7/8pcag1T/96U/Wp08fc7lcoUGYBw8etNtvv9369u1r7du3twEDBlhmZmboaIhDhw7ZjTfeaB07drS+ffuG+ljfYO65c+fa+PHjLTY21gYNGmTvvvtuaHr176fS1q1b7eKLL7YOHTpYz5497c4776wy+PTogZFmZkVFRTZx4kRLSEiwjh072qmnnmqPPPJIg+bvvn377Mc//rF17tw5tOzUd9RbRUWFzZkzx/r3728nnHCCeTweu+6660JHo1VX+X5///vfLTk52WJjY+2yyy6rMii1vmXG7/fb6NGjLS4uLjQIs7b5V72trVltR73VZvDgwXb55ZfXeDwnJ8cGDx5s7dq1Cw0ibsjBEx9++KGdddZZ1r59e+vXr1+Vwa9mNQ+uqD54tzbfffedzZgxw0466SSLjY21oUOHhgYb5+fn27nnnmsdOnSwoUOH2vLly02S5eTkhPqhagO0Fy9ebEOGDAktn0cfNfree+/Z0KFDLS4uzn7605/aY489VmedfOihh6xnz57WpUsXS09PtzvvvLPKoOuNGzfaD37wA2vfvn2VZfb1118PPd6jRw9LS0sLHfVmZvbSSy9ZYmKidezY0a655hq7/fbb6x3Mfd5559ncuXOte/fulpCQYHfffbcFAgHHeV85b6dPn249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EO5mNEjU1g0FdPJcCgdal+asHQQlSd26dZMk7dixI2qKdGOUlZUpMTFRxcXFio+PD3dzmkVr72Nr719paamSkpJC62I0aO11Q2r9y11r75/U+vvYErWDoCQpJiY4VCshIaFVLkiV4uPjW3X/pNbfx9bev8p1MRq0lbohtf7lrrX3T2r9fWzO2hE9VQkAAKCFEZQAAAAcEJQkxcbGaubMmYqNjQ13U5pFa++f1Pr7SP8iTzS2ubFaex9be/+k1t/Hluify6LpeFwAAIAWxBYlAAAABwQlAAAABwQlAAAAB60+KD333HMaPny42rVrpyeffLLKtEAgoFtvvVXJycny+Xx6+umnq0x/8MEHlZycrOTkZN1///1VpmVnZyslJUXJycnKyMhQeXl5s/elIaZOnSqPx6PTTjtNp512mqZPnx6adjz9jWT5+fk699xzNWjQII0aNUqbN28Od5MarX///hoyZEjoe1uyZIkkaffu3Ro/frxSUlI0bNgwvf/++6HXHDhwQFdffbV8Pp8GDRqk119/PVzNr+HXv/61+vfvL5fLpU2bNoUeP9b+1LfsNgdqR+uuHa2hbkjUDqkFaoe1cp988olt3rzZrr/+enviiSeqTHv++ectNTXVysvLraSkxLxer33++edmZrZq1So7+eSTbf/+/Xbo0CE7/fTTbfny5WZmtn37djvppJNs165dFggE7NJLL7X//u//bvG+1WbKlCk1+lnpWPsb6caOHWsLFiwwM7NXX33Vzj777PA26Bh4vV7buHFjjcdvuOEGmzlzppmZrV+/3pKSkuy7774zM7PZs2fblClTzCy4TPbu3dv27t3bUk2u06pVq6y4uLhGv461P3Utu82F2vG91lg7WkPdMKN2mDV/7Wj1W5RGjBihoUOH1nrWziVLlmjatGlyu93q1q2bJk+erJdffjk0berUqerUqZNiY2N144036qWXXpIkvfbaa/rZz36m3r17y+Vyadq0aaFpkexY+xvJdu/erdzcXF133XWSpCuuuEKFhYUqKioKb8OayCuvvKJbbrlFknTmmWeqd+/eoV9SS5YsCU0bMGCALrjgAr3xxhtha+vRLrjgAnk8nhqPH2t/6lp2mwu143utrXa09rohUTuasna0+qBUlx07dsjr9Ybu9+/fXzt27DiuaZHgscce06mnnqoJEybok08+CT0ezX1yUlxcrL59+6pdu+DVeFwul5KSkqKi7dVde+21Gj58uH7xi1/o66+/VklJiQKBgHr27Bl6TjR/Z8fTn0jrK7UjevpUm9ZUNyRqR3Mvn1EflEaPHq0ePXrU+ldcXFzv610uV+jfVu2UUsc6rTnV1985c+aooKBAn332mdLT0/WjH/1I+/fvb1C7w9Wn43V0u6Xoanul1atX69NPP1Vubq66d++uKVOmSKq/b9H2nR1Pf5q6r9SOtl07WkPdkKgdtU1v6r5GfVBas2aN9uzZU+tfYmJina9NSkqqsqn1iy++UFJS0nFNa2719bdfv36hXQU/+9nPFB8fr7y8vIju0/FITEyU3+8PDYg1MxUXF0dF249W2d4TTjhBt912m9asWaPu3btLkr7++uvQ86L5Ozue/jRHX6kdbbd2tJa6IVE7pBZYPhs1oimK1TZQccGCBXbRRReFBnklJSXZ5s2bzcwsJyfHTjnllCoDFJctW2ZmZtu2basxIPOZZ55p8T7Vpri4OPTvtWvXWvfu3e2bb74xs2Pvb6S78MILqwzKPOuss8LboEbav3+//ec//wndf/TRR2306NFmFlxujx7AmJiYGBrAOHPmzCoDGHv16mUlJSUt2fR6VR+Qeaz9qWvZbW7UjtZZO6K9bphRO1qqdrT6oLRo0SLr16+fdezY0bp27Wr9+vWz3NxcMzMrLy+3m2++2QYOHGgDBw6sUQxnz55tAwYMsAEDBti9995bZdr8+fMtOTnZBgwYYOnp6XbkyJEW61NdLrroIhs2bJiNGDHCzj77bHvvvfdC046nv5Fsy5YtdvbZZ1tKSoqdfvrptmnTpnA3qVG2bdtmp512mg0fPtyGDRtmP/nJT6ywsNDMzHbt2mXjxo0zn89nJ598sq1cuTL0uv3799vkyZMtOTnZUlJS7NVXXw1TD2q6+eabrV+/fuZ2u613796WnJxsZsfen/qW3eZA7WjdtSPa64YZtaNSc9cOrvUGAADgIOrHKAEAADQXghIAAIADghIAAIADghIAAIADghIAAIADghIAAIADghIAAIADghKi2u23335MV5G/4447Iv4K5wCaB3UDjcEJJxG1vvzyS1188cXavHlzjQsm1mf37t0aPXq0Pv/889D1rQC0ftQNNBbfNCLKli1b5PF4tH37dknSH/7wB11yySW1XvH5ueee08SJE0PFbtasWbr66qs1YcIE+Xw+TZ48WR9//LFSU1M1cOBA3X777aHX9urVSwMGDNC7777bMh0D0GyoG2hOBCVElCFDhugPf/iDJk+erJUrV+rpp5/WCy+8UOsvv5UrV+rcc8+t8thHH32kF198UXl5ecrLy9M999yjZcuWaePGjVq8eLG2bt0aeu65555LwQNaAeoGmhNBCRHn6quv1siRI5WWlqZFixapR48etT7P7/erT58+VR5LS0tTQkKC3G63Tj31VI0bN06xsbHq1KmTBg8eHPrFKUl9+vSR3+9v1r4AaBnUDTQXghIiTnl5uTZt2qRu3brpyy+/dHxex44ddfDgwSqPdejQIfRvt9td4355eXno/qFDhxQXF9eELQcQLtQNNBeCEiLOPffco8GDB2v16tW64447VFBQUOvzTj31VG3ZsuWYP+fzzz/XiBEjjvn1ACIHdQPNhaCEiLJ06VItX75cTz31lFJSUvTII49o0qRJOnToUI3nTpw4UcuWLTumzzEzvfvuu7rsssuOt8kAwoy6gebE6QEQtQKBgM4880y98cYb8ng8jXrt8uXL9eKLL2rRokXN1DoAkYi6gcZiixKiVkxMjLKyslRUVNTo15aWlurhhx9u+kYBiGjUDTQWW5QAAAAcsEUJAADAAUEJAADAAUEJAADAAUEJAADAAUEJAADAAUEJAADAAUEJAADAAUEJAADAwf8HibPzu2dWHXoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -134,9 +136,16 @@ "ax_s[1].set_xlabel('x (m)')\n", "ax_s[1].set_ylabel('y (m)')\n", "\n", + "# Min and max values for axes\n", + "x_max = 1000\n", + "x_min = -x_max\n", + "y_max = 500\n", + "y_min = -y_max\n", "# Ranges of axes\n", - "#plt.xlim(x_min, x_max)\n", - "#plt.ylim(y_min, y_max)\n", + "ax_s[0].set_xlim(x_min, x_max)\n", + "ax_s[0].set_ylim(y_min, y_max)\n", + "ax_s[1].set_xlim(x_min, x_max)\n", + "ax_s[1].set_ylim(y_min, y_max)\n", "\n", "# Grid lines\n", "#plt.grid()\n", diff --git a/projectile_path/tests/test_projectile_plot.py b/projectile_path/tests/test_projectile_plot.py index 770d193..7cf48b9 100644 --- a/projectile_path/tests/test_projectile_plot.py +++ b/projectile_path/tests/test_projectile_plot.py @@ -12,8 +12,8 @@ # Number of points to plot num_pts = 20 -# Launch angle in degrees: -180 <= theta_0_deg <= +180 -theta_0_deg = -45 +# Launch angle in degrees: -179 <= theta_0_deg <= +180 +theta_0_deg = 105 # Launch velocity magnitude: v_0 >=1 # note that v_0 = ~100 is enough to reach top of plot area on vertical shot if y_max = ~500 @@ -249,8 +249,10 @@ async def test(): f"> path for (num_pts={num_pts}, theta_0_deg={theta_0_deg}, v_0={v_0}) returns:" ) print() - print(f"> array coordinates") - print(f"> member cairo x python x*SCALE_FP cairo y python y*SCALE_FP") + print(f"> array coordinates") + print( + f"> member cairo x python x*SCALE_FP cairo y python y*SCALE_FP" + ) # Print array members one line at a time: for p in range(0, num_pts): diff --git a/projectile_path/tests/test_projectile_plot_cairo.json b/projectile_path/tests/test_projectile_plot_cairo.json index 4bd1703..ebb1aaa 100644 --- a/projectile_path/tests/test_projectile_plot_cairo.json +++ b/projectile_path/tests/test_projectile_plot_cairo.json @@ -1 +1 @@ -[[0, 1934653847463416431117, 3869307694926832862235, 5803961542390249293353, 7738615389853665724471, 9673269237317082155589, 11607923084780498586707, 13542576932243915017825, 15477230779707331448942, 17411884627170747880060, 19346538474634164311178, 21281192322097580742296, 23215846169560997173414, 25150500017024413604532, 27085153864487830035650, 29019807711951246466768, 30954461559414662897885, 32889115406878079329003, 34823769254341495760121, 36758423101804912191239], [0, 3618502788666131213697322783095070105623107215331596698001758067033817314112, 3618502788666131213697322783095070105623107215331596695957063527013369979071, 3618502788666131213697322783095070105623107215331596693839008436074530015359, 3618502788666131213697322783095070105623107215331596691647592794217297422985, 3618502788666131213697322783095070105623107215331596689382816601441672201941, 3618502788666131213697322783095070105623107215331596687044679857747654352225, 3618502788666131213697322783095070105623107215331596684633182563135243873848, 3618502788666131213697322783095070105623107215331596682148324717604440766800, 3618502788666131213697322783095070105623107215331596679590106321155245031080, 3618502788666131213697322783095070105623107215331596676958527373787656666699, 3618502788666131213697322783095070105623107215331596674253587875501675673647, 3618502788666131213697322783095070105623107215331596671475287826297302051923, 3618502788666131213697322783095070105623107215331596668623627226174535801538, 3618502788666131213697322783095070105623107215331596665698606075133376922483, 3618502788666131213697322783095070105623107215331596662700224373173825414756, 3618502788666131213697322783095070105623107215331596659628482120295881278367, 3618502788666131213697322783095070105623107215331596656483379316499544513307, 3618502788666131213697322783095070105623107215331596653264915961784815119576, 3618502788666131213697322783095070105623107215331596649973092056151693097184]] \ No newline at end of file +[[0, 3618502788666131213697322783095070105623107215331596696707861164328171297485, 3618502788666131213697322783095070105623107215331596693442630272520470574489, 3618502788666131213697322783095070105623107215331596690177399380712769851493, 3618502788666131213697322783095070105623107215331596686912168488905069128497, 3618502788666131213697322783095070105623107215331596683646937597097368405501, 3618502788666131213697322783095070105623107215331596680381706705289667682505, 3618502788666131213697322783095070105623107215331596677116475813481966959509, 3618502788666131213697322783095070105623107215331596673851244921674266236513, 3618502788666131213697322783095070105623107215331596670586014029866565513517, 3618502788666131213697322783095070105623107215331596667320783138058864790521, 3618502788666131213697322783095070105623107215331596664055552246251164067525, 3618502788666131213697322783095070105623107215331596660790321354443463344530, 3618502788666131213697322783095070105623107215331596657525090462635762621534, 3618502788666131213697322783095070105623107215331596654259859570828061898538, 3618502788666131213697322783095070105623107215331596650994628679020361175542, 3618502788666131213697322783095070105623107215331596647729397787212660452546, 3618502788666131213697322783095070105623107215331596644464166895404959729550, 3618502788666131213697322783095070105623107215331596641198936003597259006554, 3618502788666131213697322783095070105623107215331596637933705111789558283558], [0, 11405942534313151926788, 21252160459551049710845, 29538653775713693352180, 36265422482801082850787, 41432466580813218206668, 45039786069750099419823, 47087380949611726490254, 47575251220398099417960, 46503396882109218202939, 43871817934745082845190, 39680514378305693344720, 33929486212791049701524, 26618733438201151915600, 17748256054535999986954, 7318054061795593915578, 3618502788666131213697322783095070105623107215331596695301219516115805721960, 3618502788666131213697322783095070105623107215331596681751568305224891365138, 3618502788666131213697322783095070105623107215331596666642192485258722865586, 3618502788666131213697322783095070105623107215331596649973092056217300223311]] \ No newline at end of file diff --git a/projectile_path/tests/test_projectile_plot_python.json b/projectile_path/tests/test_projectile_plot_python.json index cdeba10..6d8a9b9 100644 --- a/projectile_path/tests/test_projectile_plot_python.json +++ b/projectile_path/tests/test_projectile_plot_python.json @@ -1 +1 @@ -[[0.0, 19.346538473648025, 38.69307694729605, 58.03961542094408, 77.3861538945921, 96.73269236824012, 116.07923084188816, 135.4257693155362, 154.7723077891842, 174.11884626283222, 193.46538473648025, 212.81192321012827, 232.15846168377632, 251.50500015742435, 270.8515386310724, 290.19807710472037, 309.5446155783684, 328.8911540520165, 348.23769252566444, 367.5842309993125], [0.0, -19.713339891701956, -40.16028529251305, -61.340836202433294, -83.25499262146266, -105.90275454960118, -129.28412198684885, -153.39909493320562, -178.24767338867153, -203.82985735324664, -230.14564682693083, -257.19504180972416, -284.9780423016267, -313.4946483026383, -342.74485981275905, -372.72867683198893, -403.446099360328, -434.8971273977762, -467.0817609443335, -500.0]] \ No newline at end of file +[[0.0, -32.65230891864121, -65.30461783728242, -97.95692675592362, -130.60923567456484, -163.26154459320605, -195.91385351184724, -228.56616243048848, -261.2184713491297, -293.87078026777084, -326.5230891864121, -359.1753981050533, -391.8277070236945, -424.4800159423357, -457.13232486097695, -489.78463377961816, -522.4369426982594, -555.0892516169006, -587.7415605355417, -620.3938694541829], [0.0, 114.05942534793961, 212.52160460458768, 295.38653776994425, 362.6542248440092, 414.32466582678273, 450.39786071826467, 470.873809518455, 475.7525122273538, 465.0339688449611, 438.71817937127696, 396.8051438063011, 339.2948621500341, 266.187334402475, 177.48256056362447, 73.18054063348268, -46.718725387950826, -182.2152375006758, -333.3089957046923, -500.00000000000045]] \ No newline at end of file From 5e3dba117c0168c3507503da6b17ffaa2e0990d8 Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Fri, 10 Feb 2023 04:47:47 -0800 Subject: [PATCH 6/7] add prototype_projectile_plot_rust.ipynb --- projectile_path/.gitignore | 6 +- .../tests/prototype_projectile_plot.ipynb | 22 +- .../prototype_projectile_plot_rust.ipynb | 977 ++++++++++++++++++ 3 files changed, 997 insertions(+), 8 deletions(-) create mode 100644 projectile_path/tests/prototype_projectile_plot_rust.ipynb diff --git a/projectile_path/.gitignore b/projectile_path/.gitignore index cab3285..29d4d74 100644 --- a/projectile_path/.gitignore +++ b/projectile_path/.gitignore @@ -130,4 +130,8 @@ dmypy.json # Other folders not for github _not_gh_tests -_not_gh_contracts \ No newline at end of file +_not_gh_contracts + +# Added by cargo + +/target diff --git a/projectile_path/tests/prototype_projectile_plot.ipynb b/projectile_path/tests/prototype_projectile_plot.ipynb index 9c02c67..3d50563 100644 --- a/projectile_path/tests/prototype_projectile_plot.ipynb +++ b/projectile_path/tests/prototype_projectile_plot.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "id": "7d7134bf", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "id": "ac10d3a4", "metadata": {}, "outputs": [], @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 4, "id": "2494abc5", "metadata": {}, "outputs": [], @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "id": "92ea27fe", "metadata": {}, "outputs": [], @@ -172,7 +172,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "id": "c29aebb5", "metadata": {}, "outputs": [], @@ -239,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "id": "df8f26d3", "metadata": {}, "outputs": [ @@ -308,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 9, "id": "f9a52462", "metadata": { "scrolled": false @@ -344,6 +344,14 @@ "\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "899ae8fc", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/projectile_path/tests/prototype_projectile_plot_rust.ipynb b/projectile_path/tests/prototype_projectile_plot_rust.ipynb new file mode 100644 index 0000000..9e8dba2 --- /dev/null +++ b/projectile_path/tests/prototype_projectile_plot_rust.ipynb @@ -0,0 +1,977 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "da964f3c", + "metadata": {}, + "source": [ + "## Inputs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e760fbb0", + "metadata": {}, + "outputs": [], + "source": [ + "//\n", + "// Cairo Inputs\n", + "//\n", + "\n", + "// Number of points to plot\n", + "const NUM_PTS: i32 = 20;\n", + "\n", + "// Launch angle in degrees: -179 <= THETA_0_DEG <= +180\n", + "// Must be integer\n", + "const THETA_0_DEG: i32 = 105;\n", + "\n", + "// Launch velocity magnitude: V_0 = ~100 is enough to reach top of plot area on vertical shot\n", + "const V_0: f64 = 100.0;" + ] + }, + { + "cell_type": "markdown", + "id": "027a1621", + "metadata": {}, + "source": [ + "## Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "30d127c8", + "metadata": {}, + "outputs": [], + "source": [ + "//\n", + "// Math constants\n", + "//\n", + "\n", + "// Number of terms in cosine Taylor series approximation\n", + "const N: i32 = 5;\n", + "\n", + "// pi approximation to match that used in Cairo contract\n", + "const PI_APPROX: f64 = 3.141592654;\n", + "\n", + "\n", + "//\n", + "// Physical parameters\n", + "//\n", + "\n", + "// Gravitational acceleration in m/s^2\n", + "const G: f64 = 9.8;\n", + "\n", + "// Initial position\n", + "const X_0: f64 = 0.0;\n", + "const Y_0: f64 = 0.0;\n", + "\n", + "\n", + "//\n", + "// Plot parameters\n", + "//\n", + "\n", + "// Min and max values for axes\n", + "const X_MAX: f64 = 1000.0;\n", + "const X_MIN: f64 = -X_MAX;\n", + "const Y_MAX: f64 = 500.0;\n", + "const Y_MIN: f64 = -Y_MAX;" + ] + }, + { + "cell_type": "markdown", + "id": "51910e29", + "metadata": {}, + "source": [ + "## Math functions" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1da6fbb0", + "metadata": {}, + "outputs": [], + "source": [ + "//\n", + "// Math functions\n", + "//\n", + "\n", + "// Factorial function\n", + "fn factorial(n: i32) -> f64 {\n", + " let mut fact = 1.0;\n", + " for i in 1..n + 1 {\n", + " fact *= i as f64;\n", + " }\n", + " fact\n", + "}\n", + "\n", + "\n", + "// Cosine from Taylor series approximation\n", + "// Assume -pi <= theta <= +pi, so no need to shift theta\n", + "// Accuracy is improved if instead -pi/2 <= theta <= +pi/2\n", + "fn cosine_n_terms(theta: f64, n: i32) -> f64 {\n", + " // n = number of terms (not order)\n", + " // 2(n-1) = order\n", + " // cosine(theta) ~= ((-1)^n)*(theta^(2n))/(2n)!\n", + " // ~= 1 - theta^2/2! + theta^4/4! - theta^6/6! + ...\n", + " let mut cos_nth = 0.0;\n", + " for i in 0..n {\n", + " let neg_one: f64 = -1.0;\n", + " let power_neg_one = neg_one.powi(i);\n", + " let power_theta = theta.powi(2 * i);\n", + " let fact = factorial(2 * i);\n", + " cos_nth += power_neg_one * power_theta / fact;\n", + " }\n", + " cos_nth\n", + "}\n", + "\n", + "\n", + "// Cosine approximation\n", + "// Taylor series approximation is more accurate if -pi/2 <= theta_0 <= +pi/2. So:\n", + "// If theta_0 is in 2nd/3rd quadrant:\n", + "// (1) move angle to 1st/4th quadrant for cosine approximation, and\n", + "// (2) force negative sign for cosine(theta_0)\n", + "// If +90 or -90 degrees, use exact value of cos_theta_0\n", + "// (Use theta_0_deg for comparisons because calculated theta_0 in radians is slightly rounded)\n", + "// Then call cosine_n_terms\n", + "fn cosine_approx(theta_0: f64, theta_0_deg: i32, n: i32) -> f64 {\n", + " match theta_0_deg {\n", + " -179..=-91 => -cosine_n_terms(-PI_APPROX - theta_0, n),\n", + " -90 => 0.0,\n", + " -89..=89 => cosine_n_terms(theta_0, n),\n", + " 90 => 0.0,\n", + " 91..=180 => -cosine_n_terms(PI_APPROX - theta_0, n),\n", + " _ => {\n", + " println!(\"Error: theta_0_deg = {theta_0_deg} outside allowed range -179 to +180\");\n", + " 0.0\n", + " }\n", + " }\n", + "}\n", + "\n", + "\n", + "// Sine approximation: need to force correct signs\n", + "fn sine_approx(theta_0: f64, cos_theta_0: f64) -> f64 {\n", + " if theta_0 >= 0.0 {\n", + " (1.0 - cos_theta_0.powi(2)).sqrt()\n", + " } else {\n", + " -((1.0 - cos_theta_0.powi(2)).sqrt())\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "4ff3fde5", + "metadata": {}, + "source": [ + "## Physics functions" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3c230674", + "metadata": {}, + "outputs": [], + "source": [ + "//\n", + "// Physics functions\n", + "//\n", + "// Time of projectile in plot area\n", + "fn time_in_plot(\n", + " theta_0_deg: i32,\n", + " x_comps: (f64, f64),\n", + " y_comps: (f64, f64, f64),\n", + " plot_limits: (f64, f64, f64, f64)\n", + ") -> f64 {\n", + "\n", + " let (x_0, v_0x) = x_comps;\n", + " let (y_0, v_0y, g) = y_comps;\n", + " let (x_min, x_max, y_min, _y_max) = plot_limits;\n", + "\n", + " // Max time needed for y-direction\n", + " let t_max_y = (v_0y + (v_0y.powi(2) - 2.0 * g * (y_min - y_0)).sqrt()) / g;\n", + "\n", + " // Find max time needed for x_direction, t_max_x\n", + " // Then t_max is minimum of t_max_x and t_max_y\n", + " let t_max_x: f64;\n", + " let t_max: f64;\n", + "\n", + " if theta_0_deg.abs() == 90 {\n", + " // abs(theta_0_deg) = 90, so v_0x = 0, so t_max_x = infinite, so\n", + " t_max = t_max_y;\n", + " } else {\n", + " match theta_0_deg {\n", + " // abs(theta_0_deg) < 90, so v_0x > 0, so projectile moves toward x_max\n", + " -89..=89 => t_max_x = (x_max - x_0) / v_0x,\n", + " // abs(theta_0_deg) > 90, so v_0x < 0, so projectile moves toward x_min\n", + " -179..=-91 | 91..=180 => t_max_x = (x_min - x_0) / v_0x,\n", + " _ => {\n", + " println!(\"Error: theta_0_deg = {theta_0_deg} outside allowed range -179 to +180\");\n", + " t_max_x = 0.0;\n", + " }\n", + " }\n", + " \n", + " if t_max_x > t_max_y {\n", + " t_max = t_max_y;\n", + " } else {\n", + " t_max = t_max_x;\n", + " }\n", + " }\n", + "\n", + " println!(\"t_max = {t_max}\");\n", + " t_max\n", + "}\n", + "\n", + "\n", + "fn x_value(x_comps: (f64, f64), t: f64) -> f64 {\n", + " let (x_0, v_0x) = x_comps;\n", + " x_0 + v_0x * t\n", + "}\n", + "\n", + "\n", + "fn y_value(y_comps: (f64, f64, f64), t: f64) -> f64 {\n", + " let (y_0, v_0y, g) = y_comps;\n", + " y_0 + v_0y * t - 0.5 * g * t.powi(2)\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "cae78c44", + "metadata": {}, + "source": [ + "## Projectile calculations" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "656a02c6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "theta_0 = 1.8325957148333336\n", + "v_0x = -25.882306286627742\n", + "v_0y = 96.59247497235584\n", + "t_max = 23.969806345067223\n", + "x_s = [0.0, -32.65230891864121, -65.30461783728242, -97.95692675592362, -130.60923567456484, -163.26154459320605, -195.91385351184724, -228.56616243048848, -261.2184713491297, -293.87078026777084, -326.5230891864121, -359.1753981050533, -391.8277070236945, -424.4800159423357, -457.13232486097695, -489.78463377961816, -522.4369426982594, -555.0892516169006, -587.7415605355417, -620.393869454183]\n", + "y_s = [0.0, 114.05942534793961, 212.52160460458768, 295.38653776994425, 362.6542248440092, 414.32466582678273, 450.39786071826467, 470.873809518455, 475.7525122273538, 465.0339688449611, 438.71817937127696, 396.8051438063011, 339.2948621500341, 266.187334402475, 177.48256056362447, 73.18054063348268, -46.718725387950826, -182.2152375006758, -333.3089957046923, -500.00000000000045]\n" + ] + } + ], + "source": [ + "// fn main() {\n", + "\n", + " // Check that THETA_0_DEG is within allowed range\n", + " if THETA_0_DEG > 180 || THETA_0_DEG < -179 {\n", + " println!(\"Error: THETA_0_DEG = {THETA_0_DEG} outside allowed range -179 to +180\");\n", + " }\n", + " \n", + " // Calculate theta in radians\n", + " let theta_0 = THETA_0_DEG as f64 * PI_APPROX / 180.0;\n", + " // Cosine approximation\n", + " let cos_theta_0 = cosine_approx(theta_0, THETA_0_DEG, N);\n", + " // Sine approximation\n", + " let sin_theta_0 = sine_approx(theta_0, cos_theta_0);\n", + "\n", + " // Projectile velocity components in x- and y-directions\n", + " let v_0x = V_0 * cos_theta_0;\n", + " let v_0y = V_0 * sin_theta_0;\n", + "\n", + " println!(\"theta_0 = {theta_0}\");\n", + " println!(\"v_0x = {v_0x}\");\n", + " println!(\"v_0y = {v_0y}\");\n", + " \n", + " // Tuples\n", + " let x_comps: (f64, f64) = (X_0, v_0x);\n", + " let y_comps: (f64, f64, f64) = (Y_0, v_0y, G);\n", + " let plot_limits: (f64, f64, f64, f64) = (X_MIN, X_MAX, Y_MIN, Y_MAX);\n", + "\n", + " // Calculate time in plot\n", + " let t_max = time_in_plot(THETA_0_DEG, x_comps, y_comps, plot_limits);\n", + " let delta_t = t_max / ((NUM_PTS as f64) - 1.0);\n", + "\n", + "// // Fill position vectors\n", + "// let mut x_s = Vec::new();\n", + "// let mut y_s = Vec::new();\n", + "\n", + "// for i in 0..NUM_PTS {\n", + "// let t = i as f64 * delta_t;\n", + "// let x = x_value(x_comps, t);\n", + "// let y = y_value(y_comps, t);\n", + "// x_s.push(x);\n", + "// y_s.push(y);\n", + "// }\n", + "\n", + "// Fill position arrays\n", + " let mut x_s: [f64; NUM_PTS as usize] = [0.0; NUM_PTS as usize];\n", + " let mut y_s: [f64; NUM_PTS as usize] = [0.0; NUM_PTS as usize];\n", + "\n", + " for i in 0..NUM_PTS as usize {\n", + " let t = i as f64 * delta_t;\n", + " x_s[i] = x_value(x_comps, t);\n", + " y_s[i] = y_value(y_comps, t);\n", + " }\n", + "\n", + " // Need to use {:?}, Debug print, for printing Vec or Array\n", + " // because {}, Display print, works only for single values\n", + " println!(\"x_s = {x_s:?}\");\n", + " println!(\"y_s = {y_s:?}\");\n", + "\n", + "// }" + ] + }, + { + "cell_type": "markdown", + "id": "278b8e18", + "metadata": {}, + "source": [ + "## Plot with Plotters" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "deb3690f", + "metadata": {}, + "outputs": [], + "source": [ + ":dep plotters = { version = \"^0.3.4\", default_features = false, features = [\"evcxr\", \"all_series\", \"all_elements\"] }\n", + "extern crate plotters;\n", + "use plotters::prelude::*;" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ab3f029b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "Projectile path\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "y (m)\n", + "\n", + "\n", + "x (m)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "-500.0\n", + "\n", + "\n", + "\n", + "-400.0\n", + "\n", + "\n", + "\n", + "-300.0\n", + "\n", + "\n", + "\n", + "-200.0\n", + "\n", + "\n", + "\n", + "-100.0\n", + "\n", + "\n", + "\n", + "0.0\n", + "\n", + "\n", + "\n", + "100.0\n", + "\n", + "\n", + "\n", + "200.0\n", + "\n", + "\n", + "\n", + "300.0\n", + "\n", + "\n", + "\n", + "400.0\n", + "\n", + "\n", + "\n", + "500.0\n", + "\n", + "\n", + "\n", + "\n", + "-1000.0\n", + "\n", + "\n", + "\n", + "-800.0\n", + "\n", + "\n", + "\n", + "-600.0\n", + "\n", + "\n", + "\n", + "-400.0\n", + "\n", + "\n", + "\n", + "-200.0\n", + "\n", + "\n", + "\n", + "0.0\n", + "\n", + "\n", + "\n", + "200.0\n", + "\n", + "\n", + "\n", + "400.0\n", + "\n", + "\n", + "\n", + "600.0\n", + "\n", + "\n", + "\n", + "800.0\n", + "\n", + "\n", + "\n", + "1000.0\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "evcxr_figure((640, 480), |root| {\n", + " // The following code will create a chart context\n", + " let mut chart = ChartBuilder::on(&root)\n", + " .caption(\"Projectile path\", (\"Arial\", 20).into_font())\n", + " .x_label_area_size(40)\n", + " .y_label_area_size(60)\n", + " .build_cartesian_2d(X_MIN..X_MAX, Y_MIN..Y_MAX)?;\n", + " \n", + " chart.configure_mesh()\n", + "// .disable_x_mesh()\n", + "// .disable_y_mesh()\n", + " .light_line_style(&WHITE)\n", + " .x_desc(\"x (m)\")\n", + " .y_desc(\"y (m)\")\n", + " .draw()?;\n", + " \n", + " // `iter` method converts `x_s` and `y_s` each into an iterator\n", + " // `zip` function combines these into a new iterator of ordered pairs\n", + " let xy_s = x_s.iter().zip(y_s.iter());\n", + " \n", + " // `map` converts each ordered pair into a Circle to be plotted\n", + " chart.draw_series(xy_s.map(|(x, y)| Circle::new((*x, *y), 3, BLUE.filled())));\n", + " \n", + "// let area = chart.plotting_area();\n", + " \n", + " Ok(())\n", + "}).style(\"width:100%\")" + ] + }, + { + "cell_type": "markdown", + "id": "3c9ffeb3", + "metadata": {}, + "source": [ + "## Plot with Plotly \n", + "- but Markers error, so cannot get points w/o lines;\n", + " - see https://github.com/igiagkiozis/plotly/issues/137)\n", + "- also much slower than Plotters" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7a405bcb", + "metadata": {}, + "outputs": [], + "source": [ + ":dep ndarray = \"0.15.6\"\n", + ":dep plotly = { version = \">=0.7.0\" }" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "adad9ebe", + "metadata": {}, + "outputs": [], + "source": [ + "extern crate ndarray;\n", + "extern crate plotly;\n", + "extern crate rand_distr;" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8f278682", + "metadata": {}, + "outputs": [], + "source": [ + "use ndarray::Array;\n", + "use plotly::common::{Mode, Title};\n", + "use plotly::layout::{Axis, GridXSide, Layout, LayoutGrid};\n", + "use plotly::{Plot, Scatter};\n", + "use rand_distr::{num_traits::Float, Distribution};\n", + "\n", + "// use plotly::{\n", + "// color::{NamedColor, Rgb, Rgba},\n", + "// common::{\n", + "// ColorScale, ColorScalePalette, DashType, Fill, Font, Line, LineShape, Marker, Mode,\n", + "// Orientation, Title,\n", + "// },\n", + "// layout::{Axis, BarMode, Layout, Legend, TicksDirection, TraceOrder},\n", + "// sankey::{Line as SankeyLine, Link, Node},\n", + "// Bar, Plot, Sankey, Scatter, ScatterPolar,\n", + "// };" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "afc6e693", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + " \n", + "
" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "// Must convert these to vectors for plotting\n", + "let x_s_vec: Vec = x_s.to_vec();\n", + "let y_s_vec: Vec = y_s.to_vec();\n", + "\n", + "let trace = Scatter::new(x_s_vec, y_s_vec);\n", + "let mut plot = Plot::new();\n", + "plot.add_trace(trace);\n", + "\n", + "let layout = Layout::new().height(525)\n", + "// .grid(LayoutGrid::new()\n", + "// .x_side(GridXSide::TopPlot))\n", + " .title(Title::new(\"Projectile path\"))\n", + " .x_axis(Axis::new()\n", + " .title(Title::new(\"x (m)\"))\n", + " .range(vec![X_MIN, X_MAX]))\n", + " .y_axis(Axis::new()\n", + " .title(Title::new(\"y (m)\"))\n", + " .range(vec![Y_MIN, Y_MAX]));\n", + "\n", + "plot.set_layout(layout);\n", + "\n", + "plot.notebook_display();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8092c521", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Rust", + "language": "rust", + "name": "rust" + }, + "language_info": { + "codemirror_mode": "rust", + "file_extension": ".rs", + "mimetype": "text/rust", + "name": "Rust", + "pygment_lexer": "rust", + "version": "" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 82760d462b912aa7583c3f5a6d9762dbb36d4ff8 Mon Sep 17 00:00:00 2001 From: "whatthedev.eth" Date: Wed, 15 Feb 2023 19:08:21 -0800 Subject: [PATCH 7/7] update plotly plot --- projectile_path/.gitignore | 7 +++ projectile_path/Cargo.lock | 7 +++ projectile_path/Cargo.toml | 8 ++++ projectile_path/src/main.rs | 3 ++ .../prototype_projectile_plot_rust.ipynb | 45 +++++++++---------- 5 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 projectile_path/Cargo.lock create mode 100644 projectile_path/Cargo.toml create mode 100644 projectile_path/src/main.rs diff --git a/projectile_path/.gitignore b/projectile_path/.gitignore index 29d4d74..5d87d13 100644 --- a/projectile_path/.gitignore +++ b/projectile_path/.gitignore @@ -135,3 +135,10 @@ _not_gh_contracts # Added by cargo /target + + +# Added by cargo +# +# already existing elements were commented out + +#/target diff --git a/projectile_path/Cargo.lock b/projectile_path/Cargo.lock new file mode 100644 index 0000000..c015ee7 --- /dev/null +++ b/projectile_path/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "projectile-path" +version = "0.1.0" diff --git a/projectile_path/Cargo.toml b/projectile_path/Cargo.toml new file mode 100644 index 0000000..4b6978d --- /dev/null +++ b/projectile_path/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "projectile-path" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/projectile_path/src/main.rs b/projectile_path/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/projectile_path/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/projectile_path/tests/prototype_projectile_plot_rust.ipynb b/projectile_path/tests/prototype_projectile_plot_rust.ipynb index 9e8dba2..81f2d8b 100644 --- a/projectile_path/tests/prototype_projectile_plot_rust.ipynb +++ b/projectile_path/tests/prototype_projectile_plot_rust.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 6, "id": "e760fbb0", "metadata": {}, "outputs": [], @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, "id": "30d127c8", "metadata": {}, "outputs": [], @@ -89,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "id": "1da6fbb0", "metadata": {}, "outputs": [], @@ -171,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "id": "3c230674", "metadata": {}, "outputs": [], @@ -248,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 10, "id": "656a02c6", "metadata": { "scrolled": true @@ -260,10 +260,10 @@ "text": [ "theta_0 = 1.8325957148333336\n", "v_0x = -25.882306286627742\n", - "v_0y = 96.59247497235584\n", "t_max = 23.969806345067223\n", "x_s = [0.0, -32.65230891864121, -65.30461783728242, -97.95692675592362, -130.60923567456484, -163.26154459320605, -195.91385351184724, -228.56616243048848, -261.2184713491297, -293.87078026777084, -326.5230891864121, -359.1753981050533, -391.8277070236945, -424.4800159423357, -457.13232486097695, -489.78463377961816, -522.4369426982594, -555.0892516169006, -587.7415605355417, -620.393869454183]\n", - "y_s = [0.0, 114.05942534793961, 212.52160460458768, 295.38653776994425, 362.6542248440092, 414.32466582678273, 450.39786071826467, 470.873809518455, 475.7525122273538, 465.0339688449611, 438.71817937127696, 396.8051438063011, 339.2948621500341, 266.187334402475, 177.48256056362447, 73.18054063348268, -46.718725387950826, -182.2152375006758, -333.3089957046923, -500.00000000000045]\n" + "y_s = [0.0, 114.05942534793961, 212.52160460458768, 295.38653776994425, 362.6542248440092, 414.32466582678273, 450.39786071826467, 470.873809518455, 475.7525122273538, 465.0339688449611, 438.71817937127696, 396.8051438063011, 339.2948621500341, 266.187334402475, 177.48256056362447, 73.18054063348268, -46.718725387950826, -182.2152375006758, -333.3089957046923, -500.00000000000045]\n", + "v_0y = 96.59247497235584\n" ] } ], @@ -339,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 11, "id": "deb3690f", "metadata": {}, "outputs": [], @@ -351,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 12, "id": "ab3f029b", "metadata": {}, "outputs": [ @@ -706,7 +706,7 @@ "" ] }, - "execution_count": 8, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -747,14 +747,12 @@ "metadata": {}, "source": [ "## Plot with Plotly \n", - "- but Markers error, so cannot get points w/o lines;\n", - " - see https://github.com/igiagkiozis/plotly/issues/137)\n", - "- also much slower than Plotters" + "- slower than Plotters}" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 13, "id": "7a405bcb", "metadata": {}, "outputs": [], @@ -765,7 +763,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 14, "id": "adad9ebe", "metadata": {}, "outputs": [], @@ -777,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "id": "8f278682", "metadata": {}, "outputs": [], @@ -785,7 +783,7 @@ "use ndarray::Array;\n", "use plotly::common::{Mode, Title};\n", "use plotly::layout::{Axis, GridXSide, Layout, LayoutGrid};\n", - "use plotly::{Plot, Scatter};\n", + "use plotly::{Plot, Scatter, Trace};\n", "use rand_distr::{num_traits::Float, Distribution};\n", "\n", "// use plotly::{\n", @@ -802,7 +800,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "id": "afc6e693", "metadata": {}, "outputs": [ @@ -810,15 +808,16 @@ "data": { "text/html": [ "
\n", - "
\n", + "
\n", "