diff --git a/README.md b/README.md index 8fd03bd96878b3798852eef9e26dbfb41d27e930..fdc5a3747fbfdebc996150b6cf29b3808cf7f925 100644 --- a/README.md +++ b/README.md @@ -270,7 +270,7 @@ What happens behind the scenes when we set `self.title` is that the result is pr ### Caching computations The `@cache`-decorator offers a direct ways to compute the correct result on an instructors computer and submit it to the student. For instance: ```python -# example_framework/instructor/cs102/report2.py +# example_framework/instructor/cs102/report2_test.py class Question2(UTestCase): @cache def my_reversal(self, ls): diff --git a/devel/example_devel/instructor/output/report2.py b/devel/example_devel/instructor/output/report2.py index ec424f464f534d680f3b886bc61f5466a72130e0..3386669ee4d58b317291e03b7f7b8e3fa23e3d42 100644 --- a/devel/example_devel/instructor/output/report2.py +++ b/devel/example_devel/instructor/output/report2.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title def ex_test_output_capture(self): diff --git a/devel/example_devel/instructor/output/report2_b.py b/devel/example_devel/instructor/output/report2_b.py index f42d83d4d854736924402a42fb75a47e7e72aa29..98e3c25c76020d56ee6920c798996a54acd90cba 100644 --- a/devel/example_devel/instructor/output/report2_b.py +++ b/devel/example_devel/instructor/output/report2_b.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Week1Titles(UTestCase): diff --git a/devel/example_devel/instructor/output/report2_c.py b/devel/example_devel/instructor/output/report2_c.py index 8b386384e5672619f390c1cb458986fed8409a3a..c47fa0b31b2d016e4ae11ef4544fdfb960167834 100644 --- a/devel/example_devel/instructor/output/report2_c.py +++ b/devel/example_devel/instructor/output/report2_c.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Question2(UTestCase): @cache def my_reversal(self, ls): diff --git a/docs/snips/report2.py b/docs/snips/report2.py index e7aa0ed0811323a8cfe939ebc214aef6a1cae2e9..1eb0160a58ddbdf156da500c106263207fcb5775 100644 --- a/docs/snips/report2.py +++ b/docs/snips/report2.py @@ -1,4 +1,4 @@ -# example_framework/instructor/cs102/report2.py +# example_framework/instructor/cs102/report2_test.py from unitgrade import UTestCase, cache class Week1(UTestCase): diff --git a/docs/snips/report2_b.py b/docs/snips/report2_b.py index 5de6d0b254387e7a82b58906cedd82ccabd43215..64c65ee7ee98bdba6391fb85ba72d8b0786ade50 100644 --- a/docs/snips/report2_b.py +++ b/docs/snips/report2_b.py @@ -1,4 +1,4 @@ -# example_framework/instructor/cs102/report2.py +# example_framework/instructor/cs102/report2_test.py class Week1Titles(UTestCase): """ The same problem as before with nicer titles """ def test_add(self): diff --git a/docs/snips/report2_c.py b/docs/snips/report2_c.py index aa444a6283536738901c1d496d0ccc32a9d6179a..84d7fd528956b821c42d629bde548865a1e186f0 100644 --- a/docs/snips/report2_c.py +++ b/docs/snips/report2_c.py @@ -1,4 +1,4 @@ -# example_framework/instructor/cs102/report2.py +# example_framework/instructor/cs102/report2_test.py class Question2(UTestCase): @cache def my_reversal(self, ls): diff --git a/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py b/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py index ed7227f24103a00dfc8b261b6795896bd2a4f4d2..cb89f5a40b86e7388e579a0696d75b02fc26b199 100644 --- a/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py +++ b/examples/autolab_example/tmp/cs102/cs102-handout/report2_grade.py @@ -1,4 +1,4 @@ -# cs102/report2.py +# cs102/report2_test.py ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example/tmp/cs102/src/report2_grade.py b/examples/autolab_example/tmp/cs102/src/report2_grade.py index ed7227f24103a00dfc8b261b6795896bd2a4f4d2..cb89f5a40b86e7388e579a0696d75b02fc26b199 100644 --- a/examples/autolab_example/tmp/cs102/src/report2_grade.py +++ b/examples/autolab_example/tmp/cs102/src/report2_grade.py @@ -1,4 +1,4 @@ -# cs102/report2.py +# cs102/report2_test.py ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_19_of_26.token b/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_19_of_26.token new file mode 100644 index 0000000000000000000000000000000000000000..379766ca8efbf72b3380fa54fa7150d2ecd7839f --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_19_of_26.token @@ -0,0 +1,327 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +47655d0753e025d6b3b20db676ecc36fe8124fb1af5d2933b475e0e5ff511d76e94036b02cf3e5949bcc17d82112f1f73e0e2e0ad97945d989a56f7943e40f39 58044 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_26_of_26.token b/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_26_of_26.token new file mode 100644 index 0000000000000000000000000000000000000000..1d90ee18a59359a862d6aaafb545706ba2377464 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/Report2_handin_26_of_26.token @@ -0,0 +1,329 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +481c1e289721406c53ac5298f0c72cc4b9983cc15708edffede1ca1c07217867adcfb469db8834ec13564f365e9610793b6c9df37a0158e76c111265b330e071 58352 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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 +zAAHQ1QKRlQTRmP3NscRn+wIAAAAABFla. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/autograde.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/autograde.tar new file mode 100644 index 0000000000000000000000000000000000000000..4886ccb6434e3b06cefab7d4415d67d252ce5d9e Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/autograde.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105d.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105d.tar index faa2e4c934c382a2a4ec9822c3983249405658ad..9077d9fb28ce6e63d85d22be6882956b87c2ba74 100644 Binary files a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105d.tar and b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105d.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105e.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105e.tar new file mode 100644 index 0000000000000000000000000000000000000000..8b7bd3cb81db9da0274f2bf22d0604179bae2ef8 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105e.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105f.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105f.tar new file mode 100644 index 0000000000000000000000000000000000000000..f4f8000f1e5952c935ced0f56ca4244fb2b6126e Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105f.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105g.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105g.tar new file mode 100644 index 0000000000000000000000000000000000000000..0160c8b73f9c87102e43266bddf1e07f0c9be796 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105g.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105h.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105h.tar new file mode 100644 index 0000000000000000000000000000000000000000..396f5e36905daaa79fe561da41530c166dd0d8a8 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/cs105h.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy.py index 1a8a796cd46a61ece38905cdf4375f025325649e..ce4fcd93ab73cf761dedd339da3ddfb6a75dabf6 100644 --- a/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy.py +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy.py @@ -1,4 +1,4 @@ -from cs102.report2 import Report2 +from cs102_autolab.report2_test import Report2 from unitgrade_private.hidden_create_files import setup_grade_file_report from snipper.snip_dir import snip_dir diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy_autolab.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy_autolab.py index 6494174e62992f8f70cb044306b7770a276b91e5..63db95ee34954055fd71e136d22ddcc678bdf78c 100644 --- a/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy_autolab.py +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/deploy_autolab.py @@ -4,14 +4,14 @@ from unitgrade_private.docker_helpers import compile_docker_image if __name__ == "__main__": ## Step 1. Deploy the report file. - from report2 import Report2 + from report2_test import Report2 from unitgrade_private.hidden_create_files import setup_grade_file_report from snipper.snip_dir import snip_dir from unitgrade import version print("version", version.__version__) # Set up the instructor _grade script and all files needed for the tests. - setup_grade_file_report(Report2, with_coverage=False) - snip_dir("./", "../../students/cs102_autolab", clean_destination_dir=True, exclude=['*.token', 'deploy_autolab.py', '*_grade.py', 'tmp', '*.tar']) + setup_grade_file_report(Report2, with_coverage=False, bzip=True) + snip_dir("./", "../../students/cs102_autolab", clean_destination_dir=True, exclude=['*.token', 'deploy*.py', '*_grade.py', 'tmp', '*.tar']) # Step 1: Download and compile docker grading image. You only need to do this once. #!s=a download_docker_images("../docker") # Download docker images from gitlab (only do this once). @@ -23,17 +23,17 @@ if __name__ == "__main__": instructor_base = f"." student_base = f"../../students/cs102_autolab" - from report2 import Report2 + from report2_test import Report2 # INSTRUCTOR_GRADE_FILE = - output_tar = new_deploy_assignment("cs105d", # Autolab name of assignment (and name of .tar file) + output_tar = new_deploy_assignment("cs105h", # Autolab name of assignment (and name of .tar file) INSTRUCTOR_REPORT_CLASS=Report2, INSTRUCTOR_BASE=instructor_base, - INSTRUCTOR_GRADE_FILE=f"{instructor_base}/report2_grade.py", + INSTRUCTOR_GRADE_FILE=f"{instructor_base}/report2_test_grade.py", STUDENT_BASE=student_base, - STUDENT_GRADE_FILE=f"{instructor_base}/report2.py", + STUDENT_GRADE_FILE=f"{instructor_base}/report2_test.py", autograde_image_tag=autograde_image, student_should_upload_token=False, - homework_file="homework1.py") #!s + homework_file="homework1.py") #!s # What can you do? Get a report class from the .token file? diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout.tar b/examples/autolab_example_py_upload/instructor/cs102_autolab/handout.tar similarity index 65% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout.tar rename to examples/autolab_example_py_upload/instructor/cs102_autolab/handout.tar index 8786bf46facaf94d6f8b944b1724ffbf3b06f3d2..75f2f0f49ebf7f1df224ef7628697989ad3ab581 100644 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout.tar and b/examples/autolab_example_py_upload/instructor/cs102_autolab/handout.tar differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/homework1.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/homework1.py index 94004fc5d7ed38a9a3598d4b7ed9b0e08c6f6793..c774405dc693d104ed9b1f48df5554a12e3c9ae3 100644 --- a/examples/autolab_example_py_upload/instructor/cs102_autolab/homework1.py +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/homework1.py @@ -8,7 +8,7 @@ def reverse_list(mylist): #!f #!s;keeptags def add(a,b): #!f """ Given two numbers `a` and `b` this function should simply return their sum: > add(a,b) = a+b """ - return a+b + return a+b*2 if __name__ == "__main__": # Example usage: diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_grade.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_grade.py index 0ee13a2da31594e56132628b27f81af994dcbb29..2d2ae9724d7307b9c5d30654bf31f68e3510d143 100644 --- a/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_grade.py +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_grade.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/report2.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test.py similarity index 97% rename from examples/autolab_example_py_upload/instructor/cs102_autolab/report2.py rename to examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test.py index a1d345354964853c30d69b6db48eef127c4edb6f..14d21fa679ac5f1d6cb5c5c6f4f0259c2737e449 100644 --- a/examples/autolab_example_py_upload/instructor/cs102_autolab/report2.py +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test.py @@ -3,6 +3,7 @@ from unitgrade.evaluate import evaluate_report_student from homework1 import add, reverse_list from unitgrade import UTestCase, cache # !s import homework1 +import unittest class Week1(UTestCase): @@ -63,7 +64,7 @@ class Report2(Report): version = 1.0 url = "https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/tree/master/examples/autolab_example_py_upload/instructor/cs102_autolab" title = "CS 106a" - questions = [(Week1, 10), (Week1Titles, 6)] + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] pack_imports = [homework1] if __name__ == "__main__": diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test_grade.py b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test_grade.py new file mode 100644 index 0000000000000000000000000000000000000000..d35d464081aea7fee536c44ebc291e882d67be65 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/cs102_autolab/report2_test_grade.py @@ -0,0 +1,4 @@ +# report2_test.py +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' +import bz2, base64 +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bcfd4d4c0ec3b7fa90b9d5945812dfd05623770b Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1.pkl index ad7ddfc809f5bda52c1d7e563ee22f36ab221123..d7e897ace5ae661bbe6e4d3d29bff2c3dbbea55a 100644 Binary files a/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1.pkl and b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1Titles.pkl index f0cd99c72858c45d52215386019e7a4ed35e3342..3f846dd3e070d58ba594674b8ac74ebd84837781 100644 Binary files a/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1Titles.pkl and b/examples/autolab_example_py_upload/instructor/cs102_autolab/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/output/homework1.py b/examples/autolab_example_py_upload/instructor/output/homework1.py index 4412ca41cb9875a1702b96b878a774bb854465b3..526045bf833b38d3538d8d913577a36f2401539c 100644 --- a/examples/autolab_example_py_upload/instructor/output/homework1.py +++ b/examples/autolab_example_py_upload/instructor/output/homework1.py @@ -9,7 +9,7 @@ def reverse_list(mylist): #!f def add(a,b): #!f """ Given two numbers `a` and `b` this function should simply return their sum: > add(a,b) = a+b """ - return a+b + return a+b*2 if __name__ == "__main__": # Example usage: diff --git a/examples/autolab_example_py_upload/instructor/output/report2.py b/examples/autolab_example_py_upload/instructor/output/report2.py index b0b015b1f22bf8fe736cf4164358ee0158f3401b..19dd8d59926a81b3788fecec1a770f0e1f625589 100644 --- a/examples/autolab_example_py_upload/instructor/output/report2.py +++ b/examples/autolab_example_py_upload/instructor/output/report2.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py from unitgrade import UTestCase, cache import homework1 diff --git a/examples/autolab_example_py_upload/instructor/output/report2_b.py b/examples/autolab_example_py_upload/instructor/output/report2_b.py index e5dc8fe9178b7ec1199e0f74700381379af011cc..e14f75cf25d8da29f86a70d6cff1a0b0511646e0 100644 --- a/examples/autolab_example_py_upload/instructor/output/report2_b.py +++ b/examples/autolab_example_py_upload/instructor/output/report2_b.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Week1Titles(UTestCase): """ The same problem as before with nicer titles """ def test_add(self): diff --git a/examples/autolab_example_py_upload/instructor/output/report2_c.py b/examples/autolab_example_py_upload/instructor/output/report2_c.py index 8b386384e5672619f390c1cb458986fed8409a3a..c47fa0b31b2d016e4ae11ef4544fdfb960167834 100644 --- a/examples/autolab_example_py_upload/instructor/output/report2_c.py +++ b/examples/autolab_example_py_upload/instructor/output/report2_c.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Question2(UTestCase): @cache def my_reversal(self, ls): diff --git a/examples/autolab_example_py_upload/instructor/output/report2_test.py b/examples/autolab_example_py_upload/instructor/output/report2_test.py new file mode 100644 index 0000000000000000000000000000000000000000..7ca1c3de5380497a99e5b09b34b349394227e760 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/output/report2_test.py @@ -0,0 +1,13 @@ +# report2_test.py +from unitgrade import UTestCase, cache +import homework1 +import unittest + + +class Week1(UTestCase): + def test_add(self): + self.assertEqualC(add(2,2)) + self.assertEqualC(add(-100, 5)) + + def test_reverse(self): + self.assertEqualC(reverse_list([1, 2, 3])) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/output/report2_test_b.py b/examples/autolab_example_py_upload/instructor/output/report2_test_b.py new file mode 100644 index 0000000000000000000000000000000000000000..e14f75cf25d8da29f86a70d6cff1a0b0511646e0 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/output/report2_test_b.py @@ -0,0 +1,16 @@ +# report2_test.py +class Week1Titles(UTestCase): + """ The same problem as before with nicer titles """ + def test_add(self): + """ Test the addition method add(a,b) """ + self.assertEqualC(add(2,2)) + print("output generated by test") + self.assertEqualC(add(-100, 5)) + # self.assertEqual(2,3, msg="This test automatically fails.") + + def test_reverse(self): + ls = [1, 2, 3] + reverse = reverse_list(ls) + self.assertEqualC(reverse) + # Although the title is set after the test potentially fails, it will *always* show correctly for the student. + self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/output/report2_test_c.py b/examples/autolab_example_py_upload/instructor/output/report2_test_c.py new file mode 100644 index 0000000000000000000000000000000000000000..c47fa0b31b2d016e4ae11ef4544fdfb960167834 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/output/report2_test_c.py @@ -0,0 +1,16 @@ +# report2_test.py +class Question2(UTestCase): + @cache + def my_reversal(self, ls): + # The '@cache' decorator ensures the function is not run on the *students* computer + # Instead the code is run on the teachers computer and the result is passed on with the + # other pre-computed results -- i.e. this function will run regardless of how the student happens to have + # implemented reverse_list. + return reverse_list(ls) + + def test_reverse_tricky(self): + ls = (2,4,8) + ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] + print("The correct answer is supposed to be", ls2) # Show students the correct answer + self.assertEqualC(reverse_list(ls)) # This will actually test the students code. + return "Buy world!" # This value will be stored in the .token file \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/Makefile deleted file mode 100644 index e511c68d3823b53c626fd1b1bd7e448b36cae9fd..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Makefile to manage the example Hello Lab -# - -# Get the name of the lab directory -# LAB = $(notdir $(PWD)) # Fail on windows for some reason... - -all: handout handout-tarfile - -handout: - # Rebuild the handout directory that students download - (rm -rf cs105-new-version-handout; mkdir cs105-new-version-handout) - cp -p src/Makefile-handout cs105-new-version-handout/Makefile - cp -p src/README-handout cs105-new-version-handout/README - cp -p src/driver_python.py cs105-new-version-handout - - cp -p src/student_sources.zip cs105-new-version-handout - - cp -p src/homework1.py cs105-new-version-handout - - cp -p src/docker_helpers.py cs105-new-version-handout - - cp -p src/report2_grade.py cs105-new-version-handout - - -handout-tarfile: handout - # Build *-handout.tar and autograde.tar - tar cvf cs105-new-version-handout.tar cs105-new-version-handout - cp -p cs105-new-version-handout.tar autograde.tar - -clean: - # Clean the entire lab directory tree. Note that you can run - # "make clean; make" at any time while the lab is live with no - # adverse effects. - rm -f *~ *.tar - (cd src; make clean) - (cd test-autograder; make clean) - rm -rf cs105-new-version-handout - rm -f autograde.tar -# -# CAREFULL!!! This will delete all student records in the logfile and -# in the handin directory. Don't run this once the lab has started. -# Use it to clean the directory when you are starting a new version -# of the lab from scratch, or when you are debugging the lab prior -# to releasing it to the students. -# -cleanallfiles: - # Reset the lab from scratch. - make clean - rm -f log.txt - rm -rf handin/* diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde-Makefile deleted file mode 100644 index d768a52ad4b14903ca2d3d0cea8745d16ceff387..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde-Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - tar xf autograde.tar - cp homework1.py cs105-new-version-handout - (cd cs105-new-version-handout; python3 driver_python.py) - -clean: - rm -rf *~ hello3-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde.tar deleted file mode 100644 index e3f6068795cb9e02815d639fba64fe4d3ae7edca..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/autograde.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout.tar deleted file mode 100644 index e3f6068795cb9e02815d639fba64fe4d3ae7edca..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/driver_python.py deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/homework1.py deleted file mode 100644 index bd5258f7f5597728f597306d5f0c9927be6dbca9..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -462dc30ee9800e94c92dac8759133c0224cbdce8d4ba8deca101829a940d4a639772387ec4b286a2bc6e79f606607ea89853cdf4b6e83e920fd484e5f2a25d82 31240 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/report2_grade.py deleted file mode 100644 index f74205d5b64eba088d62e54e7fb97267c1785733..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/student_sources.zip deleted file mode 100644 index bb4071233d4b81173b73946b3f220c8b826d57fe..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.rb b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.rb deleted file mode 100644 index 6839a6381d5c9a0459273a3804f0888a10b476ef..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.rb +++ /dev/null @@ -1,11 +0,0 @@ -require "AssessmentBase.rb" - -module Cs105-new-version - include AssessmentBase - - def assessmentInitialize(course) - super("cs105-new-version",course) - @problems = [] - end - -end \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py-handout deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver_python.py-handout +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/homework1.py deleted file mode 100644 index bd5258f7f5597728f597306d5f0c9927be6dbca9..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -462dc30ee9800e94c92dac8759133c0224cbdce8d4ba8deca101829a940d4a639772387ec4b286a2bc6e79f606607ea89853cdf4b6e83e920fd484e5f2a25d82 31240 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/report2_grade.py deleted file mode 100644 index f74205d5b64eba088d62e54e7fb97267c1785733..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/student_sources.zip deleted file mode 100644 index bb4071233d4b81173b73946b3f220c8b826d57fe..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde-Makefile deleted file mode 100644 index dfcdcfda5aa8049ab3b62a997b374031687046b6..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde-Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - tar xf autograde.tar - cp homework1.py cs105-handout - (cd cs105-handout; python3 driver_python.py) - -clean: - rm -rf *~ hello3-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde.tar deleted file mode 100644 index 5217159da449d47c709258f3089da0ed705afe90..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105/autograde.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout.tar deleted file mode 100644 index 5217159da449d47c709258f3089da0ed705afe90..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/README b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/driver_python.py deleted file mode 100644 index 3542e09379b7aec9fa34126730ad9a5670160778..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/driver_python.py +++ /dev/null @@ -1,87 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/homework1.py deleted file mode 100644 index 18576f18162b3e965b483dc0c9f2673d29b35a2f..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -bf53f370e71e4336d4a54c09f106ff88be0c37385c9ba6d9558657c25640e0166ca05e546617c8619f4d20e975652285268341097c88a559c4bfb73c809f1037 31256 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4J7RW09dAEABDnplQAh68K1MW+XxsudM+mkbOKPi5w3bSR2iPjq/0bufDOoDgP0a59qm4zFsg5jT+dpVTKPcVl5qm7mS4tEVYjRnoojhRQVv3wGaY5hcXphHa9WW1K5WP/mCfYMIVHcd3l19Y5C -v6O4HkDjBrJJ4eP8dqI5tODjzw1NVfJp6qj6I0xYoEn+fOufsyocvCn25vXY6oxcpamNSIdXAO0Ku27Zf+DyJMXwAuIB3/0yqZIDeDa0Fy5mTO9ozUmkJbv/eH1335YLOo5zo8RH2+xMSxvV1JskGNLNFJ6w6v2FOMz/KCSBI7dbNpwaIaaV -stG1BgtNiHK+hEMuvGOrQ4pyVgbYSi0VzbXB6K/n0f+J+yfYCUkZPC71AD6Xo/LAM4t5qmd5VQAFVzDK0Tkyh67mTJX+WuWdihL1Orr7VEi7EyX7cmvhLGTE+9lLG8dE3N5ocu/H2LAeFZ1K/LZQpbfwTZbeE6qO9cGkhf37BBtlYn625gHZ -5DGrYObZekUHKQQ9Q08U4a1CoPFG7EOod70Zhso/MZNEfI333Iy/OIjGD8HSdTM+OuoIfPa23lmNX5m3FTJQvdtlIvnd+gXTgQWDaakgRTZstTfmaBuIIpEohVIXOr1bgzH9WfMeSUzNIt6qiU4yKI9AsQo0weNXr79k4LSI03CnoaZCBY+C -ER/hutA7xKAZlG1BbldAgscbDw0o7/MxWfghLLzAWt5waCqx+mjKppcjlRYodfaDCVvulVUkYsHkNoKxs/FBbPC9f0xwDLMTgCq9KjY4O/PC7N3b3Rb2Nw+JmSktqmKnUHU7BpqWiivL9l8V7tiXbe9V0QaRUEJdFiZBPfWKc3U6yEUqrPuj -VnzVAacMAYu4lsCFDp+64vMU3rfNDtwmZsZLomoG6izUXi2P8NyzwUW9N7GT/yKyNkm9XSSzSg7D/TY437NLMQMryA1SE28kSgW44/U8Y7kSI8J9xgFCJEYMhrMWKbB11lJ0f4tdY+bpv1TTLzvCOFFLiKB74pyItyfWxbJZxKpTWjyR98e5 -V/bIe8kDOdsS0dfOE/9nYQirAQCjMfdXC/luYu251q3YOqwuaN4kZOs7uA4nkU/9fHXAUhSpOaOr7TW/7JZlQ42wZwql8BejKed1qBb8tf9b/cWfI4QTmB2vzaMXFFy0L7PU+iYBAYYig8F4pzKPt90izJIK92Gft8Qrn5aCuM8kmfFzsrst -6KDvG1u64vwambI/UKk7VYwvLACmz9X/z7V8MSCY340if/Pke+BKbIgwSf28CK9kklMQ0+cRUy1LIHFg+xyHxu/KDFmuGSWDdSmQtJM2BJ9GGL5CHa+irKH73O6UMkE+4wK4QV0JYneIQp8+DSrhF1YGp6mLsJ509hkXEtHNvdMdC6tuxnNr -M5NorNWtlhVGiOsYhsQ1O1UqCm7sdAoPErx2lvwF0kVHti7FZvt6TnhqPpCr7M681wklgfA37mElYTp4zhwBzDrgHKQKlEwueHnHkvgvxCHYKU3IIVMaUVWb8Ga3M3lFUxL0xcYGSusWNusYWSgYsAeqZDd64ErPwVl0bLCR7GmTgqmLbGoI -YeFAMPpHGy8OnLm5ubVmWdQprkYjZrb9+AO3nVEX/XUjfzMepJ/7m3DDDbzQRc5y1u1/T+2MwgfP0yJP2WCrMJpJMuSQc2g9dKChbpwWpyHZ6DBVFAwqCH9fdZn7VN8gDcOhX8OVT3XfnsxsRj7PUxz2sWtCN/TQ6eGyR3Me7nga+KdQmseO -Oj1cId914BXENtYiji4Mtd/NmmGfYkgN2aW8lFgFNHy9mHvlkxQx1WcTdwT4t0LETsT4ysFKqNu7Zw7jU49kiTMCoD/u49L3kb2GOC6zO0TtEGzGTffexzBd64GpslWKX1cCCb0NDgZnWdbGeCMSPFar1ebdsAxZ16WQxCF61Y06WiMvSnwc -tG0Jbgg/WWOh5UT8mNKW16nlll6mZNUJNsV1VBR6Q6J41FlUCmPRRf4DuHjt4PNEJX2xqx7SOY7rcvabxrB+nGwp0uJPPxDih9FJTgO0E3MT3UhSqja0es9NX3HIdGJ2nKyDPLCMA2PlU8tIsICnNtefdvW4wemeO4QwtyRmvLsEulsElXCq -w2bKNfmIcDc7p1wNEbbiH6dgxv5wqY0OJqNPokrobrbdZHdLwwUtBdzWIOI5MdSYkxjZBRAuUeWEFa9k2L02yIp6GZzx+aEToys5YFAV0MItl7hZSZ7KtRNqkHEBula0+41pe+ifs9axNURXAQx+97Q4EVhoVVM6IPescEVymKnNlg28RpBZ -HMtWvxZL1Dwoy0Et6gGOP1joBUHWnix2jun7xnowm593jpfudMBxIcFULcI5yxF6EYtXmFetks56YinvM7bjBUY1sdmpAZ6Qi3IpGNDs93HvlViMAdcIq+WYlc6c3lzaxcRItNDySd4jciGutmS1BA4eF2qgXKdjRjyQwTcnbtCSGBE9GMGC -UBaj2/OeCheJd4iIIbX+naD1VK+Zg+J3m5KUxy00p46hKcJzpbt5nPMHvp5bc0TE/RtjmpRJv8ffr/Ua1bxhytOSM/0SktZayhQOCeeCWubsoAXFq3nVC6f3vBqGqKWLvnDnhwSdvcEY67fXX5n8b4q/IXZSW+KrCI8aJJv9BbZq9tBhuWwu -M2BTxPQPiellF8HvkR2YVssfKFmup5H+zjuawbMJUObE3yCeyAK+pN+xVs09r+ZdsmDpkjKRJe5hJaPGwQ0s2y63jIbqbXlOA+RMwSH1lrNGhnuu14CJTFA3sMAeX7F1F+kIuue3GNqAR8TvYynBlP3srS5iD5EkJfTGtTKsDK/vXT+eZXVU -qkpj8S+s4b5O8GBN/sokFiIksweKTAJVtv2ZNLynvgZWg1jWRpUug2qxZQducUhtPGzxxtGzoLjbPasOXNgSKDvwDXmd89G3X5ldjVqyY7uWA/0QNq/WhNKohfMa4olHjl1XI81tSJk/X8JqR0UBxJPtj1bTkuf12ph8C6dBGZ7+jMQsY3Fr -k8qRtjCTxNdOhYVdjreR4/CpKQqVNKvQBWx2gvoTQ4A3fWURYodj1+6+u8KYklZ0fqHZBD7B2twDiNPTSfK/Bhc3rjAbq35VxvtU3sU1RuO6WcWoWcnC6nT0ysGbCv2x/Q4ZO3Z/QC9m2xwL1bmzniVfWdSddDHUtYWWXHQm2OxmhuPo7lS/ -JGKwNjXey42FFId3jkr6APo/CvAr/NhTm91tk3F6ogZZU5Oge8nx6xE5rL1CSHU1Kukjn/iC22wW2vRTP+uhKE7D0TbHW9S4m8N//sFvwJYzx79PzjhDpoZBmQyfuWYCSk42+3VWOgTj2Nq9CQd16chgm8ynIEJcJSVMGNutDUFPP/KBZTSD -yFN3xAwi/g6jjjonk37ffuwYk+iXGqf6X/dDgevBn9GON4R1tBxkY49c5xgMPxUCC0WRoqkXtsz3F91ebeteIDZ7ElIj/Bwz74UBdKESMWlGbUwCTND/u+1xvnxWywoHIcHzyQDNYkfzczA+EwZ3WGiutwwsqdg0HDDaY1HH7QsUgPVNs77m -WRwm4IQH5H4h5c8VSf8t1/lcIa60sUTvR2vmE2nsSgBYI2z5gBQi6hE8/IkCq1PhN7jvX5pFN/HXOgkWC1QIbylCfZoahLS+HO6sgpdJ3bpYZc3bxbyrKjtJGIoNzq5PxzVAPRzgnjh3mTDkUaFWJHY64KLKx5262L44iokcjKL1VKf8c2nh -zGJ1cvKsL26ggvEWFhNMV3surA5N+QHrqjLrw4mRDtCdY6fZ/zK0Vpf0f9nzuHQHxt0GAfb4ZE1xWyaXQ6/Yn1Bd+eLpu/fgzaYFXu4WkNKuXY0CpTZDPU5pKqc9SoQE19mcWDeLpFK/G9gV2ZnAw+zSllrPZnJrt1v2Msf8yLJYm07pW/cG -u882VYmoqOug/g4lOa8Xt7JyVyWubK++amyV4cC1nNsG9+9lLA7d9C2U9zBT5xAZp0RHXzhT8NTIByrU99oAvUNzeeB2OTrpchvPtFarnM7ZEJn+95oVYKkVUBU3wxJ2ddEQvH2ll+iFI3WPjlHtVY9sg+gPxx/NNJenmtmjIxA3U9JvKhe4 -Oqj3q+0dGaeS8oIlkxBqQIRBAxujvci6/wq2zhTf9k2IZRaketc+iXJbCY4enbYPSwNHuvAJ/cNI7UXoLYOCSB5FpqBE2pE+O4dwolrq2NksN4ECYDfJ0OJ1mGy1KTdRd/7T4jCNSPa44SCvZZtd9Vj5Fc2+6WhlK0wc11XWCxbdYWuF3zqE -w9ZbrFsx8mSVabnTniogPDE6fz+0w2XLT2vH45hlM2g7OZeHN5la6jCJWb4seiSyy4uxzF1V10zs5/RxVpn51IBOOWkTlZANf/h6ib6V9xhVVVMjBZyWY1DGfI1aeDDXfOsgYTLUptrhcZur1BnkXlwbVeVx7yxecfxZBiAi5Zf83FfFIPAd -wlOyTfAAmrFnE7vM+N2WV+1CkyhHPpn06wrgaKuncGCriT5wgAKCsieHcDBzwQGS1fpGKH7MoZmVoELrt+LQaYMYT+BEOOfAOX8Nnh3L+/MWkF2x5oa5/trxLFunCBTThliedfV5lAjj7DNJf+YK6vQaljCTyav2tKgNFrDfFsaf5xJ+rtKh -Mkx+feFHIkjUlkA+RT4Dq8hIqcaUpVuxWggqWV23Eqs9McKWFe4bdHv6d/GUKOMuQMC23wq3cJQOrZbEs+dL+411lXos9OILgIhTzSeVoPf555rVFlXEViU4iPMAh17Kf8QPE82gVyoR0cN12P2EsM3doJ+4hUihZp5IjZz8e7LVlEvFrOv4 -PsuGumxrMt50y7AsawIPsVbqvDZxtvRc5XqdLXEDRtsU7/qgwOoGdTxgQ6c0TFxAm1o+XrBLc4MhUoG16zCRfN3bJuxbOZ0TXfQmRUDTMmyNtiijSDDk6Kdz6ivlcSnpghxSt09xpq25+f3fhAY6Cdfd6a9EHhqAK86HUkKiWzOQ1hWmog3Q -1knXDGpKeJw+8DEMg/brkfWNtVhbjoA5o/qvg9TnoUQFulFRhaNCQVNXs3DEZjv0fPUvABy+vL1cmSaAIgqA8HYRnL/TUaJxP9QcppaUygKmWw/UzfaabIR28GbBlr1IR5pk7CkLJalkuK+luhvC8hLQCzyfaJWSf8gkKXo9KKCc4YN9Gl8Q -OMBY7NPn7kxUqj2xzz5jODAu/JxtPxSXI+0mI+xL2eEI5qEYgtnvRfKdI+dsNOhsjYWwXJR4UzmHO0hVIDzlzJ/kPIhuoWuVLM/W5SvMF6YgEny9nDkxzdgbGfkBntsDPXnPQYQ7aCSAVEYOPM7Icb9g90dets0dVMesZMlucyYwQq1m1tD0 -d33hubjybM8cYUIaEEb+tGX+MzPvBr0GH0aivKH4rSfBO4PstMRzcznvHC7BfqWzUJjpotc5EBeCHtJXlduChNncXf3+2BalFjAyILBTXa+Oub5hmFx35iZT6k2YO5Xw38tkbMxR90hk+vmBmTXtxFOthO1DUQnX+7Y+HaSjLbpCIcs5HBqq -KwoN3L/lgIceRuqORdkmOBOrLSZfYLvsjZjdgpQq3tAkAqoRGktPbYiymfceX16Hhoux32vJKNdyWXbaI8VCQYjcs/SYyrVjfZWmPhwiDiBj7zm0ShAgvuKaG6lAx3rslNAz/TamE1Rrl1DN5/NoJp5wkyzBtU7vB5IA9D1Y0B62q2rK+1Qo -jLkCI3Gtgo2aVWYDxB5TD8Aau6idCJ6q+jjWCFzJl88/uF0+afp5VeETN5FuC5tIX6+P+i3+3gJsCrIy3BjlpmXpkvcdT8r/RA2a8xz4+/mZRYQ/ka22JIDch3fnYf9jwNFY2TIWy346cuLWKUwn5nsUP50znlY6Kx2R/Ev0alnuymhRy0ex -aDpv6wj/+2p+qWHZN1NSg0qtGoPeqi3t8y5dtB1vay956+SfLdpp1s8ybKJ1W1AOnkTpYHDxMMDWsm67F4iTgQwhcNlaDe8iYHVSOe6N7eqD02nsUmDoV0ASNg/aKvlOP37c5I+Ejtjt/l+7N6eJszhsN7deDs/v5FlIY+WkPaNggD27ie1L -NWPZ0Nsw+WzR7xcr2hEpKfoDFWK8g8HJMjLkwTv/UyXbP72xBeKT0zE0Gn4uXRxbON519PITNAI13GVxhT/xAPl3DOaoNrsZBJL5xo/ziqw0HoGyEP9MGvu7xxWXXAQTQndq1KoJ2It8pwM7/+Y4KXTfxhzaSPP8tt/1NQEJ5rEAn93+mRNk -2gXfEkv3duP47xySq6DMkaK3/CN/2d9pb/0TkXIqeE9Xb9V8VZZ/FNj43H/x6ztGQs2gxmbxXhYdxBbIpIooFfB/ImZaAhnn57zTpf8w5iViVXvbQgH454d7RWUI8Twxndhn9yxZi7IiwYiN0Q0c/KnQ4sDrm67j4KiSMAYQ0LyEyf+i8rEe -RfXin1CnP79pJk7DZxBNhpX9SHgNNTv+k5Po+jt520p4Z1U8GfooPBsr7ww1asuvjMBaXpem1xsQEM+9/YqA81vQ7YoVseKG3a7pxNGs4z31lgAaJHxnhL+nuqOHHixFCLEoYfK3mAC5SaorV92qQtDSg8rlx/9pQlr7OGobFJJS5OiB53ya -tCu6GUmLtAu4C+8gGNLDh+E3val0+vnnemNJhH3YhfFbQpaTvwm3PNHfPG+mBgI4EoZaCT/Nq4rqo7QXkO204arR9SCRURZgpJ8sa/C+JKXroS8muTsn/9P0GXBKXxc25TRtZJNk+8E9R42wpnfWfBarG1I7sO7Ejn5nHtpHKLM/DS4ZmiVx -w92SfiRWoR1SxHBUk9a3fHHDYsoiP9vNmKSbq0iJ6ZGktoCr2gxvxLtT9RU2QzujzziMXFmL3xcxRYYOb9pHh6TQtx4lG20Qv61u4p/0IQWM7Z2XjYxkiVskkXpq8iVKv0xRVxCBxwT+qd/yqzlvcIgWX3FSp5YXR1m/7VxaIS0odFPKHPgu -EUUkufyg/AZ08LuznZ1cF/vV7dvhlEMbe3hJkQBeKVBHxFzN1+Vxt/15N/8ItSEWekiectr62MyWlvVBlC+DbISHZFs0m6+6kYAjhrdj16uJdv1vp1QmPF7vmDI3S+kFgoNKM5VW2cRMDOs0p60JE9gwuUInfrDEAj9NYw4y9f6Xrma6XBar -jPPSj0kdZsrnHuiRVWZhe/WNG+UflztcVOB8DfETLabFuj0DlIzdFdcmOeXtRhEO2HuedmXJLV9zgcscpfn+xhHRbidb1th9e+I3n48QYROMdHOIM5LbxePspRTrUL0ZZxKBV+4aAhX1RqXGA9AqtBHQL29hLysJtO3Cz5I/syttm0KChjU9 -BpcGHUyhdNgLkEx9JHU+6nBOZL7RGZyXcgGnUP5qAkFJ71v43TLP0VohgncHlta0iFcdKmBdMaKlFaF7KSoDzAYqcYcgnjdu/Ql0CH5lPZHKdmWN/6lLf/Fg0foo8bdlal1CyBoa9I0aW0Er6B4o3yas2UWck8GYtzEB3q2tE/5fbWtRrf2s -jSijm3AONJhpc2nIWvlKtNLa03Z1PtKuuyGh+jWhsi6PAyr+/2WFXO9ELWx6GNzWSI+pWaLq4HBR/uzVKtmuH+cmm12VjK9XuZyp34J+RpQ75NCUy5/Xt+ztlThtR7YWG13rq6MCjAy9qVqrPR9ZunGGo962UhukLMqVDjxCai3vMlqIxOb/ -sQqLTFvhpVbek9CzN6QS8RCuk7fMk9eI1Bd2tpzeihznYwNGg49J6z+tXjZ85XntC3HRFjf0cZdUx0gqiiFndW4Zg6RY6HacCNwW6HESM9n/xJRIJnnfvXUNwrFJAiMEtnGB4N881rpuqAEeSkXT6S7pxCbY3WTu7SSsu7sPCU9VTQMDY+HU -VIN/m6cwRbCP5f1/H96GZTuSirZxkV1VjHEGrc0M1Pqc3zxUNWFoiSTXR0QsSuyU9JZDkvMwclyuzuH05vCeNMqTd3lFfmJmflDgIP3qkNtoDWO6qiJZyNHgoHobm2OCcTgFG0mp7DZ16VOjJU5sIvGLFjWMERguLrrTk0jZPcOz58+S3Buy -71oruXc5Njap6u0Sr5F7xLR2Zj8oK9SzBxEd71QkA/Ccn2fBAvpsE1wHcAi9VZtCTKFAV6Xs6ZDcr3g0wlkkA1iSfO7TgxcHtMyOKVIizIOMqynb3Rt61KLjnEvDHFOkGoBDV0DSFwetW03sv7PAg4mgAm4W4l3tRlfq4BQm/aiStd3QeTl4 -3kiAMWpnXoeXnzzJ8epaGxx0fD/LQxWOwR2Ii6jU1gWkTH3zTEP/YsnoI90eTKWkk1S3nRHK1VpKQDlEY8xCP5wI2CgEXPQhBl3RCVMtHf1hcxlYBmhwYR4mbjLR5lmGnKKyO54CZrxkqji4+oG3g4xoKSXaeaTVC5nXjJ2yleEQdbXXwpyV -dnpsYwu4l5P4LmFEND3wRQdzrRcpYu+8pdxJHZ9st5XbQRemoOm7ovnTK6DnFNI29AuE7XwLRuGDKr8ox2E7GCs+A9bZYb0o3VdefDrrnLqNd2ypJosWEDe0pvRttGVkZ7tuRoCex7XT+K1eOb0GHL5YVGcXeiyLiPKvPaQlCxmCuwJ+WSJE -QRGkDzqIJd7W+FdTbPWrQUtHodCO/lLpJBMwXhxVqeTz5wRX3dEqQ1BGhpX15Xu2PylKKGBTIijem/Dey1GUFWAKmXelMBVuz/NU5bOHSw2ZgafWZct0thOwFW8jnJv5Rm6pYr5UnbcX9fVaGSF74PN58+idxEoSQQLapIDESIpY29VDooFY -LHjREiVdmoXd8PQQbTtfJ7LfMlDYWO2hGFa89XJ1bjUjqmXLhHtsX/2MRCO9CtbnbaD9DPyK3TWB6J2CgByMf4BhLFY5U3SI1BnMxyJ4YB0jCtU3KEd2JNJurtL9Y95jbbA+sGvLbL9cD7XN8Q8DoWr5QskYCkJvh8bbAfMfRlPhPypCeCXn -fe0KSiFbaA+oCxy6jNvdE6r6wh4rH4HpLANna+osiAbPsZS/we5jDZAbFYf4FRUwdYEE8+SrIjblAQNPtaSkZdNryuodbEK1GTc1z3CHzV88JYk0jSW+ExoiQoZWM7kmwNkQJPDRdW+YSByF1y1kODP5ZZZEra3DXnl51TeewAwJFGxlqciN -q46wGdtywUExgGiLBLLa3qRyKn9gXUPMyIL8Ug3usrfaZlsZ7yP5MClch7qmm/1AvLoSB6OwlBgp/o5dp0IZm2U9y4gcCi5BvX+j76WgYtk2qMBEggO8J7yZnDvBog9q1nsZ84q0k50/knWGxhsi2uBOhwVQGvuuYswctyFIG/DBQIKCU7N+ -hluhRsAijk2CcspT03ST4B3Bca0BQjeaOtmAGfG10JWVP8oT5Yv5p+JMcn//FZLGhiCAxAaz8CwJGkvP4oXdq3EiCMtpL2YULsdf4p4bP5CiluMY99p4LSmi779b/yI64xyunnMHCOwFhYHNrMI0B+Rtqm4FIirH8zVsGBD4YSiu05rXBi7J -e8SVjQyQV5pwl1N0EpXCr7NnIlkIyGxP8vRJ5fcXn2/YeMaWS2h0rfKJTW/axkfHbvLcBixBehmo71uqF6jAGy0xDLxxyGP+nAakQ+iakOW+KANDMr2C8CrN1QBoorrxF6pPC5BfuD0R9n9z+Y+uvdzqLu35ScIK0qaU7SVgdoaem16CBwJW -zsvAr5tYU7qIZgyONhLvYsSbxHLa8QoEz5PKXJ8GVsyYiYiQ0HtWq7LHEsXP3CoAGsOvamYpJGD8f00GSu04uiO2JCc0/MUOdIm3ypGcLdkv7iMpm3fSaEq/5V3hR6SnCSdqBeQxhu0/f3Nxxj6AN6O0wi/sM5uwzY9Vdm3U8a7xbRyh1wbc -VDCmEzwa0Q77AERSYALDa343MI4smTOnxP+ysjFmf+5Vi6554abF9JZXoBsSM05hW4lAp1SLAcqwDrhXo1uGjI7aQBduEAHR5+STUjm5UH+2nqMvHZLwwSOJC4ik0wUsvO23T/bUAlnYD4HpM7azN8RpZuN8yTjY38zHpNx04tLpefkTmvzz -7GnOl0rhKl7Sj86OICgmMJLSXhCzmeod5TIw792fUT25WKUgOIbvWcpaoYrcIv5HENTE6wfEN/c32JLIIO/CRJAnqvjAwebvsu01MPohL/OTNqm8W3C9npR7kZevPLKu+FLtLum9YysIjD3DDtf6QrQ5q8rTss6uP61vU/7UqiFt3cMnlyHr -/qJtnXU7XosJIHZhsvYsAcvhm00W3JUx4jZI2wt6EzDLvQNcdBEqhJ+f7G11WBO8pD3e6MR1OT+1ixasRfEtK43Saa6YkC1Gr+MDOFS53A6g0SxVo+aDAdc/uHjH8KSJRozp0/WmBmADOXx13oTlRuF0A5DHUwwSGNjTolx+eg/LAcUyfOvc -LQ5IN9Lq702hSmxe1f+tanW/g7LNBXEXUXfPx8oljd9ZBiNTl6G8WdS5628uQP1P2NnKnFyX1ovuD/tLh0IrwVY5WfY2nybfRjm71aYGvjFjosVCYQyhOKkAk4YViG6PrpR6dKJ2iKLTpXfebnHJEU3HcVPFMyQLvpST36ApBtbOZaI3zu7v -PvXB5KCmCEz9F5jYRbDqOTxle7XNisJm6SIyHqRjV70gLDP4j//vCju1zoRKJMjI5ZZkrhZAtrubSQOdqtPoHIbKBQfdk0Wk1FfsMbFx3SVh/wvGHppDrGbkIjQhua2nzVkmQNLsDy+jYQ/LwlCj79w/CWubKPGHFPTEn0SGWhW67Qz9xxHb -t3RK3Nf9kRx/xiwRejBQULLj5ESMbExDSlOZ3o7YcnLYoqStyU31rGhp5VLqC50z1XG+vxLq6G7fwLNhmobNyfbgH6QJKTvZVQRx8b8AZ6RFs10J6TQtbukk1fVm7hPTe29PtNoOnLmPBJ0c4lP9P0J4jHC1CQnQ2E2j9KQWBBm4wD0+CAEM -wvzuTdsb77FUsyI4yk3GKjJ57hybvdLXQjYkTSuakwbL508n+PXj4C4hZdyXfpNu3nbZBMp/3O3Gui1Rh5mz/llX0luUhnFQ4hgKyopUeFe50ruEqglztKZV0+ON3w+rfP5oIZ50ej6xncCdF6XvZ8a14jFW6H0avfU4c258rNeyOkKbhNiP -ylVlqZsixoxbuXi8fWyhVGiScEZmHdLrK3mhLk1+XhXavBTrOnS7MIgcO40jBi6BSlrXHXOsnFYfovO2Tj8N6LuXAXoZJ8kXznWyI2oTplyx5NCw6bQEJ4sass3Oi+iTR9Q6gubyqJSAOSRph5/xNuGxBHsZrnVf6s0bAR3ydLPXRqVHaSoL -Nbiof0l3t1WJkGt3UjIjewi48EjDmew4lv4Zfd4tXYw81eUz2srVEiovstkBsWlYJEfNnhDlGRclgIYv1FQVXQ6Qq/NuET22mYx62cN60tPV22W+vPPg6+dIXGy6mBzivVEx0SIy0vYIHtG0a7i06Hhwb0IQs51TmZrQNjXuaY+MNs5wYDKy -nscj7d8cny+hMvzQmg6vGBaJN9o7t88v1xVFtXkRCnRGOPTSOwMVmrYd+MSxBr0jWTvJ2/gRi3CRVkmkKTLUXCbqkkBhfAnfWJvOAzIw1TZACqAsadJSmPJrB9pb0M7A0tBbgTaxu7XhQFnW+5aGmGLDv0rn1smUJ1KGa7H4qPtRWSx5rVaL -4IFAyMB6ABZKyJL2Wlf8vIatj8DYZLWipmIQaelc84mlQ6hd7t13IG7A8C2EXqDh3aQ5uh3yRzI30Mz+No8xOwaNFvNYAnM2Wgu7pkk0zYX2n1afKtxbPkqFtSamhZK+B4cgiGG8biE2A+hdFRjrnnyfJdyXjBTluTowjSsOR/NB3quffbqD -jb7AodsJid8L5U4hI1tf3KKCHXcU3n+8D+ANYjINru7ttoHpENCWcPo3pVmYuhiftF8aLDsV4eJv6gpJYV8RdEgB5ydr4h/JZsl/+NuODHrjDFDkfH94Svj4wh9m6JiQRi4RMxfgOaZcF4lsA+zhKsc4lb6MvJif5SomQrW/EhN5zznCDGvt -YuNAWngx0ye4UkJ8eau15gSHH8x0/1VvXYiw8Jvks+qZGbARmBvO5LUyLRhqoBEYY75cMVSeuUk72+xY3Tdp2sUxDu5Isg3/gV1uebBaRs42MuKpDMf5otZ3G/L1Pbti9GoY1X2MkdNDpJk2gYhS7N7tePklEKIYf74rsqGJI3Lo6cpmXg/J -RtF/vvwKnmBP4Niw7eo+nGnqU5Z2qP3SVOslXQIfZKrlR9pEHWccMnllbMhGe/B9FSxKRQNNOwLAjYk9XC10ABMYn7I+KdlatsgcFpnWuUniuQXdoAThvm1WtcdLyOE/1fW5EdVFREKrS+lBHjJY0WTEk2D+B64KrY1revrQWgrtQjcj6xf6 -B7WpFmmg/Cs/whxQHsqOgAzUONushkS5F7KaQuRFtpQaK032EWDGaUw628LUQvnw8mkT61XgOZ8C9t2X+eolcXkRGC8kNP73HYZwNpDZsga8xtD6lR+eCyAfI6McQx7srt9fp+agksreuKQYEv8N54+BKiwcWhcvekkersD0O8uS8YnJUG3v -pxpGprsigU78mjf5at0XqBI5DypPCS+I002iFJ5yJnr4uUg8Y/mR9W/J63JqicBvPdlhrxNVLcSrWJ/CSBaA/HxdJNFR4Q4TkhRHOxSQHilH+5CtYvaEZ4PMtTThv4jk8eYmxK+0hx5Wd+Y2rcg/xaJ91/LgE/G2MttCobVv1Tkzm3ylqwdq -TsIaFfJRxOkakjiRiExdDjPkyT47BECreWU0yY1HiLRHjnPTduCbAAXzsON38sH8lEjIeMc1K8yjtovCoblKJUZL6zZeKiEtNwTRgSj+XfzIBu+k1qz/33soIAvklRyyTjr0yLLQfGmeb+do+lyrh1LyNWXx7qtfISddzzvUkFEtTi16Itlf -IHTbIkD7vFJWUelOqEVmPwQu0xrEuV4us1+Qv7JhSJuex8LJ+b/pTPmkppkTJxi9HwFILjesG+v/nmCD5DWfzWUNTZG5IcQy8n0w2kyOklwL2tUWW0A+Ink6Jk7JD4yqEHpwweafYZA6X+A8IDPSVOGjy2lcncFcDAbBJqpdtYzdTlDgiQgL -hPnZcLgFTHWS5wBVc9At3LT1dAs2iCy1JMAxlNK8ZtizznQcGyBXWTe8fRRuwb6udNJdLkMsg/Vi/0jYLUNzo+NXM4DmfWzXzFobUKOVjEK7t4umVBkF3UeFyzpqbpgA25WdbefKMcDVTvsmHOTeX2vhf5B8sHScWw4X1RCBYM3u2eIZjBRz -9KQMmSLoTKeXiRVMyubbHAQMM5u9KpSHYTqVHtB2PDcBN/aw3HpM16Ta+pGjYt559UXEM+eUPiHNQSxQcwO2HD3SyQqKkYmS/+5V7r4flgN2BqwdtAWXIRg3Iu5CdVMfM5Re1cuTh7Eht5KjsG4zfQ5wEst3Y6Jb9KDsvKBeaRBVcyFZ2uAZ -GmCFZxmNc9TB4qra69a8CC+wWaar2HmWHTf2I7TN9mZXPyMASJj9zwPVpZWQUoAih85DY9rkMS6RTa1N74pTf1/4wRTzyypkF/DVhF7Ltz/CRK63FcNREgsDLKNH8KLwqn87RpJgULhspDOuauxOiGpNiYJA58D832cLHcMcIKZcxZDG4seB -4lopf5JryOfdJuNzWvMoFtyjHBOP0faFDNumS4Jizd4ncXm1ytJrvEUE7K8dVL1m6DLULU3zIxa9cUJxkFeE731VDGyDtB4DB3rM4W+jjacI7pfqxhxpXPG2D1hP5vgxgqdXBIpHjBcPA5UouWb3keh5zbykSNz0NxqM7BHyKU3BUJiafvI0 -rYDClGEO6dvkLMt2lAswoDJ3GWevGCANYMoAI7njq0IBhyJQWeO+oOckNMDqpJS4xu2I/nPpuQfXziyphk4Nn4axpTAsmaPXT9I8XmM/FqOZmuOVx5IssP09YC3JxMNsle1GKKLtm97bdI4i1FeY9FKO0HBJlN2UnmOvXQvha5Mr6iN3Wxv8 -VuVqa8qxgrFykDhjtqkrK9JilberS9u2ldhe45OoBbyau8igHPjRna0BDVDskZoaUjACEM6LKpHq5FSYTGooDhZ5yEjKrp8C+cQJGPuxwv4yW6LSSQQTEALKUbLxC6MDinvUqCL68BnAtcKmFlXEJp1o2N/+Lbp0aezzEU6f8ML6OJ4l8OCt -hTMdNv05u2PJ4DTpevNrg4ot/n+sq21y2SoHKxEkeCx+gKeZ2Aeq0tlSZUP0Bxj/bKcmaJVW9pGLc2xCqRnLANaZ6Q/rU++/QZP9Qaol5zfSJqvt/UuKM6AaQ9xpxsblLXsEAC36uU8lzy4j/MISSoDSWlpDKOuNKzRdYgFLqwIwdulThoW7 -kdUzhFuUa2QCibCcxaoYLviayQHaNw+rybFvoIfEi7856wYn+panpGqth9YIdd8ZOkX98NjW4YBMrk7GVjDFsCN4x/bUdqJXic/gJyJW/UKnGogD9FJz06s6GSdiYEIsv5GaWID32q87Wk6g0aN0ZBKG6HRhp4JmvpBP7xz4ZH8GXdbC1YX0 -RC3ul67Y0oP/HOt3+QwwcoOalRq9nR+h44aKFdSzNgI0dMQ2KaVSc/mcGkTxogG575SYS3ajIram+t8croPBNfsXeN/1xhky0j0s7OkVoIihDrnHThyo+HqOEki9l3VDjuxKXGFhTkzfUomDR/CHqOssxvDU57yz949YNScSANokJHtCJSZM -xMrjbwR9Qi/b9+BwbB8/k9aEyac2l9ksXXFmBtZhO5kR4YuRbzkonZrnhJQDFmlF7ZvlRCyk+mLIiH4feCY7uhQmFI2Tn/T0TWPXVAzA5Vgn1ZtyCdlyVYMpJI2lvcWDsKhKIEO+esXmH9maZXaeaDx0jRjCy1ICJpQOzfGYdj6ilzWxRVXC -hQ1X62c6m2WHHbejfxFbe7g/7YeretSnHPNZwgvvxtxvkRTiZZ9bhKj1CUMb9I46oqmuiHM7qUcPeIsKeZUek/Qryqn65hSkUTNUfX9Qq/NKqrntrvBy65b+gNM5vpwWpE1sdBpNzGidyLibWfollkIRktBnBL9mDE1Dn0mPFdigSS/+bji0 -iXHrTziOD+sP+cdeBCDMNIj5OX2h7p9xLHLsun1GqkkVVyn+o3QrJcyY6iQmZsvgEWACosCXbj1LW9kzDQfLupiGzg24e+KvQyO0F7iXSEJ3CkUlb601CGab4WRJADQRXAbFurrCoVygUDNWo9R5eAWDGX4yTbwzwp9jpfBQwTMgqs5WE05P -D7LKtr/XBtAJnIarySXo6OnAEgz+JuzYWRDRPa4qyigwMIVQjHxW27/IyRrOAUqBUFW7dRWAwcAc/MfYhaKyj8au/o3v556QaioQsBoeCyPGmX+5R5HHSANZVTHG/+sAKXOB3sSR1ZStwDLsBBfWniwQv0vmoFwRiEe+2i3nGK7Qwcc0CHZr -fxVGoF6F3zHVtw6Fkg+hk2wLukOopsOla4my1vQJUumF4EpZTbUxe0cnQfLVaJLPmKSOZ0Fu2j/Zt9zwcRxobQKyN3oyYZWCEOKfo8BGlge4Vymzo68qamleDa7yCrCVznsfx+gBRfRb3HAYzpIQyz+KkdoQTuUcagnti+oho0e3IPInCm8B -r49wdTcj74XVw9YYVNXjM7W3o/GaIs9jQaRTqUGEe2Xd3DuUnwFKeEtpaw7HAa106++Ju0aSA8+T14516zIOV+AFk9h94lC/TrlisnSWlB+PE7Z+hJtEv8VB7/VSfhs0/CdWszEFroNAALNY5SiGWKnmSlR2B+2iANLDI4ec0BWEuHUCKPjp -GRgAZcF3iq+NerWq9nLLQp6K7yxKkCEvI7lE6rW3yyAAX5y+D5q5wqnkdsEJOb8ooc9sp9CICTskLKcjIK3L6bPf5LOpN9wYRdDDAisqrD9yF4f8+ZWRMkPoemDzvxlCdjtR80YDv6eNdH+JMHgY3nl3gN+gT0C2MQ5gbOtLms/zl1AQYrND -nf6Jsb45DTedzoRHgjDgKjsr94kK0VUfDl6tplIpkdrTLr9Q0lB/wbhoZKQLTUlsMmJsaDjs2SZcXlp9grEJMbaS46Qtf1QBJPEJR6NvwaLQaG5Cpi+54WaiUChVPdz3ke5t6Z2jAj2ElzxQRjFzO73YHvqjhIzxewtPTZu+UE+zLvw9GZOG -Kwetjqu3xltsWABikG/hrvXYrfi3oyt8iE/e4nJ0OKhjodahhDc6dK5w8IkQ6Sl8KtHvrj1+0jEJCUM5nxVtj8fIaFGVFfkxbS8kxS8/Al8EsxZDHJFtTWn8seTSHJgtK00XoHO5bmfg3AF8atRDGsNUaKxYIp/5g9tWN7Gj2cygteHuSIIq -77qoX5Wb3N4XGiCmoa99z2XQ77aceL0tTdRQPyt5rLPmgA1TDjWAyZ3/hSpO4MzefKdX6WGApEwB/gNgLFk/9Zt5nEAtS+vNWRKXRLQfUpsQgBT2YPiAg0dV4Ozhq2uSGj2eEZHgy46MiFpGOKk6RCNxV4A9ITfI1C/ggYaJnR5FNSaUuKeu -F43qly6jZOZ4V3qSxGmmMbUcRm415pgIVDxnIiYZxKQp59HWzVWYHacmPaNu86Wqw1474SABl52RbM9jmYq47EvmcoDgzwG2e9kcyAw2jE6bVXmuDG8LIChWlAYZTIWUecXS2+L3DTgMSJlhyGqPFwqSkaUWyOeQ6B3N5hPHyYKYByidROgl -qvV/NKnR+vHtOKGkRdqpR00UuAuH4LJt43yt59z3lFgdXpwvDXyUXW+2XSIXpeYs9SgLFubMXeXZ54WtQUoha3MbLFprVK3jpC3AuFZ6WxHr0OsC3USQrSmaM7aTZW8FJ7EpRVMDisgdlqW4KXmT9fEv95Z8BStXOsGLvtgGTYoUiMvgsrej -FzibJ5K4XdUKgEql1KDAyxXaISsF3kud7vPj9GOK2q/6CkW5X1ZUDCnT2cwpVcbUhsmZpbgzLGCpDOADsWI7X9RFwA6HmCdnEj+aZDEVjo/PKGdG41vxHYzGLACJZzAMrYaZW3jcMYn6SZOJINXfJ/z/erEEFSboqLIvzc6tMcc88gjgBjmc -GU2gxxO3M5V4zConFMkbXg8n0AAoARBHVPDf0+r//98gmgz8LkxKPxJ0qapkceef0qOeg//FB1YTPf1lLbEYEHI+bE/Yl90/8PFeKkOR+M/JUgJrY5DE7uPHJCy/BGS3Jdio/Kl2gAiRJL7Pq8dPa6ojVo+JGSRH4v/8OAMO9ujuuRiYlqG1 -OVBqIa4Zo1V1Uy1es5vFW/Qa8FN+0etMjwS0Nnw5V87sbpFcDt0kr4jSkLRBiOfsgY+fVZt+zfvLeDnW4yauNxlU2WoBb+vrpKraQWz5+/GQStqH7akv5Qm+6hc9rW+1bKb1orqPv6LqrnhjcuocnDvi2/8fUkpgRB/lHxDk03RgYnAFycIZ -kcri0jAzKY0oXfm93A8X4leKRZBXkdvaN9qSTswnGUhNUYO3YDHfsaWYAfgN+wgONPXu5/JNEKfzTyLbK6++UMKy1KS/RdkZhdCc9Z/nNUCzrVnjF1/qi8hoMM14ox9JBi35FxKljEYfvq04i+Q6N/cjqxu1UMVLNVyiBDeT+aMtKYqIJWZL -VRsjfDz3ffkRvYvcB8PwevPmRPXtxtPfO0YSnAL4GvT+w7sjan70YCiFZjK7meULw3x+JOcwhUrw2zRxQOjBadl1RQRWvPXj0ul7XjxzixjuSWIlLmO6OTRV21afFfL8tlEJJVBrBHOQmReYkMbzw2U4Y7v//aiwHPKwumrO+sdJNFepuDtI -FCYO1duoLzOz5xJaCEE3pG6owMMmtB7Fj8l+OVIiDD58HRkKlCy3T7bjlDEtkeKgJ1Lfj5/CgPA6A7DNLBD5ZISxjc5Jc4jvp9VFJhxgLrb/4jzFMZwOKlkJxaz8q3II6Mpc4xFYWDgpOnG59uyi33Qc1CZ9T7sHnoHz8uo09dR3Aul+hND+ -Gp1sW59FMCXLnCnkhyVBfXp6TH3qAeHhdpMLL701rn66YKKypS+eQzIiteLWZcL+C41Nr1fyRAx4EU7tgEMjBHsekg7ArWKyfH7ZttLElNXu5WefJ0CjUkExhJ8wKf7yLHNQzjijTS8f0GwjWyfWj711RYEjYUMVdnfa75C4IRKSNbnz+HAw -+nwiZ0q6sc27w2obQ6bbojeka2IlLMYwwETuV5HBJRebFBNfKpiKvh9aw8Qwqgg9fvt6w3Bez5AUbYMMeMzc/jl//fNXmz4cByVs0Dy6lxhV+GBTyrwirVhAcnx/9j65G+MCqBQEftE2rOsG0saStKjfnbZK+WntOTE3gmsGBD/eGiEjyYn8 -gMe04S7Ed7u9NwBNSPcm7NSa4UwiVe/6lap5T6Gcm2zlHEZsbySqPkKJnRY6XZ8+y0v2xSUqkuVK67jZBupGnBUWVp2FX4soayMVTQZ7qaIsL4CoH/TzdPkNI8ScmOKqQWbYP9ph0WvYT/Qk/EEawt6CEerb5uZ3QY6erQvcfPWKl/1RiT71 -rNWx/PQ1zZ0S5IfI4utmNgUOGbwRqwf3hh5dk3ReO9ashoSt5Wq+xm0YLSzi5+IwDR0ZHegOSmqzvvl+mcNQccDgxy1C9Wj+rbaz6ETIjP9nJy+yNcIL3xZ0GA1evOfNHb0lWmSH3iHI77hsBl5UBWvotgDvkMwEIKObAVVpeK4R+m2eZe0u -He2IAa0RFgThOqCDuPsyPdacj1Kx2JU/zzyWd3jOmiBCa8znJhvFJZ2j91eaZxyAyTdWxcv71nP5cYn1ER9iUClUFcT4LrrsXNHYN8AYjjlM3C8BYfQwM9F72eZUVxfb3hUJOO7JjM3SePsgPw9kRqy3Kdw2Dq+4wj1vZPp+58AF3SqA59os -MzD2BxKYkyAb2hRLbXTUI+3AhpBIFWXwK+S94irJg2/MYCleLeI0PVzhwQHK3kRBdNcU3YDZP9COooRRvGOkFVT4dig5Wpmatkz5CmePhtq18l3JWaeagF1wH/51l0rUsXRZV9sEhZRetwTOYRM3VjdTSKU3LoU/5e5C/2W6oF0ugmGnHzAr -7b7r2pCSWc3HeHrJ5TbjH7CVZ/mbSX37r/LTYqupXSru5MtiJw9uo3ZjszTyR6nfEr+s4NzI2xPgOtOXFcIH6su7G+lZX8wPxIj5b2GfwghNdkhqUoxER/Sk7oyTuQPluPAgVm7ymKu2y5+xhVkFuPwSea7HFH7e1iba8UOEwcLZ3FbRoy4Y -PvaDivBaTFu8u+u1MmIvUxOO3pXGZomxEVujPDvZcvtvbZgBxiX53TeYDtJNlR1hbjiA/DCqlpMrs7YnwFK0Bwn3mhTms4VbONcHTGqi6Nrgr9szq866Wzegne1WXZFMPQokHRG04bmny48ervtl1pNQKxDVUNSBtKkX1DIN+hPCVlvPW1fk -5a4FxN19YFkm773ubZ2CaqJzuhKDkMcSp6E8tLuUTkAM10jD3FliPo8Xu5vPv997WXH59BKQ4PXwrLVKLbyyNDOrXxBxAk/JyPKCp7rNVLJbqAipiFSswJz/ofzoKOHejxxbq4v+aQUQpjcpNT88vZOSuSXhOTvfHNr+u+peiHAAN4v9d5pF -BHp3JP/bNemIGiveeZiQYLWe94U2xIXBaDqDmFtwrVGvzxULdn+ceVqbViDltwZ2E4QN6mZ9cfRQj3Is+HzjKQ0wJ4I8RIf7ZaFsPaPBE7+fJnAQXBBKLpW8y5EzZUqTulx8mKdwNUapZZAZeHF93nJCVDQYZzFYgJMTRyLgCpyT47EYmVp2 -qdZ4U8yQpm3ptijDMbjp11UBN38Pgt6OEhKDx1luWVne5Mo9po4mbVytL1JViDYjOVXA5Gkc84kvehRbl8MkMmWnEK3W+vht0qAUh3bRavdpB80il1iKzVd316Tt+fj9QVVTdfTCgfp+MSleMP/Jfka40c12NxoChP5OgejwBU/LMV5ydOuN -LPik164kPS7w9sA/I7AvmmfRVPPuvOSfwfRD9+HVTvSVeMgDOphs2/Fz5um7IRUMdNk1yvl9+gbng8/CZviPNBqJ/gDvK+yQe8TYzna9jOsBYej8MovYf/lCyY0gkJxTM1TKR6Wqo+XAcmrJK7eV2e2tfN1tDDCfkw2HlMA4sVebS9LqiR4D -mGCzs8rdrgvFWjPhq7BIHxHiuNzi6mfPCshdVgZiKXZnQ+27KpOMu4Dw1QBXh2BC58VTbaBpi2MyXoqirIAhvpoQKXT4czQlyUyem0uLxfJiWnT75mryoQtK7R263RhiUxSRVNkJTh5KsCxWHNIMtlugVFMEd15XaN6JkimaLf1lkWAWGXX2 -mdiAXAqLOqn5A501aZa8ceThFOAfOKJwOtzjcwP3sdCM2CKpqoYGszsBubqkbDaLb+IgGgYFrfGNI9nWdz6toqrDJp/8RE0dQFNC5G65KWLhhY1vAAdXO+9paN5kpLG0E9ZcK7rOT0JUtEV5veU8jnZ7PNZ9o472sAPMDAv5/CrjUCDv6zQe -fxVMXlUmsO7UZRzk4mVL21hV2LrpPATauERblDe0MGp/U4yxZVrvgcdxoDmF44OWQ3ZSOIjurlG0K5S+LxpT3MAjF6O1K4bXNf/TrP7Za5z1Q9MwslWJa201u4zKIX7w5aBnV8G9HvYaIfXNg9kY0I3W8d6PWO6P8QunLG4fEeED5bfdMr77 -oz+3wqgROilhFMEnlby8SDO/lpPT7wPhycoWDutnty/yy8NPF3QYzKOdG2vQjdp98dULRRFPjVOrIegbcfJwuO2GFrGiT5E6iFE1NF3FETAZBpWfDbs/INyUFOjE30cVI0qIhJgL0QnuaMJpUS+U3JhElyw4U9CWGjZbBskrprXEknVLtooS -T+hyeqi460Ke6NCKqMOWoqZmR/m9DLP1Nw85amYVMf5ZtRfRtn2raHy9WmFjernJ+i8+UH+ohXgIB6V1yu/Jy+4UztO+iJ1TyTOIh9jR6RQMvWkv4wkoRnbw3Md22ugyjWcTwmo0HB/D4heYAOT+ZUW51vD0al73NvZ7MBLOWyOPUDKR6KMQ -KlME5ZhZTUzYjHoO78Zg770lBFdYbMllRS7akauTjYmGIR42B9iJpA2ezIcriZYee4zSiFGuVtzRYtR/kPJffukZ1X/xzaDk+XzAlPwy6FYE9WlmeG8eT3q0xgjteImZd5pVM1Uhd+537aaAATMR71Vs5QfFgKENHBRvEJ94suIpOJadgAcZ -N3o9anQhfBj/QCBtjTXj4cFnbhg3+UcDNI899UfuxX0xKExTPcXVCMhQDs0R+sTZe4XaU6TsPYdmxS89lAFpKy/+X8PtgSOuBSl1tlQXwoFCZpC1NFwU3jpkXcerN33cYeFdsZ4ltBUq7hiVvm1yh7Vk0DM8xSdrtW+O+c5hmoT7Mt/QJnVH -aGR94MC4SXjZGTAY4f331NIRuajIoJ2mnZom9RkK0UVOBwYS7B0OnTybF1gdXF0yDr5H9rE+iaYvr80QPN2OCOdSJBBPsEpw9GgVYyyoQLVtD0+Da2W+kE1nSZe2LL62iZi+QJL6NWh+X/Zo/z4T+AckW82zxNcsykuKEIIWa9pw/hoDgNB6 -jt44K2efa/e/P4OvxQ+o5O0cXHaqiNOyHkJStvR3niTuqTq8A2xTmt7xgUtoW7eHfIslXWBcC7/FASrxL7b11lmF+qNFmoCNIAtzRb5/gKEQ2ash81Fov64FP9W99thFlN0l3LW4I6Njy4cbv0trq7etD+LXlKg65/GmEiSx7vy9SBeCuBzh -PWkW6SlFFS6R2ltZWT5GhnUYo0clAARqZeqU3cwE+jexo3e7QaQ18DFS300FyV5MkoOjTaPzVRf/swERc/J8bGQTxf4s5DQU7hG3LGI7+zDVUeyf53c1zANkfpKy9BQ3+4UXJ/NeJOhHYFVns/SO8iaWbbmox9jJcuv5Y4iUTybwqGtUOzQ3 -KDUEoWgGl+T1q14+dEqmIIv4wHcLSVTm9GMzbovK31zrKFdCwYYV44PMkWJ/x4zpuIYdlabf1Ad1vJ9EbmQH2zvI9aBfGXxL3xDrbA1lPlhFln6KljCbSbi3kpZUZksff5RyPH/IlSwFsOKWDQkwI9lbIv3pWxUdDQHgn/JiKY2NxZQQfu5d -+faCdlnrPt1mJVCQfT+dn1cFGDmiPdbDachUt76gII95083VxjItp315ScC4GyAY/EhU/N1fnoPf+omySm78rRBAENQFNkCsQthO71DGqFVQvQSNU1nWSPuAJKier5VUPeuAZXoQElx6tCTpcs2ZWTnot4iNtf+hXt7il02PaQOz4bowaE8F -Am1jXpmLb4ae4D3ilyIQEJLi0RBR7lGb2dUACYUAUkxatHwn/ypy8u0tPxzDsoH4m81OUpHqL1gV9qgxk3umwqsNSW0GEkwobgrZQysKVz2R4/scGoxI2ZJgAEVSiV7OufndYOp/5mGdYX1kSU7U+ZrvS57jJ0E8oiHBQdEIBv8v7wq3tRPH -D8reIXapIBuo3r1/E9vT22dZRZOE2UGiyIXWMUjdjSzVaKBaHAna2P9tyDQg/FY6C1TsouBaXdK0At/84Iv0nGQSzB6+55B5hFo0TLkykSZLObyhRFXVZEhs7NPyxLz8l7gvPjnYc2TMAf/2XyxeMBp4InyoiPQO4wPGJjD3lMgmPRwAM99F -bBt1FB7V/XrrbzT5z4oA/RgwVv2pWoRuKkFGe863QjAQ81zVuJvd4M1Z9mxy6XjworM/1gw8hqwJShgDiWQ3tzfZMkcTG3HYbfsEjezZOlz2Hj/a7WyKwlwp/Kmm3iWtRAXr0cVCLybgMf+UOk5FpiDuI0tj9jvNGnQExh2p8cm2YkyDWkbW -lZyA3pEzJSLN119uve72IpWc0T1f+v8SspldlVkh4ImsK4X2AICbEGcoDpan3XqhOFuMBV4Pt4WuZsuiDhxhBQlZ9ohfYYzGnCqcJYnqsG/V8R3jeiG3BnCeovOfp1sucUCtKe57djMGPFw5DIhaRIKfrvFUPF7Akrpjtft6kXbSJG324EBZ -XQ6Q8SeH2lGjhji/RSctckhefMYuXTJCJn6eHgJQwQ0NzquIOyXbhdBQLThlFVbZmu/7K1dK4/fBKvQ/41y7kswFm7kEVhrtpyHrTcz6x1cpNDQEd6kqm2QpUMyfu+RNWuQFbbR9ckVDC6sZlYGSk34/z2R10kCpGpEDkTQv4sYaz/YlcPy8 -mvO2RW/PQQS7xh0NA0p1+NmYL8IDZqU3gbLD9VqcebonE8xmCm7hpvK+44LF5eb1/rT/ynDQSRmoh2dUcf8ZGFtixyeAKphAsODZ+DGYsWp7OcdMxgssMaXWV/+2voHp1nuZH4eM7NYMcvIZc27Labj9R+XWELnQF6xws8exIQiAT8zpWsKN -xKXmdAd2mQtaNhZE84+5NVp0p/woU0cHDjqKxUI+uMRAg4swchyJtMQDEAc2tUF8rnlD4t0422BijIhkkTGyHweqeB6UMAKQd6ojlj/GkwVb9zHjbpnbdTSrky9AoV9hkomSAgGzSF2fhZCRnGd9/bDsTSVbCfyow1jmGWRE1zwRZMbY7a3K -2i+gPn5w6ICOKbN5sgSQesPJc/XU29VZid4go2T86gs5F93PIppZ5m8k3oYYxOCGkC/fdPNO8XlxybLIwcxdalTYiVi35HJZHSkP+wYOxuLgw2dZyRMaZ2RgOBYbvalbv0CnLHAi2bO1vJxzRBFTG6GZFtaSS92R005/0Asy+kRd72NvU9Me -opXwefdQzX4gBgn+NzT+8WtyqrFHe/jlNhO3BXGU5M4xyRAr5MWE7WVeIZzeEfGKkV0h0hLAWs++2gIreEJi97iQcbZgqFVxlx3dPKaprpXEvVRhbWs5CbxBBkTWHiXEhFmFzNVUg026A4hKf3OfzEwRckbtKPEmoJeQhlWJSlFdyiBtURXW -TB/HiijxfKp3AbTHoD/kSoKLdI84+ueJot90hU/5/06+FpTTFC0SFWfSisray2F+7ygKJkalwge5w/4GzFw7k/oWo2LV1eeVUqIMcHC5vcm/OtzY1T4HqK3avZxg5K3p9ot62VPEuS1FHwDI7Cgkh6iSZjjAeYgwN36ds5tgJOHfvWCNje9/ -pyLbNw6XnihxN0uXL9g47Trph2B9+8pBfLjU9J2pQId3aP78s4kMGInfe7/LQh0GKIgbit0t3sXZIQ/mBC6TS4swF3Hs1Z6c3CSbq7JVsE8cnDFilw3q5M7OxaWbr6YCusV6kT7dfGnMxxDntT3Im4THSak7JF5PVb3HyhDNHRY0Sskk5V4q -fEAtu7trgZ7DzanzFHqjm7GirTlhmNik9p1bxJ9+YUznQfK6gA6MZhjNQ9LKmDZkmjE43/nPg2J/ux6GKw0dHxS25oqhOW1rHYJSSydonZY/4H9mjFFt3iOtD4kWrLl7gotQ8i+8bUnIdn/EGwQFeyDQXDAILMDOqS13cQo4j1bvPiIZQJxP -Yq7M+74VuQb22+xfo07Z/G+yNrlaKbknTxnMJfuEMJXcmQzB2IBe2dBchMc8FQXix8GGW4dP2589NjVSBbDmyA5AfCkYw+LWpxVHBrIDVS2UXPP0/VDHENC1HKxtDhlcE1Gxxm36PKfe+409LrrFEwqhlf/91ze9Wkr/lisf4tGtqKL/wunG -F9NhT0inSq4qrCSiEeb4c8tsdtzzDuQxbDGPO6UuAw3xrh3t0fcelUUJWMai0bulzU+TB5qbm1cW+UNhNTnWI2ZPelP0f1wHwQaTRhvxYrfG6A+WBOnQwimejLx3j08lv1flETuFjaduR90oE/ZSNXX5vWXk6fGuGiyjWm7Whb6vbjLQGRQa -5OJKzUgcMdB9caW2rEyNNAY0HiyDsUrKFVFJw5rptc4NeBO8Y/Q1eYLft+/9Wu6nmOjkalh2JLb0g7v7HYESIpYrrxvwf+SNqmrDN1gEbyVPNgV9xgr3gDVd5mGq0a59lpIZ4Vl4zp0ZYYdGeT/OCUPvI05jCZGK2enBThXJuWT6FU83yzjK -WvKkwID5x/PhhTa4Dhjy+XiKm9iDcRUozaBSHmyB1twhBKhNbluUxko6BzlCN+aRSulu0wdMlp9d+RW3trbzgiUbrUtYlP/4LUv5lYZxZfo2MV+psYvhFLXT+LjoAUqYJqBtouYaQvCbzUM/urJIB1KUZgH1T2ppH7xkUijV2w65hTTGFhxl -reXOlDGyfPBVALhtm/lVQnpmLVOS56zchPJKbFIR+E1a/dUwUXyJ2spoa22rmCwzl0Rj5iL5ptT503l/u1+J015Pxs/3wEbSVXnu2rt16b9lrOTc6plxMEmtzPMMSmOOaqOCsnfakICo9P0QPxYzIQ9z9VO0MncpglGcs29ArvQYqvda4IXJ -fwEmD1eUaBzWCXgR8kUwXkYtXZiRVarcbtwoDau9Iqb3aaNupBDCd2wtj5wFMoFK1TVLlitCNcs/xwHSPaBYreTzQyF1khQjXqyfgM5dM/AXKoGHNO45G0pRfMdnZVabMheT+wzgrJs0sQ7j71PG2SK5mos6hGHX74cJmeX0bn5buGmBpuzc -kfS20pU410GBCZh71kCmYshJNPEM1ZXG9ZXdGbOs7lTdW+q6h3yfwdWTNRLhhNsd6tW7vNJegjCpPzHOaQYJV6Etc+Z5GkzjUwep5XBa4xwk0i4+hDkxqdAmWCTeI0dXW1JcVRXPpXdUEfdcykxz04XgrpbrHpEUgZnfiPL1rdVdm5RjsckI -JuC8M9lCNQ3/+uxgh7xgiZJ0bx7lA3Ev0Y1iy98T5JlhfT+KEeIFCtlQp3AyWpcsZzsli4WBPJCXS6v5T4gt8Hkghv250eNsWTDj+BSGo8jyrnMDlZcGWyNGXg5Abx45naIHSIIk/HrobAboUCHoKZ4obAAVMcvhwzDGA3AM30Af1p8YBtUj -UJMQ/GpiSENE2BDl1tyUD3FNqHTrKJChrX3TKQ1elnGcRGS0MB6XPSoiyNd493eWolTQpD1PVEyEQyYM86SwcJIQ/KoPZBSdbGjcqPCX2cwZ4/mXhouuaIF84RG6pS/x7V1XvEcU/R3WhjiHp3OQjoce67KvQjnmoJSbaOV1E/ILzGha18AV -4c8z/O5ndtF2yIBH5J+oWgQ+Xb+YoVsR5FRv8D1BrnUJtXnrDRAv1R6Gv4oNKj4FY2CnGc0nTf94kbOqLo8b8lgKie7MvymNaaZ5DviO8rfsosQDcVjlrWhEyFWET4IOO3ZfNxZUG8YesH4Epl4lcTkRKIpOx1ezJ6EUbk/DEuNycWGLzN9E -bNrwT57RDQzqmUvXaBOze0w9gM0ZXwPhnN7ao/U4ymaNScBjUPTQ44CltRBdELCN5dsWR8a7W1Nm/IONuZ1uk/acIE/em+fxkfFjpbwSIYHDEA5+Ld2vAekjmknbrbAPPMOrXW4n7pRW5Z6/sqMSkbPwlQoYJOYd6sHLuNH2NllBAjr4hiBR -7kuVhDxC3PShTugjIKBCgWFBN3foHgmey8+ddpBbkynaEyl8TTXk6z47YytK+T4fjtgW0TKcLxPPx7pom29fbyuATWfTOg/gflJQsMd5b4u6VoUTvOq701rlOxvVFyiDvw324J/+pxU1/vehXM6JF7FoTZrfx3M7g8hnsPB2crcM+v/iYmO6 -T3ixJGv8VgKJee8m0GJ1Qri4osjDSdjL+ANSI1P1r+N1G7ovBYs+VZtkb7ilUy0R8IRRVEMpkk1Z8V5mry/ksjXMGUcDg5DZ4bZkGOlIM5cgSdamSSeghcPJg0lq/hKfLg0e/FIfVVuUXhoN9M2K19QeEHKM8pNLbnUI7vZjZmiyS6GX7ZMd -eLrLD54OymSdDtuw43IA1/lNoRHrI2tua6HwMgSPdWtBVOxN6G49FMr7y4/2xTrJYv6w9LEeSTbFUD+Y5wqiu+OVxRR7U8YAts+NhGem9OIJ3lhp1eY32/PYJlV6XUUQ07OxUJ0NR46M32en68ug21XlKCajP2ngJOPsMP9O0uKgdAmtrS5p -LoK0Ip1FK8edtzPI0RFfKd4kj5ASEIrffI6qL2mUnqLsV9wXJ0zGSgErtF46NJm8GK5KvSeRKL1dbq9I/4PCA6aHKiVIfs0B+gcgD1DcwsGTqKP4hdkHGJCyRLO1h81501GNq8CzLsYNc8x1D6q9jtWPk2ge5TOkXBPOy9qqEiLOpoQVwo5h -yG2wDksxRO/hG26MEASQaSBa7i1+EbJjvL2gs4lYeMexmZ5+gGgs/YnmYpDWIwTplz4914eJo+AQ4Divn7lOFItVlcCiXGD+eWM14MNvd+rTAvESzMax+J4YNX7YhZyIBSvNJlpiNtTeenupoWiXVykgAqZTjrXJOFp7tiSkSFcKqXdWeoQX -RIw1hfyRV7wIB+mBxG9WwcqH5XfmYREydnbHx8krO+q6yFl9vf9KPlha8pz55qadjK2gjS/KEywhLo2ymN7ETULhxtTJEVSqHxmSTPPDcDdQ3rF+TvBDCDXx/R69QlMqhqd0G0Yj/3Wa8MfIsBlag1jObbsAhme7CtaphCmGe9eW9jaf9Y5g -otNrLXpxIQ+euzRvetYtwKj24Ew29OVQaULWpH694CHwufEBYdUvSmiOuW9y/SSh622Ir8XGRseko8EnaoL44sWCgSHIxHouzSRUoqjGo+y7fgUS9VsjjVGJda+LQo8OTAdXdGMEVIvkOaNE1qfI/JlDwQqGpRo7cFiKTS8m7NfNXgefWpa1 -ZxJ2+1nCo+O6masYAljpm0Rh2+eGBz+//4P5fZ0iTkdNw9HzTWbpUgQpWWyMFXQSd+YZrLjQdf3FgJRlUrFNyLNZXfqIlbRawdH/oKP0IMK6S4aAA5vhV0j3jRy686An2j0QYIYNgIi4gJpbJ+PVqOVnCqBW5AlI108PWhWrceHfPQFejw4b -mburG+qXzOJlz7cr07Z4EJE/KPDW52TYqDq/7+Q0i14ccNvnROL9EL3tWZ9faReQ2OGIhxtHQK6oNtvbVtHJDZo1VHbcFuN+4DqbqA/i4BlT+0kme4PYaNJSWYj4Bp+QjoO8xtR/DdKQ6sKY9XqS4/z0xcJJUN5gFd3UmCEYocLvSN6Aj87a -CHhNbocrsf56EifaS4loX/WexQhH+nkqkdoCDLaZPkGThGvH4lOCS3nKzi7nRq+lqPDjzH4tAJcqumCxkxOz3bnNL1MeZJiyXRCgqLrhyUy3RsaDBDxGeJxSIdVcmOrBUuVA8lnFuD0wU9VA8y9fpUpOfWwTqRNh6xUs2hcGeleJ14v9y4ep -hVewvEIsO0FS5NM1Dswlat7oUEieodfwwh4Y7+GrgwwWG3/oWjN5UIyEL8Ve3gqA4qXB4Gt7kWx0Qi4sJjxZUGZZ3ITr/htWlkBNt4NMdCTg8sHUFsm9i3kCMoY4keuPAc1ZuVPkNXvgRzMjXU2UZ9bpVPwmpQV40oFAhYP4cdOJ9uBmHbHq -nbpAVFeR/rkhJxkNmL9AlDVpU7VNjIjb5BrN8KTINVInseC+y3yTMOjL/lzo+j8GU9ctKTZN4h1ar4XhrdGOEsvrMPbNVqOSfeRCLM1xviarg4FKXOT64diH8u9gRYqrN65rCYHlYtCWx8iLBp3yL0Ok4MzJ7kopPTfkjXQVb3lMe1eUas9O -0g9MSrRUwIjyX9qJtlJBgJan7EAcBou2635AqMQ/qBrFSvZNhGGs9pSuxR3GE9kt8ODxsnp6DVgtz5T9hTNHc5VAv0uNBm2S+A0JHVdJQh1+bAb0MXAtV4F5dbhB91DHeUdHhBCJxRAaKDKvvJrajJ/JgOe2qYu+kK4y00y4uUuWkWQLIoZ/ -b4bB8MoVLN2N1BgegiB7DnjvvBHu0s5Goa4SgRh0BvBFJ6N4nLI5FbG5/xtHLRbfUdZKqczgg1XuNiLiX9PiHw9Y2y+8gjA4o4/t0rXYy6xZrTXNH9EqoaEO0xY3vz0wYSxMFqmarZQf2D4ua21Uu+jTMOk36TC3D3vHizalJChLvEaewLuL -QMVFwJzGHkUxdMZqcTUr3KG2UFo0o7R4rrMriIyWj5zN6G4N/ZbclejAZgW1tUDDK2oHCM1oRwfv4ZU0T7yZiUO3HOdObanWKVqmIzi4HJBZF00Ve1q5OlkH2Wi+dWszZZ6NszO1XhWe5KQRO6+bN1JfD3aZzJTcqxb8epRcp8AR31zARx2e -5f6QCP2kMgGVESJ0XULS0augWC9SDDAHdSxz4x9spQOeKL+dtFCZToJL6BQ/vGEA5Q8aTj0e5evQToTce6G2cWTSn37YZcFcFDAOdtolta8e1WpUyHfjqlc7yVH0tZzuFpVl9C+Z1/YZvQqneni6oBNRABLIhA+yEgCaCehkdQD0i2Hk4vxL -G1xkGVJzxRZQmac00pXMilnmTFlxhok/r4piRRWZJWJiFaBWsHMCV0g4Mcote8MaseTf6YAsqLVXXlD0i9k0fZA20YyoShi6dXSlHQkNS+SxXkL5UW5vhB9I7SmiSqWtG5ozzUg1y/IKH9hexlc9WGTVDnT+KNg6jOW1DNow9XYpg+zwXtvO -Cjav7IBdX4L0dz3eHgcNZzGvHyLIpHPScbABaXUAV8YMelzQaIZcxxcG3+mSZOChVi/6Hg4qAtjIHQ8Ghd0NkvViqHmFu7ks+L+48D00n1vb9+dgBMYzVSIVn8l1mzFie9O99w4q1ZhZCPOhAvUBkediaJSZlyincCeWAke87NUj2Dkw2RDg -P+H8TIXoFK8xmfr+B0o2UjURCAmgNy42/PEKVGt3pygI1FGkkjrPOLtz7bKSFsZl/vy+YzZZvK+3t6pIHRo1aHdW8h9BGP85yyJ4+EkScvr6y/HJkDXvsXCj4FJ4GL+gy6ISSEQIVdBG/GRAkSWLC2RQmeDEvdNdlPKDEQEn8qzJc95sNo/u -1RaPbbqyl2aZO2lsQFQCA6DPZg56yKEXEzdO6R7LqOYOwbj3SvX23fGP0qva3dtfFB5HSNtWzDPu7SImtHH8BoOjkGq4UR4cVn6h6thZoOwswNv0qAShXI64t/3xFBfrRyMpXLxE5rWRKW8frNj3rAtuq+8aoTDZsVRCeNwacyEr6MYwkXvA -d2OlubE4zKOI9q+pxiaRH84dW+oaSYUuu+vdk26hyEGg1fuwiFnsJkMN025PotEo4HRCjtyS4YZtuDbVW4I83vi3aZV3QMWJGaG+ip6SK9Q63+WVIXVg90zEx61APJsY+s5wkxOXwsHgyqUBLZ3L3SGWmW35Z+R4GhJh02fZZj8yq/cETGVg -mTrsT1FiprripCMj7H8+zrwkSYn9tK17zL+xoxigmAEqyJ8JPAZNfL9yyPWdMcfTNdC/JKe7C9Jrl77mGY5X/7MVP4ToTY3N9DkXOMHjkebT3NsGsyI9VPEdK+nT+CSON0WH31hNyly2THO6dsd8sxs2jtQCUvSdINY6MTzdOAEJvwUCBEgX -mzOySKe6vhxpkM6Q0gR8UmoLjybvUQ6xYkPw3kwIseJ8AV05/izwEBOHDC0LckDd02PaqvU+ustohRtLCOdydJsf4rRAeerVUVOkVBveNa3TQ3fMAnhMtRhtXbr5T83XHoUJRMRv6zlZ+ZZwebD/qlkd2wj8D4VsVy17+zZMiJ3WQX2khxsI -g1ZeqDdNBzORIhAanf/QJoxywEjnpw3DXyXnqeoJ851JOq70Q1fGewwdbtfqhH8L91Gu/+r9BrjYZzDOfRtuuDRsDhLoCdUf4TqXVb8ltFUJ5lg4jeOD/dHMHaS90hd45Cgzlmu5vdczSw/SDYWeC68Nk0WXl7fh+nKGfwswWJss2Hepn9S5 -C4iZimqndLFHWzRPaBu9uZNfsOXQBc9O7EYdMeISAh4XaJNGTWGZYbN+Y5QIb2N080JAhBpcvXRpHOjvJWXXerFK2Qs5a3FNNWjsNkrMdc2PNS7vaXzkVBWEvKL07ZaLkhZAxPX+2VmvVnS8LCJS2xENgDPHNN1ikxvMkwaVbt1+ApK61iZA -CMWpUasFAaXQAQHGgzUcoamTJziJbn7MgJwftY9IW/jF2aGCFs4t6oq6eRfZoylcZpzLKCAi5Zl2n6SERjxEbREHXIpkM35lejs8S4+mQO67dHY89Y1+ZPxpvdie+9sOLHeRo17+akRp6nGuouAhs16+SjNra0cQP/IUUFWJH1r1WWqy1xx9 -VEO5XHfZDltcXs9AOqtUew7mtT7NTvLrh1mSEBQ4Ev63HXk5lRK89T6306c5Nk/Et0DYAAADCzcFWqbijQQAB67YB0r0CyvWFqbHEZ/sCAAAAAARZWg==. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/report2_grade.py deleted file mode 100644 index 7484d93eae4ad3d81e212ea0c2a5c8561c1761b8..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('QlpoOTFBWSZTWWL1f0cAVWb/gH/25FZ7/////+//vv////5gZT773q896+1fHgFHwp7r73kRAoFF6NSi29cI5aUlQHQOzQ693zn19tnpxfZh1E2xbZKX1opdjXXR3fPjrm80m1vcU76KcvQOj3buV3nkc3set7u+kjCvsb7feOtsjw3bep9ard62sgMytM27d2SKDsz3d48Br50m7Vve3nd8CilFO+wfG6647b22892PMnYwR993rb3LSw73elzzE5unc1ULzvbezDepckLk0e+80vvFcQzCfdQ6JLs219nvbXi76x9455Xu7vve9273YPUe8+XbbaGq8xR3uV886Kurvn0nxibaneY7t95ztxu53brS7Xdu2+7V2+3ub7CU0QQAmgCaCMiYCDU0xqJP0UeNUNG1P1Qep5TTJppsoPSYJTQIQRNNBATQVPYI1T1PUeKbSZBpp6j1NADQ2poeoABoJTEhBJkQ01T01PKmn6p6jNTRp+pp6SaekAGhoA0NAA0ZDRoJNJEIiaaVT/NIlP9JTeqfp6qfom9SnoZRk9TQaPRP1T1NNGDTTUGEAACJIggCaA0TTRpimaTTKYJT9NU/KamnqenqepHoNDUGmmjQA0CTUSEAmjQTKeITRqZTeho1J5qMoPRB6Ro09TagGgGgDRzofugvvPdQKgURVn8ClPlARR9ywkFAJCiT0KLFVFT/70eaysUhhP9/88QpfgQ6P61e/CPuWZPw/5P74rGJi6f8zm+M3D/P8EJFK5cJ2loTJCZN2/n1xP/FWL0cdcZfHE03WlLio+061BloaoizPPDa2rzKS71eunFjjvVRAsSn2/15I5vUDLd3R22crzjM8eLs0qFKLXmi6HMkXochk5S0nMrl8oP5nyJTj7v5X5IEv7+T6az14ziKf+ZzpOTulovvV8re6xgmPLbsMtjAzMMH/vLHHmMAREE6gQD4MRZAkEkSQIJFCRZFJJPwklCosBBV+xJciiNv8YBSm0gIpSQAGqJSAwgEDpA55YOjnEkBvd+D3V8rfmTfdv3G7aK5HGwxsJ7ibid1IFSgVYJBVlSNFVBRT9xhQYioCqQVBkRVSC3VEj+rp/618dhz69kP4+cXfxPgvq/5rVq1Mdib+uPutysoFCnlznYL8HFpdxJA7zQ5L64653OfLU6LYepso0iOadDt0lbblOehDWVFVEPp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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/student_sources.zip deleted file mode 100644 index 1c7054920d7d9ebff314ff8df914324ae7c4103a..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.yml b/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.yml deleted file mode 100644 index e13ff06a3ec4cf0051bbb98ec1b330e3c45ec35e..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- - -general: - name: cs105 - description: '' - display_name: CS 102 Report 2 (Scored using autolab) - handin_filename: homework1.py - handin_directory: handin - max_grace_days: 0 - handout: cs105-handout.tar - writeup: writeup/cs105.html - max_submissions: -1 - disable_handins: false - max_size: 2 - has_svn: false - category_name: Lab -problems: - - - name: Unitgrade score - description: '' - max_score: 16 - optional: false - -autograder: - autograde_timeout: 180 - autograde_image: tango_python_tue - release_score: true - -# problems: -# - name: Correctness -# description: '' -# max_score: 100.0 -# optional: false \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/README b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py deleted file mode 100644 index 3542e09379b7aec9fa34126730ad9a5670160778..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py +++ /dev/null @@ -1,87 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py-handout deleted file mode 100644 index 3542e09379b7aec9fa34126730ad9a5670160778..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver_python.py-handout +++ /dev/null @@ -1,87 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/homework1.py deleted file mode 100644 index 18576f18162b3e965b483dc0c9f2673d29b35a2f..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -bf53f370e71e4336d4a54c09f106ff88be0c37385c9ba6d9558657c25640e0166ca05e546617c8619f4d20e975652285268341097c88a559c4bfb73c809f1037 31256 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/report2_grade.py deleted file mode 100644 index 7484d93eae4ad3d81e212ea0c2a5c8561c1761b8..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('QlpoOTFBWSZTWWL1f0cAVWb/gH/25FZ7/////+//vv////5gZT773q896+1fHgFHwp7r73kRAoFF6NSi29cI5aUlQHQOzQ693zn19tnpxfZh1E2xbZKX1opdjXXR3fPjrm80m1vcU76KcvQOj3buV3nkc3set7u+kjCvsb7feOtsjw3bep9ard62sgMytM27d2SKDsz3d48Br50m7Vve3nd8CilFO+wfG6647b22892PMnYwR993rb3LSw73elzzE5unc1ULzvbezDepckLk0e+80vvFcQzCfdQ6JLs219nvbXi76x9455Xu7vve9273YPUe8+XbbaGq8xR3uV886Kurvn0nxibaneY7t95ztxu53brS7Xdu2+7V2+3ub7CU0QQAmgCaCMiYCDU0xqJP0UeNUNG1P1Qep5TTJppsoPSYJTQIQRNNBATQVPYI1T1PUeKbSZBpp6j1NADQ2poeoABoJTEhBJkQ01T01PKmn6p6jNTRp+pp6SaekAGhoA0NAA0ZDRoJNJEIiaaVT/NIlP9JTeqfp6qfom9SnoZRk9TQaPRP1T1NNGDTTUGEAACJIggCaA0TTRpimaTTKYJT9NU/KamnqenqepHoNDUGmmjQA0CTUSEAmjQTKeITRqZTeho1J5qMoPRB6Ro09TagGgGgDRzofugvvPdQKgURVn8ClPlARR9ywkFAJCiT0KLFVFT/70eaysUhhP9/88QpfgQ6P61e/CPuWZPw/5P74rGJi6f8zm+M3D/P8EJFK5cJ2loTJCZN2/n1xP/FWL0cdcZfHE03WlLio+061BloaoizPPDa2rzKS71eunFjjvVRAsSn2/15I5vUDLd3R22crzjM8eLs0qFKLXmi6HMkXochk5S0nMrl8oP5nyJTj7v5X5IEv7+T6az14ziKf+ZzpOTulovvV8re6xgmPLbsMtjAzMMH/vLHHmMAREE6gQD4MRZAkEkSQIJFCRZFJJPwklCosBBV+xJciiNv8YBSm0gIpSQAGqJSAwgEDpA55YOjnEkBvd+D3V8rfmTfdv3G7aK5HGwxsJ7ibid1IFSgVYJBVlSNFVBRT9xhQYioCqQVBkRVSC3VEj+rp/618dhz69kP4+cXfxPgvq/5rVq1Mdib+uPutysoFCnlznYL8HFpdxJA7zQ5L64653OfLU6LYepso0iOadDt0lbblOehDWVFVEPp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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105/src/student_sources.zip deleted file mode 100644 index 1c7054920d7d9ebff314ff8df914324ae7c4103a..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/Makefile deleted file mode 100644 index ea7c9d2e41f6b768d3fc89ab2f087c1bdcdecac3..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Makefile to manage the example Hello Lab -# - -# Get the name of the lab directory -# LAB = $(notdir $(PWD)) # Fail on windows for some reason... - -all: handout handout-tarfile - -handout: - # Rebuild the handout directory that students download - (rm -rf cs105_new_version-handout; mkdir cs105_new_version-handout) - cp -p src/Makefile-handout cs105_new_version-handout/Makefile - cp -p src/README-handout cs105_new_version-handout/README - cp -p src/driver_python.py cs105_new_version-handout - - cp -p src/student_sources.zip cs105_new_version-handout - - cp -p src/homework1.py cs105_new_version-handout - - cp -p src/docker_helpers.py cs105_new_version-handout - - cp -p src/report2_grade.py cs105_new_version-handout - - -handout-tarfile: handout - # Build *-handout.tar and autograde.tar - tar cvf cs105_new_version-handout.tar cs105_new_version-handout - cp -p cs105_new_version-handout.tar autograde.tar - -clean: - # Clean the entire lab directory tree. Note that you can run - # "make clean; make" at any time while the lab is live with no - # adverse effects. - rm -f *~ *.tar - (cd src; make clean) - (cd test-autograder; make clean) - rm -rf cs105_new_version-handout - rm -f autograde.tar -# -# CAREFULL!!! This will delete all student records in the logfile and -# in the handin directory. Don't run this once the lab has started. -# Use it to clean the directory when you are starting a new version -# of the lab from scratch, or when you are debugging the lab prior -# to releasing it to the students. -# -cleanallfiles: - # Reset the lab from scratch. - make clean - rm -f log.txt - rm -rf handin/* diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde-Makefile deleted file mode 100644 index 132cbaf68c797bdeafa87c17fa6fab2e1c41bf78..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde-Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - tar xf autograde.tar - cp homework1.py cs105_new_version-handout - (cd cs105_new_version-handout; python3 driver_python.py) - -clean: - rm -rf *~ hello3-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde.tar deleted file mode 100644 index 0b7539927b932f17726ef3659895ede0fbd31807..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/autograde.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout.tar deleted file mode 100644 index 0b7539927b932f17726ef3659895ede0fbd31807..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/README b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/driver_python.py deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/homework1.py deleted file mode 100644 index 55f96f90371e3b69cde9e6abaebe2a6409993f3b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -2f101f3fc3a6837d2244a450e165b31acda8a83d0af230ab51bcbadcd7371e88f4329f4d3366ebeeec5cb1e10738a3729b108fd880bd278f54477e5e003a15c2 31240 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/report2_grade.py deleted file mode 100644 index 2f3e2d766a3dbd871523e373f4420ee5921da44b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/student_sources.zip deleted file mode 100644 index 9d307cc1b71b8470bf731a5ae210cc5d8471f22a..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.rb b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.rb deleted file mode 100644 index 7d5b5b88f6484d3cdfc01aaed8f758dbb2094e0d..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.rb +++ /dev/null @@ -1,11 +0,0 @@ -require "AssessmentBase.rb" - -module Cs105_new_version - include AssessmentBase - - def assessmentInitialize(course) - super("cs105_new_version",course) - @problems = [] - end - -end \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.yml b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.yml deleted file mode 100644 index 25461e45d118a5da0610e1f7283d6f53d9ca1e33..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/cs105_new_version.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- - -general: - name: cs105_new_version - description: '' - display_name: CS 105 Report autolab v2 - handin_filename: homework1.py - handin_directory: handin - max_grace_days: 0 - handout: cs105_new_version-handout.tar - writeup: writeup/cs105_new_version.html - max_submissions: -1 - disable_handins: false - max_size: 2 - has_svn: false - category_name: Lab -problems: - - - name: Unitgrade score - description: '' - max_score: 16 - optional: false - -autograder: - autograde_timeout: 180 - autograde_image: tango_python_tue2 - release_score: true - -# problems: -# - name: Correctness -# description: '' -# max_score: 100.0 -# optional: false \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile-handout deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/Makefile-handout +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README-handout deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/README-handout +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/docker_helpers.py deleted file mode 100644 index b4b885526bfe90b86900afb241496de2c7c84aea..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build --no-cache --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh-handout deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver.sh-handout +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py-handout deleted file mode 100644 index 49a443dc051e8c745c096b613cb0ddf4ec262339..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/driver_python.py-handout +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.version) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'homework1.py' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/homework1.py deleted file mode 100644 index 55f96f90371e3b69cde9e6abaebe2a6409993f3b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -2f101f3fc3a6837d2244a450e165b31acda8a83d0af230ab51bcbadcd7371e88f4329f4d3366ebeeec5cb1e10738a3729b108fd880bd278f54477e5e003a15c2 31240 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/report2_grade.py deleted file mode 100644 index 2f3e2d766a3dbd871523e373f4420ee5921da44b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/student_sources.zip deleted file mode 100644 index 9d307cc1b71b8470bf731a5ae210cc5d8471f22a..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105_new_version/src/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105b/Makefile deleted file mode 100644 index b12dc571349b4501f1e9bc7b1c45858ad52b484f..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# -# Makefile to manage the example Hello Lab -# - -# Get the name of the lab directory -# LAB = $(notdir $(PWD)) # Fail on windows for some reason... - -all: handout handout-tarfile - -handout: - # Rebuild the handout directory that students download - (rm -rf cs105b-handout; mkdir cs105b-handout) - cp -p src/Makefile-handout cs105b-handout/Makefile - cp -p src/README-handout cs105b-handout/README - cp -p src/driver_python.py cs105b-handout - - cp -p src/student_sources.zip cs105b-handout - - cp -p src/homework1.py cs105b-handout - - cp -p src/docker_helpers.py cs105b-handout - - cp -p src/report2_grade.py cs105b-handout - - -handout-tarfile: handout - # Build *-handout.tar and autograde.tar - tar cvf cs105b-handout.tar cs105b-handout - cp -p cs105b-handout.tar autograde.tar - -clean: - # Clean the entire lab directory tree. Note that you can run - # "make clean; make" at any time while the lab is live with no - # adverse effects. - rm -f *~ *.tar - (cd src; make clean) - (cd test-autograder; make clean) - rm -rf cs105b-handout - rm -f autograde.tar -# -# CAREFULL!!! This will delete all student records in the logfile and -# in the handin directory. Don't run this once the lab has started. -# Use it to clean the directory when you are starting a new version -# of the lab from scratch, or when you are debugging the lab prior -# to releasing it to the students. -# -cleanallfiles: - # Reset the lab from scratch. - make clean - rm -f log.txt - rm -rf handin/* diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde-Makefile deleted file mode 100644 index f07ac0d3757170e32ab3584241fddea0825b44b2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde-Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - tar xf autograde.tar - cp homework1.py cs105b-handout - (cd cs105b-handout; python3 driver_python.py) - -clean: - rm -rf *~ hello3-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde.tar deleted file mode 100644 index d918a132bd4f491b2df40f93a4a19b87efd9d7ee..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105b/autograde.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout.tar deleted file mode 100644 index d918a132bd4f491b2df40f93a4a19b87efd9d7ee..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout.tar and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/README b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/driver_python.py deleted file mode 100644 index 78e248e085b8de1a55f12d412520bc828dafd5ac..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'Report2_handin_16_of_16.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/homework1.py deleted file mode 100644 index 22d3556a6adf524702c6829e95415abcb0e5aaed..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -2673de03a1dd2c7cce073a5f05532ee5a90d5af1632134c954b072b79e128692ee64f95183249b6e9750be00390bedc51d1e021825a6da9e2d0ddc6e5780534a 31232 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/report2_grade.py deleted file mode 100644 index 6a3e210416d3f1d38a3d87397ce71e63cdcc8c4c..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/student_sources.zip deleted file mode 100644 index 7256169a6f823cce5b36856a58c7d94cec8c8d79..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.rb b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.rb deleted file mode 100644 index bc7d741ac450871b0062ea2121915feab1d1c057..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.rb +++ /dev/null @@ -1,11 +0,0 @@ -require "AssessmentBase.rb" - -module Cs105b - include AssessmentBase - - def assessmentInitialize(course) - super("cs105b",course) - @problems = [] - end - -end \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.yml b/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.yml deleted file mode 100644 index 9c5d9f56c3165485281e508c4bd3367f56f5d91d..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- - -general: - name: cs105b - description: '' - display_name: CS 105 Report autolab v2 - handin_filename: homework1.py - handin_directory: handin - max_grace_days: 0 - handout: cs105b-handout.tar - writeup: writeup/cs105b.html - max_submissions: -1 - disable_handins: false - max_size: 2 - has_svn: false - category_name: Lab -problems: - - - name: Unitgrade score - description: '' - max_score: 16 - optional: false - -autograder: - autograde_timeout: 180 - autograde_image: tango_python_tue2 - release_score: true - -# problems: -# - name: Correctness -# description: '' -# max_score: 100.0 -# optional: false \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile-handout deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Makefile-handout +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README-handout deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/README-handout +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Report2_handin_16_of_16.token b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Report2_handin_16_of_16.token deleted file mode 100644 index 22d3556a6adf524702c6829e95415abcb0e5aaed..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/Report2_handin_16_of_16.token +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -2673de03a1dd2c7cce073a5f05532ee5a90d5af1632134c954b072b79e128692ee64f95183249b6e9750be00390bedc51d1e021825a6da9e2d0ddc6e5780534a 31232 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh-handout deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver.sh-handout +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py deleted file mode 100644 index 78e248e085b8de1a55f12d412520bc828dafd5ac..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'Report2_handin_16_of_16.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py-handout deleted file mode 100644 index 78e248e085b8de1a55f12d412520bc828dafd5ac..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/driver_python.py-handout +++ /dev/null @@ -1,92 +0,0 @@ -import os -import glob -import shutil -import sys -import subprocess -from unitgrade_private.autolab.autolab import format_autolab_json -from unitgrade_private.docker_helpers import student_token_file_runner -from unitgrade_private import load_token -import time -import unitgrade_private - -verbose = False -tag = "[driver_python.py]" - -if not verbose: - print("="*10) - print(tag, "Starting unitgrade evaluation...") -import unitgrade -print(tag, "Unitgrade version", unitgrade.version.__version__) -print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) - - -sys.stderr = sys.stdout -wdir = os.getcwd() - -def pfiles(): - print("> Files in dir:") - for f in glob.glob(wdir + "/*"): - print(f) - print("---") - -handin_filename = "homework1.py" -student_token_file = 'Report2_handin_16_of_16.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" -host_tmp_dir = wdir + "/tmp" -homework_file = "homework1.py" -# homework_file = "homework1.py" -student_should_upload_token = False # Add these from template. - -if not verbose: - pfiles() - print(f"{host_tmp_dir=}") - print(f"{student_token_file=}") - print(f"{instructor_grade_script=}") - - - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) - -if verbose: - print(f"{token=}") - print(results['total']) - -format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/homework1.py deleted file mode 100644 index 22d3556a6adf524702c6829e95415abcb0e5aaed..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -2673de03a1dd2c7cce073a5f05532ee5a90d5af1632134c954b072b79e128692ee64f95183249b6e9750be00390bedc51d1e021825a6da9e2d0ddc6e5780534a 31232 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/report2_grade.py deleted file mode 100644 index 6a3e210416d3f1d38a3d87397ce71e63cdcc8c4c..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/student_sources.zip deleted file mode 100644 index 7256169a6f823cce5b36856a58c7d94cec8c8d79..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde-Makefile deleted file mode 100644 index c3596436ec9a956e5a3986977181b35860df0ed5..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde-Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: - tar xf autograde.tar - cp homework1.py cs105d-handout - (cd cs105d-handout; python3 driver_python.py) - -clean: - rm -rf *~ hello3-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/README b/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/docker_helpers.py deleted file mode 100644 index 806c2b39c6782ed377ab0d4cf70a36d03940fd7b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None, no_cache=False): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/report2_grade.py deleted file mode 100644 index 0ee13a2da31594e56132628b27f81af994dcbb29..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/student_sources.zip deleted file mode 100644 index 55a16af51438d24edfa0bb491efe79cddcdfad66..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile-handout deleted file mode 100644 index 6d094e3a3869dfe9ee9e51a06150c6999c402286..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Makefile-handout +++ /dev/null @@ -1,7 +0,0 @@ -# Makefile for the Hello Lab -all: - echo "Makefile called... it is empty so far. " - #gcc hello3.c -o hello3 - -clean: - rm -rf *~ hello3 diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README-handout deleted file mode 100644 index 8eea4bef3abb4665581173c4843b6155b3dc59d2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/README-handout +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains all of the code files for the Hello Lab, -including the files that are handed out to students. - -Files: - -# Autograder and solution files -Makefile Makefile and ... -README ... README for this directory -driver.sh* Autograder -hello.c Solution hello.c file - -# Files that are handed out to students -Makefile-handout Makefile and ... -README-handout ... README handed out to students -hello.c-handout Blank hello.c file handed out to students diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token deleted file mode 100644 index f046391c8732e92e92c7e7fb4a706c7a6fa559ec..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -adca3cb343b7bc8f011548d2b96fcc1200c144bca8eb8b0201bd51bf36f33cd38a7edbd0891d876637239289cff3ba5796157937beca05e25bad6e423e9dd7c7 31228 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token-handout deleted file mode 100644 index f046391c8732e92e92c7e7fb4a706c7a6fa559ec..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/Report2_handin.token-handout +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -adca3cb343b7bc8f011548d2b96fcc1200c144bca8eb8b0201bd51bf36f33cd38a7edbd0891d876637239289cff3ba5796157937beca05e25bad6e423e9dd7c7 31228 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/docker_helpers.py deleted file mode 100644 index 806c2b39c6782ed377ab0d4cf70a36d03940fd7b..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/docker_helpers.py +++ /dev/null @@ -1,197 +0,0 @@ -import os -import glob -import shutil -import time -import zipfile -import io -import subprocess -import urllib.request - -def download_docker_images(destination=None): - if destination is None: - destination = os.getcwd() - if not os.path.exists(destination): - os.makedirs(destination) - - print('Beginning file download with urllib2...') - url = 'https://gitlab.compute.dtu.dk/tuhe/unitgrade_private/-/archive/master/unitgrade_private-master.zip?path=docker_images' - result, headers = urllib.request.urlretrieve(url) - - ex = result +"_extract" - zf = zipfile.ZipFile(result) - zf.extractall(path=ex) - dockers = [f for f in zf.namelist() if f[-1] == "/" and len( [s for s in f if s == "/"] ) == 3] - for f in dockers: # zf.namelist(): - tmp_dir = ex + "/" + f - if os.path.isdir(tmp_dir): - dest = destination +"/"+os.path.basename(tmp_dir[:-1]) - - if os.path.isdir(dest): - print("> Destination for docker image", dest, "exists. Skipping download.") - else: - print("> Extracting docker image", os.path.basename(f[:-1]), "to", dest) - shutil.copytree(tmp_dir, dest) - - -def compile_docker_image(Dockerfile, tag=None, no_cache=False): - assert os.path.isfile(Dockerfile) - base = os.path.dirname(Dockerfile) - if tag == None: - tag = os.path.basename(base) - os.system(f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} .") - return tag - - -def student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination): - """ - This code is used to run student unitgrade tests (i.e., a .token file). - Use by autolab code. - - It accepts a student .token file which is extracted, the 'correct' instructor grade script is copied - into it, and it is then run. - - :param Dockerfile_location: - :param host_tmp_dir: - :param student_token_file: - :param ReportClass: - :param instructor_grade_script: - :return: - """ - assert os.path.exists(student_token_file) - assert os.path.exists(instructor_grade_script) - from unitgrade_private import load_token - start = time.time() - results, _ = load_token(student_token_file) - sources = results['sources'][0] - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - print(f"{sources['report_relative_location']=}") - print(f"{sources['name']=}") - print("Now in docker_helpers.py") - print(f'{gscript=}') - print(f'{instructor_grade_script=}') - gscript_destination = host_tmp_dir + "/" + grade_file_relative_destination - print(f'{gscript_destination=}') - shutil.copy(gscript, gscript_destination) - # Now everything appears very close to being set up and ready to roll!. - d = os.path.normpath(grade_file_relative_destination).split(os.sep) - d = d[:-1] + [os.path.basename(instructor_grade_script)[:-3]] - pycom = ".".join(d) - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker python3 -m cs202courseware.ug2report1_grade - """ - pycom = "python3 -m " + pycom - print(f"{pycom=}") - token_location = host_tmp_dir + "/" + os.path.dirname( grade_file_relative_destination ) + "/*.token" - elapsed = time.time() - start - # print("Elapsed time is", elapsed) - return pycom, host_tmp_dir, token_location - - -def docker_run_token_file(Dockerfile_location, host_tmp_dir, student_token_file, tag=None, instructor_grade_script=None, - fix_user=None, - # grade_script_relative_destination_dir=None, # The relative location relative to the top-dir containing the package. Example: irlc/project1 - xvfb=True): - """ - xvfb: Control whether to use X-windows. Works on linux. This seems like a good idea when using e.g. gym. - - This thingy works: - - To build the image, run: - docker build --tag python-docker . - - To run the app run: - - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/app python-docker > output.log - - """ - Dockerfile_location = Dockerfile_location.replace("\\", "/") - host_tmp_dir = host_tmp_dir.replace("\\", "/") - student_token_file = student_token_file.replace("\\", "/") - - # A bunch of tests. This is going to be great! - Dockerfile_location = os.path.abspath(Dockerfile_location) - assert os.path.exists(Dockerfile_location) - - start = time.time() - - if fix_user is None: - fix_user = os.name != 'nt' # On Linux, this should probably be true to avoid problem with edit-rights of docker-created files. - - # with open(student_token_file, 'rb') as f: - # results = pickle.load(f) - from unitgrade_private import load_token - results, _ = load_token(student_token_file) - - sources = results['sources'][0] - - if os.path.exists(host_tmp_dir): - shutil.rmtree(host_tmp_dir) - - with io.BytesIO(sources['zipfile']) as zb: - with zipfile.ZipFile(zb) as zip: - zip.extractall(host_tmp_dir) - # Done extracting the zip file! Now time to move the (good) report test class into the location. - gscript = instructor_grade_script - - # if grade_script_relative_destination_dir is None: - # student_grade_script = host_tmp_dir + "/" + sources['report_relative_location'] - # else: - # student_grade_script = host_tmp_dir + "/" + grade_script_relative_destination_dir - # Get relative location from first line of the grade script. - with open(instructor_grade_script, 'r') as f: - student_grade_script_dir = os.path.dirname( host_tmp_dir + "/" + f.read().splitlines()[0][1:].strip() ) - print("student_grade_script", student_grade_script_dir) - - - - student_grade_script_dir = student_grade_script_dir.replace("\\", "/") - instructor_grade_script = student_grade_script_dir + "/"+os.path.basename(gscript) - shutil.copy(gscript, instructor_grade_script) - - """ - docker run -v c:/Users/tuhe/Documents/2021/python-docker/tmp:/home python-docker python3 -m cs202courseware.ug2report1_grade - """ - if tag is None: - dockname = os.path.basename( os.path.dirname(Dockerfile_location) ) - else: - dockname = tag - - tmp_grade_file = sources['name'] + "/" + sources['report_relative_location'] - tmp_grade_file = tmp_grade_file.replace("\\", "/") - - # pycom = ".".join( sources['report_module_specification'][:-1] + [os.path.basename(gscript)[:-3],] ) - pycom = ".".join(os.path.relpath(instructor_grade_script, host_tmp_dir)[:-3].split("/")) - pycom = "python3 -m " + pycom - - if fix_user: - user_cmd = ' --user "$(id -u):$(id -g)" ' - else: - user_cmd = '' - - if xvfb: - user_cmd = " -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix " + user_cmd - - tmp_path = os.path.abspath(host_tmp_dir).replace("\\", "/") - dcom = f"docker run {user_cmd} -v {tmp_path}:/home {dockname} {pycom}" - cdcom = f"cd {os.path.dirname(Dockerfile_location)}" - fcom = f"{cdcom} && {dcom}" - print("> Running docker command") - print(fcom) - init = time.time() - start - # thtools.execute_command(fcom.split()) - out = subprocess.check_output(fcom, shell=True).decode("utf-8") - host_tmp_dir +"/" + os.path.dirname(tmp_grade_file) + "/" - tokens = glob.glob( os.path.dirname(instructor_grade_script) + "/*.token" ) - for t in tokens: - print("Source image produced token", t) - elapsed = time.time() - start - print("Elapsed time is", elapsed, f"({init=} seconds)") - if len(tokens) != 1: - print("Wrong number of tokens produced:", len(tokens)) - print(out) - return tokens[0] diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh-handout deleted file mode 100644 index 05a006e95e416fa5d5088f1d61479f73901588c2..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver.sh-handout +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# driver.sh - The simplest autograder we could think of. It checks -# that students can write a C program that compiles, and then -# executes with an exit status of zero. -# Usage: ./driver.sh - -# Compile the code -# echo "Compiling hello3.c" -# python3 -c "print('Hello world from python 2')" -# python3 --version -python3 driver_python.py - -#(make clean; make) -#status=$? -#if [ ${status} -ne 0 ]; then -# echo "Failure: Unable to compile hello3.c (return status = ${status})" -# echo "{\"scores\": {\"Correctness\": 0}}" -# exit -#fi -# -# Run the code -#echo "Running ./hello3" -#./hello3 -#status=$? -#if [ ${status} -eq 0 ]; then -# echo "Success: ./hello3 runs with an exit status of 0" -# echo "{\"scores\": {\"Correctness\": 100}}" -#else -# echo "Failure: ./hello fails or returns nonzero exit status of ${status}" -# echo "{\"scores\": {\"Correctness\": 0}}" -#fi - -exit diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/homework1.py deleted file mode 100644 index f046391c8732e92e92c7e7fb4a706c7a6fa559ec..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/homework1.py +++ /dev/null @@ -1,178 +0,0 @@ -# This file contains your results. Do not edit its content. Simply upload it as it is. ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -adca3cb343b7bc8f011548d2b96fcc1200c144bca8eb8b0201bd51bf36f33cd38a7edbd0891d876637239289cff3ba5796157937beca05e25bad6e423e9dd7c7 31228 ----------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- -.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/report2_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/report2_grade.py deleted file mode 100644 index 0ee13a2da31594e56132628b27f81af994dcbb29..0000000000000000000000000000000000000000 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/report2_grade.py +++ /dev/null @@ -1,4 +0,0 @@ -# report2.py -''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' -import bz2, base64 -exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/student_sources.zip deleted file mode 100644 index 55a16af51438d24edfa0bb491efe79cddcdfad66..0000000000000000000000000000000000000000 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/student_sources.zip and /dev/null differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105g/Makefile similarity index 65% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/Makefile rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/Makefile index e991641bdf70c045e3b72044b76e97fd1351801b..bcb753ff998de674b26b9ee7cd1918f37ef8d5ba 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/Makefile +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/Makefile @@ -9,26 +9,26 @@ all: handout handout-tarfile handout: # Rebuild the handout directory that students download - (rm -rf cs105d-handout; mkdir cs105d-handout) - cp -p src/Makefile-handout cs105d-handout/Makefile - cp -p src/README-handout cs105d-handout/README - cp -p src/driver_python.py cs105d-handout + (rm -rf cs105g-handout; mkdir cs105g-handout) + cp -p src/Makefile-handout cs105g-handout/Makefile + cp -p src/README-handout cs105g-handout/README + cp -p src/driver_python.py cs105g-handout - cp -p src/student_sources.zip cs105d-handout + cp -p src/student_sources.zip cs105g-handout - cp -p src/homework1.py cs105d-handout + cp -p src/homework1.py cs105g-handout - cp -p src/docker_helpers.py cs105d-handout + cp -p src/docker_helpers.py cs105g-handout - cp -p src/report2_grade.py cs105d-handout + cp -p src/report2_test_grade.py cs105g-handout - cp -p src/Report2_handin.token cs105d-handout + cp -p src/Report2_handin.token cs105g-handout handout-tarfile: handout # Build *-handout.tar and autograde.tar - tar cvf cs105d-handout.tar cs105d-handout - cp -p cs105d-handout.tar autograde.tar + tar cvf cs105g-handout.tar cs105g-handout + cp -p cs105g-handout.tar autograde.tar clean: # Clean the entire lab directory tree. Note that you can run @@ -37,7 +37,7 @@ clean: rm -f *~ *.tar (cd src; make clean) (cd test-autograder; make clean) - rm -rf cs105d-handout + rm -rf cs105g-handout rm -f autograde.tar # # CAREFULL!!! This will delete all student records in the logfile and diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde-Makefile new file mode 100644 index 0000000000000000000000000000000000000000..38762ae540905f49114e373eabc8ab7f47500186 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde-Makefile @@ -0,0 +1,7 @@ +all: + tar xf autograde.tar + cp homework1.py cs105g-handout + (cd cs105g-handout; python3 driver_python.py) + +clean: + rm -rf *~ cs105g-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde.tar new file mode 100644 index 0000000000000000000000000000000000000000..6375936fe5c1d126dccfd77d2419f492ed414334 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/autograde.tar differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..377b9185d32da385258f262ba816152ee9ed3dbf --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Makefile @@ -0,0 +1,8 @@ + +all: + tar xf autograde.tar + cp homework1.py cs105g-autograde + (cd cs105g-autograde; python3 driver_python.py) + +clean: + rm -rf *~ cs105g-autograde diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Report2_handin_3_of_26.token b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Report2_handin_3_of_26.token new file mode 100644 index 0000000000000000000000000000000000000000..0d5f0f19880b0fec6bb8527ea936c152eef61eac --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/Report2_handin_3_of_26.token @@ -0,0 +1,185 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +4b2e693ccae11acc624db22164a31a59224d82e4da245938243b4ebd5ce53631fbe7d28c60e05ee4696bad86b748a0317e09927211a37fba7637adfe44c7f47f 32400 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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 +a. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/deploy.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/deploy.py similarity index 86% rename from examples/autolab_example_py_upload/students/cs102_autolab/deploy.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/deploy.py index cbfc07e836708a6c9560ec7a99c951c54cda8721..b311122a682185bf51192c38d8b4fb97e019b9a9 100644 --- a/examples/autolab_example_py_upload/students/cs102_autolab/deploy.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/deploy.py @@ -1,4 +1,4 @@ -from cs102.report2 import Report2 +from cs102_autolab.report2_test import Report2 from unitgrade_private.hidden_create_files import setup_grade_file_report from snipper.snip_dir import snip_dir diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/driver_python.py similarity index 85% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/driver_python.py index 5f81a1a9498cc96dc44883e9ba64d7997949b5a6..9b7535e8542f1ef840372b73ed7b7b191b527dc0 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/driver_python.py @@ -31,8 +31,8 @@ def pfiles(): handin_filename = "homework1.py" student_token_file = 'Report2_handin.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" host_tmp_dir = wdir + "/tmp" homework_file = "homework1.py" # homework_file = "homework1.py" @@ -50,15 +50,16 @@ print("student_token_file", student_token_file) for f in glob.glob(os.getcwd() + "/*"): print(f) -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then # run the stuff. if not student_should_upload_token: """ Add the student homework to the right location. """ print("Moving from", os.path.basename(handin_filename), "to", handin_filename) print("file exists?", os.path.isfile(os.path.basename(handin_filename))) shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - +else: + # Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/homework1.py new file mode 100644 index 0000000000000000000000000000000000000000..c314aab912bd438c5947d99a871a63989dc90dcd --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/homework1.py @@ -0,0 +1,18 @@ +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/report2.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test.py similarity index 97% rename from examples/autolab_example_py_upload/students/cs102_autolab/report2.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test.py index 532e19592a94eda30064939b50b16c89d9aab129..039ade86a6d8886ed0a17f87637047907a4f3fbb 100644 --- a/examples/autolab_example_py_upload/students/cs102_autolab/report2.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test.py @@ -3,6 +3,7 @@ from unitgrade.evaluate import evaluate_report_student from homework1 import add, reverse_list from unitgrade import UTestCase, cache import homework1 +import unittest class Week1(UTestCase): @@ -61,7 +62,7 @@ class Question2(UTestCase): class Report2(Report): title = "CS 106a" - questions = [(Week1, 10), (Week1Titles, 6)] + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] pack_imports = [homework1] if __name__ == "__main__": diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test_grade.py new file mode 100644 index 0000000000000000000000000000000000000000..f8beb75a59c69a11a44c230aeea7d7784b980423 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/report2_test_grade.py @@ -0,0 +1,4 @@ +# report2_test.py +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' +import bz2, base64 +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..99617cf78d4c29e9394f503e2892de89666f233c Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f2c5a1afc7c6714ac132a9ba3b6302dda18f6044 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1Titles.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5b423a9a60acb2f45c2b3289ca82cdd92485e791 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-autograde/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout.tar similarity index 65% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde.tar rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout.tar index 8786bf46facaf94d6f8b944b1724ffbf3b06f3d2..1948e65c340da2782da924a12bc2991dd79dc8a7 100644 Binary files a/examples/autolab_example_py_upload/instructor/tmp/cs105d/autograde.tar and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout.tar differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/deploy.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/deploy.py new file mode 100644 index 0000000000000000000000000000000000000000..b311122a682185bf51192c38d8b4fb97e019b9a9 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/deploy.py @@ -0,0 +1,9 @@ +from cs102_autolab.report2_test import Report2 +from unitgrade_private.hidden_create_files import setup_grade_file_report +from snipper.snip_dir import snip_dir + +if __name__ == "__main__": + + setup_grade_file_report(Report2) + snip_dir("./", "../../students/cs102", clean_destination_dir=True, exclude=['*.token', 'deploy.py']) + pass diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/homework1.py new file mode 100644 index 0000000000000000000000000000000000000000..c314aab912bd438c5947d99a871a63989dc90dcd --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/homework1.py @@ -0,0 +1,18 @@ +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/report2_test.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/report2_test.py new file mode 100644 index 0000000000000000000000000000000000000000..039ade86a6d8886ed0a17f87637047907a4f3fbb --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/report2_test.py @@ -0,0 +1,69 @@ +from unitgrade.framework import Report +from unitgrade.evaluate import evaluate_report_student +from homework1 import add, reverse_list +from unitgrade import UTestCase, cache +import homework1 +import unittest + + +class Week1(UTestCase): + def test_add(self): + self.assertEqualC(add(2,2)) + self.assertEqualC(add(-100, 5)) + + def test_reverse(self): + self.assertEqualC(reverse_list([1, 2, 3])) + + def test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + +class Week1Titles(UTestCase): + """ The same problem as before with nicer titles """ + def test_add(self): + """ Test the addition method add(a,b) """ + self.assertEqualC(add(2,2)) + print("output generated by test") + self.assertEqualC(add(-100, 5)) + # self.assertEqual(2,3, msg="This test automatically fails.") + + def test_reverse(self): + ls = [1, 2, 3] + reverse = reverse_list(ls) + self.assertEqualC(reverse) + # Although the title is set after the test potentially fails, it will *always* show correctly for the student. + self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title + + def ex_test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + + +class Question2(UTestCase): + @cache + def my_reversal(self, ls): + # The '@cache' decorator ensures the function is not run on the *students* computer + # Instead the code is run on the teachers computer and the result is passed on with the + # other pre-computed results -- i.e. this function will run regardless of how the student happens to have + # implemented reverse_list. + return reverse_list(ls) + + def test_reverse_tricky(self): + ls = (2,4,8) + ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] + print("The correct answer is supposed to be", ls2) # Show students the correct answer + self.assertEqualC(reverse_list(ls)) # This will actually test the students code. + return "Buy world!" # This value will be stored in the .token file + + +class Report2(Report): + title = "CS 106a" + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] + pack_imports = [homework1] + +if __name__ == "__main__": + evaluate_report_student(Report2(), unmute=True) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..99617cf78d4c29e9394f503e2892de89666f233c Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f2c5a1afc7c6714ac132a9ba3b6302dda18f6044 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1Titles.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5b423a9a60acb2f45c2b3289ca82cdd92485e791 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g-handout/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.rb b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.rb similarity index 74% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.rb rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.rb index cf285db3bd5a91ba7023b67b4a39ba3cf18af258..48723003d37b9a966960dc2c1eca57b2622faadb 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.rb +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.rb @@ -1,10 +1,10 @@ require "AssessmentBase.rb" -module Cs105d +module Cs105g include AssessmentBase def assessmentInitialize(course) - super("cs105d",course) + super("cs105g",course) @problems = [] end diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.yml b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.yml similarity index 70% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.yml rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.yml index 127159c8cd03e7ebddfa3f7a5b5727971a9a6ffa..75b5ae0511a0bba2dc84f3015752ae50f60f1116 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d.yml +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/cs105g.yml @@ -1,14 +1,14 @@ --- general: - name: cs105d - description: '' + name: cs105g + description: 'Upload the file {homework_file}' display_name: CS 106a handin_filename: homework1.py handin_directory: handin max_grace_days: 0 - handout: cs105d-handout.tar - writeup: writeup/cs105d.html + handout: cs105g-handout.tar + writeup: writeup/writeup.html max_submissions: -1 disable_handins: false max_size: 2 @@ -17,7 +17,7 @@ general: problems: - name: Unitgrade score - description: '' + description: 'Automatic score as computed using the _grade.py script' max_score: 16 optional: false diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105g/handout.tar new file mode 100644 index 0000000000000000000000000000000000000000..c998314848846c61b4b4b4776c319dc8e97bbf9d Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/handout.tar differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Makefile similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/Makefile rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Makefile diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/Makefile-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Makefile-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/Makefile-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Makefile-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/README b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/README similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version-handout/README rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/README diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/README-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/README-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/README-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/README-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/Report2_handin.token b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Report2_handin.token similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/Report2_handin.token rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/Report2_handin.token diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/docker_helpers.py similarity index 98% rename from examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/docker_helpers.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/docker_helpers.py index 806c2b39c6782ed377ab0d4cf70a36d03940fd7b..0b82a931c0268a356ee54f777fbc7ed0ef095e3f 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/cs105b-handout/docker_helpers.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/docker_helpers.py @@ -38,7 +38,8 @@ def compile_docker_image(Dockerfile, tag=None, no_cache=False): base = os.path.dirname(Dockerfile) if tag == None: tag = os.path.basename(base) - os.system(f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} .") + cmd = f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} ." + os.system(cmd) return tag diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver.sh b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver.sh similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver.sh rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver.sh diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver.sh-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver.sh-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/driver.sh-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver.sh-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py similarity index 85% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/driver_python.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py index 5f81a1a9498cc96dc44883e9ba64d7997949b5a6..9b7535e8542f1ef840372b73ed7b7b191b527dc0 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/driver_python.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py @@ -31,8 +31,8 @@ def pfiles(): handin_filename = "homework1.py" student_token_file = 'Report2_handin.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" host_tmp_dir = wdir + "/tmp" homework_file = "homework1.py" # homework_file = "homework1.py" @@ -50,15 +50,16 @@ print("student_token_file", student_token_file) for f in glob.glob(os.getcwd() + "/*"): print(f) -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then # run the stuff. if not student_should_upload_token: """ Add the student homework to the right location. """ print("Moving from", os.path.basename(handin_filename), "to", handin_filename) print("file exists?", os.path.isfile(os.path.basename(handin_filename))) shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - +else: + # Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py-handout similarity index 85% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py-handout index 5f81a1a9498cc96dc44883e9ba64d7997949b5a6..9b7535e8542f1ef840372b73ed7b7b191b527dc0 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105d/src/driver_python.py-handout +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/driver_python.py-handout @@ -31,8 +31,8 @@ def pfiles(): handin_filename = "homework1.py" student_token_file = 'Report2_handin.token' -instructor_grade_script = 'report2_grade.py' -grade_file_relative_destination = "report2_grade.py" +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" host_tmp_dir = wdir + "/tmp" homework_file = "homework1.py" # homework_file = "homework1.py" @@ -50,15 +50,16 @@ print("student_token_file", student_token_file) for f in glob.glob(os.getcwd() + "/*"): print(f) -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then # run the stuff. if not student_should_upload_token: """ Add the student homework to the right location. """ print("Moving from", os.path.basename(handin_filename), "to", handin_filename) print("file exists?", os.path.isfile(os.path.basename(handin_filename))) shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - +else: + # Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) command = f"cd tmp && {command} --noprogress --autolab" def rcom(cm): diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/homework1.py similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105d/cs105d-handout/homework1.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105g/src/homework1.py diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/report2_test_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/report2_test_grade.py new file mode 100644 index 0000000000000000000000000000000000000000..f8beb75a59c69a11a44c230aeea7d7784b980423 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/report2_test_grade.py @@ -0,0 +1,4 @@ +# report2_test.py +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' +import bz2, base64 +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/student_sources.zip new file mode 100644 index 0000000000000000000000000000000000000000..bedf1661c157074734fff12860900ef41ef0a3a2 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105g/src/student_sources.zip differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105h/Makefile similarity index 64% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/Makefile rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/Makefile index b9c752894264c4bac9843a2d1bc1fb171a8881d1..df7fc93e26d08d2d19649b0d2aeb786e580a481b 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/Makefile +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/Makefile @@ -9,24 +9,26 @@ all: handout handout-tarfile handout: # Rebuild the handout directory that students download - (rm -rf cs105-handout; mkdir cs105-handout) - cp -p src/Makefile-handout cs105-handout/Makefile - cp -p src/README-handout cs105-handout/README - cp -p src/driver_python.py cs105-handout + (rm -rf cs105h-handout; mkdir cs105h-handout) + cp -p src/Makefile-handout cs105h-handout/Makefile + cp -p src/README-handout cs105h-handout/README + cp -p src/driver_python.py cs105h-handout - cp -p src/student_sources.zip cs105-handout + cp -p src/student_sources.zip cs105h-handout - cp -p src/homework1.py cs105-handout + cp -p src/homework1.py cs105h-handout - cp -p src/docker_helpers.py cs105-handout + cp -p src/docker_helpers.py cs105h-handout - cp -p src/report2_grade.py cs105-handout + cp -p src/report2_test_grade.py cs105h-handout + + cp -p src/Report2_handin.token cs105h-handout handout-tarfile: handout # Build *-handout.tar and autograde.tar - tar cvf cs105-handout.tar cs105-handout - cp -p cs105-handout.tar autograde.tar + tar cvf cs105h-handout.tar cs105h-handout + cp -p cs105h-handout.tar autograde.tar clean: # Clean the entire lab directory tree. Note that you can run @@ -35,7 +37,7 @@ clean: rm -f *~ *.tar (cd src; make clean) (cd test-autograder; make clean) - rm -rf cs105-handout + rm -rf cs105h-handout rm -f autograde.tar # # CAREFULL!!! This will delete all student records in the logfile and diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde-Makefile new file mode 100644 index 0000000000000000000000000000000000000000..4886586aa04b4fa0a8db4e10f42bd7d3a3db1f2b --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde-Makefile @@ -0,0 +1,7 @@ +all: + tar xf autograde.tar + cp homework1.py cs105h-autograde + (cd cs105h-autograde; python3 driver_python.py) + +clean: + rm -rf *~ cs105h-autograde \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde.tar new file mode 100644 index 0000000000000000000000000000000000000000..56f6c6aba52c46c1992144324f142db798345513 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/autograde.tar differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/Report2_handin.token b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/Report2_handin.token new file mode 100644 index 0000000000000000000000000000000000000000..379766ca8efbf72b3380fa54fa7150d2ecd7839f --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/Report2_handin.token @@ -0,0 +1,327 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +47655d0753e025d6b3b20db676ecc36fe8124fb1af5d2933b475e0e5ff511d76e94036b02cf3e5949bcc17d82112f1f73e0e2e0ad97945d989a56f7943e40f39 58044 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/autograde-Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/autograde-Makefile new file mode 100644 index 0000000000000000000000000000000000000000..553b297f4123b99d794be4be5e97d573c3906378 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/autograde-Makefile @@ -0,0 +1,7 @@ +all: + tar xf autograde.tar + cp homework1.py cs105h-handout + (cd cs105h-handout; python3 driver_python.py) + +clean: + rm -rf *~ cs105h-handout \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/driver_python.py new file mode 100644 index 0000000000000000000000000000000000000000..e627a7473b7c94be7380bc9cd86ed3d653539af9 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/driver_python.py @@ -0,0 +1,92 @@ +import os +import glob +import shutil +import sys +import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json +from unitgrade_private.docker_helpers import student_token_file_runner +from unitgrade_private import load_token +import time +import unitgrade_private + +verbose = False +tag = "[driver_python.py]" + +if not verbose: + print("="*10) + print(tag, "Starting unitgrade evaluation...") +import unitgrade +print(tag, "Unitgrade version", unitgrade.version.__version__) +print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) + + +sys.stderr = sys.stdout +wdir = os.getcwd() + +def pfiles(): + print("> Files in dir:") + for f in glob.glob(wdir + "/*"): + print(f) + print("---") + +handin_filename = "homework1.py" +student_token_file = 'Report2_handin.token' +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" +host_tmp_dir = wdir + "/tmp" +homework_file = "homework1.py" +# homework_file = "homework1.py" +student_should_upload_token = False # Add these from template. + +if not verbose: + pfiles() + print(f"{host_tmp_dir=}") + print(f"{student_token_file=}") + print(f"{instructor_grade_script=}") + +print("Current directory", os.getcwd()) +print("student_token_file", student_token_file) +for f in glob.glob(os.getcwd() + "/*"): + print(f) +try: + # This is how we get the student file structure. + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) + # run the stuff. + if not student_should_upload_token: + """ Add the student homework to the right location. """ + print("Moving uploaded file from", os.path.basename(handin_filename), "to", handin_filename) + # print("file exists?", os.path.isfile(os.path.basename(handin_filename))) + shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) + + command = f"cd tmp && {command} --noprogress --autolab" + def rcom(cm): + rs = subprocess.run(cm, capture_output=True, text=True, shell=True) + print(rs.stdout) + if len(rs.stderr) > 0: + print(tag, "There were errors in executing the file:") + print(rs.stderr) + + start = time.time() + rcom(command) + ls = glob.glob(token) + f = ls[0] + results, _ = load_token(ls[0]) + +except Exception as e: + if not student_should_upload_token: + print(tag, "A major error occured while starting unitgrade.") + print(tag, "This can mean the grader itself is badly configured, or (more likely) that you submitted a completely wrong file.") + print(tag, "The following is the content of the file you uploaded; is it what you expect?") + with open(host_tmp_dir + "/" + handin_filename, 'r') as f: + print( f.read() ) + print(" ") + print(tag, "If you cannot resolve the problem, please contact the teacher and include details such as this log, as well as the file you submitted.") + + raise e + +if verbose: + print(tag, f"{token=}") + print(tag, results['total']) + +format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/homework1.py new file mode 100644 index 0000000000000000000000000000000000000000..c314aab912bd438c5947d99a871a63989dc90dcd --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/homework1.py @@ -0,0 +1,18 @@ +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test.py new file mode 100644 index 0000000000000000000000000000000000000000..039ade86a6d8886ed0a17f87637047907a4f3fbb --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test.py @@ -0,0 +1,69 @@ +from unitgrade.framework import Report +from unitgrade.evaluate import evaluate_report_student +from homework1 import add, reverse_list +from unitgrade import UTestCase, cache +import homework1 +import unittest + + +class Week1(UTestCase): + def test_add(self): + self.assertEqualC(add(2,2)) + self.assertEqualC(add(-100, 5)) + + def test_reverse(self): + self.assertEqualC(reverse_list([1, 2, 3])) + + def test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + +class Week1Titles(UTestCase): + """ The same problem as before with nicer titles """ + def test_add(self): + """ Test the addition method add(a,b) """ + self.assertEqualC(add(2,2)) + print("output generated by test") + self.assertEqualC(add(-100, 5)) + # self.assertEqual(2,3, msg="This test automatically fails.") + + def test_reverse(self): + ls = [1, 2, 3] + reverse = reverse_list(ls) + self.assertEqualC(reverse) + # Although the title is set after the test potentially fails, it will *always* show correctly for the student. + self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title + + def ex_test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + + +class Question2(UTestCase): + @cache + def my_reversal(self, ls): + # The '@cache' decorator ensures the function is not run on the *students* computer + # Instead the code is run on the teachers computer and the result is passed on with the + # other pre-computed results -- i.e. this function will run regardless of how the student happens to have + # implemented reverse_list. + return reverse_list(ls) + + def test_reverse_tricky(self): + ls = (2,4,8) + ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] + print("The correct answer is supposed to be", ls2) # Show students the correct answer + self.assertEqualC(reverse_list(ls)) # This will actually test the students code. + return "Buy world!" # This value will be stored in the .token file + + +class Report2(Report): + title = "CS 106a" + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] + pack_imports = [homework1] + +if __name__ == "__main__": + evaluate_report_student(Report2(), unmute=True) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test_grade.py new file mode 100644 index 0000000000000000000000000000000000000000..d35d464081aea7fee536c44ebc291e882d67be65 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/report2_test_grade.py @@ -0,0 +1,4 @@ +# report2_test.py +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' +import bz2, base64 +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bcfd4d4c0ec3b7fa90b9d5945812dfd05623770b Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d7e897ace5ae661bbe6e4d3d29bff2c3dbbea55a Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1Titles.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3f846dd3e070d58ba594674b8ac74ebd84837781 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-autograde/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout.tar b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout.tar new file mode 100644 index 0000000000000000000000000000000000000000..89891a8c82f05e7f426bd4034d18da34f73c476b Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout.tar differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/homework1.py new file mode 100644 index 0000000000000000000000000000000000000000..c314aab912bd438c5947d99a871a63989dc90dcd --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/homework1.py @@ -0,0 +1,18 @@ +def reverse_list(mylist): + """ + Given a list 'mylist' returns a list consisting of the same elements in reverse order. E.g. + reverse_list([1,2,3]) should return [3,2,1] (as a list). + """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +def add(a,b): + """ Given two numbers `a` and `b` this function should simply return their sum: + > add(a,b) = a+b """ + # TODO: 1 lines missing. + raise NotImplementedError("Implement function body") + +if __name__ == "__main__": + # Example usage: + print(f"Your result of 2 + 2 = {add(2,2)}") + print(f"Reversing a small list", reverse_list([2,3,5,7])) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/report2_test.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/report2_test.py new file mode 100644 index 0000000000000000000000000000000000000000..039ade86a6d8886ed0a17f87637047907a4f3fbb --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/report2_test.py @@ -0,0 +1,69 @@ +from unitgrade.framework import Report +from unitgrade.evaluate import evaluate_report_student +from homework1 import add, reverse_list +from unitgrade import UTestCase, cache +import homework1 +import unittest + + +class Week1(UTestCase): + def test_add(self): + self.assertEqualC(add(2,2)) + self.assertEqualC(add(-100, 5)) + + def test_reverse(self): + self.assertEqualC(reverse_list([1, 2, 3])) + + def test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + +class Week1Titles(UTestCase): + """ The same problem as before with nicer titles """ + def test_add(self): + """ Test the addition method add(a,b) """ + self.assertEqualC(add(2,2)) + print("output generated by test") + self.assertEqualC(add(-100, 5)) + # self.assertEqual(2,3, msg="This test automatically fails.") + + def test_reverse(self): + ls = [1, 2, 3] + reverse = reverse_list(ls) + self.assertEqualC(reverse) + # Although the title is set after the test potentially fails, it will *always* show correctly for the student. + self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title + + def ex_test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + + +class Question2(UTestCase): + @cache + def my_reversal(self, ls): + # The '@cache' decorator ensures the function is not run on the *students* computer + # Instead the code is run on the teachers computer and the result is passed on with the + # other pre-computed results -- i.e. this function will run regardless of how the student happens to have + # implemented reverse_list. + return reverse_list(ls) + + def test_reverse_tricky(self): + ls = (2,4,8) + ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] + print("The correct answer is supposed to be", ls2) # Show students the correct answer + self.assertEqualC(reverse_list(ls)) # This will actually test the students code. + return "Buy world!" # This value will be stored in the .token file + + +class Report2(Report): + title = "CS 106a" + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] + pack_imports = [homework1] + +if __name__ == "__main__": + evaluate_report_student(Report2(), unmute=True) diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bcfd4d4c0ec3b7fa90b9d5945812dfd05623770b Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d7e897ace5ae661bbe6e4d3d29bff2c3dbbea55a Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1Titles.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3f846dd3e070d58ba594674b8ac74ebd84837781 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h-handout/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.rb b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.rb similarity index 74% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.rb rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.rb index b115a01143a9ecc95eda6fbb126244631c5a74fe..969cdb6f7cbd6ecd529e5a708d46000c61534bd3 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105/cs105.rb +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.rb @@ -1,10 +1,10 @@ require "AssessmentBase.rb" -module Cs105 +module Cs105h include AssessmentBase def assessmentInitialize(course) - super("cs105",course) + super("cs105h",course) @problems = [] end diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.yml b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.yml similarity index 64% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.yml rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.yml index 91c6ac44dbc6297ed69997a00abb8c897b7dc890..8684bf28d0eeab31e5ad7e0a5ca6a8b8da259344 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/cs105-new-version.yml +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/cs105h.yml @@ -1,14 +1,14 @@ --- general: - name: cs105-new-version - description: '' - display_name: CS 105 Report autolab v2 + name: cs105h + description: 'Upload the file homework1.py' + display_name: CS 106a handin_filename: homework1.py handin_directory: handin max_grace_days: 0 - handout: cs105-new-version-handout.tar - writeup: writeup/cs105-new-version.html + handout: cs105h-handout.tar + writeup: writeup/writeup.html max_submissions: -1 disable_handins: false max_size: 2 @@ -17,8 +17,8 @@ general: problems: - name: Unitgrade score - description: '' - max_score: 16 + description: 'Automatic score as computed using the _grade.py script' + max_score: 26 optional: false autograder: diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/Makefile b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Makefile similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/Makefile rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Makefile diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/Makefile-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Makefile-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/src/Makefile-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Makefile-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/README b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/README similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105-new-version/src/README rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/README diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/README-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/README-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/src/README-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/README-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Report2_handin.token b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Report2_handin.token new file mode 100644 index 0000000000000000000000000000000000000000..379766ca8efbf72b3380fa54fa7150d2ecd7839f --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/Report2_handin.token @@ -0,0 +1,327 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +47655d0753e025d6b3b20db676ecc36fe8124fb1af5d2933b475e0e5ff511d76e94036b02cf3e5949bcc17d82112f1f73e0e2e0ad97945d989a56f7943e40f39 58044 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +.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. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/docker_helpers.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/docker_helpers.py similarity index 98% rename from examples/autolab_example_py_upload/instructor/tmp/cs105b/src/docker_helpers.py rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/docker_helpers.py index 806c2b39c6782ed377ab0d4cf70a36d03940fd7b..0b82a931c0268a356ee54f777fbc7ed0ef095e3f 100644 --- a/examples/autolab_example_py_upload/instructor/tmp/cs105b/src/docker_helpers.py +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/docker_helpers.py @@ -38,7 +38,8 @@ def compile_docker_image(Dockerfile, tag=None, no_cache=False): base = os.path.dirname(Dockerfile) if tag == None: tag = os.path.basename(base) - os.system(f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} .") + cmd = f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} ." + os.system(cmd) return tag diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver.sh b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver.sh similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver.sh rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver.sh diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver.sh-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver.sh-handout similarity index 100% rename from examples/autolab_example_py_upload/instructor/tmp/cs105/src/driver.sh-handout rename to examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver.sh-handout diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py new file mode 100644 index 0000000000000000000000000000000000000000..e627a7473b7c94be7380bc9cd86ed3d653539af9 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py @@ -0,0 +1,92 @@ +import os +import glob +import shutil +import sys +import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json +from unitgrade_private.docker_helpers import student_token_file_runner +from unitgrade_private import load_token +import time +import unitgrade_private + +verbose = False +tag = "[driver_python.py]" + +if not verbose: + print("="*10) + print(tag, "Starting unitgrade evaluation...") +import unitgrade +print(tag, "Unitgrade version", unitgrade.version.__version__) +print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) + + +sys.stderr = sys.stdout +wdir = os.getcwd() + +def pfiles(): + print("> Files in dir:") + for f in glob.glob(wdir + "/*"): + print(f) + print("---") + +handin_filename = "homework1.py" +student_token_file = 'Report2_handin.token' +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" +host_tmp_dir = wdir + "/tmp" +homework_file = "homework1.py" +# homework_file = "homework1.py" +student_should_upload_token = False # Add these from template. + +if not verbose: + pfiles() + print(f"{host_tmp_dir=}") + print(f"{student_token_file=}") + print(f"{instructor_grade_script=}") + +print("Current directory", os.getcwd()) +print("student_token_file", student_token_file) +for f in glob.glob(os.getcwd() + "/*"): + print(f) +try: + # This is how we get the student file structure. + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) + # run the stuff. + if not student_should_upload_token: + """ Add the student homework to the right location. """ + print("Moving uploaded file from", os.path.basename(handin_filename), "to", handin_filename) + # print("file exists?", os.path.isfile(os.path.basename(handin_filename))) + shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) + + command = f"cd tmp && {command} --noprogress --autolab" + def rcom(cm): + rs = subprocess.run(cm, capture_output=True, text=True, shell=True) + print(rs.stdout) + if len(rs.stderr) > 0: + print(tag, "There were errors in executing the file:") + print(rs.stderr) + + start = time.time() + rcom(command) + ls = glob.glob(token) + f = ls[0] + results, _ = load_token(ls[0]) + +except Exception as e: + if not student_should_upload_token: + print(tag, "A major error occured while starting unitgrade.") + print(tag, "This can mean the grader itself is badly configured, or (more likely) that you submitted a completely wrong file.") + print(tag, "The following is the content of the file you uploaded; is it what you expect?") + with open(host_tmp_dir + "/" + handin_filename, 'r') as f: + print( f.read() ) + print(" ") + print(tag, "If you cannot resolve the problem, please contact the teacher and include details such as this log, as well as the file you submitted.") + + raise e + +if verbose: + print(tag, f"{token=}") + print(tag, results['total']) + +format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py-handout b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py-handout new file mode 100644 index 0000000000000000000000000000000000000000..e627a7473b7c94be7380bc9cd86ed3d653539af9 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/driver_python.py-handout @@ -0,0 +1,92 @@ +import os +import glob +import shutil +import sys +import subprocess +from unitgrade_private.autolab.autolab import format_autolab_json +from unitgrade_private.docker_helpers import student_token_file_runner +from unitgrade_private import load_token +import time +import unitgrade_private + +verbose = False +tag = "[driver_python.py]" + +if not verbose: + print("="*10) + print(tag, "Starting unitgrade evaluation...") +import unitgrade +print(tag, "Unitgrade version", unitgrade.version.__version__) +print(tag, "Unitgrade-devel version", unitgrade_private.version.__version__) + + +sys.stderr = sys.stdout +wdir = os.getcwd() + +def pfiles(): + print("> Files in dir:") + for f in glob.glob(wdir + "/*"): + print(f) + print("---") + +handin_filename = "homework1.py" +student_token_file = 'Report2_handin.token' +instructor_grade_script = 'report2_test_grade.py' +grade_file_relative_destination = "report2_test_grade.py" +host_tmp_dir = wdir + "/tmp" +homework_file = "homework1.py" +# homework_file = "homework1.py" +student_should_upload_token = False # Add these from template. + +if not verbose: + pfiles() + print(f"{host_tmp_dir=}") + print(f"{student_token_file=}") + print(f"{instructor_grade_script=}") + +print("Current directory", os.getcwd()) +print("student_token_file", student_token_file) +for f in glob.glob(os.getcwd() + "/*"): + print(f) +try: + # This is how we get the student file structure. + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) + # run the stuff. + if not student_should_upload_token: + """ Add the student homework to the right location. """ + print("Moving uploaded file from", os.path.basename(handin_filename), "to", handin_filename) + # print("file exists?", os.path.isfile(os.path.basename(handin_filename))) + shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) + + command = f"cd tmp && {command} --noprogress --autolab" + def rcom(cm): + rs = subprocess.run(cm, capture_output=True, text=True, shell=True) + print(rs.stdout) + if len(rs.stderr) > 0: + print(tag, "There were errors in executing the file:") + print(rs.stderr) + + start = time.time() + rcom(command) + ls = glob.glob(token) + f = ls[0] + results, _ = load_token(ls[0]) + +except Exception as e: + if not student_should_upload_token: + print(tag, "A major error occured while starting unitgrade.") + print(tag, "This can mean the grader itself is badly configured, or (more likely) that you submitted a completely wrong file.") + print(tag, "The following is the content of the file you uploaded; is it what you expect?") + with open(host_tmp_dir + "/" + handin_filename, 'r') as f: + print( f.read() ) + print(" ") + print(tag, "If you cannot resolve the problem, please contact the teacher and include details such as this log, as well as the file you submitted.") + + raise e + +if verbose: + print(tag, f"{token=}") + print(tag, results['total']) + +format_autolab_json(results) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/homework1.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/homework1.py new file mode 100644 index 0000000000000000000000000000000000000000..379766ca8efbf72b3380fa54fa7150d2ecd7839f --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/homework1.py @@ -0,0 +1,327 @@ +# This file contains your results. Do not edit its content. Simply upload it as it is. +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +47655d0753e025d6b3b20db676ecc36fe8124fb1af5d2933b475e0e5ff511d76e94036b02cf3e5949bcc17d82112f1f73e0e2e0ad97945d989a56f7943e40f39 58044 +---------------------------------------------------------------------- ..ooO0Ooo.. ---------------------------------------------------------------------- +./Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4QxRqcldAEABDm8Fp8fn+r1cum4Z1MSioakYyu5TY7QaRqYjjegE49LLW0hsAsbsZ70k25W6z7JUggKriIUn3QeaOwJ7nBFdH/+iDr/eyKN4lC9K5CDJvAEXzgAVcs467tmGfbZCryQQxCYWyd3 +Pl4CiXpPfKdX0xv+zOaWcLmLN9Eetz9+QjdjlAoaC99998R5Xm7x8xAu+6X9zuQAyc0MoegM7akVDNddgGdTU7qc/ScHy4wi0GdG2NF9wkmD+jRfT84Nx+GMfnSOn97KIRbiU8Gd3bWvUgku6dqevGkW5gRQ/IyvvuaXcPPUOWYvGfZ637u6 +/oS3UCwY409nDqnloNf3dLU+cJwTFBIzGctBQIbtMdOHgC+UARhYpoQBwkrtkgegOyH53vvv+pqVFaCEBPgqGZpsq64gWbPlX/Ofg++0+Y2vfVKtv7DO058TQZ/+wke93aIZg8X9EPW0XQ2CazF4q76B4SsDBsYimHmNIkj6nsLkfvKl1t/I +oh49ucUO6NLWWuKytmGHZKClySd9XC/1e4TjzBcOKjnDU7xXJIrqaFwQF4GOefaTUUqB4beGMovitxMzjJrMk+74AL70AtM1H8kX3/GK0jDriKfoNHm+pNr1havBs0GWYxB27ltP2Yfzb1p9ov5LGAn9N+FDh5IcvFU/FbJ/qNTvNGQl1bOD +3OW3HGCrUkwPLdbdA4s1eQXyrYPQKkisUx3nhZ0wbhXfUjK5jZ6k7gc5wVY6r99shFFmiv9uKdI1RZv1JLIIVRcAMGxBRHU+5TAm7P3/YRUxqLKR3GUM2A+4iFmv0hNQUEe+f0DKPOYffAowcFEJxdPxRcf1tp304jnlOexPwXBmLL7sTjrw +DFrCl+N+wwIi2H5xjlf68cnUCOOHHUen958H8BlxQ/dx3WEnEDPzBmG392LW7FHSM5HQUD5zM0urv5jj31wzFPWNQQlKDBdWklu2ZWwT0FyYSd+rKXzpIYcMfd+n6ysKyfLWRHVMeWG8H4ciPZj8Ynb0rYVKA0Jg9HVX1vPQbAgDETafGeil +M5YQ/pe9hUDPlI+ccyXf5ZVRI9wcIVAOGncxzIWbKGikHASf8MphaULklBsvdaPuwJ0u3KarM3lzuW7Tz6a17DBGA09BIH6a8Sm/LAji4u1U9/EERPAlwbQD21iCKoFubO3VIvkAvWuhKggSOM7HOg/gOsNjUh3vHnuzYA8OG5HEjxusyMMV +qxsN9R2a0B3GtW6w5S5y5jgIK05NJjeHkWEdQOGaAIOjZhVVb3boqAcV0GaipeXtUdwcgqd7vyjovw2Hx8BEjR8TvdV+9vePHVYKccBOiefBg3wPQ5II1SB060h5yzaBd/ttm22VkV06G1/2EvdZwiEpGn0Je/IWnmQc0WYSRp94y/3CR2gC +EzpupjRU5plZrcNAeN/csAMzof3d3AmHjjLzIoQHiR4cR3a/Q/J64VXg3q9VJia3QmrDDTrnDqD6pnqnN/fPoD02rpWrdRVzBCMg4GrUuI3BZY9kwmtC+VcMqgiGIHrtsMfd/qpedgGlVBESc20EuNh4TyFFI8WIq/XeAy3eIjJgh0/L48Yk +oxvN47x2ibHaza55/87wvECxYXN9yrFRnj2TYY/Cd0/M0V0OPCxMFXkbGCOgLmFinbQH3rDWarQ0oOlOrrYQn//M6QeVnWdlWLGK+5fUfmN87z6O9QpIaKfl2CCCe6Z5xOXexua/OCJ0eKEG2FdaQByV4dv+176CNzBknrb2LyLByj8sqQus +kzGZqshcldwbriqLVwRnf/JymCcMpskRQND3QJK1LhCXgy2nIsDJaItH+cBnHdtHpXGd6OrkGi7tRlSoZ/X/nGCNuMAohZEDHM4qdaxwialuVG6N7b4ftYLm8moSDU91XOwcfCoi6OUlUxH1GVofIfcc7sF3enyZ+ordMHsY+LwzIyfqe/hy +2nU7/bPNmC2fG0IhgyNetdNKayK5BAxXooi1kS4/p53IMSyfc40ObLQoINW/Dtyr2BnVJ+yo+KrTzr9ddIEmq69otXEehWVPExvX7C2hnY9uhdRYE5+QTzQg0quo7A0ZMNQlpJMMNssq8mX7KdcFC8NvNL0FiEoxxdedksmZeb6zPkdbrNzJ +Zhp+Kv3fu8eqVttkklL2CRiEDt4uB//Rnv5+9madwtvuMNu7SHnHnIBTEBRVJd7WQUG9GjXuYA9WhA/iO8pppKA3QzSaU4IuCfdQhw7Ex5sizOU+kQxU4inru5YI6Cs9qus3tmo82OOzS+G7oF4/W8GtQWVjjjWRQay9WMS7Fu4YXMxDirLH +RleHJ3hdHrpJAGJRQCE2UKInMzoih5blBJHfR/CN2QwEY8QlqkUPSQOf4Tyd7ABmjvzoAoKVgiHynLL/ukrBuyEYm4dVAxb+awB4vMDR480wAU6+lCMZQo6QZRLCngCyPI87bUn42/EYcwqaLC5DIQk5LqC4njPT8x0tYPzIXjZie/nnMqTj +TW+NKuIWMRzwleF+2eogshB8/vGD4vC3FesNQJ5ZpxoAD5IPrCsyTaKFLbVM7SKGZGsqvhZCESk5+VEyQv+4Hecc91uGTZbN8VLjjPgvnOSTtpSAMjEoBa9lRiYBWCETFJliasxZV0oBxCOb510K9BtSTf+UULwgQ9BVoP7EhG0pLAZA4bya +RyPF/xOrr/CvQOBrKmMTIglw/lRVmiNTlWNfLSmrX0XC8IwFjUxRnYls65q4btAhOi9uwEfFio7qPCqxjtFhSQ9wcqT8IqxJqho2iDqCXfax+DhbwbqUssH2mBsAmr3kAEPq9R3BqWbSKgZNvAeDMjHS1q5J5OXkhv0p16sLtVlfo3bWneyT +0EHqW7/D2Yodz6d5PbQSoGGT/sFo64ZBUobYFmkWLPy7GlelPaQYbui98btcAHct4Iq8bdpohRxcdKGGwjOvBpnQFCQsL0OQOLUvaGWX/tXoywwlcXLV6w7f5w5LKR7yK6jAR/e3NzMYc/DoD7FeuVd+8y6jYYJ3Thpx+EGwORaitSaycsYs +4BK6pDrL1pZ5O80f6oEUzsmpKnlk2EKajYU2eOyoOjomJNJCuJmH0TPu/1fHi1aC1ALe/89BUbia+e5gi+keUa5q0J7ZCkBlrC7C8BjFWpzloylVtZNX74lhjH05mKZSC6y8EKBzzCDG1Izu16lOmOhyus4S7Uz9tGmLvQpjt9An19RbuXZW +EoTV8Fgx9mQlUm815tdUAbfq4eMpa7k3Rf3JTopeWy/HENi52nlnB3Kfz4NM5etGGmCyc++Rg27AxzlFMBohHYEeivROvsxU/JpRURMSb8YrmI0RGW6H1Noy+/w4mFTtbTrtnMyRrA/uQq9UqMK3nkKkGGyCRlLF+yB7y7huwRaOEsdiNDZJ +NSpoNx/4hzsqX8wWHSFo8i0Sho8DnDdLh3hvkqKbDJWB83bj3AfFTdJDyQ/xi7bj+kUR1ugX/fIghO0CHjAnzPMcOu6FlCWB9jqc00zeai7EtniiJlySO/kYd2rAc6jzqYBbe9QVYEktVTMrWCw/0L9FVge9drukwbfMORhAwSz4BwC7jxuu +H8KMdsYqvdH/7Q5KKqfuxjl/dRKC7sQsNTpMpzM3vyGDKQAZfZTJLVeVShUjz9HQ6Ax/R0RltkM4AKxk+cX3e/nUUBjSGvrgiR2L0DxHBh9a2RMuyyY2LYQzWeCwTzegO+uETg1uCjIhxS4nBDwu8YxyU3O5OfnpnR2gVM0IJCejVHtI/gjL +XAbtESvGa/WTVL6VJm0g4+gH1r5kWCvr660rk/rXZ1XZFyUrEEmLydGagepgin2A7ENOJHa3rlfImyVUXkNh2Zciz81JREvbMCs6RpmuWjlDExl/LvBVVT+EU7CZvHTi1v7txj4Qv9Fg+WlizR7B5elkxmOfCjYg8TGm+4Xw7mMpO9nzPoWH +kNJxRJw2zrQ2E5IwJa+qSlteCzqS6UiwrvKYFSEojvj/ov6KLFiFylOWr+PmzH3xlE+u3yD5ulF89M4DTTUF6UOa81GcLaQXiCQCDU/f9SNBZk6pDxKKD+0c4OVW20xwwufO26Wv0GWCgtDujQB8SBVK1Zx8o+MTRLSWEeYyBhYOXS4bhzO2 +J4/vKVBQt856g3VUJ5PbhPwAZaPVIOG1PNCxaMr1xmRA6YOBDbRPqnAFgA9HrAZshewdpyZ7SRoQMyAzRjoOmN94ls866v1DR2D9dxCDlgMMSXgN5b6lq/uhiXCzWRQhNmccLJSEP0ThkK/YHVpHshr3M02BaYXxS5g4D1TLBXZZ3h609BV3 +AoFAnOM2uRU5CjnySLNLAvivcNPOVwWQHIFKjjAEkwtveie8tXaEUl9Gt9vkDQ24b9duFMx45vRbuPqTjFIscE+SMVe7tTAqQ/NoYV2U0HXqGZ9FlDjdDz4ovBoANWoK05HhPPcJyl1fo0HfkPkV/TP+5MNW87fFfMIX+QORf9kfsahTan5T +5lbAsKxiCNAEt2uuao4PjgfIB/IYAZ1bHNrBolyBRRlfezrE2Gztk0JBok0XN1PVRl3bE/YYRzE2GSFCdJTPSGZb7D1HF/hehQTpr+gRMmIJUPIz8WRLh3vEuA8fcRFzMiN56eM/sm31hBlH+wuG2hM4sAOL5+RMqGOGLGqtJvILkEkDt4my +YkO20jzQISydobl39z+6qQCbjanct6JVN28EGEs5StFIERcRzzlfeHEOOYgwUR5gjPojH5Kv4UAkyZURaaO+AGtiPmD9/bByg8JS0LYMqyasqWstaeNjkdB4KpPl+eT8NHGIJq+6R1OSbMsXxJ5qq45Ha6iFs5gojZu4XoQVDauG1g7O6Pnq +n5ALmIRbChLVCPP9sHCnepWa75f+sqYPkXy4WrQpqZIiIjnC0g/1zVa761SmvQk3DygZFd5AF5ltbsXxqbisJ6DFHgj8tADcB8/O1GGjKC+HStAFVNAPHK9LroOQQTA3HNkfZHk6k1qsbGMpoKfwR+/nnRk7zDtaUW6qMjO7Fk7SpAyrMGNa ++rdgbFGpyVazY2uA73ighVamriMZYQp+jVTGd0jqVZFpJldiiump5D+DV2LgREqSLd/GJEGIP1Oo/efuV5P+ygn6p95ZlZtzbsDr7c7MTRpQsGpKEnMagRuDfFq0a/eFiuH0Ogwxaka92nu48rpee6UftNkjogOLbdL3Bq/VUgHoRri8WVTJ +WaZOotENY7gG1nRCT0g9ZJRzXrmF9QTHPAz3vIj6umNlpVQgYh2MsnMhGz5pRu2hN+uBZlvwZ1gj1gnQWBjxw8INFs1Rzd7hTQ3OKIRWnyBOC/mDl56gh8mU2NnXmmMmoa/tUL6YU4OR8jY2G9rxRrZEXnZWNjxfdbwU464pcoFcKlIh43fL +WMQhkHwtW+Vtl75AllcTV3JfE2KZxMhoSllUGiATJZcqwvgO2N1/oywlEJTnwDs2AbXF/SCAX/WZWwYJN3VWsNxRJfKKp2NmN5KiDRGMFxGEOX/2jWmpvvx9NWUDp2VvwSucIbCt7zrukfqIc8cqcVgOCo/e7yPOTuDIzGX0VceSXpfgVBKm +58j3Kc6Qa2hAnoVDqywvA71uuHJTQGoBNM0wQKqrP5ERYnUADXLOUa/JmRm3CF9fT6V1yzq01aC5ihBIn9xCgPjsA1Z1TK6CPsydMdBt7T5GHAQlgFLf299H4ibXkW/WpeKnumfKY1JHH7U6KyvJn6tmZe8N0lvDyLIxPCUbYOadPm9dQWAd +eeOktjS9k34KPxADn2Zm32xcmHC0XPlMXHGRNUeFiZ64O9vN/Xq5dvWZvvze0SskD2gEktFEuBHS5RqtEy8R9gpMyhW5GFHdddf4eBeVmCLW88R4/5MaMQvgAw5PJ1UHHx3mGKa5YVgkhB6I04rozavRXdiQvYpssYfEUxyq7verfooM/5Sc +mA4s7+JHNl1w68Z2EVDqQIVjZS49giv6BbKWsG1mTIcsjQdtdGHQbidUBt1SZjbdQR+jjxzOph1Op9AAWuNwstD58Tk0csILl9gWf8iDiDvbapGn2BEqIE7n3962FoorssYwy+bwVUi3YzAugW166L53e/SCJg1sLOo4WpiI+hZMgyRNPFFt +oMcmiN8TsahrpvcO6iGT0jL9hYXryzntMd/J0awjr2lST6FqqRx0FZm6vFMbVheBvhehaGk8izpA972IxfWVojWPaDvpaFrXZRh2iEc4/RKtRcKsh+8Zi54FYv3c4Lt5Re/00WWPC4E6VuS5BZXdS55zQ6EWp9YSUiiXE78uVbxFL7MApzHS +VhIrmZqKtaP8rmCgT3y+lOV0UrHFy2GY0Ahzhx42Oaqr1jKjOrZmgFDO0fsGBvGMtK/mZlgpIPTxCbd7Ag5Ly7mZDFuI5irVBKDmnTAW0tNXg8HRBdOrEuOepAzBX+law4YNJncDxfHvziys7Rb80P6UIxBMzuUWMG5DJeHKc8l9dSzrFohb +HU6AtteqfJQs+uuOU2V+Mctf2qJEBeKiIjYnGqr5vTGN2ExRY8SX/VwRwhEHiAxgkTT3E0yj4aVpkQKnanIM6jVkr0anHqwK7208p2mcRRTT+DPvrIexYweDel031gVXO44rAQb9yX0JjMFXLQXt8jrhjDbU/5hCl2DaX/iMJsUOyeSJA+Go +9UZEva7cTJj3aUc7UMqXO4vZdFaoNES5s7VpGjvtn+fmWJjJqU47h8x8BdQUFcA670E+zcmdMbZnnqR7omoyx/Af6kNxH/TAGrN+QRJueD+hl9WQ3z9KB1TiUb0rSPd7KhVlGi8SQ0WDvOlSX9g5uVnzLgx6yxc6TGXMLW3hhdg6rilGehSv +3bh9AZgKkN3OhJNR6a1czf5KdiHfZH3Gb7UBDlMx/zF3fmIQ5IojWnEu7nOkPdFJeF+0p6uaItrxoy+DOtxQMopAH7GdIABtmcSi5rAfcXUdPF5+Np2psSll/ACiLoMUVYCZHssM4XKY3M5/cpUb5szR0aZvr0TcBK6ZJ1xmiwMuInJ/U8Fj +kCW5NzXmWzXackn8AIktJpmaaFdhNiV1Ft7ds/PRIfT3SwNbhvnULh2HYmuZlT4xBdUZgx06um7n1BfNHu9JkzLTVzZjyO4uh3BkBrj3G9aS3+inXd2kUXjUW5BkQFx/JhQzAc/zQEsvIIJDf0zVztocHW5At4pFG0TMTjzPJ5TL5TXELk31 +s1L+hopUw7dKwMZxP5Raadg1Eah8cWJ+On8nSDJ8UCdX/PBtk+pnCoMRz8IzQD7hYVGd3Rcpeyqmvwc/w14HveBvz3amBf6S63dZTsrFzwM+xaYfNrPAu1vBwyAKPaCl0U++ccwU8frB2ihI+ZpsKMJVbBVX7+rzZMODieqNebnyrYIoKjqu +Ptcn5tXemyl0LBct0IiwmU7Lfr4BhJlDxEEOEJ8HVNCFMYfW1J7Cp9e9bw+b2D/sh0a0uL9+eb/A63cCs4g599bm5YkPfn3VrAJNyJtp9mXJmT9wLsg7kjwbY7gXZfKOA3z2Mxar14W33JAgWExtNHmiumLfjaAkLW/4iw7HOem0xu0k1+1U +P1Mne0ev9P8GyBMRLq1Th53B1zkgNt3gqkze2h+ozfZDxHZrnd7Psj8/jHu3cSzp93suevCGipOxFneihQacNTeQCQuVvSUpdKYCjcT8qI7T1/ekChXM6VKL054jujGBu/g553slBZpM9rsWX4gxSNIKZys84os0bGWx1d/bfrDKnrVTutXt +x5OVSttp6M//dyV829Qhsq56W1VFful42bkLaMvNTm5agNPoi9UbbndTKe6GkDO4Uaxir2n9sh/e30UI3zWQRrRsy7DkvPqZdHouiwjHxxAZC6MJ1NEt30bsXSgRbcaVs0hg+Ssk9G15Wc3972TqbADw3wDH2Qgt9AN4k3iygebxYzicOgeh +FMEQNWFQzDglaiNK6b8+22fn3pb68pJlwLEYtVg/2OncUrl389K8aJtENtfxk/GxuPpN3XTh1Yf/Z77QxkK2cYMZ+NmrLq60TOaeygeyNAIFoHoHehr2hVQJygOrxSa6GVRSf4fTSXCAVEwztOyRt9799niSpBtVDVyTg1HF4jhn/6J0E18j +S51h4p/V4LLL2p1KyisAnNdH0p8gpc5hw7w1T5i6yJOZAWOxw0QPcpEN40C5ah722TOvaO48Maq8OmzqgFKWUzK+NWycIILJxB3fky3qi6FjeKSeffiFOSxu8v8rSisZFIelkR1jcjaaRpllOX2TMHRx6Pt10pkBvvj0yKtQioGs6d1YGOR8 +rdMJkhdCWUhD7oa3QPXUrqKX1FkqLRrkflmaz5wbjnVI422zzQRR59qWBJZ4ioqtxnYae/GjS3bY2drqLxGGgXaM6mVDPOBTmq/YWSV28h1c7DX12MOl2+Yh4vU6KEf7M6E2W5RlW2E0onwk/IY/3EQhA2RvkCicKrrSdsjMJ8ltzfwSpGB5 +IgIcwvOmFBy8AjDO9kvPoQLcxNuUMO3NDozTkCnqVtlq2W6HeFpGIatur09WrnN0xiin+CUmud4PtTnfR7QGX6bqVC+IY/rYq5sSzJmkD3eQIofRDfn7Cmmtt7W9YrUyZuRbFv+8qKUcD3HKZ7yxH7f5EZYz8Rj+I06SHeDQ7fKqjHb/1Oe/ +Xjx4iQRaXp2tJdpf16Vj7D3LjejSAHuFxpQKX+0Szh1j//6G8R3PuFwtXnx0tyupPVRXyLON++22bg9ngnPk+0p3jnlb468VJRYl/Im2Z4mkZmtNykLohEjjhND5cb/vnyEkhQLG1b/b39ek7Jl21HxVt2M3ENlS60g5qBKK46K41AGyfKoO +g4hitSV+yB+tFuXVGqCgMIiMxqAjlj8zYsF6l8/llDfXoUSmydZ0icQiJLqrkTMLdKqWaxoThLmG6HpaltvRzoqxnJs4M+zaVmHmsQnREth/oFY0BpjlyJ7RXOQmd6ehjcluPtCclzW5jTx/pvpjq+18ymAzIgJB4otm2VO5tw2Lh6pezdfJ +T6nGnAH/YBIAH27/ecoaNG6Ust96MAPmFbkRpm70reZ5RLt6lDy5Yc1wSrOo5ZyduLpn+z+KemQj6+ORkam+D/1Floayc/gmmj8TM2hv1mHI5OT0eKwT5V2Yu73AXHr5cJ/53Gl0NUN1gPRbUcG+xMRLyXEcE6LvNj0CKQNgWiZjIFGLHmxI +HztG5XcfafpkFpK08jYnLn3zC3pMmFpKRgWYoKo3Ke3APSL+CviNaUbJ2+1mUs6PP+GqE8wHd+1iZrzefQDZLam8zmNIE0f92o4itP6HjPmMltogXsWSffNg13QZB0/523XSzEM5Hwu2RNGVZU8+N5VoRr27Hlj6Fhnu1Q1rik+VNzGUvg4F +jVXlcWAbHk76O7TkIMfLCD3a/Gb37mmrDqWaz0Q6F3Wp5l8IJNZpqkkkR+KWHzvZj4OmPt0ay1VsNNBeft9EssggRsRrxgcdu0MZ0cfJlw8TF5WU3I6zuXN1p/9/xQ68M/jUHoNYxwt6h2dFk+GviGj58rHy0StOu19t6DpyWTpXKW3bd9k+ +Bh41tMvUuxsijZ24RictMZ+Pcr6eJ0B6tBSJno0i+A5w9mFflucbZB1Md1xEQ+zsKNU7E3mcSG7gfbH/7U4IAP2j2A4i+rzSd+6FLoadF7upzr7ReEPOyZDvPiumSnIUoBsWfR7/K1vY/zbpYu47DATup1VghcCtAV4BUdluk46ee9n0LS1U +KCdaAg3fvVBQIkh1ds5EniLOYK8lcQBYwl6+Usr580yMulF761qMbf+ApRh2ZpdRxufpad+fv+kpWcghJ5o3rwqFrLlqD+0lbhuZlMMWuFEc4ZXXou/KupDviCYcaK/CdJNi3f7KnwUEv6EPqBJYpVb/lWlV+TiL8Ra43BUzK1W3K7RLCNFc +2aNnkkrFUPm3lxwGUsmnry05unvTr25HRn6x7tPWQRDozB7V3smJJjtAJBzENAMadVvl2NwV47TkDCRfHs5jGyW6eZyKzj4COr6VQ12x3pmHRMkfOuKaGaQSyI/zeeKYb1QVhqnbZnzj3cbf5Ejhw/wxrtnqBqwDVX5u++B7CZvR9I6WkneO +BHCAdGEsEyRMRpOYnvDglZZfPuCvfqArXDTsyQy0TSr1UZssjRHsYEorBAR3e8sQfEEKkxOiikB0OKJ7+l6om2c3usyP91JfMjr+2XOCwSfoC0K1hjpt/JljgmvY4EvgDvkDjekjkUw1zhBa6qoNoI6vQIW5dxvoZmGWfwj09pP3RNxpOEZk +KX/efneweqbOKzGaUXbVXkXlcTvArAZFedfXWUaARP/mY2as53JBXlDxhLdnC5lkKa44e/HtOuVSWL6ZdPq0rjlBR+myJGfkQIjJ5hsWPJz7KVBvW0/NidBsnyQQq5XcGwrK8Go3e1ycM+9jTHK32nH985MupLbWgytf6HkpBmDXjlWXlbVe +3pATxIyNYhX8fK++jocNS9C7r9Q7RFgxZ5IeZEj+n2FFXp1af0G/MiWmPCKZxKpv5YdKNSRhghisou2DOANUtmhdhzTSYXLg6oZV4U2jAT1ZLvLmVBUuvBhpX4xOLtV9d1ahaAe+HB557zjLhcvweXiVweLaUqABPMH++aRVBT5aJXGnP/Z0 +9AfQQIsxwIu5MBOf0KdxeTwWzXy+AjWqelL9G8eDzxpW9A6HQ3HJ1aodr0rM7JyXg53LcjFG+Q4E6ux3KJUDz/sIgvGVjLHXPBK9DwMQQK27RBppNYdtPSALGJS4m0y0S48brVCaXzsHOxWsRvxdDr6uVPm09ZwcQIdRBmtukwX+85vdfeZs +6RckwxRO/+p4btoNgpvGPFWFUrfAfcu5+qwKCZrnFzLlLqUFm5RmpHJ8iv4m7n11BpLWd04jHr2NzvHp+I35bPp5ENBSbyHGNXzxSIv60VO/5fvbQXwPor1vsQSmywZGb4gyMeYTJyagWjNsXqZ2gmDqICU0YvMHt+YBmP81yeK7rfqAgz7l +b0FfN3Pq3UTcFlt8vBa06vz1bGqvq5WE26twnvWX9yi0+G8ktm7UGosv4pr01VVU9MeqRyxT7yro19AXVICeuzzK5Re2BNEaAZKgb2b/bZCIGkatqXBDTQ6jgvbDR9C8nW/u+UlJdgEjiq9oLsq6TTUPmLsXc2kPsNd8HPC+d7IfUKt3IFy8 +RmmhbIg6Iou7edtZbUpFdH9FQBaY3p8RIv0CU2UXvkNp9UlHCGPqfv2hdE8c8RSu/pyeOXxTGNd+vPSjFvyCfVLarJo0dzKyNu2Jh3tUBqjol4uJT8EXLXFSpbxPI91EaJ9j46nno1ZDPKlfARpgUFe5yTFZPbUlpjC38aWPiyG+GNRkOy90 +ovvgbV6cREm56EmPw3IUCcjd+i/IH3IuYRSkPcCA4kHU80qxTjusNXC343Z0yflKM3sig9+DzDF0l22DQZfSox/a5LmsJQBTYUDDrT0V7UKAjeHWy3+IyiSm+4wSU9EdQ8WILwF7lwXUfb15sHcz39ysZhtM123TAoVB3w524TTuq+I5hR/Y +6VK1gFGbfAzLeeGwx6pFTj0hcDqFSTAdUD26ipLUHaowtrMOk1KtQbrXTuYq2zYynXYmHpqnmTNTQe4i4aYXkGN09kOrbbpMs+plmIo5k6gQrA7q11st29tafyDuS3nv+cOP4GKGlDTrKabN17VY5+w6b45PKDX7ZqYcitcmkVH9augLwDeC +Rok3WhTQGptXGOmFquqTP1efRzotxj0eakg5XJ6DFBjhEMi2av6dyOIMjpxgPZa87fuldLQ1W60zKde6VGJWEGP1Iub1sapElevxkV4xEX5lS2wKxL+IynPt2KDESogStVdNWA9ui+gmyDEFoXHeEMh1Ea+ICscACnnkLpCDRRNNOPvnWd69 +YRwM2iWovP1HRuTwzX7ZV8Py0fQ4705D4eC9HhnsnkF73WW9cSa9hboNkHe4y9yk3kLIwwX6TdIJBRqRSxjumzjYTI9Qv97SGccfV5ilogHVsSiUTNV/PBnH263eUv1VMZEo1M6YWWC8u1iorSWy7emiKX5uEVm0nCpb7qh59WRcl/d/+OFa +SBHcEqKmCZkTwzdrRMCo8V7OzwfrNDnXsPvDXVmaewWh3yRoZd4W8jKrkpm6+0e8E6BBekRx7iQ/9ZPbr08oKnEHftEuNXjIUUJlhaHk7+ow7swFi6VlMLEDaYKnZ5PBDDb+X9WHHm8j+Fep+KkSIt6M4ZNizZJGhLSan/FEAaCC6VQFvLqw +BcJDDlIHzVuzTGcTvlnlxOTZwN4NDm8UCGh1Vt/Mwser4Ug5D2Lv6uQDlm2m8/5YYddyALiphiDPP/AN+aG9PMCuyp04lg/y7EdC0+0EJDnf5TSaOd/KpMK+qnXQQtZyUDl5DLLFx6LWY60izNQ+quHHxIjHPlwF4SgP7kwJMSJMVS8DEHSD +hQP97vLTeokPXiGRBIQ3SAMJa3/SUZJALVqSMu+qvEC7ZRBWHkJDyOMWkRivL+zZUeGeHVF+ITR3yboWiPlXepnCLatUTl4UiZ754E8u5ZnqHTbmq2TAFHs4t+7H4GxYG/Yhco9BRrK4G54ohGKjerpvZbB/p08aQ7va0tUWjVX3QaMrFgGO +XoNY/ynGz2+ywaKnh3nSbj6uGpRCHSTsEHN/4ePzMOM1a2dm4cKyFQIqVi66h4wzY8++y8ZCJoBto3jZv5NBPxkv+dwF1SyJhrHJnHXCOvexFYbkSeetfc2ZFD89rCaua6LmbWM6cpf4/6D0t95bzENInAED/hyFbdIfFrfGjotyuUQSu9Ln +oT6f9gpasrlzj5JUfQPsyMsNSwc0xQBJjWNLKk00BHvjm6jhLrPeuol1fvzt6lTrMk39PjfdRrlko3u7LMtDzJKY65YCZb9IypRwdFn2GGGXyIsn0sgh4EvEjsB3t/hW6umhafv3mU/1e8NEuro9DzKJx62ujjPtquhpARrUhHUJf9WJRZ4X +YBv5MiHCbhC6skSqKLpzKer7UKGbmh+GqocIjiYqGDdBVrNRxU5zzRLwvLPn6EfNiVrgmz6yzzsJf0tf9PcW4rbBV0Y/IK2GSQcuFVeajrJBwKs84aQiRljdlzf1VmG1qxyXIaH+PLX96OyG8IgsTMkQUaSoRK+5Igskv+15oKxWyDo9IQB+ +crWeLcD7U1Ax0V0ZNj+o0NlBPB38CJd8fa6D8zYdqLuUFhzh01cI1O/KS7AYJi13hk8QcL/5xIDPVdG729qQr3zSuvTWZbgWyCci41N3yXY7ewPp0+X4UrZr9w/X04hQQsw+hnSp80d4nMg70YaSPLEnBIPqdAEUi+HRe4O8Dx2iqKYlYIfC +MMw9orbmKnH9WNmWNH6hY0/1o+ebwYAWdmeD/E79Bs60DSeP2AKP6craoMExDfrkVKvdB1Lj/mrnUpzygURjNvLFDYkjTsduiyoIuAe0PNZOSJUdqEzusvhCzx13hEb2pOrQl8NjDbM32otTY4eIs1u6eiP0BR2SArKE9Z3y/f37eAk6fDJR +rpynTgDxTcexxiY38cmUJndxveknOSmfst+gIf4fsD++qaPxmFWdAzmpSuiNZ4u+KIz5ap5gWjb89x7AZC0bRJbtMYcQ+f26XH3KetgRtzfN4zQyKmfQ+JjCMKQBoD681oh8EGHNDUY/QRW/h2FsK46nRMS/u/MY8rQw2BILpeYI9Fu6jmUy +Tuf5fCzwt9J7ID0pF7gugJJ4vq7JBxJCnR9/vq/qWclWFn/NWcgxLPDGNtve+f6sZFABLnlTPcprXbc3/rUtZULziscQyx1Lg5d/YJnG+w2j0E2EQUJ694pFjsOLT160UtXC0iYjqq6tM8zvF9e8Cg7RKhQTzdCVz5qK2nUx4H+WSkQTyn7H +DUBaHVfrDKZfwb6SgA9D1kc1PgHvzXpO/rufqCxQxXCWaR0sg9yvkHsIQAuUuYpiKMSFNa7K/1xmXzbroEyfNPVa1UmTuDNc6kT6z6ETwN3lclrwnQ/nZzVL6G3rlhmRDcD7qQ9jc0q5WQERaiVD4b/9f7iOHGOHRsoBTaQjry4NtqciYyQm +spZDaCTyHA0D8lVDAPufautiRDlgrVwatFI6nhrYuu/dKP8SZmxQiUrxjOriq+jQGtYjWqZPLG2vSkPavpUnfNerZ8+RPyqCc1tMED27yU10d0NYCFgsoN5CX4J6QQcMSfWBqCGjRnOInJ051/L+8DI6mPqfGJafW6vVFLHXisskDL4j2OFa +WXpdsMdQVYr/Xwt3EDxhQZSpXr6yps1X0uxdb/wXsr+ra4HL4ywcgOms9haKNYRlYIdkF4iEirG7GBPUusk22GL6+xq1EiQWVjiAD7FiAzSgteb8M1sYubTrUGyrAFWU/U0kTwEoWKros1b0jBs/LAuIvRRCkg9BsQvAbDhDCpQtOrzufAQa +op/ao9mTo1hmZqB08easqIRqRwh8YqsGMfrojoSXwVQgxipIRbze9IzEuhPFDK95cGg6Uw06mh+lrSDCKr66aiQLgZ79wPj56CH7KaQB6Q2fns26VtOeKhIMszMiEMeCPu+rbUXLylMB1BIl2LUdQtXZgNlqY8Z3Vf0e4YmXCJRk2PFLudb7 +RMkr+oMnjExrXhtlf33yNbI3FCbmSRl5EAh5uAZUhRYUm9+qs8+0BdbX+QGBm7D7xKz9jLr2T5+Fk5z4+IhZNddhq+UcrN92sA+9VTaqCSUjXkQOYPBDK/KM2CtNZ6BRPemUPfvBCWG2XdJBIt0yclEAeFIa8jF5dUh1eEqVjO249jrOr3i5 +VrlsiqkV2KpD1g3iU+8EXnS5dP4u015q19lBDyZJrkOUwDFTbv4EmK8pWKrwEXnNvo0gvHlHyoZpf1+VYBKGXmNPG7jdlJjz5DSkt8DmOL+nxTIP4TWMJb66x8nQ8ZmN9JptOL50YDUXeWF7fDqgHzVamFGpu9dFVpNcQzQ3vNPrBWLWObsC +3TGMqGn0rzCLcWdpKyFRNQdz/LOKuaiU8VN5hZW6ZwQG05dhsEnOXhGmjyu3Zg0WK3o26R6wkGeHt8wDpX+TGmN+gf8tOzqGnbuezyJ70aPF2hm1blyghExIkq2w9nUwhyisHS/WHPPCoUIA+4WeA9nsdxQ/2G3txZrhzpCXkF/yGcsnYCRj +3cFV73KAWpynUdCC0N/qS6JJ2R79wg/RN2hDHYHcItx64KMwQ8GA6iqcEFRHC6TFlTj916I6duXQfduXXyic4mwaxjgCr8jC5OiaZMiJENV19jbjutwW2m4ZBo7E95fVq222Y4T4u5J3n0zSpr26sxZgB1PiCbsAXFMHikePBRcnSKCS+E6I +FVjlfu7YBFKTpc2udpyjxcYD97Bk8LbvcLQRUdcu58CSSvs6ZEH2CzZ4zGBXaOPWPJ2TkZHf/1x+4MpavFA492k1fFbzb128QwfKlaE3rXNr3BxffdH3azkgeSjvGEXapw8FgYAFmDgzUQpKi48IIa5WP6gSN9rvJntDJxlX7fCAD0wg/02t +nQjeE+iD+2FxOnYq7FFEzt9iqfzqfDWJCLQc+eyLdEqEubGhNbbqzc4XBLb0cETc5n+WuOWAJWIl27eNMyDVferG4Ii6k30xNqUb6aULu9pv5AVop+p7IAfTqImp6Z2AP29FI9HXpoBtfVHzf9+MofYTkd7cfDOm4VUVC+1rODPuV1Ply5K/ +WYIkhOAxaIIo7GV91idSiLXx4gTYw8uTLnN+6s+UvZHTIeXu/JaFfN9F7I+FfFYPQKydn9TtRu/lktU2AX15VbC0CzYvnAToZv6JJxhKt/zb+QaSt2e1z2tuEC5PSNDEtNn82cETxpTMweXPuNoHvBr0PCmYS95TUVQQmE5Bdb6eAKbxfPcV +V9yeNt/YaWJ61sF1t+2dhUTJw+/wk3Z2rTw34mn2vg0FsgFGpvYF3H+RKjjoRGbVbwRIZlwaj7Gybg8ZJMNsJXyjeQBYxCfZesw5C8YVBSx898gQaXyZ6JXDoj35cL3b/TXuTUXc+swM0kPQ9uFKaCUm/M+DbZN8eOue9znZTT2hWcbHeA/S +K6O2Z+FeJvKjQ8jpx+UTL6ulQqVfJcrArFk/QwETClwlvT7D1k1DRTItgsUGW2ZwLhDxczxckPkskhI/ZYsynoMz8atQ61PSh20sPrEhgcP+CJs0paW7kFRnuIdiE2qmCRknnyU/1iwDBWcD9c32zzgUvnhAYMznfERcixkIH+DaNz9C3L+E +FPJhtn5fKQJDCDR38z+07QzhhdUBa9v5aDOnh+TMk1t6GSbvE/HkVujzBdlP6Jbe1qIIbaZWna1zzn5nmK565WyNDOithW2vYl438AwRcI2Q97+uJLr8Bz9OLcOAYbzGu9s23I8OYzOEN2XzKFRROUw+LCluuPVRlyQHrhkkac0J+1MQO3xo +yxvLe8S4I7fC3br7aCX4oRkGIYi5sjVvj8LRmF4ImJJeR+r3af9VDSjuhriU5awrcuzc8LcoqN0aIGe3+xpRlgp9DFsxE9+hWGd2yZ9nZvE2KljUbYIhyfWAARR89IdLNKByr4qcy/vEUwvzZS90hLVykWHelh5b0ZEOJ+szH6DaXVASKP3i +VxMGhnxprD1neQVS4jQw/Mh9Ix5NqBRF6Ov7Ibr/JrHdF4hPFUOMcU5cmV4KFwuyy9FM+mATDJ+/l+RZ912fCJg9waXCmLVS+nei+2uGvDyXDDqoqDdQjlj8Qu7upN+UUCfJn2Yp1w54wlwGmz1MoIPmMLJXzNe0fruJmaf9YHmNL4r8PkVP +n5iWbztmb8PpJxHMVGIz3Oynz1wBzoW1s2XG5tws9H7eJQD5tWsyi3/o68cpgYOicJSEQoN/bhZkLztdLl6V6CSZly/iqifzIbIKj6TzdieSPt502pnWUfHGaW4PFG64kzf4dJkMm9RXMCMQknUmpCLJY7YjRf87wzeIv9F7TXX86EaaHFfd +GtJNxXyItyTVAsfdJgosEXRdd70HAhG9ZqR3j4gIILGk9VQjq7w0XlIpzYI6h0Avuwoqxo9XCs7MZnmpYi6VJjArS+ctGN+pAAGs4rez2+lu4QB6Gp+N27a8/YUWplvLu3SzhdV4BkAI+x+9H24U69If6dN5shqSPAgLHmJZFEp4mSl312kW +apHncSTL5xXh2QpxRR1dp9AntS9zM+JeUm5fU6X7Qt2e6LWxOCo7SZGMynpgDGxfJPxRuJJap6d5eaZKQdbod6bGFlJSMIFv2ydj3CmkAFQjqWdIRXsf5w51guMiwD4bPTKbxVBJGMXq9AqBW2BeGx7fnpfCM/9i5TKPNZgXFa/5B1Z7ezYX +hcHFN1QYJ8gC5OmuxEcurHLUCZsT3TtZijuae82BHxqAXwXF0U41yFsHnQlNgJIzCVvE585slLSx1iozfoOdkFMD54sNTru9C+eYNsewH7CARvxQu7euWBTiajIEW2XCSNMnHoKmTkePFLH/LFhlYBrEtiBvfGhwaKvYGsKVTWCZigqNr07u +atLArvkH3Aoe4kpXDT2SsGhZgmtEi1fZwFIOrq6RdYukpaHGBB+LlZiHlvQDJkLcpTA9SrzaVkCQZ2W5AbLZxgeBMk8+njHJuWTDtJzHfGFdIJ/w2fieVOiJIIXiD97Oezqe+o8oZV1l65KzDS1w/Z9jDN6sh5Ir/1+QVtMWsyNUX5MEiMNx +dfRuy6jAloaVRk9H3tofB6CmLbEOiF6jmDKshsPyyNRI0p+r3peKbqV/nlDdXjdUFXsyyIPBde2BSNAyAduhkVemtfX/1t/+FhjhxgdOgY/aNUOM7IHt1tCo6m9sv20N9Q7Ii2WQ6kDsKbxvAajMJ6pUSMPiSSCsrP20xjt0uFfnq/FF5vQY +vQosLGm3b2lEJj3mvz9+QLP7oKcKp73Uhecvgbg7JUkgSOEdRbdF9ffoeuHVzblr9c2jVE8F3ZjqRmtMtGEKxy3DK1WlFDCrR3Z1wYXWD9tmpTCF/nygggcHKFRPVTZ7Li9r9bhfkdkeRVaKUFS1QOab7ArU81GpxWxxlY++yieDbln/CFyN +Avw6VNzLiIiJ9YecQf+5yAW5wGdUPavx82q6oRBNQ3dfcpJDCLPbF/C7hScAj2Nal0255zS3GzW0ZEoEpqm8v/+D6vbopchzItamTIggdbf8eXv2vXYiXgIneIHCl4fGRHKOrbib7IqbMG/bdC1HQ64v90qgOWqszq7iIKVVx0x9MhsLcyE7 +abRls7XEmkE4O8qoKaF1UtnPpZoDkTp53Io19hV4fe5DfX/QdbjLQEvnf1z6RXi3FwBbJyYf85AqTm9xymlM7EMYGUevANzCei9J+bm5oaX3G5zoc0Vv3YDFoLDUQNqgSh9g1NmbUSuvSwTh0Ydx5RV9oMg3iQQlzUqiu44NeieGYDQ5sgFZ +Qz5OipJM6Yo36nYF0CM+9KWxnIw5YDy+ivyFni1bQieHFt78UbTsLtzXn0Ojw4sID5czS3D7Y3pKkndF4mPwhuOurju93eJ+V4gUCSPNDV/OWLDub64yCSOtEFPZYbULgsxsYlIVX6fipC8Yyz4jc3+S/kcmCh0HFvanq2zh11O7lSWtoOsV +qjIeo7h0pk5D7jkJZZQTuy9/hFUiH6sp/fY2r9rWe0KThjBXV9hOv1+6Io6ZFRpyVH2AbBBYpjy0AgCqcu5PqiC82u66iEZKO0H+XtaMSAumYxu3MicAsfUxwlq053RQBjijHaQl5Nu/lz1YZMWHozHdTSkugQEiRQVuyplnGYA1nJFLZcoZ +P5Erxk4Da1RdQaQmKyKMtaccWmFVxTdnGQfWPawfqsBWbpfsB5TFIsqRAIC1h+91Nkf0+aae/5Fv+AeMX5Wd3biIjZoUWGc7d8yK59NX+9JVfkTFDl2yRnZSfyY4d1PqK4Wit4WnWwEV3jxoLDHsdtwLDQNnsqj/LdW0PtUMPMw5Ug9J64OS +WNOKTBu/cffXFJpQ4xhrfJ+o4m4qwAbihxhUXpPJagmlfWXHwzHtpeNZI9x/7kDOfuNz7nHR8FE68X4n54AMDvKv/q56cq8MHrm/9eDXAuaxiVob4Bzmn5N/Hjl1Je7LRaF+YzBkM8LbZba4N4XZC4bkxRzD2UNJjzJs88I+HbuVRJhsU/0b +XzZDzeC34xvJ7Rj36f1b106dbqg+ofumlotjNbAHOgRuzosrr31vX0uGKfWq8rozO8UfoQbIcF+mAl2zbIadmIu3PBpzpc97N/8622s4eMY6MMv8rBcitLOpO4Q6oYhUuLRJhEuSgd41xIsZ17pHwwFHtVf18cD63HncVfeteaSHC2HYkJ+z +BhBWEsAL+aKjTGxNpev2DZj6V2U1XzApccSAyv1m9dVtmx/DflQmplNfVeVFqg8C6SMB0IR99j+y7y7CGuBYZ1OwNs8npOGt8F5hIqYaXZrghU0HvBrc0hBIfgKJwider3uIbjuTiVN2ZbLuLb45cWs5WmBR/SaPDtKZMG56rhe9m/m6sUuK +ZRET+3wlCmm/w4kTixUB9TzZNmkP8M9YCeIoc1Tua/b2h4eBQWjzti7gaYbELU00OTQKS22Ug8qTaYN6VV+a8sL8Xd0+9afJ+fEqThPvPHVM/5295n4/bNvmKcZSjNmCI0cmAHEOOhqkoWLf3ngpPeSlt7B2yGEazgaXB0B07V35nQ0FhsYj +9b0Z+7QSOmXk3ak+SOLcY5ItB7V9OZkQqG8pz6NlMQsXHMyCozy9jXQjsjZWj/QoXn3PRl3Qbj6XpjBFyRQGKe81WhDdWyQeDlle5Dn69aTr7XwakQLT/HUERsU/v+jbA55a98eoZLnSpHAjiKnydi8h99YRRcqZednkUiQiPkjIptedGwqR +j2/qPZfVNXkAS6wJtyB9JkuHVNufUwbpUNvqeJZOVvClTK4tU9UcoeoBLWUtYae4CtiLIlk+HPxq9PNirGrhd3mASrGPWP4Bk+/ydYwc2+LRPltpJd0s8DmE3WTT5Z446o9EY6m2dXJDKVv4TcAd5Dpm3sE98PfIs3zRhkeXy23U23989/5L +D23yYqZpRUoYIi7InzWp0J1B+QZGQRa3R9JHZ6l7LGJxjOxEnxrRUGSz21VO8vXjNcXKWhSTIHtYPbuSVJgCWRge8heSMW4B4VHt8Rhe+azHeTkLFOKczisMreUQkGT+knsglidTh0yGUjkIpN9d3WLmGKfUTsot3srqnc1s48yhmmO63Wo+ +3+SxTHo0EpnYtFU1pRdK4M8CKKdt0Me5HgM4+LVJ2kpeMndYEKB2LG3fpCMkdWC/1DWOKWzrKmwE1J1TIz69Wi4JocCzDzmvPJmGZnav6BM0K7TksNJ5nG6sVUDJuojI+g8PH5MulAxHlOgTqKluPc/PAljtA5DUrjQXeMT8Yo3w2+pUk3Tt +uooClrH4AoBcMUR5CbT39RhmR/YPKI7sGWGiezMMSjw3bCKDAo2SrJogUbpzxSlh2Ozsx52k5JOCeG+1D4MybcheKeUMdvVkur0H4sRNgNT7OEpsJzO4BayUTEARf70j13WCjEGX8LUwMPHpFZkhxiWgzDF3w3wCzmO+IoEQD/wPmT02X3+f +TRb9Wik0/9h2O1n794SNM/CnTnNRvToRkiIJiz2kQ7XycdwiSGYButlIWyUfJXuTizNix5pgA39hw61SqNnpkM6FxfPdyQ+8JW9GfXvfbpNCWxr7JPs4CvG+CLVaUoWQPK8H/DOTiNQ1PBotiQ2R+ld1by9TLFVc3eDM25xdhskynDW7fOLO +Qbs6IOUCFWmFUSZvTXHRvE6GcVc1uUn+at5JFE88kAodjVxkVZiDW7GrbhFryeH3cytHO73FKmHQWV8eG75jTGiiONfg12HEr9KCtFNO4ggpjcpqTwwlyUuUY80pdIi5b5tUGHiyGH9aJPUsEw9eGSYGuyfmU6Iu8Z6PqXfUT53o6lEekoxy +L0rXylHSEM8tYjmTZCQDkDeVu/ibGg/OP3QiKj5WekC8DUV3X5VyixnPE1grznr6O7y9ZGni9v3ucb6BMGW3cnCkUagmlOvHlne1zbnLM4vXRYXqELQiiWp26hjrTJ3Cfo9KpO9uPco6FZUau0FsaGMs4RW8tY+eKvPeLxOHdlcbmhRFLW2I +JV6NJI+fKUJClvipTUmeA8YEtB6CwiREvTjFUvZ/uGWS/imyIiaSDAR54rU3JmEJdwVbgbOyUtSHi1plDkM7EdH5kg8C/xqH/j7sxoRTZ/5VOodN8xb7BKBNReW6jFIhx8GfyCMuwZXSWmvStq3Stf2TAtlk6qqFFTL6ebpZAOiRTbjb5VtR +smLy29g/5Y6mPoXmWgj0GXiGjEALFt9ptFetmdiWzdyakrKd1s25y5JEyIFy0F4ySB/xq+4kBWK3DWg0ke33ub76IiFo98ySAQhICwgi8LSP2wy79zKUyfv4Sb+ALPRw1g1OoN3ihMjOnGZQFyur7ysxDao6IP7uE61vbK07rEXI6JiYvyHs +QbmfzrTw7RIB7I9SS0rInmSDEq62ZD+y7vKyMEoP38QU+FI+Aj8Vh9dV7GEg9tWwmmqOtQAZVyYzGCe3OWv7EwbSxCLMR26qjGAxKrmXlgxaPSbpg7QOQv1cTWOkCsShHFJ+osFtTb9Rpw+BG0JWB9bbJ2okzoT++jDMdzmzjO3gGfUwQy2G +cfCiKSWX2NPLHXwwpYxCD19OwwE0yZlu/Wqv+Mv5DADtAzh/TAYRbe/SCwL9kql6qJwAcs7cKdANblazxcoVZlb981lEAuF+E0VaZHM6JjV/6uJUZmQXMfTnShG3MuYVAVUTfyAsSjJcyHVQnL9mroKFtlr81zeU1U4mxuELRKKey9il1XlJ +F8nBk1doOWrTwwgdlualUBY4eI4GUHlak56WoMx6v7MZ40u3APzwOGFjGC/UBpOj0o3VSgdeFdrpmZSlFVqf6BPs7FemiEwaCRWJVjPcVpn5xGNzVhoCe40y/iv6bHv8G3sUjPMhlF0fi0e4vXENSLvqYjuLvKSMGEUtEePRGUZEHzoM2WBp +G2X/l/as8uA/GL9ECUvDTOzG56k07Sd5XuoWT+kGFGg9oo5aV2dz26hioq8wNkJx6mJdRnj4eQ1Bw0YJdDELYIesBhvfcnlx9aSh6T3w4/SG6JwVX7ooVTNItCrupY0CMU4VB+1bTuQ7cScBEDes4/a6gus6TX8l7Xy7nt+o5amzND50JmEw +d9UiyFFnv4IxGg89lVQbx3zi4n7LllzRewHLRS9ZmMlY9agoq5ijTGd8Y7GSECvKgT29WpgI3AC0iBZQbUaCGiWcd8sCNlwAAJCQ7Lc3V9HXzl7fKaCKGzmjG+1HIY7SWwdIN7OCn5CNC4Vhbti+BoXCJVSTF6XN1iaS+F6LBljyBEoNM9sK +f1pXQNnC4rgRX4o/uGAV+FLsWpaHb6Lp71baq/y65x4BNBzP5dRLpVLOWQKMV1ISLCZ0IpEBSCMMDZcbYcUVQkMWViNmJQJca3SbL809xRvpTWBJBp7RF2VOzar2gwe9//jCOGc4AeazbfI+Ts12khVI9rcsmweyIVcQkRI7bMhs7g9E8Ard +yObs85Er3VSs6UA6OhH2GHJk8gYSh40GDgCjryjJhRehnqlqatx3zqRWgneiS5o7YZYQKmkBCN2e+iWvxjzZsJoTbidRf/Xaw6eYacBDXzu2hgoPWxGujVfNtn66rwc1iDXSvt1J/wfZwcCTo/hbgChj/hMLGEtV2ID4v+DmZizO3bKOQYLy +q+Bxaw4LJAXEAXvJZXOhuFuRF2fOeEf4WFHIj/VF6OcamSWDXIvL+7YWmiRgFQV6CqkTxJaDvzA7EFRFH/k2OoMoghCzYKgF6OUABdb9G92WR7liS76IbDgZ4QDMz3KbH9wrVZjIxzC4xakvcg8TKJWbZyJWPlLNj7nPe3NLdmPjvtM03s03 +U1Q+WKY0uqybqyio2NLL12qqXN5vpkYJTspraM46kB/86iM2KSRaa+L9peAPDQeoqx1fMxNSHiszXeHM2rPR4pOr0a3kQzR76aaozHBwpPxu/BPsZ4sKpKDv2s2MuC7sUt9VCFwaXh1Bp+4xhkmNC6fp3srhrO1P15MIoc/UNasA+4nE5h0c +6/IWB1cjwW8wCpjAg1AJXDAKx/opQ8J0/sWZ4Y+/LiygHLkdAx0O9xrhpBRGfcPa1s/OjwcS/on121nKOP2zUF3oAbroDLVxwV6XUMe9MBclVlRKPW3sy78QbZKByJ/f8zhuCpmtOOGbHnD6drqdl26ezf9ZoJOIrZk4TKVQqiY2r6OuCh2Z +5elwruZc5NkakzK1I0NsjqiEuQqFiavTSLL/Rppojc+en3aBFfKM1f/o7XcLbHOYP7eOpr3GYUKvSiEIP20CJayJPf9f0Hxp06DDr/Sl1AZxU22L0zaSKdjw2do9e3AaUTXsLsnLiYkMHYJsZuFYUiU9nngiRF6+R1yp+dzKGB+E6Eopp4JL +K0HuGFPKAOXC7DiOseUp7i/nBjLX1NatFtVqAV6VroOaMat4JnzuT7Th2nqbSkuvuTxxDOTM3nz2Dm8ukqFiAJ4ODhi7Zy8qzyj5O3CuP9C/a3KzRegHjFizgnDDVrmSM1B865dWKQLav70nGObUoFrFKMWVg+gVKlELwIqzgaG0SnH5/Y58 +Ecc2wuRX/ivwjideg/2R2HTCaiakHQBTJhtZ/uCorIvLaHeg8LHgYkOktLzczzmWCAsn3M366YVictsJrm6iYxTMeg7tvwJdQ0nxHXQheYfLzg5F1tg636jNEZjVRL50LmHxffNjeP+SVZVd9RgWC/FyL2/hXoMzF2b+MboPk49TU5bAq/hg +DFuXeVhumSwJtkK7IRj0BHBgtIUiUVHsrzXOBCM9i3HogZK8Nx8qaTPRgq/NAqMzJyT5R4QpM+PyD8W7Sd44un7Cxc1wNjIWy6lEJuQ6eb6Cag4G5n6KamKKiUs/6yms4vA6Fn+0RWLg5FnMwBnxI/V/nKfpbjVlBl/ZJF6MktxI689oyjlN +o1wZmmlCQRUXg5AHUaqtvMMHKnYBOf4G/1xFhJcRjYRxHplOqd5cFMYq09UOQ4cRtxd3nn5LyVyhhq9WumCTltbuxaWYH2TRGYi2oDsNZCOGPrBfPMMQLaTH5dOz/dxKXf9o9B1Ei/uTpvWcK8aaqj3DgJx5sr861g794ThSlId4vxDuL4eS +UJSoVcELszFawFrp3tsjG6hx9JrDbHbXzFLqxyF1co/yrPflbgPaDefulfuak8KJYE6V7GCEMxiN4AcUNBRXmETtKickTQfx3teAPubxr0BGrdhNRAd9lNVNu6oeIwymmoyNbOTxSwNy9YYUQrpSb5gEmxhtklaD0+RIFywCKz4qBIEcbi+G +dKHc23thkq+j6ApvSZjr8AqT0r9yh4IgQmLbt5VemLJ04r5qCxzKmAkBnRSf4Ra18E9IER4x07gzGqy0xmwj963KHjbttR7mv/VzHztKL+Cf3YDf8j5nEtvOKzLsdqnJDgKl90qNh9Tu+bluxvDHVW2iWejpu3z68bjomtMm+iYi1YuywpHQ +hsVSk+7DESKiNG6FBzpVzZ5xauhPUEarefHNN0fslE0QcaQAYtiFo/V2kh9ibeFk8VSqitIoUv8k1Hix6mI6JiYPZD2YuDJZ5si7tQixo0cdP95Wvm/UmUBvfDlo87r7/q88Qrq2qSrwx0U3rpU26y3oG80S1XVVLXfAtE2H5Y5GzC9YsDRe +DBPgALTG/r9nQnjmNJHyMmIhHW3n0ij/ymx+zlp7Rd6whtTJJFvYsjK7Rm+UI86o2ZdKiejN3MD8e9AMPbqhQLD2MWIs2SYmEvj5bfpyYZqLVUdU/pC0f/dc107buA/Ompl2xtSb8mPILy/e8PY6bruYvz9dgzcHtMdm/8+l/5cNvz/Gsf5p +mUEyZlXFLxgabmp0av6eAPRAsRNRAXeunApMwe6A0YutZBF9A6VBMH3Sv190W9qBCWLrWcYW41XWhlFQ0U9NsHIyjD4KQbBR0Ox/XtUh1enIOaWxcSWEbVUGX+UnnASMuoG6BmMiB2so35rtkHP+lOBI+vIcWQ3HEjs0EAWcVcmf9tH1hkJy +BD9EPEY5IRPS471MN4tYlldREAvaYXVbcMSzkMiy24vDZr843qaE/RIYirSvt7YqehLinaGjjzsPk6RShG+RMqZKluNrIDucDe/lV0yNdjD9Tg4be4pK4P8c6q9SGsw+5pAp7skLhmF+oWGfbYQKFNfQk3pDUwEdJ7Hur/0OktY4u2MjbY66 +0+yajOJcr23LcncZJNWcVGHYWBe/iGdJCZuI8pIYiifMCJiqOeTogH/AC8URXAjN1VFN5dTJeTD04VS7y6oO991ZeWVOYouwUwZzIJAwjGWNMGwqytOFlRaUfJ0sJ065utkRrYkjTRbwtccv1ZRM0Ax7BH0vQHdW0F+syePt4zazWN1WZ7Qn +fMS62WR1r6CxU5/+XjfVkCYLp7umdkQIrjaCz5So6il6LjqPaN9AHQI9xw9voRw8q+BTDE19UJrnjtqFz64+ut/ZzMMRZvyEECeZZM6s51fEhbmFUiVzA2lFuQZYI4wNMdFu/eUcEPE0qv2V4w9dbVhJfYYgE9bVIwvAwVHhrNWuaiqPBKtg +iO8LZ8RXWUsBQaiwkQZ2WaeA/thUBScvwfpU9F57TJG7JSgRfbAoDhFrxm06O21poZ8QMrJlCD3ywPClaD89X8LJbH4mpycXhyRoocebjOJWnItfZ9TRNmMSCxh2VTBFcNDuPBt2gapBhSly8qEM5wwkh1GJ37F4hwxR6zYQPezdfplDSmRI +XVGyXO5przQhM4oYkw0xwwJTNkyrer20cZTenqEQnsEx9nNuFb1tVPtTYGkQPmGLnGaIszkcK4XKQPrDSBu2FZbdAvhEFfJ5oYgWhS3qawNmc8aq4nWy2QEh6pjIxMs18L7fU7D+aB4lEGh+6gLC4YJaXFt4ZRsCJCN0HX5gETNQyDSJYJQL +utKHKdR6jIv/MOeXAIHdiVRUwR/fEW82Aa+NYNT5cGJSesBM60T4JlFRFEZQjOUjKjlik3YrPYzUHP3xkPrdn82dF/YENTT6cKfYh/d2iFfmUIKPwtDqm9FxjO2UqEwS8PBUsD4HvgVT4k6CGdy2SVGPZyH1tphFKODFlsbBUIKAW+XyDUn5 +7dFGVAwK2RBk+s0SzuSvM3VZh3u7cjdrq6skBQlbdwsfe/H6/pAK+0VSfNY5VCtCNU39bz/wZZVyIDoW1msyX8KZNVZbXtzyWkBR2mUQloxZjvuwO2Djp/F4SM65vGq/bmBXfCHQpStUERYnb+r/FkK39EH8RaFi3bAlvS3658YBLCOYE2L9 +U8hyLrNnR6SSvq4/BrFbKWu5BLj7YbJ3Sqh+JnsptF9IYS2Ir3vjeBRZD78uO4wVgS8hMyM9gh5depIgMUaC2P+2pQdiU99XZ0U9MOesd+wu74ngat3P9RxGEAnr8ZuFvHXgYf0sR/Orq39jJoUTdfZ3tUjqcsqAvRBfoGcze5qfDfyizttE +71wPKzc6YU89aw0gzKJV4kpiDCXnQN4D4GGQTWirxLwjZ5AhwBr3uXpJ/Ampk3SvM0t77hbvRBxLQYH1dqp1I2j3wYbp/Zxit0e5HUNbVAKUQQpnYTZycJI06Xp0y9kzK31lBRvQvWPV0hNzsrEacwexWI8+47Vvb1fNHQUnLveapvNvTjEY +kWCtwnMwzZg05AcI6WV5WkcFk9cvyEAuQwFPqEr3EGAemjBOfFJmSl6Y4WvVx2FBYvbhV7vtRnuBL6auN9O/oLWfaHZc0e3K7G3G2pzYT2TzBmMfPcJFB2OK1VqsBMwq59rqlAGorGOcN6ANirLrjZU4z5ipTaKwdSNZFmz1oUKBDMgc9g1Z +D1Y1OXGOawZNEMIq3iZeNHU08/NHPZSD6wq0JgGIU5leSrN0QoOA55MyNj7+fI8Ge9NkDwogrHW5rBgb5aieoMvFOohATHgDO/MyJWoKYtu7vUjukGwE/d6UTrKhpL1i68u1W4FZX4qlyrvfi2AD93uNSQr8SzTKfKkeoj7b3t1gyeNAP+Gm +59DBrO2xA7v1/LgyrOzb5q+71rUhxgGtQTKWmG2OkCHQLpRp82XHSrsS2eo8c6Gkd5g6nfhNtXnRUHUtfiJk2IFxG2dtXwVwLcNeDk7auiZdWPMgq4m9iEUq9a+08Q1zkxVmILG2+WVuaro+GC7FwOzKLILDCBSJpfoOrKe6GN7SgYJdrVVy ++8bjS65zV8rT6QnLphIK62Y8w4VnkSwyS55oT/kMPabUoihnbU7mqEKCfanTO5Qwzoc0q0aQ0J2rC4DGwHZHymDplhftiutxdndIhqXCb7PMorFlxfedbbfGMdk1D8dj+U/lG36/mHhdE70O7tKs7Abv4npOJTM4nVyx89mZzmYHW/tyTnl1 +yMug+majUNTWQlGkPazaOMq8NVH6l7LnBXTGGbGDKNvoylCKQ/eaM4DkYkeXtKZ4HZkdW6OodWbeEGSXWGBDkSAP/FpznUocZV9gEtBUuJbcQb5H6ombIS6SMasHBRWJjnqljsHuHH6CeiWEWJMBPs5DFC/p1r4FKtEneNFALvQ1ZWrVXF5m +u3QSq34pBkBZXV/SoL7PV7BG+lDmhUcpQX2t8EKL0FgTUn27IGE//acY5yjRVLIQR4OS/2eTIpdlStMQ78ho4bd6cK2Z8Z3OSjE2bsikbn7CPo+Wac5VbaP/2j6HbHWDdmlUfqvfgYaiRLS0dJMUUzX6WH3HIUfWmCSGzNafmfaE4O6H00Bf +bE3Q/fxpZCEg29y1tdjzTvQi6SVJPLplxo1qx0dRXzccnCfUcjitWwmzE+TM66HVkRrgO3q/DOL4ZM8EzqC7ujERhqySbFj8UCJXQOe2RNkALo/Goz/sg+6mOeualHx6C4b6zG3snAJT/NLWZMXW7BjTtI/0FmzuFM4Bfut4LCaAiZgAstgo +M5ZhL9lV+QrPCIjk1aJx0grzY84ZznlcUJdB07x3XkMpsqb19qXSa3reeey8KvKXDCDVtsFUOk2TBXf1TmTGK8F50zi+SJ9YKOFaSPyxZdRbxhEURCnAwALWo8LjmeVAnWDz3SBPbW4p/GlfGYccBXRVgDi4+aLkG3NJvRJO+Rpr3uY+xzaS +e4Lmrr5MptJXbyZRjNQwDGFdfRsYcBylsSTdFbWSWzyKsQQt2dJ2UTSZWvhf7p9a/E+hoWCMn4EC2sDclkgwDavTnk9Ch+BW1F8kciYboxrMYM0z/pstfOr9vlAkuvUIObklxuqTzv1e/CECUCY2/kc52cMDIgdtCk+LCnBfwZ0Q2JsPizlL +ygowCwHcddMBiemVZHftqtKCsbMgSeK/3Ahc6wPnrQerDDGMnP6iwRRKjpnLmS8RO0joUKD/T/d9TO8W152FiHi6JuRfJWQ+Od7RRjOD9jr45Sm7WgFqwqQgNY0IuiVFRYWWaTYB0E7vsm9P/3qSA4AsCcYvZei2iPwkxfiwm/mdxk3frVA3 +ioMlikFx+WklIbOAZipcmHUcppKg98jRj4vVNNT7R8IJY9dYkx6byspApIAa6SR4raDo1b6KHE83cFAF+MFKVkcfW08iz/xQy6LYth9f8f42hn9VP8IgIaxEXWFVcmzpG/+hO1F0jKtYyHerS8Qlo6eb9E6sT0c/mGJASqScSTkeBnKId0EG +miTdTixMiqvjwm4sNEXTc0lgTA4Gq8srJVDocPygmtH3cnfZJiDynHrsT499WYKvVO2lJfIBkkWM7gWeTUGFPboLXmpbc6gYeKyX8NuyPO6SZrOklbfj8dF/azEhV518Xp/ZP3u7n9+mV1HsE/4dG0zCBTp1UCM+PVwtCHWj5T9l3zPVhnkR +ZuqmXaGrMl+7rKDeLiG5d1luyyiw+uZb7qO/FOEer2R+Uza3qQ3H1yVC5QuI5TR64TRMyJ23U31DfVmlcoeBpMSRtEh5OKGbmiO2dwu7TGGBAAkCrsAl5PYSlTIuIh1K9K0UNIxv5iJt1jLa8GkZmrNKBpO8IdQOQM+DbuGpDJPTzesu2wpL +vs3GwSJ9U0onaCZ8vxW0xQmA7bn2c9GDPtesG1H/Teh+J1LG9lHgHP9VijU9lL1S8fSj3BlJxQeCwP2LUq9DbojAIHJbolp16/vmikEKvViiv9Qwt7f+zq/lmolGuGaLftQWu/aPMRue2gv2g+2wiiSZuD1WYcyZescioXl/dc0AdhFl0u0Y +g4c45fvs4DnYoJdts620pfVIHnxav0HEriQ9fE3awM4MRPr0zy2JfevmtPwGHrpYcsKbto6C6uUpIkMKj+l6hoOGbjyDkhdKQXinZ9xaSyP5PQcCvDrAN/La9O4Y39bhtlPHE1OBD3GMQ60F69Zv/eqRljBB82k6NVqv1+ZY7rQuYQEtQrOf +L8zZ0WBG/5G5KWPJXuq9X2PZOFMvQYAD8ooiQ6LjeJYnEzQEpJLHm2o3+d2Y5OKiKTqtsK+1EcaizPAWT+In5rS/uducyMb+2aLk1cpIhdbfC1N4GjZW9RUbhMpr2w/GIOyB05Y7uFnFDFSccwWzdk0LkorAEtxto/tcXgY2ALxM/3Xsny7d +UN36bICwx/mmFFAAbZrKMDJJEJT8pyrAQpwEKFIaDeR7KNPMwS6Z9tBCNzgVv3rpz6hJJvvdGGyepF2hhBL9kL+6WiS0zIfAhn1/H+uOxrqMMWUFFsr8iEvIBzy75ePry35pS3dzZyft25dhr4Nt//ZYrmzn09pGKWuKLp8ORpBlYk3c/Umo +Fov+C4ndYtrIcStQXP4Y+ORJAECxIoYzUQVJr0VJ8kd1D54zeyX61TOxNAZjWGvRpFIoy2zhpa5fLUgQAQX0euZssVD+KtAxhf2N6NBHChy3mAvrDfHEKxeL9FIHklaaUtPRH4G5dtEPVY6cn68rGlzWcG8uHTxXSM0zGz1kah2knMWdS4lY +lLiYppR8qFfawVFr/IzNKa+i0rnN8aI/KDUec2ZXxoQUAC97ZBVwuNaaBmVAc01BldWY0kKHugfaSEqnQrzBHS27Mnbm3voUEKuHMOd0kXkbrHcn/qQ6gXz7xzK0ESXIKvGGhppiE6s4tJhtKumxMhv63Oo1tHZhE+EgVSgQmUjxfMxQ/SQt +eCoRmodzrr3zEdUTjWc6qu/mjqZM0Ek1H6vIfUw9GwBSab4972oAEB1fEu76DKmlqnfdn0nA4VdBdz/mKbpn/VytjT4nIWArCd9+ShF1xlRWc6HraplzFqy9RJFsBc3HKzuQ4D9n2YQkUurXMZY5XlyYSEXIsy/19ESnbs+d46UpkxnT5ftw +eHF69t/0YVBkuPpktsEDxwu6GsLhgBaIyo+w54AKzAYAWpSrEs1Nk00ny9+qQIOuHdftV1KnrrSzvTXeE31keXUtbX3XAeEqyGqrwsjXr92ADlhWB37/8v7BMRgLPmwdMgTbcBQi7snSUYqlytOsniN1MoRtKqpGZQ4vAxo8ImkrqmlPtUxQ +dXDO9oTatxWEujjESRkXkGIWwVrG+VV2aS+1ElB22i/P/+/u5XfQugbOA4NmpPpJFvcSIrm643yeXK6E6Gk6PkMj41Qwb4BCHpX54qoKQNTY9FVSiqw12ZYo0uBEEfylG+GcD5lQ/o69G1780vSVsHtTZ+kbH1CJlVc0ndkTf6eLIqrFfGwg +NqIHRlCoLozNbg1UMA3fhaOx5+VU+4TnUHHqqCjOxSD3C843gm9Q7sTaokP4F6w8PlDzO7Q4XpFORp/sqcekZUa+WvS/BfMyE79mlmG6+BXFbnjGoOLskJfHZ9vI8NNuXqdiqZfXfWHQVj8jiICvmqCXmU9YDt3RPtxagZ39nnE3ageMKcUL +810gPcKQO83B1BFa4xstpAD43wY8Vv7lOA54i5TVxCoiyU7cKk1Q+tqe6RXA/qBEjS90/O45ZIQyOqSdnjzOsBhJC+EdkV9bD0PnTo/L7wIFJLPVrOBTsgbL4S90PuHDxBSIsmF8vkVl7PTYwYzbfc+/Z9sKDyPCPHLWdG4aEGL1dmhN/9ky +H+ciocC+W6q665ryD3OzhiKp5/PG0C6ljt3nLdpseQTzXSzGmN+WomU1Oahm7I7vARDasmcmoJBPqP0IgKUvsjri80rCyRtNWVkeHC9exijbur3Pkyjusuf9TrLWAt+WNNNJudTraeJbwCWYQdaT/LfUUwXeHvYFGcKo4qZfiXcFFRA5P+Da +9ZyM0/1ex4axuFHxLhTtgOZQ+tl+L9urXRvnisUGw5/qhoUGPpZDDcNwE22scycaQsJ/a4Jk9krgaGYI0Bpbc2Ny83mV8wz8g5TFUq94eoVMKHROGIq4yKYxH7OqkjUi5NF/12AwqHt07Eb7ThB0YuSXG7mA76bqHhVRg7lr38gUiLDlQvC6 +sBCggyb9l+yCxatpq5metIlwlN4sGzKwZm9BIokrsR4Jqnd3dIPwOUCxWzTL3M03mtJQI9XBBNdw4Aqzk/K1+CszlYJPzCE1hjiyT67+3MKg+3a87UxTQmaqJDysbwp4PN47BRMzrJW29uJdiuTkhB/oV/kFEib35CIIY1XACADwhcyjhmHN +L2spHphpb5SsKjWbZjGnW7Hvv2jnHO352c0GPkOorxi6bya7SNYXrqAvozkyi2xwfpu3cEOFR9WEwb9/nIdqS8ngisz/jeCHLJAHGwqiffQVJW4nsaNMLCU18NcXoU+9JzajFiTqEYOq9w7BtW2xOfqnby612Ry8VQ0KNvvHV4eRFGHPamp5 +AGU5B1J2ICJxeEW78dTpMyk19Xsu1+dqhKLgFNyw9Ycd8/w6F6QEQMsAFI3/69VUTYWTpb4WViUBJE5DXFla/LGL4PF3qT1TBDz419UeqI/rQGiWefg84mBPbQs78iNDzozrKgmavLSlrnoFNnHGc5gPlxoklBrk3BzsazLEyiIsHD67c9sh +ea+xLoUv5KtHqCKA65XcvbpmxQvpbaNfydrRWLqGBAhqUfhIPNaJO8jFjF4GSZBZg8kD7wYET9ZPLPwcv/D/WzX8oAEsr/mJsHaJGWvgdmcJr8m1NmaQmMFjvrLIbMhWh1AK7UW5EWXf8cXTOW48fQ4ncAF9qPUxoZEhFVkUnXPhx+7Ioq/m +clOM0aJh1PRZZ8/yHzVUCQyhgwlgp2PxketFI1Dtxl0TesM2ZObH3Z3dYfeA41PqW4VUFPERqQ3D8IxIwURrgB/OX6zd0wheuuD5a+Uh9HEDPQcXUok82ZP6Aro/2FAnAc9e/WH53IIDp2y0rdFRu7WYf8q+1du3dFuw3SRX4TaQMiGngt9j +0KDBo9doAIDOxTMuBANorxo4di+hDsANuhPPW4ew5MrVO0FlN0PPAVlQH2FTa5M+JkBE+zOmE5BoQPMkYD4yM+YfT6LOhSiGCfk2+ycOX8/49UbID5ix8HJxiVXAqLgiVv+dr7Qq1zoqdgGn6nW0Qp3erRQKA9OE+8WcrpQwnBgf9JA6nN6B +4R+jbNyn4QxYvrZ5CeCD1U2PcfDO0mjARr9EVUjWqk4xziIe4GpaHxCYGQ+lS31tfCqHmIG14xOv6I41w8YP3i4YwbpKEaVKWNulJ2/PuYcKAva5SNIkx4Sg3DN/+wb4xPLvOf7/7G1yif5uQIfahx4hUE2BKwHyQbi/HhzsbGH6JzfUc4is +3xlJ5Iw2YCeFZMj3d5xuttHFesGr1XMmKpOGVBzZe+nihSYJE7wXaom3+d7Al1W/TC/REMaHaMMwmSW9Syi0iPDDSMbsQj5us5K2YAod/jqZRY+e2aAdgyLiiG/E3ijl3avIMQ4aU0TtlwN0cMvgxagilqgQagCXbFaTxLxJg99RwwEhx4dG +RwDkhxEaRKN9yYWfqFHeXJR4/PP+4PvrTMtXtLC9zcPIpQSUiNwZCPL9aTbzwMvsA/fn9hTYPzlS3y6RIiHtjdjRSlddPiGGv/wPSlR8Q7ndixeAawZI3328WHUXpn1Ra8KOM29eyq4blaxL0sjhffY94LvYFS+8xi0r3Y1T9s//5XuTSGgo +WjS4v6rHH9wmvzGTV6a7dC8b0HXxJEVXk2ulagJh3gz+ECFmOkTzwsFdzAgogF3575rkSfUEXZMLtMaA6R3473B2gMSKlhQTvQO0hGXoh7ZoA29/JAu/i97xg6cCslmmmJB1aSsNb+tt5kE5rY3g1rqunEvM5H94AhyR+NYGze3dWwftq1q5 +82Lou6JgzbDv1c5ci3dI2cRwEIq2i5ubCD27zQh5N5qt6plYGiB+JsD2uv2LWuzaxXCDB44eXQ1uI9tHMD+jQURA2AFYOu6JtqeN475qv6uyneOcKMEJTZrm5Q60Kpt2STr5Uh5b3C0L9SZryRUnrpDXjJ6YNNjPhX5p/faWh0B0X2Rw7DiW +27fDZRWRCJTdbYWmthfVOe4oI48xgZp89nwFkbkqdQnCn99camPL48B6iMKNB813ydzlUE3hXuFCeWQxBIbbGRMMzkZ6gdPdn88zMev+vb4UxbTy53Pa553u/ZL4Lj3EbnK3Z8z1h4JEBlbEDevivxAAp29mR2UVw6zNNc/0XQzkbplRrtHS +hY9C9BmQc7icQAugyOuXBWbkHVoM+BtPfE1+DCS0du+OxaV+ngFXEvOD20NeFcV55fKofxj5WCz2dgbVLnDYxGsO2EKZdjxdHTHFAQ01IbZ2jpmgVU0Dvq6BcKSER+R53jbIErcv02MYAY1Cya0GhHyIMHi+bIkDzQeGJqyxDVvymdbOn+Oy +LbY8qTUSV+c0KFFWn03dTKv4puxFsdJLKTIewQVsNdXZyLukmBNiZhxxipWdcYff3PH4fmxHteIr0QQ6JVb+hmfsV+QAqBmUWkxgtxlVXYvzDjLVPD9oqNRITqbvWsY5vmKJki8Z4s/T3gcW6BcMRuUy4iRcJQvloIbSfQ/E/OBvNpgZmhhC +MXXHPvnD8QGDEKHr+vEHIqJxIIDQ50jqDNsUMyB+lLeYuO3iLEumP1kWVJkEcP+NQxZS2qfL4+3Zu2fAelOlvRqB+z20Sh1cvtVHWHFW9t8TRAhG+T3HcKnAz7IWT+8xc2N4h6/MjllvUwkGUdwl5C2ymJ1hp5Tnf0ElPMyTx4+arMxf5oO/ +1AgFZVLhAIq/AEitr8XwF+qxfC4rbhRQnVv+W6JOJMAqE8ysaqyL1AV10bS6y/gsU3a0jzP0B9P70FDuobEpMM6ippLnBoW4AyqAQgt5fipNCZlzG7IFKWk+aDTkYJlYnR7G8IA7uOunmHFlHzuwVPyK8yT/Qq9tsKWPbAMsVClNwUFURwwz +hsqazA/C6tBWx17yE4as8QMp9L0XNeSl/eVp7zptJhq4bwCFf+DffhHfr4RuADdLxP8YSZJ7mZwQb8sHL7Xi8plkGXdi0FuaMtMtAeisfOuHZfuZDDWLnuikvIkM7bRshYvpGYNzkz4t/BTwAb1C9esfvLbXQpYGRt1/f5kxw+yZoftK9RO0 +P8zGGwKWOJbYm7L8AkTS8mnjTXeAiDqYdAMrznrL3CsIRowyIdv2xWvMPhuV02dI4oLqATcRgaaNoVuFaaGxwKgw3sHDCNbI0dDjKW7ZAB0KaPnpcbIhTxzCV+4M/gB8I06foyGOMMKe/jFXrAvdmuWFSpB8WpPwvUdR8HEQPpxdLb6Wsdy7 +ubdijDCJiE8hIuuNU7OLuzNP+kKqisKUNJiafST1ZCUIBxT+Y5n5mIwExFjRiKT41uCR/0YQnJnYgyG5pYGz98i3ASvJxzjKI/u7tIsb7XT+tyYvEAxMQpZdMEQfGrvlDonCb51HFLpT6FrmYSlJWCWYPFhFqEOU37L4nH5IuoDNLAN/X8yN +quYOCi19a6tvAsAItvvc6eDlwgYF46iKI1jxB1sq6AZY0t4XKcfvjyFj0ou8gC7GfLqLd1NbfCVSbvNQNHae5Dzi93slcKKyQyD/eMJeR8dlYLAXDvQvSghlkZ5wGB2QHub1dM3Xh+nZOI75JBwAS1S9jlpx60ocR7GMFhv8fwliH1x6gc4U ++EBKkDZunqM6Yqbgg7j8AUkz0UmXv7QhGUpI6DxqGDE6S6y72XyCRNj2+tZ3plSODL5KAy6mw8+1bYpz/zXMrZGf22dLx1Poi2Z/DIjRXZ3LsJUdDeIEpgTqgN5Q7AmW6BGSvFHDba028kj2tLiYg56sxCQbUV7JuCPajtfsNMn2gvKV1p9m +G79Z0QHXstAk4xUB2uy5UC60x7Gsg/Awlh2AR2gAw3CBQCdOzaLPTB7+bKzPWviuIr/vqpjXbDl7hsPK/BKNO101ec+07JlSgWBjDz0dsjztGbTej+OQ45NZOXCEC2P8UtT2hlprbejKR7bSO99ZQj6Q9spfw9YsY0GMNIfpSsvne2i9b/Wk +QMcU2h1xHqfYjESWdoWbchx5re/EGX+zUEpcFWhhiFygctnSr/qBLc1uQn8rfchlF+Bs4hIsT0Ic3a6sIyeTWfl60CZtbjb9hlzSJ1ZrJCaPycRA64dIByBPD0llq3sjitQkGN6YPXQh0RAa7s7qxpRp0+IMupy133Of1oIsjjSiyu4CwJ5H +GVJ0j1ZV2XwDEA9fEBCbkeIjDaNT56w6W0Ce98a+2x2vBjTiiBa2xPyOi4v8DDnZAwGMGh+pw1e589Cx/+wD9yidkUgNGVvCf6GXQkRIaZYityKUhjn9q0+wpz1vTgXJDCwIjUM/ZrOfu62jV5pRUImd8BdyR9c8yUp3VfI25KxRgSCZ3tOy +BUNDzU5c1MIr2LNBwf7drkuqDRkiJo6OOyNiEuLW4pe5ACCRIVDJ24WfRYpZEtEidBSiSpAdWgoJYRSx9iKgcz4p0g4vvtZLSVd6GX9UsRZPLcn6l0sBs1jN0QBCoxHxX5r6YxBxV5I99rggdihQdVofBGIEqsmtMsLqZykW0EmJwUoo0xUP +W3DhkzkNeq2Eqsw/faNx7RABUMq5BssYHZJwu+/3+Qp9PTqoaq8bf4nCA0JTa9wiheEXloRjHZczmHHW70SFkH01XBhaKHH5UAPL1KnJe9L3ySVF5guHWi1bKE6+k3AwZy2hIznkCZqiwWkN+L6ZnX4PHsD9qqkEOgXRb5gx2mHB0glo6vAm +n6jS37lRGzinxTMel3QrRAqnXf4yhHdF4n/3HfOjEpvY3gbOYk46C23tbXR3br3a/ywWVZ5U0DrAGGYoBPe4GWMfbe3h8v1KnOe0g8swTb8tQNlUm+ZRyepyVXe0u8cYty+axxRcKGJSZElV9cEZwolhdWGfGGfWwlo3Vpk3gyS6RFDVumb5 +J76kIVqiHwW2D8Hhm8Qxk+h6j9RZ6uEpt1WEdDI966aT578pX3txUSR0vfYB8PgFZ/rAOWE/o/64HFuGQaKcuYZksK4pH2BhUPMW461bgbC/WxvoGRlCdh3L0d4ga871fawgfI0OpnLLlRFtrUT+t8IoGQi0V3VUNaD9uSZJWDSUDULTkDnO +OeFskdGlzfZc8d8jvNgmpflZ2YGzoqhAuf+A/3ZI1+dSicafMh3XTEXFtX9+mlGVhy0ogRJZShjEOUAfHdnA7gqYQWRFcWh6B3eA+MaXjxWsq0mGpkQsaoAP2nzIYhLAqxu+/btbr+zdEdmLYijfDhDHhkp2DPZD2JHr9JOFCS36yF3GUkn+ +ESzaAKfcRkwwI4WwqzhivOcy9Z73EYsGmspnn11+RMrkRQZNVw+/Mf7eVQo2FjDF/Il4VJOI/ghxhyjIz5OO/h2LsVBxDuwyiPpqYZYK97IfPLGX0Mz99ahV+CoLyxzp7iPFnyo/KqBNh4H1Jrf5VXyg7N1K0quMxpW5fAucvfUMvegL5uWQ +RnqUTOz7JMvj4D08N4/5BE03FCC/4VAqfdbTVQFg6IMT/gDTP4tacv2fuCpLNU/MwlDH9rVE86pHcaj+C2iHZP/H3SadPvXIavBv2uM0rC8IrMcPaixtRoZP5NpJvsMEuitrGe2OGL7AL5CvRT1CQ5YGTXdflwWhYlNaiDiGPmvlR3jZ06AH +dv8d389U5KFu/BwsmTgTQCGcEkx3lm6BDxvqgTKSlGAkSzzn0tOS/zdj/CZ3bM3GQ/x5hcSX60H5o8pSB3axi/rQxMQkSU3FxoV/dVuvzYzHEZhmcVaP6WhyJVb4lvEzO8mZ7wH4o/ak4VzebV1yiy/2d6HnwbsxlJEZxtDgIzmpFYvN0sqi +cZBT3vzA5VMMmUY7az397k4I6pk2QMVUBWr3WBYZvAmG9R3wPN3wlMb21Eh3N/kHwHPL1xn7bnE0AsmK9EPsyQcKyAnwyFUn3gyoeWORp8mWtZ2+9SC6vCgGKi3cbKqcYei5mQC8FlmQztk2+F0oFGcO74NvQkKaEG14DA+7o9GykApQwG98 +pivpzPjy+e82uzI3d4ijTeBpK1Lv+8Yq+67hQ0IoGYaGBIcH0sCugrZGlH5F9+69qhjaZqPXdKwyGeXzgc0lDrVZTER3kS0TpBjxxp5JSv6ek6g1uZuNqBClGmkDA8UuXULVAuIjQlI32SGaWRdbS7hGcbKndmpIM1dPMwgp4Zzu978fyYlS +Ut7KhEC07eGWHT7NeOeQScPa0BI9UZJaWpGihw9alv9/9cBh8AVBzd0+jXgpnRbKV5r/+AAJqSK/XiyYeOkJAotfTyxrPaiuCIvza5tWt7+K3pdMkq3E8dLSJ+W6M/ei1rBRkyvq0OflFQQL2osxBgFYmkmb/jJvyYVA+NO5pDXFfe6WTuRz +F20dEYLz1GpcIfZw3DgHeD183vHXPTNTuNYclUeoWh8hRJyCCo4iRcHeLt0+woJZ4kDT2H+qD0wRirBE1qRHpGeEEskbEjQ9y9cCtBSjITCr000gfFJrn15DEVO3SiANaLOkC8r4V49f7hPyHfpbdQ7y9FdR+p6b+xWUFvXwQY3UJAGrJJCx +HicyQ60vXa+9xIZXC7b8wcLlNe5etxLFHJdzi8kwHOqYuQJ07G0nQTynGmcNlr2vQVU16dRrzNzCzRD6kiYTttLq6PRB3M0Uy4qyBK5JFvHhoLL8m6PEShBks+P87f3QUmKkbJGbjNOA8MB8jog5eyywbKQH2ytrwvOx8NheGvxBPPyL+WaV +ZvoyXOFbZCpi9RhZ4fU+HWW2XwU4MaEz/cppLaj1Xu5N3WL3lOcVRnn+Y2dKPDR6tFcbVnVYdlAB3efhitBdpNBNGSO59jZ5Qm3eeDb069Ia23xwUHe8697FvaWo7Y0zuuIIc6zCC+N7se2TeTK4rjkvJ4pkaGS470U96HRseMIN/M+TUUFw +tdsZn7C/RVOQIHczbIRmoyXDwj9d9rnPIQZp4dqK4Xx94AR5heZzDr1wc/4pyqzQ49HJ+/4mBwPnHBK1T6QK6eA8VUPKuZ7nmYEcoNSuChW6MF4EZeTt1/gLZzrHTNGHRGBkSJCb2nElZNK2yBljt+tgXG89dMZ5WBxV05sI52TfA/pee7Kj +t6eHdKCddVD11eMHOvvYrM2x0E5Je/NQ6IPZuci3E7OVpUOThZMAAABHnw+LkAAdXvB8zs1eWYMNxmfx63aT0QK7OgVHE+LZJpH1Lu7l0JWU9IggKz1Sq5sjxgmLrtZa29y3F4caMsIWR1/eyN4XcEzZ+rJ5gOPKQwV+T3qGHd+pba1lCEjc +RUfzJSv93V/LBkwm3uXWHelO+51sedEsASWIPcJU00R0fQttoQs/FStJwj8ZNumfnV0VWTkSxJ80tt3GmkHpDIObDUmUxvI2d5TtlvAWcU7HCbUmcWtYD/YETj8RfT3IfOuhldGANc7Wvi0TdmbyXhpB0lUenJ4qqnwXUIXuOfmCwYTWDUHv +yEsMvo20fZzqnbhSmJIYNxAMItKqmsHvi8dCg9W3HwggjcfyhlQabokeAA12boPRL43NIjATJ74t2aOm5+xaxk33AgefMpCAvo8ZTMy9xDd5jRKGHrKY8XoPFlpOeciZcjwywzKuYOrfSTOzSUJJyJx3TmwDJrzfIkGyOsWh1GiqzSGk//NC +dTv8rbpwePYV2gy/FKCviqpgLMCRGeLKWABV9/fQY238/mpFoYpfELEpjphQ3LnruucyWxgA1gKlMAG22N/01DJX4XsbPa1dzp8FLXCsD0IzxDzeH+3JJAw8AmYvM9IPz1qlGdeSb4NU0DHVgtgnz76bPYZdtwIuQJvMcLInFiY7zJ5+NOpZ +UXOgVTJSWnhM0vwxOKN6vZiUn/SJwPwhHiw7YNs5QBN+CfsXydA7VyXAFkWddeFNVFXgHcit0PIH2OXnsSpS6EsyvJz2PdGbPuOlYRHUk7zqWKBNM4eyezXawySP3RRGZUw3EGVqHefOgZTI0kPIPdn6QUNmYyAIToyTMLw4toG6ER1WbtyI +ZDWpsVBzj0On82TIWRe5Kg0227lY/Mrcc9EB7A8AO+ABZF8PuqMfOZFBMT+wbSofmtzC5v0RRQiOO09Np+Ov5rGaqeJG6fpDzrP8qtErJ5d6xlkxtNY57OKhVbSJmb9+DKF+Nl9klddMLW/RhV+aplb0vzKrHttoZtLyRFrPBmYUd9M+KZ3X +Gxgdt5wy23kNeruqF+GdFnArGTmkyZTdR3Z1K6RSvgJpzoY29s2jINoH5GfKTSObu8rts2j73khqTUPybU58dD1MzynJSzBbgEZ0p1jVllr8rle1wwCST+asWtuUVpIS6KurQ04Bsxn6hM5jUyvqV2+55Nkl78yfWnzx6G2vGS+vkrODoIdi +Yw3C2s7D+MCiMde/WAVN9fEvYxCZ3YkrnnGaZYIrqk9jBsR9ZSW0aubQR9J+36PDxwuMHvYY6WIUWKfzPNJa8/pcZmWmUV0LcKQQwg33WaiGGaJB3Pij+oJoA0YYjsfexmxrpConbDbVzmqAevk9iUpvfgskCeSfEVO65mdeqxI9+PeDUX1W +3vZd5yxy5pm0qnE1WubmG56ngNau7FnbfVKm6F8De0o1UQ3KlpugJId8b4eID+2Zw9oaZwkV67lc53+RCbVXhF0THoQZe0DGOmm7EyCKIeyxdFpr+eoLv/8VlnEtR9Aq5eM3P6OPUBbhI2u0gIgfolQ9TwBsarsUWVl+sHeMMJUDq11AH/zn +uvzwya9sePFr60RQirvSe532OFnwkp4oRMWG5csfxyMjSOKPAsr/GNT4J2SkbNxS1vaxS1TIAp5tN34ValN1/0Uwl5YQftMWNAI4Lcm96533EDvaYmT9jHungmnjdm/DmS1xoBufYfaCNkr/xopwipwUILhmQsJGllmCoAYZK0aAMERq7+9z +fMkWne9RPktOa0xQ6hxJekKv0WOJuz50rMc1pXGW+hg5OHSOCUKhvJlhqv4+G9mtiJir/qGIXjy9t25S8lL9Uw/7poAo3ovdheltV/pBW8gFFquS/iK78FLwXLC/EDeGPZS5KaQWulOy+OslXghRt1lJkDN6S1H32B8igiY8PMo2a1r8mbwj +2s+hAOrUMiJ2smCvve1/3snRXGE/mtQ5CcfvBvV7GAi6/iohcKYMdt6RqijUzBH/x7gn+uDPYCJE12ehfshP8Chsfpy8SIyAUEGSuXmS8jmCAsDBVDVSppJ8UFsTZdN7f+wQvkCTbJnh5t3Ml6J7BaGWYp908J55pRXeMFZ5wgu4EFIDqzGS +Enl4OyWnjTExaG7LlN0Oy6FyvakDtfQQvpBaPEDydiODJAbrSg/wlrNTOuiKogHjVSNCe6rgeD0UGrv+eLKIhljDYIZqXVk4JaOFr0o3n6C8vhJlx/zQjb0vz3c9e6pCprGw+5J5Ztr5sW3jH01xoKpZrE6Pxd6ZhRYN5wHSJPRrt+yPkYu1 +Bar6vNQrorWgt/P0au/LFiVqyfKNVEXHAcZrjmcUNtORsKzLH/9PCgImS15hbwZfmb6n6aUTg3Yz39Lt1807eG5AgDI2vuoUviY02tb3h8YxUmF3rUrSFrBJkPfRGAcoCKoSbOKTl2wwMINUU3dnhiaSR/jAWxaFDVwdx/JrvOKHgPz+QA6t +Sp9sYrzkYRTti5Vj5JwCaUUkczH6TAt+kTeTR8rJPL4No/He3FQAtuLaXDMFgq8Iebso3AYiXnrv1ltpHrNP55TwCIddfaXzuQmkfkm29acLQluWdDd4fdUFxFK3IUMMQupHubaidxNKPX3UPuIg2KZJU80nCHSaFZI0wlecY3mNs9V+qkKY +10GoN7cBLZUVRG8AtV5cGXMMRasPVwGXY7Pl2frd4yqabNdN5ThWqrGSe5PRGoL7pEHXw7kgHJxBusAb5nlOC6Gqw6hRD3lZfYlri/bqoQgMhFqIaXGo6agoKWZOFtVrI60eKN1GWtXJ9vJPcqXWRjYs6yIaJ5Fa+UjvfaVuE5qdCSc+yeJy +hNG4M/FW7dT7v7vcQl+yqElnoIfxDF0vNk24KK8iHzhrAd5XCNh4rgyAe8kSOhsAzBRDfJvpev5tB4lunLdeFUUXq6mWJedQQ1k6F/SgeRwJkoGlGq5Q7TabEB7l4RN+yjg82/hBpvLr6bxEggAwEMkTZDHst6pSzEnRbnpnj+QP+Mdo+pB5 +hhl3KGnLmBsBoKeXE0YUACXxBqhhBismNOn3FuzhbHCzMIRgTaZnN41cwK0Jhvf+/nWGFZUAwENSeVBs9Bg5D/Y2+OZEHqIu024+4fX1vV88vLbqEespUR0LHjcdj57aEITs9T0fUKhkaJ5MCYZQ5+mFNwW4PIg1gnv/B8UmXMC0+MWDKDGh +yfbQle1Ebls05sbwrVTGApZmYLeo2N73KD/rf+2m8hw5p5P2NhdECj9iTBoxdP7y1aRP0wZk0D91UYjce6yGkoBFkf5BgEzaPfxcaS/EMy08G92sLszjYPxYvjYXBYtGxlvsOVdNOovFTMBbkDlccFVOaSR/84M0GSvJsNa5gIVymdcs6Gds +/17LtiBbIjZwlTa0j3GOffoz8PKPH73o3B2wlcI3dfiI5AoSNZTp49o1XANPTU/N2CP4Brrintt54qRxkeejTWLNo9YLoOrTAfVvhP29IlfwjEeYg3OEIYGCwS5Mq9peYJRhjcTUGHB7b8Sy5yVSnu+yCcQNGj3esZhM7fPxqPn0Jze70rA2 +IQZVOzB+KdZralgmKOACUZP2pcXfFOqVLha0q8d2a0OslF2t3uncIUuFRkCB9KNxAqNdw2tOsBT8nKOBolO7x/uTFVNV+czzl/zRN5ma08DXAk0gKiW+F8KWvCnbQ1LU2AWJSSsjBJH7OZYAoKAk66mEdqEkA5pKFlx2c9vY/f2EgsGMmLOT +fOYFPJ6CuDVbbgNuvAP2G4t6p3f9opHWm1ZnbYA+FdQr52QWad/k2rcra73dOYnQK4WnkUHy7YRp18DtOzwcxiDvSamv2A206XQqsYY58AGdmxKuuipa0VtsA8kd3VIit0ceSLQBK4qY8rGbl6aX3EsvCRR7XFgF4t0jd0Ydlb3Py6gch9iM +VQG0blFo0swPNArMpcrIbz9KcDCdPh4a6btpuy3/hWBSqtb+1o8xSZSchlEAuiIqxkS9UzVdRt9G6zdOxMfQ3IA6pGoZ6aXRFwS8z7LmPi2DMtqX2VXbYVODbePIZ6qFkzhG5lg77qoVZSRpbPBlfNGfcPT4wJCgA2PV/T/AG2/11cj/C1JW +uSXDA+c0oJnMP75XWopu7jUAoYYWOXAlurKZSOEZA3ZEOJFVEDQXwTOn+njlk/ZH1ACuSwZBT4vAZWn9D9mx3PEU8c1NYndqciKZhrUTvh1HsqpMXZSLmly4sXh9fu3aexog0R37AALoqOqLIv7pvVJ5cutw9qt/+saKLLNhSHBH7AtG9xuu +o0qMdruxmJGtmH+kxy+tTGc/lVbk+wkO9wVjmtZBk/tc+dPmWrz0uIv/x25wIaCZ5zsy4T/LsnUIQyZ5LkrMjTnDPOe7goFv05h2Dkq/WqACXQ8Yo5BoZ7gIa3jCE9V9vsXbsGC61Tpv7Ho0KLrmpazw98NJXRDG1ccQQ5kM1Y8Oslu2Yhmi +/dn8Ia9ymRuxL0A8bqLSooQJ8+01M08HXhyc3opv8gT2E6wGbdvGK20PD5Rz3qd8CE4VcK/P4oF6C3GYlHbPmfyj5XZhJ/+BP2UG9MAHM/TDrBVilt+0JlAI0w93ZWPBgGpkA3q4aIOnIqIQB0Htv8yFq2uP5jKvpKmv6ZGVJvW5thUPJG7m +FOCZD+f7nEuckKei8akPsQ3l0/qThcCg1DA0WU/5bKRuM7Va/by9bprgUMexRChe6ooyap2cq0RS5xfKCA/Q8MfsoBlxIGT0Ir0fG/FQ/VFvwFEwAHyylpuqOCWGJAKRJvlTV1gJyiC0vy3pX7oZr8yymPvgP9tLskT/eYQHK5LdyxOzb0Qv +oUczMIA0Al8y6eTfeYcgx6o9pLdOpks4g2TsqwvqPVs6BbDDCRFv9zjOMeE+Jybiv/55z7pFpAnRnEFf7+AOSjNZQBic6LA39zGjh+2T15PhGypHEK/04hBME5B8hHlPhNSzWXMDkgj3rL4ctLpEgU4ajecVukBdWW1KQFhpRRvCxIIfvh4E +dYcQR6JZj385YDBheq/M5yi2yLqaNjUptc9krLvF/uWpXkDHgvilZhY5T2QBJ0CRz6nsRuSTTi6KdPPfPBoCRpuEdLeTfYvTF684AWM1SOQlfpq3eLHkt0bzjujp/GXe1rkNkLwNXFWS5M4wn8AENVYNsDDjaUxZVFusSNq4LWi/wqabluNq +Y0KpI55KPJK0jYOkd14U+H2orbGeU5uuQ10IaDTPQjl0/sVBCYZkfg94Bdt+dGGqq7UDJ3PMNk1M1GCOmwzEY9TVYnj2cSz3BEvJZlEAwhwG8rlLfqesHG0MCfd+5r+0ilJK6IHfHmGM944BQaQ3lRdaleyc11E6ftBM7+ZLejCgXkHDLJBn +iZUiGvnLDCXlKF8PJ234NFqJsivUqgRoH8ZLgQISud6ICxr6LkXdzJzRZ1uP11hy024UmpOFrR+Vik2Ptth5KJ3AU1Akl6LYkXVhif/ako1yshXY5gS7tTlkO+mP8S5C9w7FyB+8vy2K3zfdPWPV2lJ9YMjJfohcw2R7BcRbhEdcd1Lujc3F +fv9ZK5BpsbU3fxpnE+e/x1CExdMqZC8IrP8vJLh/KKxVFCh/rc6wSi/WG/0iE3vxoWYyavTA1IdeleKyJwd1CubNau0sLzkswd3qUUhy0ln+abfMT/g0yf//moQdNYPszPA9+ZDuaiOwWpE7//6BC9/+4LvbU+NBaMv0840o+u7JZ32whwdF +BGFClyU43tA/9V9EZk295I5I85aXMZ/GA+9080gedIhcxTAwsk49APVDqGLC5NhjN+lgcwy26Pjv3fjyiyyT0eZ+RhuAQ1HolghATqaKY5xL4lp1dFh/S9BsGyPceKGN4yzCGlvAPTAnasMdVraMM1pFM7lwomlAR8kCq5HMkorzkrt8RpOs +XeXCl7r1wyvWnE4AW5wxxBt2FZKS8bV6H6PYfcF2wJeYDMTqnYox4uqoNKyuTR06/kPcHk/C9Dl2QH7oJGJr4jNjAp8cCbZUYPaJl5MsC0QqDcO7gwUdVCMjBCyG6KmGIsINv6HiVDOE7TkQK4a/GCSebtk0BFxQsMZ3Sduw0i/G6m5JD+kZ +6MJwhS89qImV3LRNbwjKMz4nUteqmzaQ28EENoQ9sVAMaV3CGg9v6SbyLApk6lDZhoysabes8JbQ94MLlwQ9ksetgSauF2o3U7KymZHyezRlUetRiFPJsPIwIoUmvqPxVw/cF924MNjeKlvYHIChn9+c4lzT00Jz6dT9U1CndNduH9ZJ7so0 +dVwJNUl/H6j3s7SuAtlR2L7Sa/cRIxpU3RDplS/gHLrf8AiKyioddP5O+rFhPP7b/IjvtfS9A4XdD8deIA7wNSgb3kvsPlqT2ggGBPLkLM/nHfPpMsSeyKdXQ05batR/8j16k1F+VQTNihJBkNv8QpHcRwLwfnArI7uIqqCIP9hvsAZgKJhl +lCwBK2OOI5f5HvFsI6Dd8F9d3upFxfUOHLj00FNymUhUDB2iUFMF2qvN2nHfqeDkJfCu1gcm8Bp9mYnWDOnnN3jlZP8rTUuIKEKPGF2yVhJBM1g+HDkIF3vsoAHZDsDzAC5VcAOn6Hp53QGEFJC+kpXwKYCmkZhmmNyW2opjhs66oBM7HRgg +Nu7Azaw5kupL2M/jYT6kwn14qDFiNFh4afcuMmXn0H2tc4NONBOH2+mmHBMUC9W4AyNN2MipZtS7Qln2ENdOLSsPjkeayOBT7BnRDfyCy2/9F59EkpwjI+J+9k9Igx03hjoW9Zimg8s4HZ+ETriB6er9vRGKqceWpqhbDQQqudYX3LFmKNSX +LK2gLX75rKC4AxGLey3/egyuRBviw1hq2+q1glM2QzHFEowQV6layq+7dwsInX9elsNE8Pg/CFAkQmFgTrDWvnEXdLUn1J+U0UuZdM9d/CsfGATHgHxQPhO9O3/n2TaE2P+EQtycse/zm4YGj3ejf+v8pHnC7QMFo2rJGySA3787Xg6VVtrv +ESrNBaW8T/C3juFFBfuV/UqnFhJ1xKLAyB6iQPPgD44D9qfpv5FNLTYagkYG6IYDpvKyY/6c8xWJ6jA/Et8MvKkDgJk9D9bPgEnxYobAizyPGYbBpqZWs04OnMD13SxRc2Bzkatu8xg7K0E0H6P5iZ1NsHhGvfKpzBVsne5R+8uc38mLssC6 +ILMudOQMHKz2NSWKZn936Kn/gstMmLPxsCFxQsfS3Mf9Z1Qsn02oOogeAaYIOB3G47iaDF4bLNG3ADMmpx7CFr8jNB7a1Bx9/5quxO2aF1kPW8yGcPhZHcd6dxVd2P+iH6vf3tkBruThxI+OU5O4nCC0j643jyMNWuWIulAnAo13oeHK0fOV +KswQYm97TZTZZA1qyxL1Y0EAaOOoy539sMjyntHeHzXv7TcvOLcCblNLXvs4/GhPAL5+/K4eAqORxnYGAh+q0hpzGurS4RTZ4BYvAZNABR5uGYMHqWvc9zO6y7nDkLzuae3UtEfPxv58H9cQADhUudalJS4fIYZPdEOvVD0qIv6N8bJsCjE9 +KDJKF0BgDHAr/TQdauqaqq5NMq+Edx27cW375yqsByHzcmdS/N3j0beGS0Dw51OF8UKB1apOk6aImtQNCaWn2HyErMqk/4+LQkE8gduNGsiqFDz9iRNEi6wC0Wlq0m5KVfT0kNwkKwsaJD9RpmIQqzNYTrF1i+DkcvF4eE8Fw9Pk4hwecBXS +bgBAVSfvudwUfXseBcVVoYnJlP+tJIXzTKcR4uXT45upUiDdmcO7/qKB7WsimU7O4WQuzyRrKsMT59Ak4nCofXICvD49m+eSHbTl4f5X37+p3pEwyS71qPt70KgUm6Et+P3kVYSYEoES1ebrJOwwrZE3cjxKoCEYngqB19Q5ktssAA/L/2+9 +QFfho+j5wz7lvEaqRvsZiilEkxrNB/tN5+K9l547MXFBQmKaCL2BP5gEHRQ49z6z+NXaCBXAQawBhi1cjgFjW98zZl6wBz3beduuhy9ooEu4F158hPIQg39gEaQfAF/ZixdXtZIZK960YZTuynaj0WooY696KYbev080/z4IwhGGUN6Ht2yy +SCd8JpHAyFgk0u/HwYpi2K5NWLiNpsiaedq5v4HGVC8MQxjoybEv3dBlbM0KSVV9m/e+hVBuR3bXpYCOlbNR2EeQfcWEDqVjEy+j4/Q3VQW0St0bThIXrCdbL3zLaSIM6Aewnie6oviwQxMzGCbbyyoqlZXlLMSEggAPqBK4IZXQCnI85edl +psvwZlpeFAozHNDOGpaOxLuI1ci0HkXsnCp0vlzwh6/Ta7ohhajMempwIHyCQYHn/avbrzHl3FRsX1UlxNB93b2lNHnrPHyg2dYGrdiAOk4ySeAbXKd5x07yEYoWQ87hGPuSUvPbtBcm5Y05y4PDKKIG9c/fpiqinFGptF0g4gOUgzV9NlUY +5HDb75JsnTucxwjoQJbRSrRgN1WNmsfzwM9JdLAZk2KNvtkvOlF+t07CSnDZRs8vnrB31ti/+EZ4L8DOWELb/VGKZCK7nGyM68trzecD/JY+rQFH/z+6JCQPZdsjUufpbhAOyoIZAmtad2Az7KsdN/FgGyuzaJ9cmnYvtfx3/PiSlqsn963L +//KSkEpS/+rMpRZ+mR6Kk5eJ6wnZg0MMnQ4iNzI09j+89zHH+7oIBQ2mh7fqZMAMbViWKapuR0KB04FOd30Mr96Jf3LGM4apaYWNjO/1ZnTFMNs4bD5tos1G39gRXiJs/Hl+XfXup37XTypz0WWFSXSOzbo3/6ZXejh6ULrihLENYKDK76rW +lsQxItypGnpVHRJUJMRM1blJdYPRI5WmhSisTDzkwPUSMQhOBjAuOF/gS/DKqiVIYpjTFW2zDhDSbsdolO42XFhSF8JBPqIkIGHDq9i7vdJHPnhukpq9gvtb687agIQxFx3Y5rC94jpul71qe8OOX6NhLlUJnN+UMfa+zBEJNIudg0m2dSea +YDqTnSQiJDQ9Intj8TklFPjJGgwsLf1mRlyp0F94dcUIo0p7vVPq0/uhwFAQS4NkC39w6H4P7MYCMwUW8k8uWDWGOU1tN/oeZninKjKxfE5EAk5LFD5/C6F3JVq43Yc6FY8vIz4BidakUoTcPAhUloyZ+4Sy4pBPgr9XlITeF1qdRf+hT3U2 +NyllvEvxWy7Vvz7QFVmNYBpAafFV+Tqe2F+NIv2SIfpUSHJnyo0lvRRgiP7pPJBBaXoivdTFDctpDRrSJPUHlLrFe3MsibNoDY55yzb70883Wkmom8yBy47ig15ALfHUM3hL3N5p0vHQ9TA9NYpzeghOOuvWIEClNAxnI0GWqEOLBy9PO8mS +FCHlhWkl7tT2qWYpUgVa//tjS4MR+5ah905ZANH2KkSFRiDC2c6f6eNDQSvKql4z0ZS4t25GOy7sfKiq8wqHx3MSeNow9ZbTOCkOPwFCb7X8GuhvPCPQljX+IJAhVt/L80GBzSFmLSEdXn0dJETir+bTxpoK7Dscn6MjlEur7V7htjMgPO0E +Xj7fUjb0CuwF+bP0z5Pv4SHgHIqVkfaT2LYkivzpYBkE+NLqFYEMUoKX+hK6lUx7QtonfWZQO+mepebVOricZq9ru6SN9fEX91uek5Bd1tRxSzT/MdOSe+Ozq4m66Gmu2vUAKaGr22GV5PHtQZyWmlLfxMkfJI5Y65AX8TT5+vuYx5pQYGYw +uId8+dqxf9Ots11K+gn20aGjjQWZsCAvK4pxdLTMLgDZRFVZ/1/jEBkr1uInw+7aoqpFE1ojgNm/Gj34pG95qPK2jfNWC4UyQpSGgpuBxxZtD+Nk09AfF66MZT4hqFco6m2mzUUZ3U27PQXTCpT76V8SND96NsL3jQyHqMPp9fwPvE94UcXE +ApBaxhfLj5slndJO//V/fvkA6rko0ryoqMQebW8NQ25bYpNj3H44UusoWqtb5ESyXQINdEvdpf9raECMFDXZObzdl0nru7/7ceu/vlEIdOi8A4cluKi6WQPqJBf4M/yctGeuz1+fGEVPvvjLHtoUvOyqYqJIjlJnAsWNztYYX0FA7ZZWUUfe +mxwgZguKMzqQov8OW6e/Ai9sFjj+SdxWFgzEg5U96C1MVdYbEHK5iErNmYG6LyOQ4uqV5StjZ9OfETjhHEbzb6zL+4cnHKD8HnxDAEu/552RpG427IpK90JMZXNqor4UALP4AGvq0CesGfoQ2Zrws/DXV3jRJwSU3DLl7zEJpvo594rB2jBv +11LHuTsZUEDjJRjzapEZw1V0bEMMI0Kl+BNd+mjkKOb/HnO2gJMFFuCq1+3GdNqEglvmTCz1TnT7upGpfc/NfQDmeSoUWp8HLh46xi1bewRVDs7Y8Av1yQznIvesuTQMJbcTDHax8qPMU+0QTnH+K8faq0ZFsTzVHxhvVLYUibCZq+nVBa4e +ocsgSHcHbItZHnEgGTSeyJF2g3+hipY/0lumaShVoHUudQBJSXjohqaav/g+SzweKrum1DNq7I3D7dBYvv+raxAmMtqDGuSEOMYuIr9NtHFsTkcVulcyepfi9s+wrIRWquOUAjJpP1a4h/IV9l1jfOy9PLQzXh2oPLGBTNT56VQo86L7ZZGW +NZGhR/kqd+mt19q47cAus5xgMEvZ5A3MvzPxg5/hpa7na5XaBzpcjxneOSVKTn8XfR0GvFUdQPnKvWb9G4XlgMFBPuqxbB56ONQyYhN9p9rtXi2OWb6qv6aY2Te/ArVe6IUA2o3q1aqmC11VGZN4kijdQTLvMoMQNLMLjyiLqqg+j416UZ4y +Y07kIxksvGe6frxRVcM6uyJ644Gz0s9H5cDte6dDXfa5f/78X4GDD0WpCG1uk/t1DIbZ5dITIQGm3Ihop2Cz4RIqNuMjBfso9vj11Z+plMzVb0xaTqvcoQYIk98CKjeUNaPrqKT8n1N9rqPV3rlVMkDzdOEBWRX8GCnIzDDiMUC3T/R5iJXb +clLURxVsWAuStH8ysU/zkWI2H/Nld9BT02KmB50TfudV908VTStS7wanYho7z3Zvlu1WwMb33c1woq3PCX1M1OT/xTPvLilscQCemBswPK8PYK2e2HcWg+yPhAomZwnIyjDkPsH69hvLjz7gIoJhEQ94Y5Xas28I66LDxiCQSw0XauYjTX3l +jbtVUlngzQ0YS3WhmnEGExITDF4kRNsJhayr8WahsxXi8593OhPaxzb56MqWQZU0/Ltm3F/tKr5+7XQl9D9nOJ/kA5ojCUGR4ZaWnYdTocvPvVbQsUHQs6h+vrDx2diQbknca0mc8z/3OkqxBqVx+51oLCrL7YnF7NWQD9kDnOE3sRsSJOst +1EKDD6Jo9tD5Pv6fhtTJtxMeHMVp5CmuCBO1+GgX7RBaEUS/4B9NrvYPY/mKH35q5cdQZTBY6IarM7lwCx1ZIz3+w8eAVRv+T8dvpzQul/pq3x0uR0rXWCR++ZH6fINs1jAOWx+9WWJ+1btFwzZJ4/XYioUR5C8gfkArMkcb5HQJiaAgJMh4 +zX0CKQPXSKNgSoqyF/JsSGBiE53SHy1LceOqCVPY1sHRVteSFJGaBrjO5vwR8YCrPQTbcinKbJbyIlCvbg2WqLYOTNIP9bs8wPulLNpKmfNCrzSLKbAF1L07WZH8yoO7VBeUWYVlvVqYCYwdQsT1EzcMw6DfHnSY/WAJrnc4cMoc7OiMb8bs +/udCWs0Xr/nzDH1mtx5P6cr7DhOUvWQj0fu0xoQgMtPiWg0R/3dNpNjw9tvn+KZFdNVmnR4OZYroqBGU7m8A5CGyh8g3GqGNPA3/MKEcwuSxDU3lnDhlWOmIGn02gX3fJlIlngck3F76ov6ldbp2ZH+qy1PU6S/206ziHR2oB5b0lhW6KA64 +b0LdbqnXp4CRzih2TkKZHGNNs6e80KqzAus1i/RcwfcDvi2DUo7P22nkGSu5TfnnR3/ieaVR9NDsUnakUYsGsHBNMU4nzuLM9DG1xo20nOelv1KwCJ7nYC+Q/A/RkdTW5nLAdQskAEhH+tPV8Z6WiTyjlpO/ZQ6L3NwxpOWwBheo4S8ZMc4t +ISmCSyhssfivdeadlTFCXoRcdBwi9SoBIQ0qNqvEXg1N03jpamh9wv2PFLLUWB6WZmQyorZt6k+0pkX1hFRoccXqjsD6ciGWZmGzA88nesXNjiCgWMrdxUR5DMtr4EsMnZNq5hRTFyVy11bCTIPrYLr0SXwpwFjJFozirYXHM87vuoJZcfKT ++zLSR2vXQo1OUE/xB+4mYwkhU9bSBc0LvqX54PHN8lkXzksiCXLGcMOxxLdhzM6xp0oUWMJuAmOhDlCkJN4NnqWJAQGzXc0DsNMLyEilA0PXdE3BAJ78TgZhbnTqyFoKLdOfI4nD4AT0EGfbDHi6MZjyN9uaKFg6iq2UC03/Hdlq7XhISM4j +6LMnCgXJ4acH2ImEPC2xzR4HAuIeupr9g9rduCoX8n6vaY8y2Uf0BG062iBLo/UeYJeM92sL0OVWvj1Kag1JcPdg5E2O0V33cMRS6t3WtHq2HWMWqEzKJ2b/roewuhwKHwIfHnJNHbm6f2S4a081AnVJltNeJg7vMbSx1wHAthbfKRecn3CC +BKEflCactpcJ1aFQ6R1l/zYqad9+tHW9HcOaJP1NQrm4ut+QURw3bsSectKbS7AyJF3KiuSbXl3QkgUsyOCpGR7D6nt1/m3UY5oJRCZ5Fo/Umg7HFY7N/kgRElzE42WIra4lbY24eJQ586qVU07hhzjGVvb4IkD3qhKQ88YrgoRgtq0dG1z1 +NyEvT++uxbreJWyH+SPvqg3TBM7kv0vkf92NfPpvbUfNkI5HzewTvh7k+C29CpLvjhgrBc/3q8sW97nsjDMVxF8IgAHwDVu76uSya3IZQW1/wLb/tPWHQRvi/lwghOYb2lFnqaWgkyPVYr8eEMxBwgrT0i50kQwkzvvg3lkvfUAfyrE5SQYg +mlxdjeTAtv4mn4JZYiYJdvd7qu/j+wZ6tUBuMHf9dS+GdbcNp6B2nf3Y7FsBkBLpn41ieA+ULfmCXNXxnc7KJ8fHpNMo3lq5QIDJdlt9C8Gs80JLdUpDhK8TRY2tkKRC7eCzXFonq1jUx8HPw1AtnFu6gufJUdiW6oR24MFWmSKMDuYUa37A +LYX7zTYCYI5Q4GI16sPlvmMawcbVN1Gs5WEpbaimmkBtl3Y3w6cnbJCPCy48ArzBHhlInPWNrDSxIflU37Mw/IagXBT+8PJSJ1HHpgMLw6aKTnfEzyPiABwrdIFJeRWgvDQ9Jz3JcMEsJS1jJTcL+03Ui9OI3t/I8So4aDH0Aii4bvWcyg/+ +H7z6GRkzrYsEXtzdjLi3ipAKiP9sqsXB5XGVCKiJ2mjWvmzz5GYxEnDS08piG5NOjOIEnBgpNaNM3FC3zaGvJ2/28w8ln4lwZ70v5Jtv3hpJOpntNvADftD86GqGwG0NKrThfb9v4Atgd7g/S2AnaDPCuB0pFg7YYbjqV61ZMcnDGEKWSxqq +5ab/73AiZAH7TT9dVVvf7xf1GEQ1dVQKs21QJsk7Ae73ClXZjf29fuqM306ZCKClAe47sZRFT0o4ljty2WD1PoudlzwIMOL23nWBKo3Rtd4h6UHLjAMLkdKikGIuMilhBXor09iq8016EgagbpAOvDu+trhtvEZvD9fqb90KJryRVO1DJVuN +D8zN+NvjAvIA7ehxV2mAf3QGXlnVXHChxo0TiOgHElBEEFHH58KeYjwkYHOi1HyZmHsuiFdUMccVPNO1zFlQs7hPjiQjYth5u6K+Fo9blcjkpPeVcesaHwL94HIubacL/MHf4iupm7kIg+xWyWPwtz8dECW1YDr0/NhqpvfHIbzFhOnYhjGS +PW+2ZpMUNN7aoZGdODR3gviofGww0I0bVmSrNRLfxRbk+u2BpXdGlROhvzVBf7tQkFgO8jTq+mFBvOuOQRtBnOYo4GhAn0Lt9IgFmfuuTrttHm4p1wvCNpKCNMfC1+KXLCdcUQlRrjHAuW+C3pWDDtIK/yA9Ok/sT04BlXXDxftKJ20khidX +Nr4wmt9xZx48Cp+zJsFjQjaPQuN6gZwNl+h+OjOYaklxoWwbzaJeVP688LXk/VA2bhC1fjF1CNQqMqtWiI0FyMj58lDsn0TR28U109bHHSOFIEhWz9e2ru1aHGRgTiMIE4dng3wcgqawQJtPPN2qWNDuvnsfiIBysCa/TCf9QBEwO5eZjOOP +6hK/I8zLTEI2vwGPw0R3Io3zG3j46Svm1zHlbI47Mgt1vOMp93ipEnYvUh+qTlCZ5PlZ7nsdLBfYpmomyGfqUE2OLXZz8pL2I18fa+lPmrkcim+duAX+vAYTr0M7GHh/WbfWPWpPwMktV0Ye3RKPPZlVtjSsFSXNoTGkxm3/n5kfYA5n/x6C +A0uJES2LNHOO3tc6argk8czSMHtQxS19jEnsIrTxd/AIpf8MHm5IlhbFj2oCZB7pu1mU6HPIFZX3DzvIOLrOvgKdNqcTndW/N3ZhoengCtBD12+EbhWJiZba16e2tpbS3JzTzG4T+2ZDDb7WUMZP79it6ohvV5cHZ76tPSyJT+If8FL2+Vad +bRbKiAK4xYsmEW4Ao/Qzonq5SaFzalVUrvmIZfcFVTvPiRt93ABjL93vC/cvlxQeOzrFShIEHwgwyzB/OF8oGe6Os5O7+3Iq4oZU3xVX9f3c0bftKsfQ69xjog9fY3nD/pSGFu7r/Ny4wHO0i2hePE/s6knX4w5mC9iW8K6yYC+iOBC8m6j0 +6aDf1A1E//V7Ge1+XHZ0WfL6Vx53Ij/264e16SzcJQnBgURqRINeBfmo6I5CslMKYzNv5RYoMfFf3fh7c0vIuJ7NvljRTPzS6RqK/yGF4+GzzFvs3pisyttEXHXrqlTrun2nI3t8BwFuKwYdgPfK8oAI7BoTiF38k7osvpTh9sqDXN/iXcFF +ERg2OJR5zB/c7I/EQjsTMHjqH0Gjx1B/XOsy0OzBwoW0te3Nd+vxZAe/boWsb9fv8Y+jF3s67Kq1e4o94C4f/v6287iQ5M1OMxSmxJAcNGIDnxY6ZYAjaE8LCexOIdSKqzzoMXtDRm0dqCalD4+pabrsI8wyYJ8Lc9m3FHhmzviVWjMeVwhd +BesQzi3494tHTQeIvCTglDZj50BXNC7LLC6BIrmNGt/J9C/KQ196Ry67ch4AhHCsXFn+eSyCbD3eqP+9f7yhYnGgwQDtvOqdg6Bb7m1BXJeO4l8Px+wPzb0jplGA20Wd/XN5x+Cn2CgGpjjt1/g1Kod5M5GddVvmcCYkzNbd2BIWOVIk7m1R +B+A/MWJdFWUGPq4weZQ9AaIN+3PK5VxIoWyjR+nz5/g3pmhhDy/nr80HbohzM3PbJYXzdpvU3c1GkIoYAtgkJDnXaFEN+vlY17J5zM7hTIKOGM6Blos9S5rS+ED3yGFgVbJcTZx+ColWpwhOmzQb1mY2o8Nx45VfK6VPlKPdmYPuCsK/O3ET +6LRqOrQY5LbiH2TYKNjkJ03CMcK6e/H31OES16sj1ib5cL2dOck2jdvCX3mtfQWUImd/I2CHU1mfpeAxkyIx9dz9QpeaL6FefRmQSk8bE3FjNMzLvkI2Kie1KSvbE3d2itfa4+EO/TlGYCJqbjRWSDxF6LKs6MuFQeNnruJZHP72ajiZIu4s +qjiIYnXjeHQoIQbq++zk71ADUMjdoh+y3lsGZDLbO2qtxo0lypQQFfKLvDePzcmnPcNhTMssda/y+5Sn0zaA0gSkgr5/9rCPl0omsvhT3z0rcEjZTeD6cKHr4p1OuDnD8ZWUAp7NIlSbSWZy6k0X63AtOXDrE9MXPdgW65Zchm9ikUXaUMFk +Ln9xvoSG4traLGMT+zWPj3zCe6sMxMQ4m2xJIV2+SYjHk3aDx9GKM8Qi5/sTAqz67FsyOKTXi8OMrrBNWDz3eGzlq/gLx5YUy9HD3k+thL/5Ftt51lCOMikXrUczfrztzCrUaG77o83zo2Ljs2bW89251Hi3NmMRbux+Hbo+dNVnw3cNZxxn +dpMNimUqvL79vhUBx0BVDKtQiVJAmQ0D7XrH+M130BK020uAF590DjyEAziGaHfH1Rs8PTODd1J81ut7VdyRuehO99r3+m65xII8E5oKEBvlj4WizHAkLkgJIcfHBXY2pP2awS/tn3DztPdv1xPleGdIzrY+5YyH4Q7zYZGHOJATh5s8zxSc +HfoC98l5xUMLU0+/Hw3Dx0S1vG8RvZt06wch70gNw+3FC4kSeJTs6uNLgB8fVcE272UwkXaSjyzTX58B8sm9M8gqaTg1CaWVX42zTm11FRz6mbETOqhm06YV5Qmg2Kyej/8j9++r1ItPtPxVQ4E4krDunaqhUT7mDwYmkdPRjzbG3lid/cVE +3K766jPCpMlekDK5C0jRuaFWNSnTOppbLr2C0Nb0kHEpC8A9vh7dufvlL2mr4ODCnyBSPUauZFNUkTmLCRZw1mfhvoO2jD0d3hKIH8Z3EpKk7TIVondR+0YyQfwHlprSeRhWJaOIcIC57UPT8eP8zdxjvKFqJKwuPXYLXdN7SdbnAq3iNr8c +misN5JxN9zlpqE2tYUsESUdEjysEWtC5wJS7UHv8eLR0RdFjkQ73y6t3v1RkrMiK3d7fDi8v9DJ4X6LAm+nb5IW/TBYovr/HC49l2vCLbMBXqFfGzQhRgX30PIza7HdI3MMQOh0MdMpmo3T71VpLhKNLnCqwGrwgh7Xp+GX2Ro2DJ2a/5kfF +Oh406S8ldDb+NmoUBl4gmWQ8cmt4l1sQtmFae7nae1vQwq3iLIc3MP/3QTUT2HP06etqp6VPOrX/6u445VKF8is3ajrS5VlPOBFLz/Cxx9dZmjjMT3I3n0B5HAZp10CH0qXxIN5koyQR2Vq9TyJlN38/07ykUPCT+1VguFoKQtt8sztWr3LB +Dj9HngZMgF5vtQF6pnHR+vmbZGrR/iI8OLEc/Ski0OVGGVdIrXSlMp86JEY/V6A2ixoWsCZZVhdgr6zK1qLOeEsxTInA59rVbNNuRfhs3jLrhm+Gd0BSf9F5U2ur4uJbA4rk/zq5bkftaYMP1Qote8WTLesxSiTS5SB55nXNo/wNyMAspZ37 +pM8BhxXO59lRaJ6s3gfSrTVyRKhvKUxQVKmUbTNcMfucTZV8qGpC862wq779MjIxDmhWkiPCuPaD/wWRHUu9r8vWUvNAWWLL7FQM9rLVmZuVTN7im8+IP1Td2ayA50R8bijePLTVnB1LOk1jNbu4yRgwklFzwbwZTjC5liTK5Pw3NMu35gOw +WcIyFqcWEVuQvhA54HMtcsI2VSCim4fI+Jvtqws0FZlxTjf2opVJSIuzBvPfgDkn4NptJ7iPE54zW+GXichw4Qh/cQr3XBAfPkcsPU7LD+NH9k/CglAaSKPjEIkg5NJTc40sriVkCCoPLuhsnPbFmvNyxU/EjErJEJaH48+v2AJPWxzr7g7Z +jlArSu3GMK7kcz+8ou1t0oup7x5gRF5V3ovrIx0gxiyTaYk13lVQKmnv+iNv3jIXywtxnhG3/MqBCT+Z2nYLoRvYboJiZcFAN4C/ltdcy+Cq29n39sQUskYfWcVQK3hbHvPc6BNHGxqeGS6A8V5DlR6lrBeauY6bS+NTn1SI3pznU5gRUE+9 +PPTVtrEndEPMrckMzi6DTJmMBamIuf78d6TreouvfLUKmM6tq3Y7uLSpYZ3Hl/pb9qpvp6a/3SkNl84LqMooT8m1HvE/hvUCz/r3IMtYo9cpy/v1SE0vDki43M9PT8aikx1F3/B8tVzR928XRSmFTLVml23QCpuRQ5dE9tMfyXPapasTDewL +bNj+/a2DbH29gu8kF9BeV+JmqMBCDbDCis60P8LbqVl4pt1ze/LA9rjY4ndNmg+h4l6wNTHDeuDn6CklxlF1aU+AQcSfg8gtc2ps+OyQ3Zq5xhCeSdXgHxzYCE/YhhsBcVgLOwcNgPSJYlIxtXySR+SfvYjNUeQWJFUEcZooqWyy4lhmlA4x +hHbPg3dNG9wRzEzmBHgQyeHQPthFabXzIaeGVGsxHlrb+FQNahycHBVGlvhjnSJRIElbbV4VEUYQMSYHCW1YlyP/5/Re8uIE5l4SbAKiujC765u8lmiqa6khUdfppTn/pZWzvkM4dZto38MXPSE7+bD8P0o/9m4aG63aj5QiXb8OYT6OmSPe +r1xPY/xc5wb+xQbxdeV//55AMFpWZTWqF+SA4O/W+Pz+NYQspxcJ/FDqcc08lVdjt8SZmc98dDnyq5rmydoTS5vJ9Rv0YccmX73YDrgGGvVDcAoEECj8jkSQGc35ERjDfKCqFtK/geo71GLAlRW/F6EJMoit0e9ACyssE4cuoYl6JpIu4q2Q +BV6m1i8OABIZ1tlLIoX0cxY6tDRsxbXk34oeBjkj9r3GoRyiBsHLwSrnL/Df9Zz+hBsiUcTzhvSSY64IqTsoVsnGGz6cJXOAhyjmtmcG0L0FxVFp7sDOoi/4r8RE0DzcdtkqvxmjK0YkHwWoVnCCl/TQ7SXMd203wkdi7giyz80Fo61zdpK8 +sfAt1cup63U72LxI19sTXRh/oHaJmO7VWe4noGWLfvtKxgdk3QjJXfIN1Iwt0kIKw2AvT6dCsIfDRX+GEeb33cMlCTIuViCjhW3FlllS1pCXcoF3Hd+7YqiaM5L2C231MvTY3S6lpCIr/1z0puBeYpl4oqLlcRVLU+Mu0WnV7oeMPA77V+m3 +zwTD8vcxFBEn0OtkNLjdtXutRlLS1X2gtuhJ8xrgBY5DCBDIv7YUITGHBqV9X2Cu0nOohPKtIKvAzq+IHF1TxpKFXYVSqZEyTdK+3lH9EDoopyUjmlHINXbBnno/e3CxHP1m0dGvzCvYWvMtvkYLx/zWvWA3LkPP6YALNORlMZe5V+QcryA/ +X+whe5QezKQyP3wCI+yIJBBTv/BaEtu5fzDStHihWxnNPbiEM1j8kUGdvMhDwuxPCDsRRMFB+SalebK8Ta5gTP0FY4BUCtzBHjRBUb/dE0SeMd+knKGduNxDz/UHOWLOQEVNda8VhIYIPY7MabpfoKK4m3AVN8CMevQJLSQ+P1nS/bb/T9RJ +4WSQ+KgzQQOdt0MOh7QPn4/zfUAa82wdQFym6v/N6O3MHjeV8JIgDnsAqiLvfc8phrFxpiIK49Mq7KSfLZstEjyGAK45eAbhufM3FL5eKoO9ceL0STfH+JH0JA4tyMrDZWX664TfONottGQ+4g4ZsB01HnQae7EbWaWakk2jF+2VMTSvb/sl +tLkew8X7rj8MY52z6krvxPoce6z7MwnjdZKdUrUaqBHvlLbsaOj69Xz6VNzueS7l+2fr4jwCajYTlVJFVmJp370QMXnfVVoF7vHwp9bTrBnSQuBuLLTZfC7JpbLMV+UQn5tSL/PsX9W7XPL3svnNeu98muN4XdTpWX4/CpqDLTX7rZaduRfu +2pBamydKC1lSaPn7N109BligP7da5OxXtOTdTAJiO8yrtr9azcJODvj8/XEtMqIjSPTWuL8CaDKL2QXZzxqCr226jyGhw/fGOXmhafhkw8a4I1WSPqssWoJWa1JE2V2aIJz3g3EGhzgDdYGE921f6zMIg8pMAV3audwF7rcMGNEUG1ZxNLCG +1QV8d2SBsFAwY9VZm6n6Rol5mX9heZSvHUAAAAAAAVo+th3rV4OAAAeXTAtKYBLu2eNGxxGf7AgAAAAAEWVo=. \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/report2_test_grade.py b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/report2_test_grade.py new file mode 100644 index 0000000000000000000000000000000000000000..d35d464081aea7fee536c44ebc291e882d67be65 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/report2_test_grade.py @@ -0,0 +1,4 @@ +# report2_test.py +''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' +import bz2, base64 +exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/student_sources.zip b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/student_sources.zip new file mode 100644 index 0000000000000000000000000000000000000000..923416694a5d0aeed427d324405a01930fa42b09 Binary files /dev/null and b/examples/autolab_example_py_upload/instructor/tmp/cs105h/src/student_sources.zip differ diff --git a/examples/autolab_example_py_upload/instructor/tmp/cs105h/writeup/writeup.html b/examples/autolab_example_py_upload/instructor/tmp/cs105h/writeup/writeup.html new file mode 100644 index 0000000000000000000000000000000000000000..143cf421951567e72125afac9d98c62d74cb3b57 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/cs105h/writeup/writeup.html @@ -0,0 +1,5 @@ + + <html><body> + To hand in this assignment, upload the file <b>homework1.py</b> + </body></html> + \ No newline at end of file diff --git a/examples/autolab_example_py_upload/instructor/tmp/writeup/writeup.html b/examples/autolab_example_py_upload/instructor/tmp/writeup/writeup.html new file mode 100644 index 0000000000000000000000000000000000000000..143cf421951567e72125afac9d98c62d74cb3b57 --- /dev/null +++ b/examples/autolab_example_py_upload/instructor/tmp/writeup/writeup.html @@ -0,0 +1,5 @@ + + <html><body> + To hand in this assignment, upload the file <b>homework1.py</b> + </body></html> + \ No newline at end of file diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/report2_test.py b/examples/autolab_example_py_upload/students/cs102_autolab/report2_test.py new file mode 100644 index 0000000000000000000000000000000000000000..039ade86a6d8886ed0a17f87637047907a4f3fbb --- /dev/null +++ b/examples/autolab_example_py_upload/students/cs102_autolab/report2_test.py @@ -0,0 +1,69 @@ +from unitgrade.framework import Report +from unitgrade.evaluate import evaluate_report_student +from homework1 import add, reverse_list +from unitgrade import UTestCase, cache +import homework1 +import unittest + + +class Week1(UTestCase): + def test_add(self): + self.assertEqualC(add(2,2)) + self.assertEqualC(add(-100, 5)) + + def test_reverse(self): + self.assertEqualC(reverse_list([1, 2, 3])) + + def test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + +class Week1Titles(UTestCase): + """ The same problem as before with nicer titles """ + def test_add(self): + """ Test the addition method add(a,b) """ + self.assertEqualC(add(2,2)) + print("output generated by test") + self.assertEqualC(add(-100, 5)) + # self.assertEqual(2,3, msg="This test automatically fails.") + + def test_reverse(self): + ls = [1, 2, 3] + reverse = reverse_list(ls) + self.assertEqualC(reverse) + # Although the title is set after the test potentially fails, it will *always* show correctly for the student. + self.title = f"Checking if reverse_list({ls}) = {reverse}" # Programmatically set the title + + def ex_test_output_capture(self): + with self.capture() as out: + print("hello world 42") # Genereate some output (i.e. in a homework script) + self.assertEqual(out.numbers[0], 42) # out.numbers is a list of all numbers generated + self.assertEqual(out.output, "hello world 42") # you can also access the raw output. + + +class Question2(UTestCase): + @cache + def my_reversal(self, ls): + # The '@cache' decorator ensures the function is not run on the *students* computer + # Instead the code is run on the teachers computer and the result is passed on with the + # other pre-computed results -- i.e. this function will run regardless of how the student happens to have + # implemented reverse_list. + return reverse_list(ls) + + def test_reverse_tricky(self): + ls = (2,4,8) + ls2 = self.my_reversal(tuple(ls)) # This will always produce the right result, [8, 4, 2] + print("The correct answer is supposed to be", ls2) # Show students the correct answer + self.assertEqualC(reverse_list(ls)) # This will actually test the students code. + return "Buy world!" # This value will be stored in the .token file + + +class Report2(Report): + title = "CS 106a" + questions = [(Week1, 10), (Week1Titles, 6), (Question2, 10)] + pack_imports = [homework1] + +if __name__ == "__main__": + evaluate_report_student(Report2(), unmute=True) diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Question2.pkl b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Question2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bcfd4d4c0ec3b7fa90b9d5945812dfd05623770b Binary files /dev/null and b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Question2.pkl differ diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1.pkl b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1.pkl index ad7ddfc809f5bda52c1d7e563ee22f36ab221123..d7e897ace5ae661bbe6e4d3d29bff2c3dbbea55a 100644 Binary files a/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1.pkl and b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1.pkl differ diff --git a/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1Titles.pkl b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1Titles.pkl index f0cd99c72858c45d52215386019e7a4ed35e3342..3f846dd3e070d58ba594674b8ac74ebd84837781 100644 Binary files a/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1Titles.pkl and b/examples/autolab_example_py_upload/students/cs102_autolab/unitgrade_data/Week1Titles.pkl differ diff --git a/examples/autolab_example_py_upload/tmp/cs105_pyfile/src/report2_grade.py b/examples/autolab_example_py_upload/tmp/cs105_pyfile/src/report2_grade.py index ed7227f24103a00dfc8b261b6795896bd2a4f4d2..cb89f5a40b86e7388e579a0696d75b02fc26b199 100644 --- a/examples/autolab_example_py_upload/tmp/cs105_pyfile/src/report2_grade.py +++ b/examples/autolab_example_py_upload/tmp/cs105_pyfile/src/report2_grade.py @@ -1,4 +1,4 @@ -# cs102/report2.py +# cs102/report2_test.py ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/autolab_example_py_upload/twosumlab.png b/examples/autolab_example_py_upload/twosumlab.png new file mode 100644 index 0000000000000000000000000000000000000000..b192f20fd894abe4306de0c1fa7b1f9f1f6f12d7 Binary files /dev/null and b/examples/autolab_example_py_upload/twosumlab.png differ diff --git a/examples/autolab_example_py_upload/twosumlab.tar b/examples/autolab_example_py_upload/twosumlab.tar new file mode 100644 index 0000000000000000000000000000000000000000..b0ce70794d1577eb3206c5fe298d53ef5e13af6c Binary files /dev/null and b/examples/autolab_example_py_upload/twosumlab.tar differ diff --git a/examples/example_framework/instructor/cs102/report2_grade.py b/examples/example_framework/instructor/cs102/report2_grade.py index ed7227f24103a00dfc8b261b6795896bd2a4f4d2..cb89f5a40b86e7388e579a0696d75b02fc26b199 100644 --- a/examples/example_framework/instructor/cs102/report2_grade.py +++ b/examples/example_framework/instructor/cs102/report2_grade.py @@ -1,4 +1,4 @@ -# cs102/report2.py +# cs102/report2_test.py ''' WARNING: Modifying, decompiling or otherwise tampering with this script, it's data or the resulting .token file will be investigated as a cheating attempt. ''' import bz2, base64 exec(bz2.decompress(base64.b64decode('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'))) \ No newline at end of file diff --git a/examples/example_framework/instructor/output/report2.py b/examples/example_framework/instructor/output/report2.py index aa50d37bf51fc03215fc5872d4877289d60abe2b..16d830f1c05d60ea9656adc73f504c5dab5dd1b0 100644 --- a/examples/example_framework/instructor/output/report2.py +++ b/examples/example_framework/instructor/output/report2.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py from unitgrade import UTestCase, cache class Week1(UTestCase): diff --git a/examples/example_framework/instructor/output/report2_b.py b/examples/example_framework/instructor/output/report2_b.py index e5dc8fe9178b7ec1199e0f74700381379af011cc..e14f75cf25d8da29f86a70d6cff1a0b0511646e0 100644 --- a/examples/example_framework/instructor/output/report2_b.py +++ b/examples/example_framework/instructor/output/report2_b.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Week1Titles(UTestCase): """ The same problem as before with nicer titles """ def test_add(self): diff --git a/examples/example_framework/instructor/output/report2_c.py b/examples/example_framework/instructor/output/report2_c.py index 8b386384e5672619f390c1cb458986fed8409a3a..c47fa0b31b2d016e4ae11ef4544fdfb960167834 100644 --- a/examples/example_framework/instructor/output/report2_c.py +++ b/examples/example_framework/instructor/output/report2_c.py @@ -1,4 +1,4 @@ -# report2.py +# report2_test.py class Question2(UTestCase): @cache def my_reversal(self, ls): diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..50fd70cae5e15aa30e95150c5054ac51e504f089 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +mosspy +jinja2 +#unitgrade +setuptools==57 # This is because of pyminifier (mumble, grumble) +pyminifier diff --git a/src/unitgrade_private/autolab/autolab.py b/src/unitgrade_private/autolab/autolab.py index ce1313809525b13d2aaa5e4a8c306de6cf465cc1..25230471d8d59489fc139be1c73198e09fb820f9 100644 --- a/src/unitgrade_private/autolab/autolab.py +++ b/src/unitgrade_private/autolab/autolab.py @@ -73,7 +73,14 @@ def paths2report(base_path, report_file): def run_relative(file, base): relative = os.path.relpath(file, base) mod = os.path.normpath(relative)[:-3].split(os.sep) - os.system(f"cd {base} && python -m {'.'.join(mod)}") + for pyver in ["python", "python3", "python3.9"]: + code = os.system(f"cd {base} && {pyver} -m {'.'.join(mod)}") + if code == 0: + return code + raise Exception("Could not run the file", file, "in dir", dir) + + + def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, INSTRUCTOR_GRADE_FILE, STUDENT_BASE, STUDENT_GRADE_FILE, @@ -111,6 +118,7 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I # Now we have the instructor token file. Let's get the student token file. total_ = res['total'][1] problems = [] +<<<<<<< HEAD problems.append(dict(name='Unitgrade score', description='Score obtained by automatic grading', max_score=total_, optional='false')) problems.append(dict(name='Written feedback', description='Written (TA) feedback', max_score=0, optional='true')) # print(problems) @@ -120,6 +128,20 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I run_relative(STUDENT_GRADE_FILE, STUDENT_BASE) +======= + problems.append(dict(name='Unitgrade score', description='Automatic score as computed using the _grade.py script', max_score=total_, optional='false')) + print(problems) + sc = [('Total', res['total'][0])] + [(q['title'], q['obtained']) for k, q in res['details'].items()] + ss = ", ".join([f'"{t}": {s}' for t, s in sc]) + scores = '{"scores": {' + ss + '}}' + print(scores) + # Quickly make student .token file to upload: + # os.system(f"cd {os.path.dirname(STUDENT_HANDOUT_DIR)} && python -m programs.{os.path.basename(INSTRUCTOR_GRADE_FILE)[:-3]}") + # os.system(f"cd {STUDENT_HANDOUT_DIR} && python {os.path.basename(INSTRUCTOR_GRADE_FILE)}") + # handin_filename = os.path.basename(STUDENT_TOKEN_FILE) + run_relative(os.path.join(STUDENT_BASE, STUDENT_GRADE_FILE), STUDENT_BASE) + # if student_should_upload_token: +>>>>>>> 0429c721315832077f7682929c6f3a40449d85fc STUDENT_TOKEN_FILE = glob.glob(os.path.dirname(STUDENT_GRADE_FILE) + "/*.token")[0] handin_filename = os.path.basename(STUDENT_TOKEN_FILE) for _ in range(3): @@ -140,7 +162,6 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I INSTRUCTOR_REPORT_FILE = INSTRUCTOR_GRADE_FILE[:-9] + ".py" print("Making data...") - # /home/tuhe/Documents/unitgrade_private_v1/examples/example_simplest/instructor/programs/report5.py" data = { 'base_name': base_name, @@ -158,7 +179,7 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I 'student_should_upload_token': student_should_upload_token, 'homework_file': homework_file, 'student_token_src_filename': student_token_src_filename, - # 'homework_file_basename': + 'description': f'Upload the file {homework_file}' if homework_file is not None else handin_filename } print("> Running jinja2") # shutil.copyfile(TEMPLATE_BASE + "/hello.yml", f"{LAB_DEST}/{base_name}.yml") @@ -191,7 +212,7 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I os.mkdir(LAB_DEST + "/handin") os.mkdir(LAB_DEST + "/test-autograder") # Otherwise make clean will screw up. print(f"cd {LAB_DEST} && make && cd {CURDIR}") - cmd = f"cd {LAB_DEST} && make && cd {CURDIR}" + # cmd = f"cd {LAB_DEST} && make && cd {CURDIR}" os.system(f"cd {LAB_DEST} && make && cd {CURDIR}") # os.system(f"cd {LAB_DEST} && make handout") @@ -201,9 +222,52 @@ def new_deploy_assignment(base_name, INSTRUCTOR_REPORT_CLASS, INSTRUCTOR_BASE, I print("Ran make command...") if output_tar is None: output_tar = os.getcwd() + "/" + base_name + ".tar" - print("Making archive") + # Making the writeup-directory. + os.mkdir(LAB_DEST + "/writeup") + + writeup_template = f""" + <html><body> + To hand in this assignment, upload the file <b>{handin_filename}</b> + </body></html> + """ + writeup = Environment(loader=FileSystemLoader("./")).from_string(writeup_template).render(data) + with open(LAB_DEST + "/writeup/writeup.html", 'w') as f: + f.write(writeup) + shutil.make_archive(output_tar[:-4], 'tar', root_dir=COURSES_BASE, base_dir=base_name) print("Log in to autolab, go to 'install assessment', upload the tar file", output_tar) + # Lets try an alternative creation procedure. + if os.path.exists(f"{LAB_DEST}/{base_name}-handout"): + shutil.rmtree(f"{LAB_DEST}/{base_name}-handout") + if os.path.exists(f"{LAB_DEST}/{base_name}-autograde"): + shutil.rmtree(f"{LAB_DEST}/{base_name}-autograde") + shutil.copytree(STUDENT_BASE, f"{LAB_DEST}/{base_name}-handout") + shutil.copytree(STUDENT_BASE, f"{LAB_DEST}/{base_name}-autograde") + shutil.copyfile(STUDENT_TOKEN_FILE, f"{LAB_DEST}/{base_name}-autograde/{student_token_src_filename}") + + jj(TEMPLATE_BASE + "/src/driver_python.py", f"{LAB_DEST}/{base_name}-autograde/driver_python.py", data) + jj(TEMPLATE_BASE + "/autograde-Makefile", f"{LAB_DEST}/{base_name}-autograde/autograde-Makefile", data=data) + # shutil.copyfile(STUDENT_TOKEN_FILE, f"{LAB_DEST}/{base_name}-autograde/{student_token_src_filename}") # Why is this needed? TBH it is not needed, really. + shutil.copyfile(INSTRUCTOR_GRADE_FILE, f"{LAB_DEST}/{base_name}-autograde/{os.path.basename(INSTRUCTOR_GRADE_FILE)}") + + autograde_makefile_template = f""" +all: + tar xf autograde.tar + cp {handin_filename} {base_name}-autograde + (cd {base_name}-autograde; python3 driver_python.py) + +clean: + rm -rf *~ {base_name}-autograde +""".strip() + autograde_makefile = Environment(loader=FileSystemLoader("./")).from_string(autograde_makefile_template).render(data) + with open(f"{LAB_DEST}/autograde-Makefile", 'w') as f: + f.write(autograde_makefile) + # Check if you need to make the autograder... + + # Make the autograder and the handouts... + shutil.make_archive(f"{LAB_DEST}/autograde", 'tar', root_dir=f"{LAB_DEST}", base_dir=f"{base_name}-autograde") + shutil.make_archive(f"{LAB_DEST}/cs105h-handout", 'tar', root_dir=f"{LAB_DEST}", base_dir=f"{base_name}-handout") + shutil.make_archive(output_tar[:-4], 'tar', root_dir=COURSES_BASE, base_dir=base_name) return output_tar def deploy_assignment(base_name, INSTRUCTOR_BASE, INSTRUCTOR_GRADE_FILE, STUDENT_BASE, STUDENT_GRADE_FILE, diff --git a/src/unitgrade_private/autolab/lab_template/autograde-Makefile b/src/unitgrade_private/autolab/lab_template/autograde-Makefile index 55d8a7d5b5059d6cd28c8c3a3e157019e175e8d5..6be4b0659ec23d15826c66d2e9e6c610624c176d 100644 --- a/src/unitgrade_private/autolab/lab_template/autograde-Makefile +++ b/src/unitgrade_private/autolab/lab_template/autograde-Makefile @@ -4,4 +4,4 @@ all: (cd {{base_name}}-handout; python3 driver_python.py) clean: - rm -rf *~ hello3-handout + rm -rf *~ {{base_name}}-handout diff --git a/src/unitgrade_private/autolab/lab_template/hello.yml b/src/unitgrade_private/autolab/lab_template/hello.yml index f5df4d46cb62f783efef5694ddffc4ca139feaca..a2e18477b8336fb537dfa2c8a84ef839ba4d45a9 100644 --- a/src/unitgrade_private/autolab/lab_template/hello.yml +++ b/src/unitgrade_private/autolab/lab_template/hello.yml @@ -2,13 +2,13 @@ general: name: {{ base_name }} - description: '' + description: '{{description}}' display_name: {{ display_name }} handin_filename: {{ handin_filename }} handin_directory: handin max_grace_days: 0 handout: {{ base_name }}-handout.tar - writeup: writeup/{{base_name}}.html + writeup: writeup/writeup.html max_submissions: -1 disable_handins: false max_size: 2 diff --git a/src/unitgrade_private/autolab/lab_template/src/driver_python.py b/src/unitgrade_private/autolab/lab_template/src/driver_python.py index e0554527f13653c439dbb17ecb95ab52d3a0cc57..5a21791060c91f01fe99996b8f85f84fd7b83539 100644 --- a/src/unitgrade_private/autolab/lab_template/src/driver_python.py +++ b/src/unitgrade_private/autolab/lab_template/src/driver_python.py @@ -44,54 +44,49 @@ if not verbose: print(f"{student_token_file=}") print(f"{instructor_grade_script=}") - print("Current directory", os.getcwd()) print("student_token_file", student_token_file) for f in glob.glob(os.getcwd() + "/*"): print(f) - -command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, grade_file_relative_destination) -# Alternatively. Unzip the .token file of the student (true version). Overwrite the .py file with the one uploaded, then -# run the stuff. -if not student_should_upload_token: - """ Add the student homework to the right location. """ - print("Moving from", os.path.basename(handin_filename), "to", handin_filename) - print("file exists?", os.path.isfile(os.path.basename(handin_filename))) - shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) - -command = f"cd tmp && {command} --noprogress --autolab" - -def rcom(cm): - rs = subprocess.run(cm, capture_output=True, text=True, shell=True) - print(rs.stdout) - if len(rs.stderr) > 0: - print(tag, "There were errors in executing the file:") - print(rs.stderr) - -start = time.time() -rcom(command) -ls = glob.glob(token) -f = ls[0] -results, _ = load_token(ls[0]) +try: + # This is how we get the student file structure. + command, host_tmp_dir, token = student_token_file_runner(host_tmp_dir, student_token_file, instructor_grade_script, + grade_file_relative_destination) + # run the stuff. + if not student_should_upload_token: + """ Add the student homework to the right location. """ + print("Moving uploaded file from", os.path.basename(handin_filename), "to", handin_filename) + # print("file exists?", os.path.isfile(os.path.basename(handin_filename))) + shutil.move(os.path.basename(handin_filename), host_tmp_dir + "/" + handin_filename) + + command = f"cd tmp && {command} --noprogress --autolab" + def rcom(cm): + rs = subprocess.run(cm, capture_output=True, text=True, shell=True) + print(rs.stdout) + if len(rs.stderr) > 0: + print(tag, "There were errors in executing the file:") + print(rs.stderr) + + start = time.time() + rcom(command) + ls = glob.glob(token) + f = ls[0] + results, _ = load_token(ls[0]) + +except Exception as e: + if not student_should_upload_token: + print(tag, "A major error occured while starting unitgrade.") + print(tag, "This can mean the grader itself is badly configured, or (more likely) that you submitted a completely wrong file.") + print(tag, "The following is the content of the file you uploaded; is it what you expect?") + with open(host_tmp_dir + "/" + handin_filename, 'r') as f: + print( f.read() ) + print(" ") + print(tag, "If you cannot resolve the problem, please contact the teacher and include details such as this log, as well as the file you submitted.") + + raise e if verbose: - print(f"{token=}") - print(results['total']) + print(tag, f"{token=}") + print(tag, results['total']) format_autolab_json(results) - -# if os.path.exists(host_tmp_dir): -# shutil.rmtree(host_tmp_dir) -# with io.BytesIO(sources['zipfile']) as zb: -# with zipfile.ZipFile(zb) as zip: -# zip.extractall(host_tmp_dir -# print("="*10) -# print('{"scores": {"Correctness": 100, "Problem 1": 4}}') -## Format the scores here. - -# sc = [('Total', results['total'][0])] + [(q['title'], q['obtained']) for k, q in results['details'].items()] -# ss = ", ".join([f'"{t}": {s}' for t, s in sc]) -# scores = '{"scores": {' + ss + '}}' -# print('{"_presentation": "semantic"}') -# print(scores) - diff --git a/src/unitgrade_private/docker_helpers.py b/src/unitgrade_private/docker_helpers.py index 806c2b39c6782ed377ab0d4cf70a36d03940fd7b..0b82a931c0268a356ee54f777fbc7ed0ef095e3f 100644 --- a/src/unitgrade_private/docker_helpers.py +++ b/src/unitgrade_private/docker_helpers.py @@ -38,7 +38,8 @@ def compile_docker_image(Dockerfile, tag=None, no_cache=False): base = os.path.dirname(Dockerfile) if tag == None: tag = os.path.basename(base) - os.system(f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} .") + cmd = f"cd {base} && docker build {'--no-cache' if no_cache else ''} --tag {tag} ." + os.system(cmd) return tag diff --git a/src/unitgrade_private/hidden_gather_upload.py b/src/unitgrade_private/hidden_gather_upload.py index a044bf7e58744d620080a021222665a91d96e5f7..f83f278c0567db0e74a63c0d01727a9d53b5e4ee 100644 --- a/src/unitgrade_private/hidden_gather_upload.py +++ b/src/unitgrade_private/hidden_gather_upload.py @@ -218,7 +218,9 @@ def load_token(file_in): def source_instantiate(name, report1_source, payload): + # print("Executing sources", report1_source) eval("exec")(report1_source, globals()) + # print("Loaind gpayload..") pl = pickle.loads(bytes.fromhex(payload)) report = eval(name)(payload=pl, strict=True) return report