From ef36fc1b6cd25b053a3837cd6f58a98f703c5712 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Tue, 2 Sep 2025 22:52:47 +0000 Subject: [PATCH] feat(tests): add tests for doc and docx --- frontend/e2e/upload.spec.ts | 208 +++++++++++++++++++++++++++++- frontend/e2e/utils/test-data.ts | 10 ++ frontend/test_data/test_file.doc | Bin 0 -> 2048 bytes frontend/test_data/test_file.docx | Bin 0 -> 36591 bytes test_files/test_file.doc | Bin 0 -> 29184 bytes test_files/test_file.docx | Bin 0 -> 13265 bytes 6 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 frontend/test_data/test_file.doc create mode 100644 frontend/test_data/test_file.docx create mode 100644 test_files/test_file.doc create mode 100644 test_files/test_file.docx diff --git a/frontend/e2e/upload.spec.ts b/frontend/e2e/upload.spec.ts index 7a9dcc5..430d239 100644 --- a/frontend/e2e/upload.spec.ts +++ b/frontend/e2e/upload.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from './fixtures/auth'; -import { TEST_FILES, TIMEOUTS, API_ENDPOINTS, EXPECTED_OCR_CONTENT } from './utils/test-data'; +import { TEST_FILES, TIMEOUTS, API_ENDPOINTS, EXPECTED_OCR_CONTENT, EXPECTED_TEXT_CONTENT } from './utils/test-data'; import { TestHelpers } from './utils/test-helpers'; test.describe('Document Upload', () => { @@ -290,4 +290,210 @@ test.describe('Document Upload', () => { }); } }); + + test('should upload .docx document successfully', async ({ dynamicAdminPage: page }) => { + // Check if we can see the upload page (not stuck on login) + const isOnLoginPage = await page.locator('h3:has-text("Welcome to Readur")').isVisible({ timeout: 2000 }); + if (isOnLoginPage) { + throw new Error('Test is stuck on login page - authentication failed'); + } + + // Find file input + const fileInput = page.locator('input[type="file"]').first(); + await expect(fileInput).toBeAttached({ timeout: 10000 }); + + // Upload test_file.docx + console.log('Uploading test_file.docx...'); + await fileInput.setInputFiles(TEST_FILES.testDocx); + + // Verify file is added to the list by looking for the filename + await expect(page.getByText('test_file.docx')).toBeVisible({ timeout: TIMEOUTS.short }); + console.log('DOCX file selected successfully'); + + // Look for upload button + const uploadButtonSelectors = [ + 'button:has-text("Upload All")', + 'button:has-text("Upload")', + 'button:has-text("Start Upload")', + '[data-testid="upload-button"]' + ]; + + let uploadButton = null; + for (const selector of uploadButtonSelectors) { + const button = page.locator(selector); + if (await button.isVisible({ timeout: TIMEOUTS.short })) { + uploadButton = button; + console.log(`Found upload button using: ${selector}`); + break; + } + } + + if (uploadButton) { + // Wait for upload API call + const uploadResponse = helpers.waitForApiCall('/api/documents', TIMEOUTS.upload); + + // Click upload button + await uploadButton.click(); + console.log('Upload button clicked'); + + // Verify upload was successful + try { + const response = await uploadResponse; + console.log(`Upload API completed with status: ${response.status()}`); + + if (response.status() >= 200 && response.status() < 300) { + console.log('DOCX upload completed successfully'); + } + } catch (error) { + console.log('Upload API call timed out or failed:', error); + } + } else { + console.log('No upload button found - file may upload automatically'); + await page.waitForTimeout(2000); + } + + console.log('DOCX upload test completed'); + }); + + test('should upload .doc document successfully', async ({ dynamicAdminPage: page }) => { + // Check if we can see the upload page (not stuck on login) + const isOnLoginPage = await page.locator('h3:has-text("Welcome to Readur")').isVisible({ timeout: 2000 }); + if (isOnLoginPage) { + throw new Error('Test is stuck on login page - authentication failed'); + } + + // Find file input + const fileInput = page.locator('input[type="file"]').first(); + await expect(fileInput).toBeAttached({ timeout: 10000 }); + + // Upload test_file.doc + console.log('Uploading test_file.doc...'); + await fileInput.setInputFiles(TEST_FILES.testDoc); + + // Verify file is added to the list by looking for the filename + await expect(page.getByText('test_file.doc')).toBeVisible({ timeout: TIMEOUTS.short }); + console.log('DOC file selected successfully'); + + // Look for upload button + const uploadButtonSelectors = [ + 'button:has-text("Upload All")', + 'button:has-text("Upload")', + 'button:has-text("Start Upload")', + '[data-testid="upload-button"]' + ]; + + let uploadButton = null; + for (const selector of uploadButtonSelectors) { + const button = page.locator(selector); + if (await button.isVisible({ timeout: TIMEOUTS.short })) { + uploadButton = button; + console.log(`Found upload button using: ${selector}`); + break; + } + } + + if (uploadButton) { + // Wait for upload API call + const uploadResponse = helpers.waitForApiCall('/api/documents', TIMEOUTS.upload); + + // Click upload button + await uploadButton.click(); + console.log('Upload button clicked'); + + // Verify upload was successful + try { + const response = await uploadResponse; + console.log(`Upload API completed with status: ${response.status()}`); + + if (response.status() >= 200 && response.status() < 300) { + console.log('DOC upload completed successfully'); + } + } catch (error) { + console.log('Upload API call timed out or failed:', error); + } + } else { + console.log('No upload button found - file may upload automatically'); + await page.waitForTimeout(2000); + } + + console.log('DOC upload test completed'); + }); + + test('should process .docx document and extract text content', async ({ dynamicAdminPage: page }) => { + // Check if we can see the upload page (not stuck on login) + const isOnLoginPage = await page.locator('h3:has-text("Welcome to Readur")').isVisible({ timeout: 2000 }); + if (isOnLoginPage) { + throw new Error('Test is stuck on login page - authentication failed'); + } + + const fileInput = page.locator('input[type="file"]').first(); + await fileInput.setInputFiles(TEST_FILES.testDocx); + + const uploadButton = page.locator('button:has-text("Upload"), [data-testid="upload-button"]').first(); + if (await uploadButton.isVisible()) { + await uploadButton.click(); + } + + await helpers.waitForLoadingToComplete(); + + // Navigate to document details to verify content extraction + const uploadedDocument = page.locator('[data-testid="uploaded-files"] > *, .uploaded-file').first(); + if (await uploadedDocument.isVisible()) { + await uploadedDocument.click(); + + // Should navigate to document details page + await page.waitForURL(/\/documents\/[^\/]+/, { timeout: TIMEOUTS.medium }); + + // Check that document content is visible and contains expected text + const documentContent = page.locator('[data-testid="document-content"], .document-text, .document-content'); + if (await documentContent.isVisible({ timeout: TIMEOUTS.medium })) { + const content = await documentContent.textContent(); + expect(content).toContain(EXPECTED_TEXT_CONTENT.testDocx); + console.log('DOCX content extraction verified successfully'); + } else { + console.log('Document content not visible, checking page text'); + // Fallback: check if the expected text is anywhere on the page + await expect(page.locator(`text=${EXPECTED_TEXT_CONTENT.testDocx}`)).toBeVisible({ timeout: TIMEOUTS.medium }); + } + } + }); + + test('should process .doc document and extract text content', async ({ dynamicAdminPage: page }) => { + // Check if we can see the upload page (not stuck on login) + const isOnLoginPage = await page.locator('h3:has-text("Welcome to Readur")').isVisible({ timeout: 2000 }); + if (isOnLoginPage) { + throw new Error('Test is stuck on login page - authentication failed'); + } + + const fileInput = page.locator('input[type="file"]').first(); + await fileInput.setInputFiles(TEST_FILES.testDoc); + + const uploadButton = page.locator('button:has-text("Upload"), [data-testid="upload-button"]').first(); + if (await uploadButton.isVisible()) { + await uploadButton.click(); + } + + await helpers.waitForLoadingToComplete(); + + // Navigate to document details to verify content extraction + const uploadedDocument = page.locator('[data-testid="uploaded-files"] > *, .uploaded-file').first(); + if (await uploadedDocument.isVisible()) { + await uploadedDocument.click(); + + // Should navigate to document details page + await page.waitForURL(/\/documents\/[^\/]+/, { timeout: TIMEOUTS.medium }); + + // Check that document content is visible and contains expected text + const documentContent = page.locator('[data-testid="document-content"], .document-text, .document-content'); + if (await documentContent.isVisible({ timeout: TIMEOUTS.medium })) { + const content = await documentContent.textContent(); + expect(content).toContain(EXPECTED_TEXT_CONTENT.testDoc); + console.log('DOC content extraction verified successfully'); + } else { + console.log('Document content not visible, checking page text'); + // Fallback: check if the expected text is anywhere on the page + await expect(page.locator(`text=${EXPECTED_TEXT_CONTENT.testDoc}`)).toBeVisible({ timeout: TIMEOUTS.medium }); + } + } + }); }); \ No newline at end of file diff --git a/frontend/e2e/utils/test-data.ts b/frontend/e2e/utils/test-data.ts index c526cac..eaa362c 100644 --- a/frontend/e2e/utils/test-data.ts +++ b/frontend/e2e/utils/test-data.ts @@ -20,6 +20,10 @@ export const TEST_FILES = { test8: '../tests/test_images/test8.jpeg', // "Test 8\nThis is some text from text 8" test9: '../tests/test_images/test9.png', // "Test 9\nThis is some text from text 9" + // Word documents + testDocx: 'test_data/test_file.docx', // "This is a test file" + testDoc: 'test_data/test_file.doc', // "This is a test file" + // Multilingual test PDFs spanishTest: 'test_data/multilingual/spanish_test.pdf', englishTest: 'test_data/multilingual/english_test.pdf', @@ -60,6 +64,12 @@ export const EXPECTED_OCR_CONTENT = { test9: 'Test 9\nThis is some text from text 9' }; +// Expected text content for Word documents +export const EXPECTED_TEXT_CONTENT = { + testDocx: 'This is a test file', + testDoc: 'This is a test file' +}; + export const API_ENDPOINTS = { login: '/api/auth/login', upload: '/api/documents/upload', diff --git a/frontend/test_data/test_file.doc b/frontend/test_data/test_file.doc new file mode 100644 index 0000000000000000000000000000000000000000..ac4b002ec130fe64ffe8b989afe4361b8a092e6b GIT binary patch literal 2048 zcmca`Uhu)fjZzO8M!|>-fsl;MVg(>dR47R;E>TF!%t;-Q;V|my(GVC7fzc2cX(0dr Du(NGRQBYbDK@U5B#z|!sBKHQbMc<;cFKqyg{1?16QVm_6J0^LpW zMXG;S4u@k($j-R)C0%J0?Dc7-))kjH)ziz?EP4xF=2Ns*$aH4Ty(gJKA-gEELoz=C zSKprPLomYy$+A;F#AkpRdM=i)6O^I_f{3N5iPOL&8x4h55gdn&s4M!;UC>SGpr&&4 zg=UA|a&KJO?RnDQ{Vhm5Kr;7viHTYx$0iH0Gms}e((poED$KAsaoD-RZHm6h$wJ++ zab=(c)ngP1fIhox*U#iWp~-#(*H{sKqpGuxX&t(I3a|;GuAe)E&eeRi=g&W0(V(~N z*3pht^R+q(mLc@I6GzQH?hm4+X`;|ehRbB@j;rwrxf{B>qb-ShCj?rG(7&6XQ?Q#< z5BP!>#;GpcpwcB8m->~Rm;2T6Nc^oYFh4|hnO8#5w_CzM@O_}ju=o8X>f^o<>`(lA zLKAt0R9fBV6p~_$z67I3?+2u^Dgp_ifv3f?wLRhSySIgp*b4d( z%KsQePwEdM_u$c6hk}4W0{=B|GP8ANX8QeElQ<;@&59myE+qMds?5GsU7~ndU*b@q zSg1dJ@~qU}Pp0%|Z_h^wJuTb;(u4CI6Z0QgMMO*VrMAJE#@Y)(1&ae(8?=|rT?VW0 zsR-SH6dr2ZA=)b~32tAr(m&H%Kn; zHC=rf=Kyd3Dfw2;&t)|oySDD1?}b}kWDEmDj^Z6KR5KJ!S@C#^QDq&mZp38|W@0Pj zJF;;*AG(w+b*nC!4ui#&RP{aH-M~$CV-E9JGz*k{Z{LyLXM9IFrRgvvtQ^M4j7A`D5@3OvofgA0TKE|4j}MA-@8;LL0Sa5DQn$#W7X z6o**QCGUJB=M^*}uhHQpW$7S~KFi5q2QGEoa&RixPULb;ZR`}=>EzS9k#6vhT{{S^ zaksQVn}jBYl7%On2bz9H(#CmNF~(he%$20$tw{+PJnw&)yP~$>Ga2uX`bdb3Sf2|m zo5iXp|09Bra=4L`V?Jz}BBx!YwBS%o6+>Y;OhY8`eJ3Rf`5rdyufRak$Rx_dCX9-< zQc{R)jPe4=$kbsY`DuNaxuq(EV5cox7&pRN9i{EVbzN4%l~$A$m-@~JlPgw#KN203 zkQ3<#?3&CwOSmjQq0K3Q)(~1ueo6a+2?E zF0ELzl4Y^WM6+RJJ7s1WdZ!8xoBUs;UkH|n>F>EOVepSEQ1xl&+{Is>2CsFnTVZt=@=!#7_+RA^Kf>jj%p3yKR2_ zty}_32kW+Am!xkToR#QjTz;a8tT%g?b}2gee0wqz zkvws0xF5bqQEpjUPyfiG^tlT9xz4i6vwTL7Q+fw@q@9|Af+_`N^vn)3;aO$%emO!4 zPl23>)v)Jc(h|lR$=e0kX!;8y-@;B8PhgHxp1QZKQbOABimY&nl5|gZ7V{G`=>(cKF)*awv$_&10UG2b&)9;y4k~|UnlLb5M&iC{CtZH)9Z^=?2+APK#QF7&z z0s)TM!O&Kr_MD&-T>-qsd+xyrDJ<0%YVdH7BwA^NRd7V ztbAodj2DW7MdTAW&VSu1!p&q8dAu%wAZMP?CfB z)kHfr`dfQSXN1LjQNPmWck}pK_Q4|vS@mO%o@6m5Z1NWHj05J|gZG*VYHA|&$(bfd zrM3BD{=^F~>4>^+hA2%IV{**ts-&bXU%Wpk9T6T%!rIyny&O|{Z#3%DK55Vl=(K%FNTxJY*YO5UKRK8(e3 zjQB7ji20)LtjyNyb9$h|Zf_6N0vI$4RMN)?N_pdu;o%Cvybc}BSax$>r>FbI;5-HL zeATC?;1uG>hvy@0CnBiba^?H7ebPIQ@)O1FS%V#`AMH&lAyIO5LDdrMYWefw914|N z8T18##?z#DNNd*3qYn{kZH}8_a-mBvLALk%t98&@1(iBc^~VkLP^6SebEI81n{O9$+SXkb!b}cw*b=OmPCUg6h`UqncG1@nE-Y`s>;sPmbt@PydVK{ecn_^zeEUZex3Hm3McN;NU8ky{5!TjG0Sx>0yuu8UXK z+smoi_N$(1n@!=hOy_}3#U_oQK@6CNr3FJhN=_=n?el|gzxc7;tiL;f|XRB^OUzM>(iSkf2W~zqRgc3~I z@L1n`PagJCL~!wb10}p86kSHV%}b(X^Kn8``dD!AA{{f3oW>5<`DeMtzTxTzo}V}0 z>tJ|6!L!W&to57ux(sJ#2nbAdSO~PgYVGXeX=~>E`&tEW0F$<*8h!iv3X2S$cJ1Or zAjYQcArjq)jl6qu8_wAk*ym2ZeZ#YiJ2mj9q7WfdS5eoHt4wUO<-6&^_09ESoyJ?gIEd;%p6#E{vV<4M z0571pSJ30)d2E?*+wqRxJ!tK+D{Z0c@nG&3uq!-#=g9N9QQ*bywR1g`+3zQrernmp z%+Nu2+TPa0%5huO^ThF0v*)TUcbPC*^+11*QW$SUbmQxdRg;eQm-}boR|hS? z5XN2C&h1L`c-i8RUyBgwkcHoJ?wGf>z1yNun4(dB+SF0K@R@MV3$Bp7 zlk}zX)>wG(y#e#eBUqIChX490+QiuD!s&DTn-SggOp!kEiN*d{qW7MZzjA6ExfK)__^M|S6kSZCzQFnE6yww&;R-5V94Ab{`qF@*(LMSQ@!7E z_lAIAjr;jocpCRvF1OP0tFQjKpI~jC{o*UuaBpgK`_H~p#e+zii1wkM%j=Gnist2hW#5ha0ExHaa^$ruf|&Z&Sk_aYxd^|HNCPo*8@@4pM-IiP z3T>+#ja7wgP@T-UT4-3pH-gqDV$RRit@mc^)M|tVQC|%d88oNnSGY-;lJ~w{Vvh!q zR2kefKrj5U9svGtpW%7fn&4IMeo|)XjgY zqq>_ls|fO=?PXrua|L0#&S!>~$2F@S{@U~5;^oivtn3@IOImi@N$AB~&~or9S%_3H z0|ye06h}!#Aq*|rDq`_JU1%xbE!MI74dAa!1F%CpRYeegcGHq0*{xUS6v@D=P|{-t zIV83PkZ14e@y8{g7w2|Yg>F&-AhmhE>WZK%Ug4sLBz41nVHCTx?X#Ysn0i%V2asQF}ClyQu z&ABy&$A1uTxO$-6sDG;K#L&4%wLwP>&nGY1n5`|N;Gr4-5cr4_=S~s~rIDWZ5TX&?9 zJ(KAoI#DkV+oS8~Sy;Jj_K(b=1OSs~ zuc&$YT-;SHr%}JQh91i`ddxwM(W&EZRT%up3VMDSz9>~Xm|$CXA&u;o9nVsco5i7I$#{j*s&=>ZP6srw>UA>?O4xUjYf447E+UlKMIQzJ)^F@OO&$qO$>{mR4+rMd%;i+tXf`&UFB)^|cKK`I8Z;*| z=+rDPn{u6k+(ez}E~#8s~ELub^6iuzEE+r``t7j3Dq zecy)U%QI(%d*1oYueiPEy_hJV+vCpF)7dlqYt0IS}kC`nYxwM))~1RUuXQlvytdpWDT=VpXujDGhET zU$5#8MC0cVDumdvX}+(DxUveYWALpc=u|tRLa|LDToPleU*Lr1)?iHIDATi6B>I}| zc0P#^x^#fU>*<|cXKZ-vQOss2NDQ%`y9k=22u9j&lZweq+LQE`=Hw&-45E@x0JWgP++Kt*nF(dwHo1wYQkD*S+rj7Uc_UWT`;SkjfNGSpvdES zHECk>yUgt_mkv?}{ixbx82Sil!-HJCwYeV@jpO-Jn2FKoH|CBdm=rXsVLs+BQ2|)H zzLJ{aT&$9Vm9$w#B`@c81X0rIOH3TRSy1ge5udqJ@*ic4zMdiKaj>`l1T42o>p>20 z>~`WJ^1`a?e#g?xhO{_O$$t&=siZvYR{a!*Z<`jzdVia*Wrb3`PR&G66qLwet7?$o z*jU*x{h)M<@ZlzG5BUjGRAF8DleL?7<f3EC3w?d#Xfz*9%JbdPuVMYLzO+^l z2&1;eRfMSM@~*O+lP^S_wN@7=%AtGetVYWv+SSpwMO*Kp-wi`+fh|uzHxr9KEsZD+ zm$hYHrBt>m6pLH4g@c6G*gA3xzf<4uQ!T2u`STH#SIL*6S~3xeN@P10E(mGFh%>(R z6@EgR>ZrT0t&6J#xI2=aiA9QTcdgt03Xidn1|;5V)D;5t)e5ZXT3J5sXJ zZA1I=l{-OKr*dKvbr2{vkopMjGo51V{@a=#t$n%4QVP$kHmp^1PWt)D#u7Duf~?ga zFhH3Mq!kQOj1@6+kx(CclkkUyPxcDS?cKfEN^jMA7|o!1XQP$X%+ZYXHPe6ssIy+A z;Y8W8yQYgON1&9I9Z+A4EmLyycKQ5g%6Ig!orWV1ZRWB+rx{yvqD=YQkXmiLl5&cv z#!6C&DYcze9Y1UXT#`6;isz%T-mxoo8jiYgWy$_@*0G+UO%yECt1k;9>Rp1dO3410 z*LJjb;`LtEn1O+i^|Y+h`9k9d#;T*UYcvCLsPtxh!y8lhWoReeR(GL2Awbe@&lKX-~!>D5T##TVA$PXxsg zW{w;Dy?@Jczfp)itz%*Bb6uS=o}F1}MG&?+uz~xLoR0GddV1X@{Rq9bT8cduAMXM6al+X10H>@(WAYIiXsWVkmej&xMbV(JB;Ck7$H89?+H+L*!2LaA^T(qh z*K8M;QTe^J=S7gy-Hp-pqPp;qjnC*geE2~hH02--u|>^2uBOjU*Kj^H+~|~=Fj+0x zLo+Y2Qi0=nMy&_M+Oob5M4xF&SRxUBS3g}xW90(YtZKh~Q_Ym16YVPOHKwnXYfaX~)mwUNnoA<{;_+c#$a60jZNRN=r-s2Nd6TVU&gS!L z*FinI#R+lJ^$>r*pSC82c+dJZq{DbkO{OlVpS(Lr$=}(xXbGO*h4*>Yk-q16bW2Tk zmZSK&r_6a9NRw&8DH6xZ{ynpQ(L8>hQ3dYZaOv7A(@jJJ)9ipg; zem<=680Et1X+T^3LEIAqWx6hIE#ing2 zXXLRzMuSWAE@qwQjj+_iCh6;Ys5v^N_R;gIBL2$6pUZUs_V`&i;d#Si$IUcKTG6MZ z#hV=`;NG>-E3Ua59OKvG4_m`2O;%o2-L{C_&}xFG8>E2RGnI7l!S1omXme!7PqK*2 ziBp-a1n`3zH}a7)+G_UcV(A(!=Yi`Asv<&4HCmk!cFr18t(b@Goh1Qyh#q1c9N~vs zD!@X$Mv}x+HD%_yMR`KtAkh@d$8%#L2feboa?M7Ako75Z5q%{_+s+8D-|2>j>_>m5 z_xvke|F3jurQhi{=tt_OO$F{rr16WY$9YVJ>)Gl}HS`bBUbLH`P`S#?Qxsn9YCYv? zw&AAyIP(+7cF9sb7o$=kUh0oYhij|wyTEz2il}mKiv`<>IH4kaM2~_1n)wgT5u{A& z%tur!6w8XRz$-7Yl8?;Y6xap&3%yKU+@V1=#|0XyBoaNmRpz=SHv~YHek53d0{u+! z8;6R_MPTBogKb%mmuFA&Y&qV#Oq6n+wJ>o{mQ`SPu8xZ<25`SR(~fn{V*UdpGxkM@ zmlf*wp^_uX9#j5zE3!rF{v=#V#LYx~Ft8nIIMXmr6{3+}(mQhf%ZpyZ_~;-Vc||26>+l(cktz^q#b0H zDHO^`V%wNYpt+)2=@ZSgcBycRS4Brd9d#|HksGo~*?q#5QElmXJyQ}O49%t+E6Gi? zTahp9?ZlVpTXdYuahO}o{N%L=z`CZkaKrir7wA`|)?MUh6aP_E zQeexG$|U(=NCjbN_i!Kg+64j7q9c`4!(CA){N>DDsfMqOdTcbBL}MKH#C|f14k6w-NVMrfGAo6<($_sX0epbQI_da3SIK zb})UYER__wiqWXZ9Tn0vz=-!z#LBBGg8#yw%>s5srYIxXA2jvL;qCvhp{f@DlWnG= z=>LmNLUa_VJ5snKHd|1d-&cJO>`1CgP01v$st#U8s4Q}3;Umm$&O$a5)ZmPD>03ib zB%YiFEkU|!n*77|#;n_4wpMgr_{3{ZxdE9WZN^y5gmI@OZ}Y8{L{N4D2LnF`5U%?R zQ&Ua_DXqLEUsjxTV}m7_$b(&0v~3HV)8u4?N(3~^0Xc3v2)&^aXMSxtyJAD?1-{+f zyD*`HdW#MD>(Kh&=F|?$?dYJ~x(|))U7Vu=Iz!rY7R28RRKPDO{-4#95T(BG86)~6 zt%zs3I{Cj0Uie3tC&%YzPjApgw-4fZy$8nyXs>J6HPktf*}Jad$(-KQ>NC+-SC(GFVPRe$*Is6A@&)C7la3+s&pqUlk< z7f5+hbXM}#x6Bdua+>#ulIHvg+ITQuNRYAxSvqGXLy6ZQq-o&h?w8Ly9r33WyB8Bj zu+j7n8u0HgkB5yBmmM&o4@?w`^pNZj17#p{T;SrNc^{C;;oL&Hn#qk>^^91tGfpMU zeM2WFJHnQ+m>(yNzkEk=a4}|mAWdIYhMGJ1qR*%;f4Qqg8WosF_JN@^9_8THn03nq zvH5!`dIa_tY^Vh2bTM*c5e6xJ^oI1>di>9mZf~2I(Bt{jX}wJ~^R$t9J0W8g8KgF_ z$g+%Cy>fWVsiJ5}eaB2#FQ6|XMz9;VIMOHgvom9Zxk5#X15mSJz655AAfQ7Vvt9*7 zjJSl3D4VuoWw-_gtbWB@W|w~Wn?~)0`Oj=Us0y=S-!o@hVBZKr!^WSFZD^tb59*t? z;Q#Q=Cdl%65%ZBx#dYC8k)dwRE4E3dz)WarNOt@0uNw@RUY zuu4jJuuA@Eg@a&L8lp~1Rd@-+@)a@>)Z%9{5#$qmXe-fS-!N1nzl&*vY(^ z3*nCR`_L%%kOCi2TQrmJjJ|f}-WI!=I2*~G6Nu;Z`O!8?;;{fz4V&5-1_QRUwMJ>C zt+Ky<+ezWEV63D9_cyJO2lJHqb!zTsr$|F;9Z5r?AH4hBZbK_;+{jf=!tbcau!D8L zF>QKyDVN=ZyMPJqU$%=E%~lm&qj#Pj4<=#&1`|a%|Iyx({H`hTYxh2An71KXDSM75 zsbGxWaau?1!*3;RqHvCi&n|V7y!3I)_49Gdl5Zfd z;M8s9_Z=38Qj<7WGF(NcMMmpM-uRk3K52eCd)5d)XO25F;J}1>P1iN zx60>GQ{Y11_3w@ETYU}E?RJRTn|L_xa*Q>Wsie)vtT^#^q- zm|8&VkKOk)u+_dE=K2q6N?kDZN(06p)TvAvS}y+=^&OQWc)R^{wLc+v1p7f5ppKI2 zkacTngwSn*Hh{U?Lba^-nxREJAl~hy6+{&_gh_$qPL$eA!0#JI1$RV(miosod#Zh{ z$owzzI&m<079aW_^_ z`fPJ_YO5aC*Tfla%Bu>@h5Po|y3Wk&sJx44y|?nz_danUq_%=);Z!!1$cP`2I&HIdgb90b(T@A@BdHvkEJ_g)JcI|5-w5+3d7Kx5ZH}aHT z)Q0@3oEto%Nx7ALM^|C0&9{$JDWGtl+UAWgTIY%ud(2V(^4Q6(!1On;tc@&c{@*4Q%B*VcIDh1n zF4X?Zr0!3Zb4GWW%Qy_&w#{ zmK;}+>DeQ9c!Cep6jqt=X6%L0`uBva2=bXLi%Uc*`)9?Rc&qhU`xfX&m0M}DEYu%f z5R)dxu2q9$$1(5`r$2|KuNzM1142fa&l1Ao zdJpsDAw9px44KF-1Ui%iGCXBJtZX5Sr>Ninf^`iIe>Aosskm0)FSDjg zfs5guYK7(iuPSSgz!hJPD7?)zX#{3$?+n--Px^b9bxe1{Nc$uUDFOwOhBFON} zV6<)6-)KnIg5UU}@xW*vflb_&T)7>C`ah`kMS9dZyZh~e(?*akxI9Ae5RHV}@S+eb z+DfO8z2Wr(WCAx~BZwjN10o=|VB5)MyUCf$nLR`+2$aGvp(ah>nd|#buLJEyOnJR@#M{&Q5780jnJ%tZ{ne>RgvPMe?ft_8G}d;qKO`& z`pQZdK{}cds5`LfW9a&ZUdsaMXuMTa+J6&=oCp>-N*;pu*+5(o7kb7h{5gW)HXn!t zLHqlIHy-@KS`S1r6m2}lD~1KaGQYP|I%Clf@I>B%y)6t#;J#Yk@M`F;UH~Gcw^fGW zwe!z6c|i7x=Uj+6_N}-G;X4nmn}rElYLbW`T1xYXpqdU*{YUX0cmFEhsoC|2?PzYu zUkdT{-y0mj8?5tK!I3IMXYoNQjEIYV`>+>}UarFX9wJRG76FPPs7UT@to6Y$bho9? zN{I?$z!ZKj(KDjZjsu-wi@G6sHw~_YJg$`akz;ULGl4bK_o@?zHJ*0Z)6TaTDx?QR@NdnTmv?E2TXYm z&YED^1Oi1xPdzKcLvMB}NO67yNV|Mmj^$V1xeYmPsdw!~X+40|=+}>z_KCYEy%e;I z7V$wFVOn1$bJW28HG2OOP*pGuQu~PL@u@y|zRqnP?!1jsc2#0XauI25Uj zH2wqw2g|8aL5e%eUE-ytm4*G?(X6XbEoKF4e^Cr888_X4(ySCzWo*LmVqZJiaQfc9&IJr$r%`j50iDl zQsn#L#%bl@0b@+AtaDyblXcG;?njeKI3)pNq0CUVddH>geOKl|sb1`&#(pG*eo2AH z#co;VZ|4Kqgabt>CY21eAg;0SafY8l#!^iEQoyAHwR}sjN7=UkiT2kzH0CCz=Rt0! zrW@eJh)kk|gJQb-Eug*4bpQ#VmW^h$98g6e_C>qln+k(Js9Nh&y>zwypqln+)oMS1 zClSra>(9^k^;;Mcy9KGoA+8+I@YS9O^;J4P4nAc9SXZWngt^lZg{fGDq5BzG`DT?x9!56aW}L&!Zw=8x=`~iJD-DtH>hPW(_a5ER30z$CTX4N zRy~sYi!Y*3f7Op)=2V9}1(b4r9t=3n;u61!E>zIop+3uLVv694L_sc8G8PwqpS<*? z9)^m&)ix26po_+(GIR)oiagxTe9UWs`H1&e$P7*w{3MWv**Z## zny!?YXJ3F-HW)Pzes)Yc+tQUr3+UHU)BX<+BI>>{i(Y)V+UN>;>I%P@4%vLSKf1oH ziEXBsvCbJNimt(75W8_OlvFxwCe?jzCZ)Ul7?h7`F!sTxCOfhSX_i~~u;NQNOUZ#^ z?w3)B6wnROPqnmroktkwL7wrZ;6TK;CqT}(e6-X!uVOB)lE}&}lK`Y~Y}@O-C!|KE zNq?V0Hfvr*HY)`yEQg_XaqKZrms0f2W#DoDjUdhwIyG=LP<$CbKPazv9Wb7}NOVvZ zlve>Od_!Dbho?M%wy>mj!S4F-@vOgiks@_hx26enhV!KC`>AGAv%y{S*;bM6{^RHT zAcI9DKfCOJ3Z(Vlf;YoiDh{SICPpD}p8iMhlRV@7pMnwnz=FX%b8${M;EhU8a6>{I<0@N5aCbGIcIT=`~M-CY*j9&i*?v1wsF zfF}6n=onV*LY$Ke=Se=tPi;-6iSqa#z<_re7hT!Wim<|T_g3j|%Qwe7dX5j)j)U%| z(7fpGjha~}a_MqnAnERZ9Y2@Kd-gc`(cNe0T!_yEK6pWbUB@WE3agfp?UDLX0(P5@ zM;XpUVEa%XG{D}=g=#e}oJSD-m~fuJ(g5I+knI5Bko*D<__F~lT4On?14?!IWkFRsytHZ_wW)~!|W-m^Yzddsu4w}68AhtfNrIBM5!#{-M`wGQB_hSEw41Z4u&>F zdC#pD7i(XMDH8fnBL}~&*lR#`m2kJ$1^i%%1w#WL>nOz(=m52)2eXxG@`lMf0dnAi z%dq`4Hi*_c3lH)V7pfT2`{vDO?vhFU0LM>ebp4mx2@9}1s6w@wn;vtCwp9BleAeCMUju%S;qD@UwnKr)Z>s%i5*?0EqLZ0|R_i`V*k5 z4~v+FXI+xV{>`n!@XP3&(Vk1t4kwW*HqYFp{3Mi?@e5`1%yqPj!p9N;;$HeMOOuz8cw(#M zVR`gzQ$B&SxxW5M&tHb|C%q5}{|+QG*gQAdnD2@n@)9R=>3^jY@Q{w3m$i9pvOr>g zyWazLO%Ua4Jq5|@^l$TuBoh?o-;OWk2j_7}xcR&;*``V!G7}!Vmt6-dX@7gPGm(6o9TJen>OIO^ z&uyHnduazkm%szzWc2ruDP!O3He;ZUMvwiVK5@JaBt%S)OXz3#sb1*B+Y2+-4WaqTs*dHAaun^D)Z zf!E7wdEC`bYB6AfH>pP2*K0Y-B-W3%CLzW(u16C0z3#eSAY8cg~mnL6IReW+un z4t$8rVEFG)@2$CT160ZNua7 z+S;}5>gG^R`PB@Id0gz}Q*u3)Lr_{7{pG{sF6L%M@o5dmcFSQwIVNUM4Iiqji>hsR zF)>UG{O2|`MnEJFiR6~i5>XD=4H&X zX2dc*nA_D|`->;OvJaX1FREZGFqPqNs$gvfT2B!o*E7bvYnaD?`F-ik6$3>J!sq_nRs|Xe@g0KzexBf10^o&PvqA zGOqHjms(fh!iCYs3;ZcA`w z8`Tkw&DM;}oZWX(m%c?Uho}FYabld1g{6Tlr#f(SJgDPfayf@p3(GjGnjxLpJllCz zyA3==LQ*7Y*e)xyp6HVO^xWLAo{w%I6=JxbYhAZ#1$)0*!}cindYdfPbxV9D+zCm@=yjxvm_UFD9HXcCFy_0EaXB;<6>f(NRT0w`>0%8VAuA zAAt^C?Hdf8M6d%ZH{-VyOdwl z4edvwVQgy_eCek)RsNA&+IvQe=J|0g;trM0(0{$!fI;SC4=PEWc-g_@0 z$7dAY5Hij(#q}cUcq=C1%lY*zu{>!>n#q0}2AX+d(cz z@OMqWK%TP4Hv%dP_*-}lY|tZ;CJI(M7XSN zwS+O)gdSSmCPl%^9;5n(Q&)pr3I77B`2z^?-#|@Zpn?~ZGoUykP`F7-#^^+mQFqs< zE8q`=9c@AIy~W!oO9m3Cfs-KiRq+dlO2B!@yJ8WU0*&JQX3cWJV&zxI*$0Zy-#&_2 z5VL=!_Yj3H?+jWNf9oIGCLz#z{B`I>x?3B8EypERngHcP`Hlis4AJ#1Y)g&UDL5~V zX94X`2e95ej-@AcBk5TmqookRm00Hs{i$@aaP43uS*+ZM#ukIU`ACjHi>^|RMO%J~ zZ4J)zKgsn2JFxfxPkZ0m75~e@h(pD4(+C5tyZRAZRuHYbn<8|gFZT7`|DWgc4LyVA zcsU^;oa^8q2>*FLU(?FPQqtVq%*5r-qx!yjX+=_vr;i|2wDa@4TksM7^_~?$0Y(GduD+gX($=iC{kazaT2`8SmQtPu z+Jw6S_sW?2v>^}AQ{Uq0zEQ^t)#!c{@H}emxuPQt#lVI+D*XD@6)srz>dxBNYUehV zt8T*8>1xjWv2lsU-(HxeZ^_To`;Tw&&&F-s8Tq=j=3;1w69?dYy7F z|42+yI*_6xuDT6IH?*pSy06bvHGS2X;=+?Zx)yw$%sZA&ExH!odb9D7e3%g~!DI6W)vs8f zzNs2pc<#yut{Hq)?_|Pr`gM6GiUT!zY8t*cAZ&+DDFMbWrw?ijC z2k*|=)*K!v7e7V@YHDos;6B*jb$V!#*qdHj^~wKeHN97@nyJF(m|hZoy{v0oa+WW@Vb z>&so;!bR1*&q9O;7^AWtqqMe=n2%MOpH45&LHNk8I^uSl6;7$rWY?~mo3|zsdv3uE zzw@|^l7H{#7EIQgx7HsDZaUlqH{pYu*l&Tt-de;jy`U`_WX`_Y+nI@9cu>|${f52Dt**(0BfPC7bDdJunzbe%#+b)X zL3@2|qpfO8$Ga%;xn^{bc_u1+Z*Cvt*wORo3L4X|OvvMQCyOO6_v=US+ACW)D0|i$ z3@7tsc%XtFFxxF#ur~k{>=v{$IH1%TK&=rXy=n>7uIo<=jtnIDqz%TZ0>)Gul28$6 zhN6>W90VfkjNg&?GKR2E zV<(N`-K6bD!!hfnHsuktC|99)sxj;#r|z|(enhkeczqbwg$NfNWDFQ0+`{cQig7^N zycn-&g+NtR19#B=1b2|1f;-~D9raS}unzx*ApQa02JxIp)JL`bJLs?M-$5Qzc96uS z<-bvyf5ZQQ^7nwhqx|nG@HyLH9nuSbLh;Cdw}&K#vucAt4GsZ=asET=za;&HI%32C zfWr{LVK)B?>j&5)ZL&zV{Ki>>;z6GMjq~?_zj>~gYKEQHeY*}0!vu%@wuWlsR3-a> zdV75p`xv@Mv8PM@R41F%4dLfA@6RaA*fs%#9y?~l)|i>0Gfdq^xiM@4IgQ=P2IvM6 zvwBy>%~VZom6QtukfUuj3||kP&cgTha>fVmu%d}%g*_(x*4=pA9?tkWd|nT1W{+%c zIcvstxRJ`-C(!U-?ma;8r%v9#o>y~vaRhR@)*pW{)xK%%GX0!eONzYRA?&(yj6xbc zzp=chuPDf3x-kVLYOQ*Xi!!Z#>0s*F0$#=W{`z{b@Gt?|UA}p;YMA=uL=tfws@ieJ zlRfQ&k?{mH>+pHz?dWq4H4(1)F`;+62^{(wH=&eeH|x8;8!$cRo}9*c<^bHc%kz@} z&7IGr@pr6>ol%ajF4k?i*T&iOfBxWcv<&l>(5FTp{ysZd@HwxX#}ZjPz<@w_;qpoCgwHUjzB$jVo3Y^umfHG@5>F@|?~gO|?HBYH$1>fpD1XJa(sUpwWlC18i)bJZw4 z3NZ$fdMQ0@g@P7B!$h|vq%85jiFxXv>{Up;S9(O4fO6L3A{9XL2-3j_5nRT#YqZf?fG5nJkRZnH$F8B>vIvyS28`dFQ0QW6EoVQ z0dD6xGGf&)dzHpKHaq;hLG7!##t9{kL*n+Si46kO_64L;88y2HQ@jTn%Qd+(*VA|{ zuus%TM@G#`yvjWjWNp04?8o)}+gBH@9~@jGFz}>V@UBeVrqK=}j`fVV8BSU!ODdhb zNt^&RoH;hr_NK1zs_5*Bg670dlRSc>@{bszq9N@-c*n08+fWn>@E=_!V(U~{-vB-2 zf`#2I+kX%cnQvUHuH+j8j|t3mDK`zB&k<>I&p}#9Z2cLLD7)Y!qB~`Sc*6xc0;2S9|wcKc|E?Jcjj??6f?d z5~Tev-&+m!A@zkC4mHNN1!^+nepDxsz+!ll^zO!(zukAz7_#=U@A4BZy-vpjG%L#* z11CMskC#$1qNemNEe+TWA>DcC0?T$%2InrDYaDr()Php&OHAa0!N2!vT5^R0pZ{iD zh^-}%%5b1HrPwq0Wlyo`WlFzrL{3whY4C74kzX&maK)CG(V&5Z#KY0Dqte4rM$%qF5(M2N*znUce2V7e(ay;8#ddz`23unxlYLPq-y7JSeA+-zU`kg?^`+X4iwUy9V~N zC`oPCuli4gL`O-7S3Mfs95)`-3BT?ymJIt+o06TJ3MFI@2Qtm5&o1{m%SIlYb^ae= zZvh;~l647-nVFfH*B&g2#SxUfe7qW6+ zwyquf;q7i#Tp*%=skxM0n9|v3JwaG&=`+ErvYnlRnw>%LpmQ}>LG61sH&WWA9UG%_ zKIbuiZ~d;00?zGvdWh24(KO*^I{y&jzR=!TarFL-vv1y`SjtiK!<@I-`pkf5scD>X zu^e(@Td?-S8v|5Mf;`>*3I0zYh3 zk~I)Q*Bo6QiuY~DI&PIm@!h*p)#c43}xx)^Sz9|RmvOmc2cx?>E_+cnp7OPIK2Zref{j!uKxg% z$UXUjG?cNz!hiI^MA8^W#3TN2f)!tAvWV!)ma#ABxbgnt^fW%Y`D?TdH}Odr33cC7 zHfo%i8G<51hLjj8OzH~}#erYiJt$I$nHiGkND~3JinFQgt3RAqB3>Q-)$?B5b4GMZ z=zEs!hwy4_G((pRQh(rMq^1o9hp+vF zb)(ZtOn@G~`H476QncvVYwm;q-)qZQ?X7M1?G;S?DIH-ikByg42O$eF_~;Rl({Kr9CA0clw`UJ`E&MEaSJIZC5hZ=^L2H5xLLbf7 z%bOiWkBjVCb@0Ap@N3Ao=Fr|jkTky8FTiv|irZ~-vCyDcA1xbKzoZm(A)8YC9CcZ8 z80fBdJ=#|>+P!a&OPB71cBDS_;_wL(j@Gn1FQ|w+os344`__$+d{%8g2Z&Apb4uHX z>uXZ|HBUxYF{$dw`&S{Xr0KQYcUN#0d0L*I=uoDE#r`rPFj{s+$`=T9g~^UKe*G=X zP%9-XRXnbPToEu;9b-#78=8D@U{`WhKBysHD)C1}xL4DQF5g#Zz19nRui%e$nC3f~ ze(7*HI_zvIim2l@qjiE#mXUAZ8rIpt4RoKf*Tw+$1~SmnO3^ru9q6ui#e&+%oRHRRmLtQT+jm+`BCv$nN z-m*^4tjob}e=iXPExX0Pq^3AJ{3Z3NWTlHIYEX*J=+>I?8`@QL@u1+&RutGqrY*;U zd;_LC2d%rFJ)Bis^dA7*A+;1Ds>}{MFh@k#n`><`CYcNXLt_~zC zxrovQoGWq#zE^U5IWPL-3|e#~w2iPXEr?GLSMc1X%}O%$yme991Kq$7>mx)PnfiBU zTv1(hX?2x=me>Ncg!0w2Lgi-9L@9Tc#*;~d)pC^7Z~NBN{@mDhzQ(Tp_8f;&HWaC+ zCH9VFg1tfCVWp2Y_usc3ogOkR*I~xIQsdpeh8?2a;TW4~3;bSvfV^>bEDyzvo zSA;fc^Ou{E>_dp{#Z9P3{J+bsQhs#@g3n zq*E!|m;JCz)!>loWpif;81JGXUoW4ym_#ZFh_ERZmyoJFiwELk(?B>8`p_-QHW6 zi4)yxP(k#V*sW$itwz62nW=_xsD^fs;}30(f!l;X1}fEe-L2L-tu{iy;(`46xC|7P z;-7z3tyUs2<7tD|KDS$K#%ROm(*FCNm5j0DVo~I$o4bvirww@5p~~=pj?I8hqJmTn z>8|@A^>jI=p1X~@r%f7Y$PfRPZg!wTGs7}Zo8+~v#w{GNif`^VYm+z%Lku@04cJy& zW~BrTV}m+2_npmrTes;B0E)ZS;})7L@dDkuaF>gb3|;KB-Rx7qBFBR3TR47mEKI81 z%@YR?S`N`9E?>HuFU+EklQDCBLQJbuvpppv5FM(e9IE|Vy-5rJ6y0rZq4(X20v)(^ z`5p>j9j2un;9dG=xo2BiAq<<~;HVugf2}W>B&UAms=dlGLrv`C7UB6wS-2s@VN^Yy zU3hcA$q1FP%8_Z0<~)CAu=9GV(|*rD*m`|U9roo|Cp3pfnjcAp*2}t7kGvQ^ai#n6 znWR7Vb~tFC%Z*n>pfOBrwPAFo>~oU823?>Pi7r8%|Cp$%lh1x{w^uL$epD@ zT5+>_Gq(D2sUvjqK#Uf9Nq=L7;%RvtUEEQp~bb{VH?%D3?;gXt3ndTu=#YnW$ zc2yo259)(n-Uv-`5H92%@s!ZDZ=|_Mg%}7(gq3LsZDAIEpQ>YZVx@YT;8LCm2x?K- z1?P}S-LGr94@l5nV9YHPibf{FTm%e_Tnw3HOg|){AS4OR?D@0<4vK+*Dk4MYHxfym z9%@}_g`QPdUsl6cZSaw=6$~VzvwLXbOZroWK~P8}K=^e|^rxy}Kz*}taLf;E5h9$X zn6Bf5m-1o%9TExn-yzReEdU|iF8&J1^BA&NZ}G2?SrAAhf?<6Ka(y|<6UD?JF4ojG z=veF2579_Mkt%77qJ}eQBXIUc5Tv4pH>80GtDPyXG@?L;mJlI%o@WwDTmZEdrS?~r z--N*g^Dr_Ns6y*O4(vjpfSg~2YIsF=ZbG0MUcLx}jRZmcj_jVCa*SU#J8G4DMQPM2 z@+e30Zv*Zh4qN~d27^Lg&4+fJ!P=x%zsyj>AwgozcUhaKVY;oggF<#Sg}Docx=0^L z>!<(Y0iBQOEU?!~f_yL(5ZrVhl8VA0SC(jEWObG2*Ly%>wNBLXDnL5E%PuS zqE^C#4iPZYEu?-ZVh~gjFny-X85wK!SQwuGQ5t6d;{`*zGLbQ!^*(;Ya|;ZItdadQJcFX&i~{iEdpjt;mV++4KDuC3{M;o zBWu)y;b)^T!0;!g_(*^mr}gqQd1V;J{AyJy||MylfT-j)LH)Nd3Q z1~Gw~2m?QnnHY{bp_BOfC^$hd0CW@#OvCqU(0|Y`w;!4CgBIa+ba*gzW_?;`AoMO} z-K$Z-nTM^biLIxNt-DKdA~aYAs_bs(+Q6TO@Rvb4DK0t+lUmYf)WuuWBK24+N%#V8 zvMPOhYWp+M`>5_w!)O$Gzw9cF_Nj<)baD20_0dqS{^P#u(M;`IeSt{a$AMPd)<3{RCrG z`9lcu=2P1A#I@UGIBDD8(vL-5K3b92FS`$%dk>Qe;Uk#o7%AyTm^daU>)uQ_?zXkt zN*31FFWg-|Q`1{ha_;ZdUhhg-?p5;R0jXbLYPY-egI01M>u8T2EWUhoe;;vw_vg)3 zkUo=XOU6xFEU7h>H=opCp{n1dT}!-uF{2+i4_(;~TVWI+$1yO~)-=yBu#C!gSRjHD z*Ept<+17O{fvC+LJpWtR%68AnFTfQ{qjlXNvHOs@0${p8@Ho`Nj0Fz}x!9V>(*yJQ(jbna_~*DurOV(#ywEW*P2pT%cLT|S9jA2+7_P+uM)*ef>j zia5TLyC@Srlw&157by(qYLp=AuM1ve479PBXHN%(e>04|u!Dy1xTl zOUvv|&%AzFe|o8|^{^XgG4fS1i|qbLnC~{z7Z3wBaDQK$w1oLBAK2e!8hA^~NmVXq zFrKCQ9RWR%<&a19VjLYfrRo2o=M3QxR=@wBdK`SQWk_4#&(F!UPaf{fZVDy0QXlqq z4`8{U2OHq26*R2BDgXGoBQy|5_CVBr<0ZncB|`-~01H&1RjmYCjU0AN`m>L z6xeyFkwq#ggPDb~fsTqPwJZs&5zXL(52T83>?!agVavDll{c&ClVh$RFX7I}tKkG8lL z5k`U5BTJY$(lk-VgG(@`iQkusA?Ud&{WM{=Kuh!E+ZA9*H{pRf-g%_yDdbe5j3rPw zQ=9^9MZ+Y^5eLYx5% zE*@^)lVONZGkQq@EK$w93K}XDblhYpp^_70uvwT}0%HTTl=VM2b+GsM6!5 zcBd7eklO2FWy$mNV=H?4n`rZwIFQ^!8gSo(<|MZrAxBuu3~@(TH!g+mjw)d)p8b2a zgk+dxt;l))M>H&WS3WJaWI}GhLEJCdE;bFa<4xZpEDjkk;0QZY3`ByKo4l zvTxN>jV4v}BXDf*YBlkJJ(@d2(?09DuE@<&EAw zcCc%t18tQ|`-YHA>~K!MDu3d#%-Bdo6R5vqxr9ipjm4eI{|dFz=Q$Xg^Ibo0IS?gN zl4OP|UOS~$L%2lspmciO14>YyM03UZm`X=5JCcQBMKYIc_!`lOC*mA1kzief7c4j! zKCA36PS>7~p44!T61^HHROByN2(I~#<<@A1lf2lJc2*pSkRNi>QN_OI%}c-3!~}hHNrK^ABphI30a0dQ-!>@gLMGf6afP z4&x*jo&AMc9}?d`pTT#ZjbWpW1rf%Mhh!~PwOgjXqo_{nrwLjgQluQfwZdG45J=Z9 zo(>tto&`mZZZm{3p(8}w$*>#-k3EDF#;)zR6syFkQ>8==8BngzbAn`pMdQzouG&Gr z%qH+3u1Xf8`Bjae^$^DJQqhD?H71ha#9GeLAYuS9$l5f^VadYv0qS4%s*rJ6{wQh! zsw6D5Z_zAN9)nTocAX_&X6os!FL~4`9nQcA0XBw*4AMri;i4JhPD0-!S{AG#E|;gg z8E?gI{$)DOE`2UkwJU1r@dGEHL|=V&q9&5vSOfwPJQ~CB!DMk7!$wt_$+#jFfoBLO zMA}epX~I5|eHsyT2nPYGnQYl{k;9G3CQ}$-nuxN7TGlz1ad8s2&{~BZqS3_97YS?bV%~4&A=OTW3H%682N`hl zzFCPj8#%4BAE4BAf;Aa=5*(6RsAx@0Uf9s|cz=?;CRH?UW>pqS5qLlb7AHdPrFy8&C<4nl26q%>02Z!#WoZO=dH<4tmR8J{}4owH6ET$Ei7x7Xlr_jjWDJ65WhGfaYw*489_*9}!zkHO(Y1LR@*+11qGF`w6Vkp9atq zxK(IoM}JX3r*5bZq%mhKq~^l>ld1Jys4)g8gX^kJNhKGlFjJ|hNDluKwFvs3s6+@M znWdV z3OdB*zM+%<#djb45AtSb#H|aQ>YQW+7jAH2*n0@1O~9HUIy-*?k6P6a(bUoiwDc1} z^v2Y=1BXnAK&Nq%6Ab`mz+CW@l$kq#a$?Z3pK9P>oi8Qn zt(~Kk4#4LQ2rV4oOV193qQ7vi2JaQEE9nT@W7v}^srRK9L>ght;z(|67!+N%1!E$i zagNy3eC$#Cm43gTLj1gO2G+or8FN#IpOgl-FOFzY% zm~ut3CR$9QT#Tk1%wzLPs!%1J?@)C%^M5pJpoV2*Oy$>F^|S0TTXB_g5uo zW3bXibkN{k1iaaZrX*LKR4G&1*)H8JZ6nYE zE9+-C!GTjzb!}AgEO(S(rLj$eI7gyg-HlC3Ffi_3-+c$MtAGA0X8ibO{?q{iG$e|=$NU&zpg~T3zX4(rH%3b{+o6i1^haq3 z3_vNFDnO~cB0p%HBTqd2mL#+Vnu7F}w($cd8J;9pYCh)%b7&A~5r7i6`#fDNF|TO< z0Vswf*W=XK^fPaw6*}eiqPpTAnvW{vO zhzU}vqo{UjyrbyP)Hp}cjMN0jA$TZht}FQ8!xpaMLWdUKri*Aj!=WIM zW!;)m|Cz{Li<~Iy!y5I(RP zTe|TM4lwJ7*$Mo&DdJrq>NrPFgd9fh1C}@qB51PwhWG-lk!u>oF`< z2(DDPc}SUFDo1D49GS5npFY=JBjt(7qps;jqUi|N$hr(xUhTq~f^=-Bpv6O*Rv$8@ z2{SjpOuatjS^>nfJ75@aTkK_UN-YU)s%Ce67RFJDnx8;o8~f~gJP!87k23I{u(Z)G z4*^jXH^#c#9IkZjr+KQd-|l_PNgU~{qmRV>O9KfBLKqj(o?nU90O3naUJfsX$#40FN@K>mr5h1+W z&do4>pp`KGH0IvLeZ&~Sw_W8S>>J1-LL}cjwt(M(z&D{(2%B;5#Q2qEe0zvH7GVNS zvNcD5?X*l@w-E$lE9S$PERcQsvYIV^kbL<44ut0tdjr0KTwsp)4T$owv3dh|=soq9 zY5QiF03eXS-+}nTQ-0h)n(7Jzz8lIrMA(7jdtFF1rJ={gxcEFz946qGOZ;I7)}8?& z#AIv{OfCr&`5SZ(F|G0IwALSPb-<-z0z@B%JmSc{K*h6!!mxvmBMiDj&YghIHORh9 zCO+k(gna(LML4+p{`~UKw`Yrgi(rK&S`O%zeHjss{tfyYdk>L5u@Z0_L^{IP#9)X#+H2=MH`q>%dm9)$YaF~PU|${R?^ zjN#`b_v2umPc^W=9m5i;=`!TVZ4_X@zqu=;iH35)xPhF~@;ajXLu}Pg<&PvL{6c_i z<&)Y^CKw51-k_0xYVr2}9T@u`C3C+;0Fz!)d0aEs0KozxZ~ait=&^r>aJ}Ds2-J#^ zjsCO-x6RBSIX95Fj)2zKLo6`?$WerOM?yGiOi*ywwCCJI>|@_UG@oJw0Jg3AJX*T-ayC9c)``(AmgZbX2;H}0Do{SMWj zQp=Fi&OZTtdQDet9@-Z2mp;O z??U+1nDI6gp>v>q@@M!i+qYFKf>)K%?7ROn*cbUy?(?|;tB?iT;Dsp_Ma+NESqtA> z#gAG2h_J#UQr zj}&;{g()R)g#Q3#_gn78%BX{JO}{&5Z0-(aLcAFQMCz5c!_xuK<^>0=S}cgrvyT$a zvN+{gh0Nr+rX4df-7-9+Q~LnK;7Z#Wd2d_+>&MJ!L9&i~xToXKXCN;$AyDBQGdj=N zTK&PfruA?nxuzfCipmzeH6aDM@ny+jsn;#|4P3wVNN<|_DB0%tVZv~IyrA!-5;vx5 zkPa??ldu@vq*W?Ubueu#yWxFjR_)@->@u&?s^1U2gj-uxB%vJh@U@+U(^=aDCNF?y zPT_sPOxN-d%02|G9r z&g_a~;%?94P~)bCvoh-DCbU=LwgPogls_O^nRuLs5Ok%boTEwuy8siV3o#3H zMj2_miF)^-I*-rGO3TkmTEwDLk*AV|7v`qcwaju>recjFh1a+DNL7-DN&a-M?hIZw zOG1r*BnKRh^0V$`xv_^6!|?gXR)+nZNvg6O8KoZ;b*L!yl;p+d+z&9eTWhGozz+|c zf2tl9F%<=W|L|@TJ1l~q65@^z)a3<-{A0x-**z)ePC1`ttTPKDppXBQB$>>qe5cA@dw<50UYjTp*%~Fxs>o4gKytDlV+iU*g>wu z#tBd$qw{ES{5ijY_Ex#qQt%)|@4U@wvjq&qVLU$H?P9P8a4kyqLhTu1H5B75lkQ%^ux`~*l~-z&WGN=C1UW0W&2k+UDQc5S;Jj_z zG9=HD8eFohyp#dbMR7zxy2#=Q#fErTWH2FxHsUk2wQ|>-mzM=aOSuu5@MRHWLP{eE z)#74is=qk1Ia z&=~Ix2b?9E+`IZo7x^uU@*M?PU>{?IbR!l zBUlp8>#~;lh4uT2w|&kxE%y+-!yc&u4R4^!9`jShyXE*6A*LNC8V@lF<<@|$GBUN` z8Kr0W-+)^r?b&Ur^{F^pZs+{AeD{svx4CkWT-2#0#Yy-!00bc)VPsU{(k9+ z3(2x0{kesikQCpdyucJDeiQc@pFv*g)?CnVkW`?EHfFUe9Jj!aaRtl`{?}{C4DCP_ zlskGaD5t>y*wBuOBW__8I*@6{x5#|lN{>5+j=Q*Q7}#064e6jMwi#JaUQC=t3$q|x z@COy@xYaJU^T9oZ3+@>8Sb2g{oC^NIVr+rqPv^if>NM6E7 zH$l|zS#mmIp+mJ(%UL?!0`s8Bk$B9C@Gd7HE216S6uC5hW{rdw(0?0OC~+%c-@8($=H`G{Q}TJ=2pRDKeXVVTY}g{5GGBV`gPx`Ky#7@V zO_Z9JLN=AJU>^qDB)g5H!l`@*4|dTfmj$$#kMgFd(mH7Qtmuy-`P1Sgsq8*nSj+&< z$6!ur%GtVXZivKZK4XhHh;M9dsMTh%f1VWPV}*aKPwttYCi-iJq>*v04^X-V1vs*5 zvM0$b9&IhPj|6}r_82TCZP8JeEhb)Qh!WLKh(|XcC*PDJCjVvS+gem+dUfRtT|+bg zhh)&5Bd5NXz-$^FSF>nDg2XW1%_^aRE`dZ2MbmUwxNfYcPVzJft)+2nHg?1B-I(^g zzn=siu=}{y!D=oKgMxv-Sj)Udht>ff+#vR+ZoR)4U>XDjLo0QLYLbNd7TaG8a5hI? zz(*!c;~VitX3ZQ2CTR3(AtGQ{Nm6Q0l1Koi!5dZJm=YTw)5Tim07#}tkb?;`7Md=@ z5E$h*@lcwkdVBeFkwubxU>I6$NOTR1bjm#AftPeF*MoIrnRx#pRK%O*uJYJPI;9Kr z-8|mzKKb#9L}Hi9IMv#Um9H=TcS zq4jK+8n*44L$^4|?o*$V)osa9*a9{m0BZOSWOvV*0GF?@O}ZX2o?@PMd4YcW{G+$W zWoT4^F$?}{9(=MfKMZ5Q9FQnAEe*%r+)AnKn-LpRN>~IFwIM%`ANKc-kIQ|2c0+pW zbYM>;io-+iwr2I>#Bl1?zVP-q7_b1Fa_;)y<(#PU_b$~V#Rn0Z+KS?rMkwGyEEgMN z&vnZrm%35h^v!I}cG*%iD>mA~Py6)u+)g@)#dJ0Z102YdI9NwS!E4H9U7Q~V-NbDV z@?U?U*Y8iAUk>g>IX@|D)M6YL9m6H1kYfd64y7x^MesYm1s1NXVq$gD);k3s8O>(B zOu_R~#$$Nq1yj5@W`Q#JV`%S)RgBUCVk%$H()*9 zrBD8u^3|ViX?19MAP%3;dR1vvV19lXM_U3ud9$1&?)^p(p`k@Waw`U!2P4R&-l42F z0lf{xT5hH{HeUf{{ZXDMT&3CyT%l&X{R`7r-AI;CAg9sxxk?z5a zWMpYz09@F4`g3joJ7x-Vg}SOu`7hDn#OKO>iqVxw+6I=7Ycc6_wZI*Yoaqw$dc2>c z{cQ3B2V@Cgl0^Aw!?l$#AU9(AW>h`?yS>pM*4&~SGz-^2>SmWmdf%{IdSn^nt zj=EovnrkyN? z+RGz1bf7mJB^2o^W_UO6%N=I;n5aYS!Xit=*Y&p9RQ4+WrE=64$!&5&?n%zB*kF7Ug5%PB z3k7`g>ozH&8SM!H5bJ93wQ>D4IzJ_7q2=&6tiCnUbk?1GCcD>bbj@H^gXeiZNy_i{ z>yftfaNondExG#rWxv~xX&*haT+J`DYfKpQ}fcKx$ntv55`(|dW@?RHx^lZQN zAQK$WtXI##L4wM@X%w??0t*&?XOd70q9YzTb2DHu)bz^}s}=`V=RF1SDRKFhFU~Z> zj#R!~0}CSyg!*3I#iA+Uuh31C5h^HNsA!Cg3z($K^&`nOsCz3LKEA*PT8Y+VM=$lq5t{CY7)`>=7++~j| zAqiyq>4~}6mW=}X6UbvF5T&ls6NecnGvD;v4?@$Vdr7VkK7vNOCS|8Cy5+HxBy6p2 zd5rE8b~dY^c@85wA4SXP$@QCHhi5+txa_t*R5vGhc*tU644aSRb-P>ee>(Qco#$c# zDDU1+gPT{I;qZkyExBF+9@*N04Qu%5lK*D?$4QLJ)Kl8CD=A>Ty{gQk@T2=maQk%!o9j*zsq>&e9`++8SJNJ;EZPL~!CXNF=d# zdAhfg$yj0nDw(5~ChR=J)>X%h=)?q*Sai&ljz*adZE#O6v6yir^F_;S%vql!lxbaf z!A`@(T80CTGLbP+5J~pdN5kiM6psLl>x*HYl?!7DSS>K<>9hmP<#QZ?*8l-gR;pYXE zn`bwCZB4l@Ctus(c}awZCp2rWiH93AZkm|7llJX67rjURog+xu*tm{*m)l{Vu346S z&hY8!?)t(Y;`z;8=_sSYrxGT|<3fU!J0}fh2P5iy?yxE1VBA)`k(_mUYMW8A1=(F&27B~Q@y$T_Ofu{ zZ!@qIw2c6&4R+E10ipl&X09B{OX~hjk9Do+k~Y zj)TRQb+?EPv5VEqz`Jq3TH|L<%q2SPp-7Z0ZTs{cm343;|>F}DN*P92k z6D4Ug5H+~GlAl$6PnCAbV6BE0*^R&Bdol@z4uF6;6I1?F=YDIHW|oj5jYkuuE0CRi z7!=565JHmHTsmEK$GTH{d3c!2w6dzmU<1F_uU)xRoA0FDooy)=qkTpLY=J#5B^3uU z%m$v|IvMS}DVdmDlA_SKb?S<9PLZJCtA;A~MPz}hPR^om-7dot2Rp-@ zU+(kPv(diDio#Mi;Jw=$1-i0VJXF za_V{0CN$bAq%lq&auazCEHnX&H!~ySl@g5lUtSKE_D5?8-gUuxq2HZQK8{`)KYU)Of1f{pbI9>-1{zE3+xC6AXf^27 z^+S>xIW0F=!&kX&}!B#oQxv9VB!) z5dmiicnGTOzmg^P7xP1y$9K#fH`WPjWA-ScZa!}ammEzAX*=}9F^*K8&#zhqYE8nD zT9{YC?rwQ^*6g|4N|FkvA zRFanf;p@u-b*d+Zbf=m+$y`m0$-$Ul5Rq;?S^hqoU*tF_*HkNF+99mm22GNIY2O#_ zr(dr=ODZ*HN3|g=_O*0s8E-Tgu7sHc?H+H)gZMW?rZvrGLbH>Qsa&ah+#MOz_8ESVwHUW`pqNpvekel(qQ) zj0?I_cZlpbRKd{K3Sx85%(HK+0_weYrkyhDw#o1EE%7Vc{O^4{n;}g`Mh&H}>%xK^ zm2T87*P(NZ9J@o?;w=6%UOzn)cz;=0l$Fv~Nmu?d^<0U#^1bWaoO7Geab3qX68<`z zl((+y;HR50ayq$IIA_Us5Xo5JPupw#Gbu_l9FG+X0YrS5QnRg-0j@|Eowj)}&8A_f zkSI@gE0_K|jX~Lc$H_ZdN(urd`~8yy4d8 zw=mqmmsD_^O^{bMt642+FKQ=0sYRZQBkfwU3AZqbdl=I+yRn(jbh?rtt-ED|GLfOS zfEK%*De>^6O@eB|K#>fVmC5`RpBozetKM_(Qbtb(hFej-T5tP@t(_9?w(s(phWuY>$rN9C>y2nT!B%JOd8XKy#k^7di5qDsC`Lg>v`_u;virMY!khU6Lv$ zB|gad^4&v|lI(HMW@$XY@PyLPoO4j}l6%L-d~qV-IYWVV>e76O<*Z8*P_dp`&QTT! zRzurDq<+~VA|yoxMvn{S7l)?Dk`1e~%rNC z5b2~brc`8b1leN7j3F%s?Fy+)b0E1X8b=G{Cf7mUGzh8JRu{w9Z@J_8#rye&b-bUu z>2%P}v0U%9dcPt6nTzH4@vM{r{_r3G+3TMY@Fs39t`2sZcD9UGu4Za(Vm+*w4Ehr;VBIm=@NWJ`oNa#u^GXC5O>)mnx<~Vv}C-(tD$i^ezDkkOP z2;+4rE>HM$cO-a+6nq{m1esNXWT|2yq2<=*4o<89ib*p*j<&DMjIju&9t2|HSPp+u z9R~eA=7`l4fLbve5NWHC;ziNSh9kjvWJTV)=Btj6rHK5(Py@kbbXiTGvq>IY+XjKwGR_CIv-PaH0F1N2Y=bP@bR*WXoO|D*1&60p%T^?>{w31X*Pfw;-C!pwpyU-J9|r$7Z1n`I0C^U1}|7qPNUh$42btfV5@@5J%miQ~*-)z?0m zsKu#?R-EY!xaj4o@JqjSyQ$?(xTp{bb~{t4L-ja45}jHaQOaZxwmS1ZNdBwt`CqM?9anE3$b=^Lt!LnNZ=5*~ z%n~h35{TMnNm>uz-H+UsbX_#M;=@ahhuviKTaD}05-*;>VUWFH)hrF=90eJaY9()e zNLE)bI~(a3PYn;h6*zZ$Ao(Z>m+RMUr_t&K2nGbQTY|&%>6?>{E{mxaQb~JGPl&@o zecbVEf$2Wi?MMuoO$L-C6DKT+D!nclpD}3CUl@Q@rOt0^oK6{LO2X$Z^Rp~#S0^%Q z>TGs0+_c~0!s^~G6^s|xZ4OUl17m9{ z5LDNT7AI}K1ERpHJIftoX4<%txip!kt;!ZCi(r*S`8pYm>buST;Vu6L{`>7ZFkuTJ z9Lr=<0)SbF&!zjbbcOqb6iaXG4f{|+155%1)6!*X>Gzr)=6z48RmeuQ& z`khpk@|j81`Ya`+(x=Xy?}Q`sMZ;twrifVy9H@<1XlF3O$^y7$IJvmbmXqYbImx9i zLlihV75uh;+^73_vExBAQv0R{QjOErT7dlkkFkt^agu^|SfQik{{H)Mx`-S7+ot@w z0QfeA1jk0qWq7x`ZUyQag2wLL>GJ&7VLk`L0tBRJ2?d)Ga9t#|c;&9rT*-6&X393n zV!!&gj^b|4Zwiz3ho;nY!!qdWLM$x>7p!U8Eitq7@xNhz65l#YDyA1=Qcz|7SRj*= z#Ln{UOIP^L85@_4V91^nSx!M?nhtkMw*4cV`!p*M06>?OtsVV{l8^RpYZr#~Et?JEdepXr&L zc2nMP3KH22&HLRi-;Ym(Cc<#zFs{UMb@u4`7mOS4JXm>_6H%)da}d_@+%A$dYrFNJrEQI-AC0<5JyUE=O=<0-e0z{ zJ8zoREZ(4M5M*mYqV=-56Z^hTy{@7gxNCTCQnZNZ3`_CS$U~Ji<8ypBIhzJM>6VPJ;3UvR~O#wz; zfa}xV$jX+%+R@D7Qr*T8RSk{5(~FbZZW@V-9u0D!lcleSUYHhy!|G>A5=Rkzty73p zq8w@lh0(W#6#4A<7odkwKJU+ZG*#CuC&jq{9%V5>2}mSZG^`O4>l=1HGy~9^jm;ux z#h`eD9~YZz?>$*}n=UilUdQ$YqXh^A%3}* z=X(MhBUEovrf{2d4PG{=k>-YZ`)al*zM38gh~ZdA#wmashI$MqXsgX^t)EqD1@NJ^ zk20>?7(Xr>>X{|;q+Z%W(L0W?y>2F;dqM2S=iWj;!mtw}@CnyPKf*p^85GfBmUHBDth=p!c%v+ zsg*TuCU7_k77R)VpMMi6XwndbGARI@8IHuWYbO*)8|)s&@`m-BAm~qs6>hZX3DgKr zv#$c#(UovDN*Y|a3qg_?%!%Gz$8j($sc3P+O!3bL{4B9(h0SqO*lFjI+PO7uUx|Lu zgc+(<=)k2sti@*yd0y_p^uG2b9@k{xcQ9BG=O{Qs3JxF)B`+kNZ?8OljEP1O%)5Q= z-ha1KbZh*$wfODR1DV_XHXalp(4RY0i5bDv>X)EIy5&QTNKGAhfYWi4(jPp-zZjh0 zs!@FcUo#``Zb=!`oSaIN|6O~)n&0|kZNp^CcFX$XCW8U-C%HXpYv8Nj`uOD@KO|~v z=J^r-!K1T-<1g~=O59(u{@-dBacfgNA^3wr9Yq^G0PXr z>ilc#IfGw`avtV)wkpUz6<~>9PI8#14`9G#BV<^@1IWVU0xTeAf8}|K8o1JIb5h(1 z4p1qgp=xnon#!wgvr&j<{I??#dSSswfJpD__fyhfpb zM0A|c@@w`XV)in#y=+)@Kwm@Ps4>hr+1bldE1E+!EdC_0x0xks#SIL9N%g_c$5U4a=A&G75W3Pzc=c7Xpy;jG+y!-tJ|ck&XONpUdtB&1720bEeZ21 zULJ08mwV*DJvRyZb$;E|CLKtsxJ;fchZ6W4%r&1AczN%al;-#xtsUq1=DSQTr|SEd ztyk7|KQFKIZh5rY9M{D1Z{3Y=eSZ~rznB~}c);WKta@_aK6Uuv{kr+|ZsE)2ySrE0 ztM~FAEAUz1#@q*=#BZs$3Kl{hMCz%HImn^nAAh~?>^2yIajI7t5<8=lm|(P4_rF$I z{e1%G&vV7fuZ}pcoGG0C&DYA`J6LP?))k% zWld~S84DV*690`mz8$g;@MdHZVFnG4b1+zKQ;J?2v~=QBU<>sWaLf(V?SO#>pcn%~ zv@>upI5n>%KBTfBwKx{kIzu<0Qq9}p2TK^ zX9AU61ZosS(fAxF0i{*8*oq_?2zJ;%A8d2bR~KipdTm+)8D}O%o0U2+VPU;=Ah4$BFqWT zhna&kiGr>jec}b7-L)919c>y0-30WB2!sjcB~TMkrX|qzqmLRR^mCO%^`nm=qZ@(V z|3(ql=7BJ{VlAZ0Ps)?t7*D=-Iva+M%MA~1VYbb)vP&UY4L literal 0 HcmV?d00001 diff --git a/test_files/test_file.doc b/test_files/test_file.doc new file mode 100644 index 0000000000000000000000000000000000000000..ca4082b787761ca5b1b60c8d2d9eac86614b5180 GIT binary patch literal 29184 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 literal 0 HcmV?d00001 diff --git a/test_files/test_file.docx b/test_files/test_file.docx new file mode 100644 index 0000000000000000000000000000000000000000..999106a0ba2d81d21f2023df04ba636320525778 GIT binary patch literal 13265 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 VK=t_Ts{lAa574_lGX1vp{{RVj*bD#w literal 0 HcmV?d00001