In the git repository at /workspace, write a small Python project in the directory @DIR@. Use ONLY the Python standard library — do NOT install or import any third-party package, and do NOT use an existing tree implementation; write the AVL tree yourself.
1. @DIR@/avl.py — a self-balancing AVL tree. It must define class AVLTree with methods: insert(value: int) -> None, delete(value: int) -> None, contains(value: int) -> bool, in_order() -> list[int] returning every value in ascending order, and height() -> int returning the height of the tree (an empty tree has height 0). Rebalance with rotations on both insert and delete so the tree stays balanced. Commit with the message 'avl implement @TOKEN@'.
2. @DIR@/test_avl.py — unit tests using the standard library `unittest` module (NOT pytest). Cover insert, delete, contains, in-order order, and that the tree stays balanced when values are inserted in ascending order. Run them with `python -m unittest` and make sure they PASS before you commit. Commit with the message 'avl tests @TOKEN@'.
3. @DIR@/tui.py — a text UI. It must read commands from standard input, one per line: `i <number>` inserts, `d <number>` deletes, `p` prints the tree, and `q` quits. After each insert or delete it must print the tree's current contents in ascending order on one line. It must exit cleanly on `q` or end of input. Commit with the message 'avl tui @TOKEN@'.
Finally create a branch named @BRANCH@ and push it to origin.
