From b16bfcfd4324491c98e86a63a53c5777708a5c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Schr=C3=B6der?= Date: Fri, 4 Aug 2023 16:44:31 +0200 Subject: [PATCH] changed python tools to python3.11 --- 04_Machine_Language/Makefile | 10 ++++++---- 06_IO_Devices/01_UartTX/Makefile | 4 +++- 06_IO_Devices/02_UartRX/Makefile | 4 +++- 06_IO_Devices/03_SPI/Makefile | 4 +++- 06_IO_Devices/04_SRAM/Makefile | 4 +++- 06_IO_Devices/05_GO/Makefile | 4 +++- 07_Operating_System/01_GPIO_Test/Makefile | 10 ++++++---- 07_Operating_System/02_UART_Test/Makefile | 10 ++++++---- 07_Operating_System/03_Sys_Test/Makefile | 10 ++++++---- 07_Operating_System/04_Memory_Test/Makefile | 10 ++++++---- 07_Operating_System/05_Array_Test/Makefile | 10 ++++++---- 07_Operating_System/06_Math_Test/Makefile | 10 ++++++---- 07_Operating_System/07_String_Test/Makefile | 10 ++++++---- 07_Operating_System/08_StdIO_Test/Makefile | 10 ++++++---- 07_Operating_System/09_Screen_Test/Makefile | 10 ++++++---- 07_Operating_System/10_Output_Test/Makefile | 10 ++++++---- 07_Operating_System/11_Touch_Test/Makefile | 10 ++++++---- 07_Operating_System/12_Tetris/Makefile | 10 ++++++---- Revision.md | 18 ++++++++++++++++++ tools/Assembler/assembler.pyc | Bin 1239 -> 3783 bytes tools/Assembler/code.pyc | Bin 1667 -> 2481 bytes tools/Assembler/parser.pyc | Bin 2671 -> 4535 bytes tools/Assembler/symbolTable.pyc | Bin 1666 -> 2474 bytes tools/JackCompiler/CompilationEngine.pyc | Bin 12218 -> 27927 bytes tools/JackCompiler/JackAnalyser.pyc | Bin 1150 -> 2745 bytes tools/JackCompiler/JackCompiler.pyc | Bin 783 -> 1716 bytes tools/JackCompiler/JackTokenizer.pyc | Bin 2619 -> 5268 bytes tools/JackCompiler/SymbolTable.pyc | Bin 1569 -> 2471 bytes tools/JackCompiler/VMCodeWriter.pyc | Bin 1944 -> 3346 bytes tools/VMTranslator/VMTranslator.pyc | Bin 2064 -> 5587 bytes tools/VMTranslator/codeWriter.pyc | Bin 6293 -> 11335 bytes tools/VMTranslator/parser.pyc | Bin 2627 -> 5182 bytes 32 files changed, 111 insertions(+), 57 deletions(-) diff --git a/04_Machine_Language/Makefile b/04_Machine_Language/Makefile index 34aa8bd..1d018e2 100644 --- a/04_Machine_Language/Makefile +++ b/04_Machine_Language/Makefile @@ -1,12 +1,14 @@ +PYTHON = /bin/python3.11 + leds: - ../tools/Assembler/assembler.pyc leds.asm + $(PYTHON) ../tools/Assembler/assembler.pyc leds.asm cp leds.hack ../05_Computer_Architecture/04_HACK/ROM.hack mult: - ../tools/Assembler/assembler.pyc mult.asm + $(PYTHON) ../tools/Assembler/assembler.pyc mult.asm cp mult.hack ../05_Computer_Architecture/04_HACK/ROM.hack upload: - ../tools/Assembler/assembler.pyc leds.asm - ../tools/AsciiToBin.py leds.hack + $(PYTHON) ../tools/Assembler/assembler.pyc leds.asm + $(PYTHON) ../tools/AsciiToBin.py leds.hack iceprogduino -o 64k -w leds.bin clean: rm -f *.hack *~ *.bin diff --git a/06_IO_Devices/01_UartTX/Makefile b/06_IO_Devices/01_UartTX/Makefile index 9a48181..8620548 100644 --- a/06_IO_Devices/01_UartTX/Makefile +++ b/06_IO_Devices/01_UartTX/Makefile @@ -1,9 +1,11 @@ +PYTHON = /bin/python3.11 + NAME = hello all: asm install asm: - ../../tools/Assembler/assembler.pyc $(NAME).asm + $(PYTHON) ../../tools/Assembler/assembler.pyc $(NAME).asm install: cp $(NAME).hack ../00_HACK/ROM.hack clean: diff --git a/06_IO_Devices/02_UartRX/Makefile b/06_IO_Devices/02_UartRX/Makefile index 0a47836..eae21f1 100644 --- a/06_IO_Devices/02_UartRX/Makefile +++ b/06_IO_Devices/02_UartRX/Makefile @@ -1,9 +1,11 @@ +PYTHON = /bin/python3.11 + NAME = echo all: asm install asm: - ../../tools/Assembler/assembler.pyc $(NAME).asm + $(PYTHON) ../../tools/Assembler/assembler.pyc $(NAME).asm install: cp $(NAME).hack ../00_HACK/ROM.hack clean: diff --git a/06_IO_Devices/03_SPI/Makefile b/06_IO_Devices/03_SPI/Makefile index 2f8c32f..1ba9f7e 100644 --- a/06_IO_Devices/03_SPI/Makefile +++ b/06_IO_Devices/03_SPI/Makefile @@ -1,9 +1,11 @@ +PYTHON = /bin/python3.11 + NAME = cat all: asm install asm: - ../../tools/Assembler/assembler.pyc $(NAME).asm + $(PYTHON) ../../tools/Assembler/assembler.pyc $(NAME).asm install: cp $(NAME).hack ../00_HACK/ROM.hack clean: diff --git a/06_IO_Devices/04_SRAM/Makefile b/06_IO_Devices/04_SRAM/Makefile index a75d001..e83502d 100644 --- a/06_IO_Devices/04_SRAM/Makefile +++ b/06_IO_Devices/04_SRAM/Makefile @@ -1,9 +1,11 @@ +PYTHON = /bin/python3.11 + NAME = buffer all: asm install asm: - ../../tools/Assembler/assembler.pyc $(NAME).asm + $(PYTHON) ../../tools/Assembler/assembler.pyc $(NAME).asm install: cp $(NAME).hack ../00_HACK/ROM.hack clean: diff --git a/06_IO_Devices/05_GO/Makefile b/06_IO_Devices/05_GO/Makefile index 465dad0..441ca8c 100644 --- a/06_IO_Devices/05_GO/Makefile +++ b/06_IO_Devices/05_GO/Makefile @@ -1,9 +1,11 @@ +PYTHON = /bin/python3.11 + NAME = boot all: asm install asm: - ../../tools/Assembler/assembler.pyc $(NAME).asm + $(PYTHON) ../../tools/Assembler/assembler.pyc $(NAME).asm install: cp $(NAME).hack ../00_HACK/ROM.hack clean: diff --git a/07_Operating_System/01_GPIO_Test/Makefile b/07_Operating_System/01_GPIO_Test/Makefile index 29614ad..3594777 100644 --- a/07_Operating_System/01_GPIO_Test/Makefile +++ b/07_Operating_System/01_GPIO_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = /bin/python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/02_UART_Test/Makefile b/07_Operating_System/02_UART_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/02_UART_Test/Makefile +++ b/07_Operating_System/02_UART_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/03_Sys_Test/Makefile b/07_Operating_System/03_Sys_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/03_Sys_Test/Makefile +++ b/07_Operating_System/03_Sys_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/04_Memory_Test/Makefile b/07_Operating_System/04_Memory_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/04_Memory_Test/Makefile +++ b/07_Operating_System/04_Memory_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/05_Array_Test/Makefile b/07_Operating_System/05_Array_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/05_Array_Test/Makefile +++ b/07_Operating_System/05_Array_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/06_Math_Test/Makefile b/07_Operating_System/06_Math_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/06_Math_Test/Makefile +++ b/07_Operating_System/06_Math_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/07_String_Test/Makefile b/07_Operating_System/07_String_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/07_String_Test/Makefile +++ b/07_Operating_System/07_String_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/08_StdIO_Test/Makefile b/07_Operating_System/08_StdIO_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/08_StdIO_Test/Makefile +++ b/07_Operating_System/08_StdIO_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/09_Screen_Test/Makefile b/07_Operating_System/09_Screen_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/09_Screen_Test/Makefile +++ b/07_Operating_System/09_Screen_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/10_Output_Test/Makefile b/07_Operating_System/10_Output_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/10_Output_Test/Makefile +++ b/07_Operating_System/10_Output_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/11_Touch_Test/Makefile b/07_Operating_System/11_Touch_Test/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/11_Touch_Test/Makefile +++ b/07_Operating_System/11_Touch_Test/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/07_Operating_System/12_Tetris/Makefile b/07_Operating_System/12_Tetris/Makefile index 29614ad..50a597d 100644 --- a/07_Operating_System/12_Tetris/Makefile +++ b/07_Operating_System/12_Tetris/Makefile @@ -1,13 +1,15 @@ +PYTHON = python3.11 + all: jack vm asm bin sim jack: - ../../tools/JackCompiler/JackCompiler.pyc ./ + $(PYTHON) ../../tools/JackCompiler/JackCompiler.pyc ./ vm: - ../../tools/VMTranslator/VMTranslator.pyc ./ + $(PYTHON) ../../tools/VMTranslator/VMTranslator.pyc ./ asm: - ../../tools/Assembler/assembler.pyc out.asm + $(PYTHON) ../../tools/Assembler/assembler.pyc out.asm bin: - ../../tools/AsciiToBin.py out.hack + $(PYTHON) ../../tools/AsciiToBin.py out.hack sim: cp out.hack ../00_HACK/ROM.hack upload: diff --git a/Revision.md b/Revision.md index 9d5c220..e4662a1 100644 --- a/Revision.md +++ b/Revision.md @@ -1,17 +1,32 @@ # Revision V2.0 +## update 04.08.2023 + +### update tools to python3.11: + +- `tools/Assembler/assembler.pyc`: update tools to python 3.11 +- `tools/Jack/JackCompiler.pyc`: update tools to python 3.11 +- `tools/Jack/VMTranslator.pyc`: update tools to python 3.11 + +### corrected: + +- corrected diagramms: leds.png, mult.png + ## update 18.10.2022 ### correct typos: + * `Hack/CPU.v`: Replace `loadM` with `writeM` * update diagramms ### update tools to python3.10: + * `tools/Assembler/assembler.pyc`: update tools to python 3.10 * `tools/Jack/JackCompiler.pyc`: update tools to python 3.10 * `tools/Jack/VMTranslator.pyc`: update tools to python 3.10 ### update Jack-OS: + * `Jack/UART.jack`: replace `init()` with `init(int addr)` ### wierd behaviour of iCE40HX8K-EVB: @@ -21,10 +36,13 @@ * `Hack/Clock.v`: 25MHz? ### iceprog: programmer.ino + * set default to `bridge` (led green on). ### consistency: + * `Hack/Reset.v`: ### boot from spi + * 04_Hack-FLASH diff --git a/tools/Assembler/assembler.pyc b/tools/Assembler/assembler.pyc index 49e4a7dda3965ab9df95bc2121fb5567f8c16926..2362a30af7e41d88c34f5ab063e19f1baa918371 100755 GIT binary patch literal 3783 zcmcImU2NOd6~2^6i6SLY{z>E5v8&ih9NCs#H${HzCXL{vZT#1!F}h9(P|)JF%}A64 zQpsi;2IxXqnZQ64BY>SCK!iP{=@MYsuwiXctgm~>11S(N!6yTIGWz1BZ++P=>BttH zIu*9=lGHi(-t+sNb18li2v7ix=Z~Lp1_8i7tx08gUobyRk^rm#4sci+BrNJmV}dK; z!YtmMc28IoPvZiSATZzp&;!BMiZ*zN0q__-TZ1D~Zi^F7Avu!slzcBX9Hd&G0|&PE zoVJ`Z+cUUo=VK{wyFAh?d2-QDPP3I2$F2564+*)k{Cd8joX`5j8hJ}uI{UB zrtCaL53J+7a{+*&${00UdF>Te{#vt@{kyEJLZ;MIS*xbV;!gRhHk{cxDC&Br_W)a6sh)F;ho;mcLa6`L>o4&?eQpPdOl=D35tlry3h}O zX;zrbrYG3RG~BTMq2^w@Cb83SAUr=HErj2m;?pq03h>N^^_ek;_p*{ONA%9H$&`ux zW+P-RcAWp{qk-_2p)EB&W7D4SD4&6dJLb(6@6d?s&t zrm~{I=1m;_mPfzY91`$~FqdYN&?Khptnew6qKV~Ax5y&Oo6HO=jb%kRlobRv!%3!> z<*u_Cq(LXQmL_I%(DcPW9r|EwEIxkD^bPH>quVT*%x3Z|pFz=Yg=&&4$DPmQ#aR^%~-dWI8LsFToEe zZSdo{zL~55`vg8Y!}d+{`7}G(mqC%gnTL6imts@7X|^w)&8DTkxFkUVm0s+V#AF{^ znf2yoeOvs`FmQz4DOa zULqIA3S-6oGTx}-jRx+M&#P4X8Wk;5(MKImjy~;w(ydX)b?Uf=pV09WDt^Mi{qj)Z zedXffNMS@CS@%#fryN^4S&T0YuF-8}x^4A(X{yqe|Rh4y-ZZG7~PTI?H%=0<@8NC=N M1Z4XX-$aN0KWoJHfB*mh delta 752 zcmZXSyKWOf6ozLe_IkYD9q%Rq+mJXngh&vG1|cDYQl_A!Kr1AaWKNU#f_6obhAmbp zBPGfU>{N8T0ws?Ca)FR|f)r3t@z1PnSz=c+bIyM*`sQf9u77Jj8i%3J@V$yZAAhei z_RBhpp9g0jD|;^3)x+JKJYpw}g6sO}Qo2V{du7uqn)R6B1?P-d>1)`qS}xM)u`Roik6H~d2Dm4_MhNB0*&vmXlxkwcJEpuAmfR3?UP z*&;WO2nBOJ>FWr$>>HkJlB7)vb$o%`(KafpVPa;0T+z$41#QdV<{d^hzCE>fVDD7+ zVwd)O9G@sG@0sg!`LieRJ|?x}v8G8YI~yL22d@v029(yWKQ{m5=@W$A_BS}pG8)>@ zTM9|rW2+xPVro8$qvONmwP^R7_b<2C$JNUoq%OYt?>k&wT=5HT0^aVlGh S+K6|ZXY(U2AK0chLHrMT-m16& diff --git a/tools/Assembler/code.pyc b/tools/Assembler/code.pyc index 5d6635ceac5f58990f2f1d0e58dbeff3f421448f..bbede6be002716dcab553d86d5628e2870d2b29b 100644 GIT binary patch literal 2481 zcmds&@oQ686vyvVExWmwu*8pupQ2ADT2V}Lba-vIL)`|AT0TKoafV>RQ^ zG_Tf#8XjHWt;0X?7hYgDlILGwTFG;gXX9Mzc3s4MlG~COCATE6N?x*k5E8}l@>BCl zty(s#%cUzt^YU`NQoLxc6j!YIdbuu^?c}A^%SE$Zt5s|>Yun}O#Y$P2wkVmUnpHl! zdQBQu8A?PTA=b4kVA`zX545ubW+dEYe%~k=hj&7IoYMChC({W>ob2o9&u5{q^Y!)2 zjm({yo5fqP+p+7X?(O~I+>aAKO>Bpzw~Xl>sK-33hyRUMF9_>%m$hL1)JkYe$hu;K z_^*}n69<$&L_DlGNE}kUhj>JBm^h+%lz2?>Tf}=6j}z}xJVE@n;z{Cn6i*TFSA2l@ zUB&MaPb-cRA5?sZct-JI;vNpU^yH;!g`9R6%ZgPL?%h=Q?}o8zd91$*Q*|L zbHX#wb1^q3QHwNs#-O$OIf0wwWg%)JT69m5=r;@YMqHD=Rk6HMm;OsNQ7zUVaWM=J z*~WE_iZDKJqg1P|ieum++P{DVCrn_-nc2MBzS@aQI@fm7;mx)7+TUnzexEnXKcyp^ z>+N;b%m0g>8N*w_=+ofrZ^7Azd^9jeGV$T3*Z%C4t6%qp+|A~v*@KC zF)@#ub#NPh*??{Q8O)wRWerSk8z0(iv>TnsxYNLG+}|Gm7KKKg1-`G#lv(Fve5}iM8%qBQ D(D`4C literal 1667 zcmchY&vOhx6vw+~W`7_X2_Zp{M1&QanT_8ng=H0`>=xprN|nvN4PiI4dL~t@jZ($Q z$;rt9CocY=KB;o@FF5(Ww>yf;!HJ&g?$5X1n|{5oyJy2(ZnHv34SlJ9O)K?{#qY&| zxPTgsqaj85mAa$IAs4+Sk5cFzN-wH>rmo?VloY^4y@VRwLPL68qdKT=SC!S>k#(=@ zk@LtgL*!!2BM-b2?0{3?aj<@zja65_)M%ZTdQ_ozxktow^*bh3R#(1rXsgRsm-5=W zQEc)lt0SvxR+H5&tLvYY8GzG|^ZtXd)$m&@^#?Wo{z}}eE%~dpRho|*u~~@<%kBF$ zKMuoYqT(OPOYj31f0Uk|A<*M4d}YD6)|i^kA+nx8BlZhO^vF{aHRjDKW=U-3{S zBTGFZd4a6W$NLM-#%6;ANT;J^*gg zwD3W&p&8*r;3srgI1heKM}%j=ujr_70sNZggnjTE3WST`w=^$&4E&Cc3!eagq?5v@ zz@O;!B2EUKd9SThBs<4t3vMSGVI4(WK@qQ^;3JjPOo&~Y>RjI$`esos+UN8DgGADB2mS>VV zMRmm{Ifkv(l9186Sd?bO*}grt>+z^YMYhS*ru05)2hXvwaFmKazA@bj&ttS z!&aNGQ52&|F4zC+2XUEAfWR9rF&_xI#02=)mzX~e`QfTn*2P{}_u7@)OhwS;o1mhM zU1s93>#$_RJ~wPxd-d^_=9qp~WS8(8=WWu#cH diff --git a/tools/Assembler/parser.pyc b/tools/Assembler/parser.pyc index 0ed86efe9ca076935eb24d3b29864ae8b6721d09..00d221fe459666f56a3dfc8705d7bb63c7ebe72f 100644 GIT binary patch literal 4535 zcmcgv&2JM&6rWkI?Ol5lJ70)|q)I3yEJ-0Lm5^F!nE1g z#4=J299)!xgCfOhdq}H_f^zHM(L+F%uvS8%YJ2d_G#n~l+V^I6C;s9?0y_5ocIM5# zH@|uFcINFbZEXPp{Pbjg33CP$O*#8HNxmkiI7dW>@s8bNYLYH z=%GwLOLTACeH8E1X>9jFWt}9*3}s|SV)PoB@i4G5BQp&as0#ouu%J`f`s&ueQ)hZ3>e#>j7W9ftyjHi;x*aG`> zX)$5>%%$X)sd-BV;i4taT|#6DGi}KWi7RQ{W65S>{=6k$P8rOiaTA#i4h~j>hYl~s z3^QRIT3oV}XmoaAHXV&-H1Omhw}oCYQvl1P)YYAnR|2KpzMNcCc9*($K{HtDM5)?v z>*%QvNgd#jn<#}l@<(p?^1i}&fqi$haCGD1t$jaT-nd)}cdx5A)WXoJwx;E^e=1&A zX&Z(lb?b?&@!CEIxK6TU4jifn9^vo&JP}k-B8^;)MgzR z#qWASj3Oi$e|2{KHFg8SKhJMhacq48e1lHCA4V4Q1?Gy&lWEWrJ*=&1R+P01ZlM;v zJ1g6oxv(ufA|y>7X>&#z1LptVs3B+6XIWp^pzR`NBP30;Q60My_TZ(5BL)U&mA+TT zt*J^6m+=*<(gS6DeaaZ|Wek`q)vNTlfu1Vc8gG}ep$7~+EG*y0e2cNviRk3%>FJ5c zlo3R^ddh8E>ZDsWAl!+eA%qax0d&dez(jYuvGd#?8ZHiv=jCE}u(YQ?FRumi@GEt8<`GS8bjgkyt<|q z##c4G*VuT_-nlYY7`mR!B?W`pZcq%a1q)|Z+wq=7|> z1Gkz<<<-3U6mG37Kd5)jGgx_wh8E6ERXilrpGz9MV5uXz7muukSTYffT7hUZnPQjb zv93j<7ca%;?H;4Yjg;Gj>)D}$A#5OEY@2TYEQ?=7QoV3+3Fsd8c2r0+*yhkk94=AZ zgM9lWh-xzy%vUg5nej3i@)jTS0{WQ`P+@*Rl_`J$rUC|808nE=z&57A3)yD81_q5@ zggpoY0Cfi>zLH31`%i#%l6ILu3pS~SJPfu+(f<`}_K!<{U^5oaL9#P)RZ5F(1nf2> zFIV9}-8pJE#1RJ+M9F%Z5}wi8QCg=-H$i_>*r4_%<%w9-DE|uuQX@IFm{_p<=V#{= zF*9j-=VuoZrX}NzFSX^1Ey5Gb^2X;=WVJR2uQhaZd2|t6UVk)V}-tsnbRpF zF=?lxW@eY;rUv;(pkiXwg12z?YbRGjYoQJKXZ6<5kHNd)ku7EP2@~57nwarH)&e!V z0BJinas@mj4E*}gDd%e(gL*Ane~f(-TZktz?G8()J&n)dD#OvCXgPI7&5wV}?>RN6 zHuJ(mh&y}?D)pIYZ6M>TYL}f?0^Ca@x@X6!{4i`}%7vLuhhzvPQ~6+LBUm|B7#}bx#`E%zA+j41>>@#^0B=L*5*mBl=(DF{(0_~2LN z=lGQ16VclZ9VG`5MiB5lH4Y#QBk;5LIM&`pz_hO>x8pwG1CL?{PSHM``8kJxTITlv z%i>pR4=sPV0~N`SXSIMZ^}b#q0%Yoi?@$5I9LJ^u&>Y341JFE(O$VOb6wlebk!=JL zRooTqbGm*`RppqSpS)w7fJbl#HO~Q5Je1Okbc{lV(F_k!_GqUgOM5A>Ylep?d(@(X Gv-=O%qe-Oz literal 2671 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 EH)C1;5&!@I literal 1666 zcmai!OK%%D5P(VUYPDWTj_bH_+%$<3=cOdJV%IQ=z$l_vjvK&L3`qt80|l`b*A5Fk zVsaC}iga>*NPG09Kc+`sd(yeLqKD3KBdwek$Otq1hUD@wGh(+;2nfg@Gru?2T|)ju zXHpz+o`LFFFgrvLK|g|?u>&GlofMrW^j{DL-ZN0W4kjW8RFDHEs9+z-fg>E@LhFi* z@Sx3ztni`r#FPl2&59hXnK!xmY5TC-YJ`Was7Ya+k>KJU=oYB{2aF_r!r?%D@(Ubj zlL*I>3zV_s0c9=uKvR~2O%hX)JEIlyb8bNU$=CUq_30U%C!6GCQ55XVY53-nr5T{F zEX@L4wloLywWTXS^OmjxEm-;n=$fT(fv#J+0d&*SBG4^Mw}F-{-2u95=^oI1OAmmG zmL38dvWYj=n-GETX+GsNT>xAEi4`Vew!vD_HWAkvy7 z0Pw|jMN&)8_ZyNSW%tXq25-EUPU_WOOV`e-@4b{6B(Gj8|HRAEOPz|$qQiDxNgu)8 z-Ku;qrw}uMs~a*vc5011nM3j_+t2rRp2&Ratja>_tjX!r`A%L+o%Nz)Xxn5|*g1}j zqhnQM#??{l$WVDs)Dm3s?-!*v-F8%J%jTP~bS&dmcv$L$9kCWiv66cE=io4yG zE|s;8+E8t(q*b$|)ACz+dun{nWk<%GV`%jgFdhxYzdW5AbJ{ye)3i4?QPC@-<(inF zkszaPf$C{6eTK>I(J~J{OHOIBp%5z4+TJ-acW~T?{_RezPOpKd z@#vqQV>F?OgCjvkwdcUcA^Cf}hk{f0z*YCboHKg{^#D7T#wOXf+3m!k?C9&z{}(P5 ze0KlQgfHxCZ@+M1U-f9bm)+HF7#v4&If=nd99{;~yD}N@bi#$##DR%fPYQT%XdjFVrFWIOw0C*(zMp1Qi$2zFCu~QY zn}G9nSG;Q>=Q%%l7q*fSbr%*=cz^X6%?g?|G-+nX(N_4-pz1srpZL^Y@R`r@%#Kux V)VBZksqr_H1N>mW$I6%`{{o{sTCo5C diff --git a/tools/JackCompiler/CompilationEngine.pyc b/tools/JackCompiler/CompilationEngine.pyc index 984b580997b2ac8c78cd32a91d85f9aa3e6660a2..8e01276a42c6bc1da1a0a85443d4abdb6c776f4a 100644 GIT binary patch literal 27927 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 e1pQyiQuzk^FN33LROI99&z@0q=@ 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 R>}BXX5pR+$BBGbpuit87ljQ&a diff --git a/tools/JackCompiler/JackCompiler.pyc b/tools/JackCompiler/JackCompiler.pyc index 88b00aeaa65e27613c81a745408d9f25245b1191..d27e8e7d0660a95ec30b87d6b860e97c73576452 100755 GIT binary patch literal 1716 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 literal 2619 zcmZ`)OLr7S6t3#-ndwX>0Rjo(r9nh92pJwCh{!=BPa!JcgHg}end&5+>FEwtJ%J1Z zF2cg4|A64abNm5r{RysI)z0I_`3bU#->sgROcL!rb*t*uec!5kB(Hd7_o|5?~v#!v)&25MHe z1TWjdDm%h1XXcr3e&Xe<$cXGSR?dl>a51}LK;$tGh(S@noEJmTGOUMgdez#!xaLPe z)0fTNkDp8yzy5aW_wdBj3!Rw@{7~quO1vbfYJ1s}+76;bJJkg&bF*6Y9UbC4*f)1BGy(gryZY;GY=Pn(AQb%Ck+`@DURKb)|8iN z3^fUmuokkgYPDE}&oe+v5JZdt9Ro9hA%6CZ=2CL76tmiimwb2v?|iSW2NDYEtw1F@ zW0t8?4W*qhi2S0Z9p#5}hyl!syt@AjlSd%v<<-(cT=z@$03Mg-gCz83OOY3e(}|zR zK$Q}NK$R$M({X(X%(A3p)gXF#oLXAZZlw}LK~kyEg;WFzJZt_uZ;owB`&5^7TUZ>h znXnwhBEfZC<1PMzuX4^3YYhQ;fmJ6I&Cx4T#&V)(#f6E-7u1vXI=-T#GfR>ZnVpMe z-AlBsRuBsRQIHfZc^J|)S0(@{c%3jAp9Jp0QjsCUe3&36LLYtz^c7^O^dA!QIflQ zpnuoK4spvv>z_s|yi&jR^#8V9Kgou5!?5o6j=qr%eGy`0;< z!^jTB?4J(jo~@jn42~LVhI6xMy3qA*aW;+{f2vB|Ja4 zMz_B2))Wt+V&&UZu}s<0tWA~SB`>uzm{Frv>a%g!rjppk+ri0eZF+k}Tb?l6ftP%u zIhc~+eTyf-`uAYmfw%3?`*NDfyB8%A&5!9^&0l#KOQG|D@S`L^b(eY=6*7qCyOd3< zlvYjP+VpTWKi1BXN=u%>Bu@dfT>z*>TWBbwwzxx1(CMoL$XuOEjZ*Ru?Xuny$}w7r z2v9_oe8rHUFC@NH@;Gr(sn<5lOO16=x5YHI8MkA$>XoMImeM4zgLf1|{Q%(d0?%`| zGxB^VR(X`#E_BV>s^Po)kn&;sgHNCzzsoRui5fQg37gMt)j%&n0ym&2e;e2Pt-cP?LEq) z{gkTEz17_reNmo-WH|*;%$gigPmWA#Ozb2z6z!0Oy&y+hf~<3%SoWf-KMPt#S7RKZ znOtvPY6I(X&t^04{SZ2T66gYq>esDcm;a@Tb_N{VyTfy_i~diJqb9Y%UwI{spMr BaPa^D diff --git a/tools/JackCompiler/SymbolTable.pyc b/tools/JackCompiler/SymbolTable.pyc index a4e557c821fe7dbffb7297d90cd2741f89c3aa55..cdf4d20c457fddf0064e64b8ca72b0c4c733623d 100644 GIT binary patch literal 2471 zcmd5-%}*Og6rcU{f^8hK#6WOtlYoSyHmQ)6_TYXuN@dUk&sh({kBG^xJq);Mo)oX zq1)-a2f`64ku`ymHIWLB$(lq(K$%K_3Y7s>ssKi)3aHTt;0V=V%@HrUy1Ti)Reexg zua-7?i{jc+_w6vgL4{bvKs|4~7g$rlB454ki3PA3&`GGXNHYk^U&qI1@Hq_>0+0Z% z$txGA@>H{4tXDQXrCcdhX-@JYCimF%gqoLtK~`UFth22~y;3Wk2%c<~s$~Ho5OWjb@KN3A>-e!Bo@-O?)HIjB z-A}k$>^Cj-tCl*~(k(6R^qvkZL59!TRItR$Ql)x@A3<`;OQjvY>NjpWB6TNXW zpui8yWFuh1q5wV@ERKDw#l4wu??NQ7!P_TwSZj@xmT0K<)5 z6@yGrMh-h3z!9+|D(n#UjwM~4j3uU-17589X|4Q6mq7v-0 z_>cPp<@fLQLH@fr$can^Uswd-0^JA2RaA_lEcx_nsL)X%vlx6lxmMgPc~X6M+mpYp z)ToJsWufu(c`DvC?PYtpt&rF(O!d@pZE}A&bE8qoIZQpBBLdx^zigkxy&1^bi8m!)Ly$T1Jh%)2tJ?ey z;8E~v%Zid|lK{pfWvWdA7*&;pHVNR0prqO)098>YaBdgI0*UJex`7=}BKHTc3hrDE qJ;dB{hhJ$0KkyIOZP0PA-vyy934+iT-x6TIH{o~G{W)ZSFZ>sT6474( literal 1569 zcmah|yKmD#7{9X}+f9?cNgFDV*ocI%ggREJQY#@qN{3bqS&Wl&im79VJEtO5Hu{Ia z*njC(7CLuhKzu(tDM@JHtncCPao_XOYPHPh)OLTouay}4j-Tmc($4{b+933b2`2az z!55>&gmJbTQ4%)Ml5m7e)D}ykOwJNvu+gHNAW??6uSQG-$_Rhts{210E?J5~yc{A~s@vfw|x#_K^bbQ^GlC z?vwVb@r`jRgf6z4H{`;!t+F7CI=a-2!dNs+?WjDS(mc_tq?Fmope@ru7A4^|*Om(7 z?lqHW-OnTML)r_yUex&zcxO=-2W>A267eDnGZ`r_OVe0+Z-UPGVcP3QaVR|{JKj`9 z&-+8|`hJu|neU?-g^O)&^D=!Eez`SmJTY9{hsWey^x?h^j4PLzlQsi+rp=2$HVnP4 z?rJRJDQT09bb*jjftJBJgdkF|K%Oi7a(6n*xu$h2vYQ<6fP82%F(Xs(3nuF$V`S2x z=)cao;P{ARWQ9Z++hd+&v`OT#_m_vU$OC1MOK%twU6#n<1{*|z6$q-}&7x|03{0*< zV96yS+Dd|6sLgEH*VcKIh`E+%`zY+vdcZ~DHka4<76;zp*00Nr>FyM!9gJXdzytE8 zptX6~ypBEP%?8i2qC}C4+yt5(iFV%w@-Q7F*)}N^t}4%M&ctA0+}l0!8sV)lYHnqc zfylGSrIhYvg-v$h*D~pXa(x^7<x75Jn?n6@Dq73X0z~Zxg zD$Ew{=@st>DBz5D2H9cyIQj-Z+R#9Gdm`=XvkV$9unh zo;N=wlW_viUpv3>-y($kfr9@;z0N@zI_pFxw+JVX2$wcxLU!QmKJ$djACpWZ=PU46 z@`Qss&{-!MnU^@3m$~$a%tyEk808T_g+~FqxB?jCU4WFw0J}K_jPq{59v%lw@E*V< zPrzPDC-KRLvlXs=suyaSo(p_|&CqLzgdB{Bool`)AT3FUeP1GKVCMu@mggL4F(W(C zN>wX6k^Gk>6b!AHccSHNNi%S(boyD}&~Up4L)EVws;Y%@p{A;h{*cL6<4mI;V1@kN z*Z-9NIQHGyAI`2u*XSyI4!}Ti=(zuMK}Q5~4?62)iG1!`$VT9Fpn?vUHrj~@OiR*| z9DZe+Fn=dlLxR^TLT{w1b>n{e>ubg`0AG%8NAwsh<0y;Bv(uHY=%s88v=p^5Lt7|m z<(i`u%3OP3ptI?8TE~oXy2X?`uwLV2h>k$7z%XMFV1@ij6KnKI@8e#RWm;^c$wqeB zUcberY&K=lX`4=)e$x{$<7M;ITdh>vXwrMZC%q5j32{K(SS!^-8R4su#ZCq;w%Bl! z4e!SG6pKyTY|^4rHk~s4<}%R!rjbdJDW5^-|7A)zGs4pIJW()3;v(#f>?K34QYvN3 z-1~#LNstne&Oq|qFKM+xu5qR_6`osrkdBK0Z3*%8!TQ7RA8ssKY}jVQ79Fwai0QXu zz(h|mdrvEhTyXi=_V`eQA;d;pu<-#-Xs}KqgaI?jc;^rY-?Z4JCcCtC*J5Kf8?)%R zO~*~Y9Rn8P3zb@>jRgI53q_@VMiSYs26{q!;vqy*g%sFY~8fjsLe(#I%d-` z({INh@?;@D_@BYY#EZY3Z=C3S>$meKkgI|4D>vDN78`1^p{=^bCTuog(JMB+V*1UE z9RKtF^D?SME?aa{->nwnJn)Kxeg+(Kl=6(eV1y4vw=m4Y)T1&1^$ezV9*cfq=-&lO zuG{RoMJH`KY5MJ0Q1WWNUe47Dm2yXQIFCVvszXv_#rxib#_7)7@NK7$BxJC~#+z(> z_wL?=#b#_aW6>Knyl|KRVo#Efli#M+Qmf)4yq(MR z;;j(xjjHOzRkc*%^&<8Ys`^DeTXZct7Cs%10sSPxYY51R{wBg(2yY`?K)@qXIJHg0 zCZf{n$b$eR-}o6|CHU;il9Jvh0dz^qjD&K4pqUn$06}vZhj;+u1d1MjIF6zRAYMh$ z0}!WB^Z>+Jv3P)>IgbN80Pz%xhrtaGBb&=eZiJUHOuPY#sGrgITt+ALQP7FduR>=( WB1zJ|oR(n4PWTgbe;;8G3;zRX+=*@g literal 1944 zcma)7OK;Oa5Z-m-#&KSKrlBpUfH>p;kvJlRT18M5L4`m9sTX5Bc53h=tQ`s_J<%W1 z9{ZOpZd|zc#)+AAQkffZ>_3!!2Fe@OE?77}(G>jJ!X5z%o9%O8`wDPSj@fRm9Lrt8ZU+L$KcoH@1aE2*!=Z zltUMLG>;-?Lr(aI%s^zgTiHwbVOvRyVc!nYg7d|vkI43%v>2Gaea1uy_x*X=IS75b z@+3C5lXMX4eW&jUkI~H!#iNnx~I?qk(Q#bVcu4ju*B&<#z*@OPKR5J`WaAU(D zWalL2d9pHLHMXz___)z{4m%}s-a;{CAK3|}a-t0RP&rjjImhFX2_=pGAUfFm{wO*^ z0Y~~-K@@RIsvZ(U>6{Y^-;8lqrP)$s_k25uQ`HT?{wmYWghtC{x#<;pBx?z|#gpa) z@vs$AJx8CL+_~?Y>QrWdDdOryh;#c z0bY_d8C(xy$r%Jz?1sTi>E9yfQ-s%K?$1VB2xAt0ZI*$tk;Tz!+-OV>23-RA>Wwc! zzWhtVjt3&pvG(b45H%EMT;79eJQa!OwY0xUw)Cfwv}Vy{CNo&*nUh$kWHT(MZ1i05 zJ$!E!$4^zu3nN?HA^($nhBTmTR5uJign>uns$qN{ zm|nIb%IHDRpP7(_C69KUJ~v3n@YlZ1wwIIl1 Vug#^t%uT92&Y(V#z9_>*_7}nJm>>WE diff --git a/tools/VMTranslator/VMTranslator.pyc b/tools/VMTranslator/VMTranslator.pyc index 8cc497a8a709cd9577d408cdf6e26e3526e41e79..39eaec676ce9dd3b759e3c8c117aede86e8bd0d4 100755 GIT binary patch literal 5587 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 L1LKKZnx+2$B{(b< diff --git a/tools/VMTranslator/codeWriter.pyc b/tools/VMTranslator/codeWriter.pyc index 25ced8c6c212ab44b2bb91f07580f638c2c90404..ec2ec4fcbf83b40cd93fe7c2add97ebd1ec2f811 100644 GIT binary patch literal 11335 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 Z0`D@=^dg`%8r50(@m$V(xe5!Z?7#CLBfkIu literal 6293 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 bs3+gx+_zQ6du%TY`s>LzIQMM>hK%mNSlh;p literal 2627 zcmb7F&2Jk;6rb5$+v|_miIXNx3sMB-!-B@p3!+re)J@xn)Tvsx5=LlQJey<_d)J-a zRMa>UQp$}x*Z9~!f-`5X!x511t%zGM<@aXoBu$e;XEkqTe(%kDZ{ECl8%|8*7~1Ul zf4;qvW$aH{9Bn2RSJ9&dkef^}!JnY-8BJOl!o3tea4fw7RXZpq-7wK(7e%*%++B;yd zgxy6_EuKgX7?E6fn$fUZON~|$&EQ8;gU8RyMBST^bu`Zx5$DMV^@B>E3qkZ zz<&f@IELqe{|tO$jK@V$*e}JCgSElQV z4JieBMzyMV?m1r=;_jJBOE2D$!H`l!rP}UyURzlkVI1}{{`y5d$uCP8%F7EsT#j~! zl(ow0?nIl)?1o)sukQq{*bf6`wcK{QSJuJ{I`2k%Dsw8k9d_d zDpPY-m#!_Zs&vh{xz<=yR?S(tp;BGx2eC@8hqB{B74)mD9|b!dPx>uoYG%#3bN}8g zmBP4oN9AhHjr;XlV`Z&Q%4$oitCf_pBCox!thOI`aLA{l!f#ndD4sI;0fy&aR5!zp zSMB(%O}Dz?#|UIKz{xJf9!?ci<1lPT)d#m5(hZ`v8;7zQ$yT*X&r>dTA1m8&{J@VL zhb|&|0Fvh8&*nBi$BUpjUci{p0=Hfij3SW3Z`PnWVKy(L(|Fit4eQ@tQ3rEzY_5(f z0o#Gw@f=6x9H$eCoi@!2j`MKGZ6_Rg5gzHI9w8qRMp;BXvOsKB;2Jr-T5Uq?uv(!~ z8BI%=&6Kd3X_0DXM7n8?Ad65%&RJ4L9hzX1nq9{rji(*ntVJwNVn8r9M zX2cncQ({)kVJwTYNc(wt7UpD{h)pC9G9*ujR0D^^7-onNcZf30UMiL(NnIDq8<@nb zk0QB81(I)2@fsCNDpl9nHwBbAiwXt`0^35N?4wX}_OL|!{qz8l($CSXD=vpG&?*^a zgRB5*h0ijZ@b{KgTOTGsd9v8b03(+>s**VUMgCHNfM#!u;~QP-iZ zm~svx@-rgj_fxKYJeDe|wCP5-L+RC$S061wG@^W;;l0_BH^)RycZyzLAD6R*U)Lwh zpkEjYoxBRT!jtHc{^LGmT=B>aTAn@_*)H?ZlaPxe)+;tijO72LC?Wtl6!QoKLcr@d z{lUTIG$iB+b~R&}bdWMczdSnckqUUKU3s0f((adRO%ZyMEn?gxCS`0dKe9x1_jOHB zkWVy0jFpp2TzXv-lc$*=#+L^sCP$|@_>t5r({hp6RU#h|IY;DeA{U69C-Mf7H;KGM zWS+>oM07#BMl-tFYkg