From 8993161cc478701cd488635e1548c7e7f3040eb5 Mon Sep 17 00:00:00 2001
From: "Leo Trung (Student)"
 <dao2.trung@live.uwe.ac.uk@csctcloud.prxhn32zsyjupl12zde3wlfkch.cwx.internal.cloudapp.net>
Date: Thu, 12 Dec 2024 20:39:33 +0000
Subject: [PATCH] Worksheet 1 task 2 and 3 completion

---
 src/Makefile           |  25 +++++++++++
 src/task2.asm          |  51 ---------------------
 src/{test => task2_1}  | Bin 17660 -> 17944 bytes
 src/task2_1.asm        |  98 +++++++++++++++++++++++++++++++++++++++++
 src/task2_1.o          | Bin 0 -> 1456 bytes
 src/{test1 => task2_2} | Bin 17660 -> 17640 bytes
 src/task2_2.asm        |  42 ++++++++++++++++++
 src/task2_2.o          | Bin 0 -> 800 bytes
 src/task2_3            | Bin 0 -> 17888 bytes
 src/task2_3.asm        |  73 ++++++++++++++++++++++++++++++
 src/task2_3.o          | Bin 0 -> 1280 bytes
 src/test.asm           |  41 -----------------
 src/test.o             | Bin 944 -> 0 bytes
 src/test1.asm          |  43 ------------------
 src/test1.o            | Bin 944 -> 0 bytes
 15 files changed, 238 insertions(+), 135 deletions(-)
 create mode 100644 src/Makefile
 delete mode 100644 src/task2.asm
 rename src/{test => task2_1} (55%)
 create mode 100644 src/task2_1.asm
 create mode 100644 src/task2_1.o
 rename src/{test1 => task2_2} (55%)
 create mode 100644 src/task2_2.asm
 create mode 100644 src/task2_2.o
 create mode 100755 src/task2_3
 create mode 100644 src/task2_3.asm
 create mode 100644 src/task2_3.o
 delete mode 100644 src/test.asm
 delete mode 100644 src/test.o
 delete mode 100644 src/test1.asm
 delete mode 100644 src/test1.o

diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..ae841a0
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,25 @@
+all: task1 task2_1 task2_2 task2_3
+
+task1: task1.asm
+	nasm -f elf task1.asm -o task1.o
+	nasm -f elf asm_io.asm -o asm_io.o
+	gcc -m32 -c driver.c -o driver.o
+	gcc -m32 driver.o task1.o asm_io.o -o task1
+
+task2_1: task2_1.asm
+	nasm -f elf task2_1.asm -o task2_1.o
+	nasm -f elf asm_io.asm -o asm_io.o
+	gcc -m32 -c driver.c -o driver.o
+	gcc -m32 driver.o task2_1.o asm_io.o -o task2_1
+
+task2_2: task2_2.asm
+	nasm -f elf task2_2.asm -o task2_2.o
+	nasm -f elf asm_io.asm -o asm_io.o
+	gcc -m32 -c driver.c -o driver.o
+	gcc -m32 driver.o task2_2.o asm_io.o -o task2_2
+
+task2_3: task2_3.asm
+	nasm -f elf task2_3.asm -o task2_3.o
+	nasm -f elf asm_io.asm -o asm_io.o
+	gcc -m32 -c driver.c -o driver.o
+	gcc -m32 driver.o task2_3.o asm_io.o -o task2_3
\ No newline at end of file
diff --git a/src/task2.asm b/src/task2.asm
deleted file mode 100644
index 23a3c9f..0000000
--- a/src/task2.asm
+++ /dev/null
@@ -1,51 +0,0 @@
-%include "asm_io.inc"
-
-section .data
-    prompt_name db "Enter your name: ", 0
-    prompt_times db "Enter the number of times (51-99) to print the welcome message: ", 0
-    invalid_input db "Invalid input! Please enter a number between 51 and 99.", 10, 0
-    welcome_msg db "Welcome, %s!", 10, 0
-
-section .bss
-    name resb 50       ; Reserve space for the name (50 bytes)
-    times resd 1       ; Reserve space for the number (4 bytes)
-
-section .text
-    extern asm_main    ; Declared in driver.c
-    global asm_main
-
-asm_main:
-    ; Prompt for name
-    mov eax, prompt_name       ; Load the address of the prompt string
-    call print_string          ; Print the string
-
-    mov eax, name              ; Load the address of the name buffer
-    mov ebx, 50                ; Set max input length
-    call read_string           ; Read user input into the name buffer
-
-ask_times:
-    ; Prompt for the number of times
-    mov eax, prompt_times      ; Load the address of the prompt string
-    call print_string          ; Print the string
-
-    call read_int              ; Read an integer from the user
-    mov [times], eax           ; Store the input number in the `times` variable
-
-    ; Validate the input (51 <= times <= 99)
-    mov eax, [times]           ; Load the number into eax
-    cmp eax, 51                ; Check if less than 51
-    jl invalid_input_msg       ; Jump if invalid
-    cmp eax, 99                ; Check if greater than 99
-    jg invalid_input_msg       ; Jump if invalid
-    jmp print_messages         ; Valid input, proceed
-
-invalid_input_msg:
-    mov eax, invalid_input     ; Load the invalid input message
-    call print_string          ; Print the string
-    jmp ask_times              ; Re-prompt the user
-
-print_messages:
-    mov ecx, [times]           ; Load the number of times into ecx (loop counter)
-
-print_loop:
-    mov eax, welcome_msg       ; Lo
diff --git a/src/test b/src/task2_1
similarity index 55%
rename from src/test
rename to src/task2_1
index 0f67137503f75efd5016ec14f8b0384f4c20e021..5aa87c0b59e588653a21e9a56db8c353debbcfcb 100755
GIT binary patch
delta 3312
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
Hqk}L2dLcUD

delta 2787
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

diff --git a/src/task2_1.asm b/src/task2_1.asm
new file mode 100644
index 0000000..72f2d4a
--- /dev/null
+++ b/src/task2_1.asm
@@ -0,0 +1,98 @@
+segment .data
+    prompt_num db "Enter number of times to print the message: ", 0
+    prompt db "Enter your name: ", 0
+    error_prompt db "You have entered a number that does not satisfy the requirement", 0
+    format db "%s", 0
+    format_digit db "%d", 0
+    welcome_msg db "Welcome, %s!", 0
+    newline db 10, 0
+segment .bss
+    name resb 50 ; Reserve space for the name (50 bytes)
+    num resb 1
+    counter resb 1
+
+segment .text
+    extern printf
+    extern scanf
+
+global asm_main
+asm_main:
+    ; Print the prompt
+    push prompt
+    call printf
+    add esp, 4          ; Clean up the stack
+
+    ; Read the input
+    push name           ; Address of the buffer to store the input
+    push format         ; Format string for scanf
+    call scanf
+    add esp, 8          ; Clean up the stack (2 arguments)
+
+    ;Print the number prompt
+    push prompt_num
+    call printf
+    add esp, 4
+
+    ; Read the number input
+    push num
+    push format_digit
+    call scanf
+    add esp, 8
+
+     ; Loop
+    mov al, [num]        ; Load the value of 'num' into register AL
+    mov [counter], al    ; Store it in the counter variable
+
+
+    ; Check if num > 50
+    cmp al, 50           ; Compare num with 50
+    jle error_exit       ; If num <= 50, jump to error_exit
+
+    ; Check if num < 100
+    cmp al, 100          ; Compare num with 100
+    jge error_exit       ; If num >= 100, jump to error_exit
+
+   
+
+    loop_start:
+    ; Do something here (inside the loop)
+     ; Print the welcome message
+    push name           ; Push the name to print
+    push welcome_msg
+    call printf
+    add esp, 8        ; Clean up the stack (2 arguments)
+
+    ; Print newline
+    push newline
+    call printf
+    add esp, 4
+
+    ; Decrement the counter
+    dec byte [counter]    ; Decrement the value of 'counter'
+
+    ; Check if the counter is zero
+    cmp byte [counter], 0 ; Compare counter with 0
+    jne loop_start        ; If not zero, jump back to loop_start
+
+
+    ; Exit the program
+    mov eax, 1          ; syscall: exit
+    xor ebx, ebx        ; exit code 0
+    ret
+    int 0x80
+
+error_exit:
+    ; Exit with error code
+    push error_prompt
+    call printf
+    add esp, 4
+
+    ;Print newline before exiting
+    push newline
+    call printf
+    add esp, 4
+
+    ;Exit with error code
+    mov eax, 60          ; System call for exit
+    mov edi, 1           ; Exit code 1 (error)
+    syscall
\ No newline at end of file
diff --git a/src/task2_1.o b/src/task2_1.o
new file mode 100644
index 0000000000000000000000000000000000000000..4350d87e98baddc4e272ddabdf7a786ea9b3ebfc
GIT binary patch
literal 1456
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZFa^p6Q7}{4
z85kHi7#J8}>J*q57$A0oR58G9=V4#~yORwf%m7li4$1~m0w98cfk6n#ERfIzCI$vG
z5Ce)qZUQl77#J9sKny4rU}j)&U}RtbnJ>ryu@_{f3YvKVEDQ`2p?W|R%sd?i1_n-$
z02F^<VPM$7z`(!?)erJ7$e*rxC8<RUd8N5YsYMF;X$mEoxv9kpCHV>kMVWae3MCn-
z3c0Dp#fj;uRtgLd#g+M`MGAR|xge3q{8ELC#IjU{RFFBTDGG@&vq~}&OB7P_Q;QYy
z@=Fwo6H79S(<;H{6{QxIW)`L9rskC}s1`G*rZ9x3<|OCmrs^oD7ArDvL0t@?GISXj
z7+(DO|NnpU5ta;)SVlcUgaa%Bmo{QxV901fl3oB3S!B$>z+hukXJeC6YXR1f(Tb!d
zV-kYH@{bp!xWN`gGL&B00SZpT+lS9KWY{CALea9rhJk@$KS&`zC~);s5=#;p^pc8;
z8T3k0D@qvjiZhB!ib@ib81#xOb0IX8UzC~yQ3LW9b__BXCd0z;@jr|WqET}SD9s|L
zAP}FKffu9@ju{yw7#J8pK?)IKWRPcIU;udy#s{SvPyoaDpnw2{D2xxvkD$<l@qHK=
z7(f9C<A*>PP?Cuul7WE%6bTRkCWcrB1_qFsFn%=y1496W15TN33=9k%Nc>bdn}Gq8
z{&UdyMJRk`28NQv;%uXML%qb}T!w<8{M>?)_`FgWlOeUJD8DEkBF>POUzD3z0;S?p
zGSf3l7|J0@F+R6Aogpu^JSQ_Rl>wC289;_4=a+(#IRiLvq%jmHC+4LwBo^n!=O$+6
zG34au7sMBrBo>uGtx2uOEJ1P}m<ftcMkYwUW)fsz-~*K-%nS^|AexB*96wA#3=9fT
zzAC6(5QM}TBQqo{LHf->;zE$P1BttU)H5?M1VZUB5Y5EE5Dii%$iR>c<%7~c$lgK_
epP7N797=bBXeI`RKB)R>Q2uNvAMAJr1_l6fklQK%

literal 0
HcmV?d00001

diff --git a/src/test1 b/src/task2_2
similarity index 55%
rename from src/test1
rename to src/task2_2
index 82dc7e1279aa15c6de4c0a5f546b1657e2d4d406..a6b9634d0dd374cced68c38ce91c159c595938cf 100755
GIT binary patch
delta 2714
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
aBF*Yx#lWCE`Jjt3YqC89!=K3;9fSenZ^y>~

delta 2828
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

diff --git a/src/task2_2.asm b/src/task2_2.asm
new file mode 100644
index 0000000..fbcc6a2
--- /dev/null
+++ b/src/task2_2.asm
@@ -0,0 +1,42 @@
+section .data
+    sum_prompt db "The sum of the numbers is: %d", 10, 0  ; Format string for sum
+    total db 0  ; Reserve space for the sum result
+
+section .bss
+    sum resd 1  ; Reserve space for the sum (4 bytes)
+
+section .text
+    extern printf
+
+global asm_main
+asm_main:
+
+    ; Initialize registers
+    xor eax, eax    ; Clear eax, we'll use it to store the sum
+
+    ; Calculate sum of integers from 1 to 100
+    mov ecx, 1      ; Start loop counter at 1
+    mov ebx, 100    ; Upper limit of the loop
+
+calculate_sum:
+    add eax, ecx    ; Add the current counter value to the sum (in eax)
+    inc ecx         ; Increment the counter
+    cmp ecx, ebx    ; Compare counter with 100
+    jle calculate_sum ; Loop if counter is <= 100
+
+    ; Now eax contains the sum of numbers from 1 to 100
+
+    ; Store the sum in the variable sum
+    mov [sum], eax
+
+    ; Print the sum using printf
+    push eax          ; Push the sum onto the stack (argument for printf)
+    push sum_prompt   ; Push the format string
+    call printf      ; Call printf
+    add esp, 8        ; Clean up the stack (2 arguments)
+
+    ; Exit the program
+    mov eax, 1          ; syscall: exit
+    xor ebx, ebx        ; exit code 0
+    ret
+    int 0x80
diff --git a/src/task2_2.o b/src/task2_2.o
new file mode 100644
index 0000000000000000000000000000000000000000..f819ab729a310e642ec0482d0379f6ddef12e0f8
GIT binary patch
literal 800
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpa5lqD4412
z3=9k$3=9k~bqg37P;7*$<6&R`yORy1nSp@;q|N}!22lbaf`NfS2+1sv&;>>Y1~U)?
zia~AyF=ZGS7??l|C>CI1VA#OGzyLCzlL6uekeMoI<{e-{gb_$9%sd?i1_qEmkQf*<
zGcZUnFfgz}^@IEY@@Gg!szPyTu0npALP<udLSAWZQfg7LLT0g*f@%sE1B2m#oggE3
zr-1x>!qM_(-Ot4!^8zwJ<cmN5|Nn13!m$IS#_;yxvkeS-DTyVC40=h$#SD5SsTCy*
zdc_&VB}FBPNep_$mAMca$}dXIfv5qQg&l(ohRLuneEbh%gJ{&00*W)_5Crj=8F)bo
z;g}H|2J%RJIXD}{U}7+0U|;~nEr<s)K?%YDlc4a|1hXK704SA|Bo=2I#T)4*7Uwb)
zm*&P76y@g@lrWU!mn7zZ1Q-g6GV@B(7!r$f<8u=;^B9s7bCOGQ5=&C!i%WAEL_p!n
S%)lT8qL~;NKyG6~iZ}pW6Hm+l

literal 0
HcmV?d00001

diff --git a/src/task2_3 b/src/task2_3
new file mode 100755
index 0000000000000000000000000000000000000000..b46291db5d70dea9b1e48700aaabaa74f164cd97
GIT binary patch
literal 17888
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
Xvp{m7?gp~DC<g|HKOhMxhN%Mpz{!Q%

literal 0
HcmV?d00001

diff --git a/src/task2_3.asm b/src/task2_3.asm
new file mode 100644
index 0000000..dfeacf0
--- /dev/null
+++ b/src/task2_3.asm
@@ -0,0 +1,73 @@
+section .data
+    sum_prompt db "The sum of the numbers is: %d", 10, 0  ; Format string for sum
+    prompt_start db "Enter the start of the range: ", 0
+    prompt_end_range db "Enter the end of the range: ", 0
+    format db "%d", 0
+    newline db 10, 0
+    total db 0  ; Reserve space for the sum result
+
+section .bss
+    sum resd 1  ; Reserve space for the sum (4 bytes)
+    start_range resd 1
+    end_range resd 1
+
+section .text
+    extern printf
+    extern scanf
+
+global asm_main
+asm_main:
+    ; Print start prompt
+    push prompt_start
+    call printf
+    add esp, 4
+
+    ; Scan start range
+    push start_range
+    push format
+    call scanf
+    add esp, 8
+
+    ; Print end range prompt
+    push prompt_end_range
+    call printf
+    add esp, 4
+
+    ; Scan end range
+    push end_range
+    push format
+    call scanf
+    add esp, 8
+
+    ; Initialize sum register (eax = 0)
+    xor eax, eax    ; Clear eax register to store the sum
+
+    ; Load start and end range values into registers
+    mov ecx, [start_range]   ; Start range (ecx)
+    mov ebx, [end_range]     ; End range (ebx)
+
+calculate_sum:
+    cmp ecx, ebx        ; Compare start value (ecx) with end value (ebx)
+    jg done_calculation  ; If start > end, exit the loop
+
+    add eax, ecx        ; Add current value of ecx to eax (sum)
+    inc ecx             ; Increment ecx to move to the next number
+    jmp calculate_sum   ; Repeat the loop
+
+done_calculation:
+    ; Now eax contains the sum of numbers from start_range to end_range
+
+    ; Store the sum in the sum variable (optional)
+    mov [sum], eax
+
+    ; Print the sum using printf
+    push eax            ; Push the sum onto the stack (argument for printf)
+    push sum_prompt     ; Push the format string
+    call printf         ; Call printf
+    add esp, 8          ; Clean up the stack (2 arguments)
+
+    ; Exit the program
+    mov eax, 1          ; syscall: exit
+    xor ebx, ebx        ; exit code 0
+    ret
+    int 0x80
diff --git a/src/task2_3.o b/src/task2_3.o
new file mode 100644
index 0000000000000000000000000000000000000000..cd8ac57b26fa344688fe484d606d2b0c44950ca5
GIT binary patch
literal 1280
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZkO*aiD4412
z3=9k$3=9k~bsrcR7<fPmpctkOBnC2%4Jr;&R|I8)C;<?`z`!7cWEM!MfQf;@48(w9
zkQpGR3<CoL6NmxD8<-dv3>X<0K<0zY0@(|qRnW|Pz|6of3#tc1!OYWPU|`?`2|#fJ
z3j;$10|NsqR6oc(kUv8*QWc6za~1N_6iPBu74k}RlTwR{6*7yh6jW2V7+mv8Qj5Sc
z#U+VFB`{@0iFxU%RtiYcsd*{rlBy{TTu|E)RE9hQ1H+3y|NsAQKEjd#az#coLWCp3
z4#8o`067pv+VDU(FGx?fEJ(`oW<4w83CGvp7lX_X$N-U0qd9hf0>be2;j;}OQ6#LF
zl30?+pqEr!%%E42T2aEFSDaB?QdE+d#GqGPnG2zz{G!wxh#DmQXiShbFd-I(kN;t8
z5RICWL1_v(hCzI0240XtIA&y!U|?VX1rbDukwKM#fdLdIFg_^lfC3E0w`E{ph=Xt#
z7#J8CTp1V`5|H@ba5jj+#Nf}sfRuxn7(ix$!V)A4N`ci33=BRH4mhQBGB7ZNBJoq<
zYz78UddxxNqvio-28NQv;%uXMW4*-UT!!M(-1vf`{M>>P1_%`oPE{~YYF<h_IAt-U
z<rn29mN4X{mgi*Vr81P{mn7zZbTfd}Llq&E7ZhdYm83BgCnx5mF(ek}#^)wx<}oBE
z<|LQqB$lMc7nkNTq~zzN#>0d%^YftY2E`vE6C|H82{175fkKg)fk7BVGckbUgGrEq
zK>^AK#Ro{8E{M;}z+eQTnHU(%LHSpZfx!vHXJ%mVfYM=5ItD~DLCPGEeyH^f09O{S
A2><{9

literal 0
HcmV?d00001

diff --git a/src/test.asm b/src/test.asm
deleted file mode 100644
index 60e4c11..0000000
--- a/src/test.asm
+++ /dev/null
@@ -1,41 +0,0 @@
-segment .data
-    prompt db "Enter your name: ", 0
-    format db "%s", 0
-    welcome_msg db "Welcome, %s!", 0
-    newline db 10, 0
-segment .bss
-    name resb 50 ; Reserve space for the name (50 bytes)
-
-segment .text
-    extern printf
-    extern scanf
-
-global asm_main
-asm_main:
-    ; Print the prompt
-    push prompt
-    call printf
-    add esp, 4          ; Clean up the stack
-
-    ; Read the input
-    push name           ; Address of the buffer to store the input
-    push format         ; Format string for scanf
-    call scanf
-    add esp, 8          ; Clean up the stack (2 arguments)
-
-    ; Print the welcome message
-    push name           ; Push the name to print
-    push welcome_msg
-    call printf
-    add esp, 8        ; Clean up the stack (2 arguments)
-
-    ; Print newline
-    push newline
-    call printf
-    add esp, 4
-
-    ; Exit the program
-    mov eax, 1          ; syscall: exit
-    xor ebx, ebx        ; exit code 0
-    ret
-    int 0x80
\ No newline at end of file
diff --git a/src/test.o b/src/test.o
deleted file mode 100644
index 80cb795da7a45f9eea54d6014ee8e95195c3c1ee..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 944
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpaNxsD4412
z3=9k$3=9k~bsHEN7>qy)pctl(hk*g?PBy4GNSz0i4Wa}<1Oo$u5RzG7AtnX}GcW@}
zfZPOP$uKZ5Fo76Q?7+mpaDjn=0c1WG0|VICATvR3hPe%-RDhX*!5zeaVwib43=9mM
zP%#jdz|6o9z`(%33Uv?2A0U6a=9Q!tDOBc{7AfQ<=B8RHFsK$Ygs0{t=jW#CD5w@I
zGJtFcnE=5VAnL`R|Ns9tA7KG=GC*F0if}+gL>U+u;37&04$BUZ^9*kvKHC5?28{Jm
z5=#;p^pc8;8T3k0D@qvjiZhB!ib@ib81#xOb0IX8UzC~yQ3KYAl>k`)lVD-^_#egw
z(Wog46vxOR4&pPT`IeDE5E_Rd{h%0^U|?VXc@M@1#RtfTFg_^UA#4!I#9#=bpcoW?
z7Em^b0`cuY3@8==rMi;T;u5{Y;#`J;qWs)~5{9(=qTIw1hH^-h#OD^LGvuX~=Va!k
zGJqnCp`a);uOyA3I5{ydjUll(H$FEpGY@JYG>tMcLDCTu7Xt$yNQ{|*K^R0cF))Dq
g!^F+Npa9}CGcc%vXeI^*El_&of~0+resd@v0CCA-!~g&Q

diff --git a/src/test1.asm b/src/test1.asm
deleted file mode 100644
index 35f5959..0000000
--- a/src/test1.asm
+++ /dev/null
@@ -1,43 +0,0 @@
-segment .data
-    prompt db "Enter your name: ", 0
-    format db "%s", 0
-    welcome_msg db "Welcome, %s!", 0
-    newline db 10, 0
-    number dd 0
-    count db 0
-segment .bss
-    name resb 50 ; Reserve space for the name (50 bytes)
-
-segment .text
-    extern printf
-    extern scanf
-
-global asm_main
-asm_main:
-    ; Print the prompt
-    push prompt
-    call printf
-    add esp, 4          ; Clean up the stack
-
-    ; Read the input
-    push name           ; Address of the buffer to store the input
-    push format         ; Format string for scanf
-    call scanf
-    add esp, 8          ; Clean up the stack (2 arguments)
-
-    ; Print the welcome message
-    push name           ; Push the name to print
-    push welcome_msg
-    call printf
-    add esp, 8        ; Clean up the stack (2 arguments)
-
-    ; Print newline
-    push newline
-    call printf
-    add esp, 4
-
-    ; Exit the program
-    mov eax, 1          ; syscall: exit
-    xor ebx, ebx        ; exit code 0
-    ret
-    int 0x80
\ No newline at end of file
diff --git a/src/test1.o b/src/test1.o
deleted file mode 100644
index 798af099283855e8416c322fece231be2ebb8f04..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 944
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpaNxsD4412
z3=9k$3=9k~bsHEN7>qy)pctl(hk*g?PBy4GNSz0i4Wa}<1Oo$u5RzG7AtnX}GcW@}
zfZPOP$uKZ5Fo76Q?7+mpaDjn=0c1WG0|VICATvR3hPe%-RDhX*0oh)dc{&UX44fbZ
zP@KTbz!1Q|z`zQ156B-Nf4b(Cq!uYu=9d;J<R#{&S}8E77BhsW<|OCmrs^oD7ArD<
zY=;`cz`&3JV!rtE|NsByBP?J}2FQz05e|rmC<6lnTto@MVc7w4p5g7oXB$AqfU#am
zVo4%{UQ%%}gI-B$MG1pmaYk`TQAuJFgI;lEE`)~ii&AqSYQQ?N5+Dm;5-bcK|HIfI
z8Z~8s;utx^L40NgZjeGaW(3C{$b%3eMg~a+1_qG#V0={u1_qE1VSHT(14=TXq#aQF
zSwdw%6o_vRVnDF~DAkpu7MB?6B^Kv06cpv>7L+ig<rn29mN1k<;v_z|IGrIcwLB*?
zFO>llV+;jFnRz8?48_Tbd1(xZ#kujhiJ5s&6Cr7okqMHHn79}i_(18FnSntVL^Clk
gNPyBEHv@wLh|kQx0P+t=y%tEE3zGIhd~+xt0D*pC{r~^~

-- 
GitLab