From 58ffdac74c268ce93dbebb935d0f70cecaa288d7 Mon Sep 17 00:00:00 2001 From: dragdra Date: Mon, 26 May 2025 17:46:45 +0900 Subject: [PATCH] =?UTF-8?q?2505=ED=9A=8C=20JSON=EC=B1=84=EC=A0=90=EA=B8=B0?= =?UTF-8?q?=EC=A4=80=ED=91=9C=20=EB=B0=8F=20=EC=B1=84=EC=A0=90=EC=9E=90?= =?UTF-8?q?=EB=A3=8C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 000000_DIW_2504회_B형_채점결과_0점카운트.xlsx | Bin 163613 -> 0 bytes copy_all_hwp.py => 01_copy_all_hwp.py | 10 +- ...p_to_xml.py => 02_conversion_hwp_to_xml.py | 9 +- 250526_DIW_2505회_A형_TEST.xlsx | Bin 0 -> 7149 bytes 250526_DIW_2505회_B형_TEST.xlsx | Bin 0 -> 7149 bytes 250526_DIW_2505회_C형_TEST.xlsx | Bin 0 -> 7149 bytes 250526_DIW_2505회_D형_TEST.xlsx | Bin 0 -> 7150 bytes DIW_2504A.json => DIW_2505A.json | 226 +- DIW_2504B.json => DIW_2505B.json | 317 +- DIW_2504C.json => DIW_2505C.json | 330 +- DIW_2505D.json | 841 +++ diwScoring2.py | 51 +- filtered_score_diff.py | 25 - filtered_score_diff.xlsx | Bin 35553 -> 0 bytes hwp_conversion.log | 30 + score.py | 227 - score2.py | 327 - score3.py | 304 - score4.py | 50 - score5.py | 580 -- .../excel_채점결과/250522_DIW_2504회_A형_채점결과.xlsx | Bin .../excel_채점결과/250522_DIW_2504회_B형_채점결과.xlsx | Bin .../excel_채점결과/250522_DIW_2504회_C형_채점결과.xlsx | Bin .../excel_채점결과/250523_DIW_2504회_A형_채점결과.xlsx | Bin .../excel_채점결과/250523_DIW_2504회_B형_채점결과.xlsx | Bin .../excel_채점결과/250523_DIW_2504회_C형_채점결과.xlsx | Bin .../2504/excel_채점결과/구버전신버전점수비교A형.xlsx | Bin .../2504/excel_채점결과/구버전신버전점수비교B형.xlsx | Bin .../2504/excel_채점결과/구버전신버전점수비교C형.xlsx | Bin .../2504/json_채점기준표/0522/DIW_2504A.json | 27 +- .../2504/json_채점기준표/0522/DIW_2504B.json | 3 +- .../2505/excel_채점기준표/DIW_2505A.xlsx | Bin 0 -> 19901 bytes .../2505/excel_채점기준표/DIW_2505B.xlsx | Bin 0 -> 21054 bytes .../2505/excel_채점기준표/DIW_2505C.xlsx | Bin 0 -> 19953 bytes .../2505/excel_채점기준표/DIW_2505D.xlsx | Bin 0 -> 19529 bytes 회차별채점자료/2505/hml_변환/DIW_2505A.hml | 4220 +++++++++++ 회차별채점자료/2505/hml_변환/DIW_2505B.hml | 3155 ++++++++ 회차별채점자료/2505/hml_변환/DIW_2505C.hml | 5522 ++++++++++++++ 회차별채점자료/2505/hml_변환/DIW_2505D.hml | 6394 +++++++++++++++++ .../2505/hwp_정답/1교시/DIW/DIW_2505A.hwpx | Bin 0 -> 132528 bytes .../2505/hwp_정답/2교시/DIW/DIW_2505B.hwpx | Bin 0 -> 73230 bytes .../2505/hwp_정답/3교시/DIW/DIW_2505C.hwpx | Bin 0 -> 100375 bytes .../2505/hwp_정답/4교시/DIW/DIW_2505D.hwpx | Bin 0 -> 152816 bytes 회차별채점자료/2505/hwp_정답/DIW2505A_Q.hwpx | Bin 0 -> 823416 bytes 회차별채점자료/2505/hwp_정답/DIW2505B_Q.hwpx | Bin 0 -> 765918 bytes 회차별채점자료/2505/hwp_정답/DIW2505C_Q.hwpx | Bin 0 -> 794395 bytes 회차별채점자료/2505/hwp_정답/DIW2505D_Q.hwpx | Bin 0 -> 844503 bytes .../2505/json_채점기준표/0526/DIW_2505A.json | 836 +++ .../2505/json_채점기준표/0526/DIW_2505B .json | 836 +++ .../2505/json_채점기준표/0526/DIW_2505C.json | 841 +++ .../2505/json_채점기준표/0526/DIW_2505D.json | 841 +++ 51 files changed, 24015 insertions(+), 1987 deletions(-) delete mode 100644 000000_DIW_2504회_B형_채점결과_0점카운트.xlsx rename copy_all_hwp.py => 01_copy_all_hwp.py (87%) rename conversion_hwp_to_xml.py => 02_conversion_hwp_to_xml.py (94%) create mode 100644 250526_DIW_2505회_A형_TEST.xlsx create mode 100644 250526_DIW_2505회_B형_TEST.xlsx create mode 100644 250526_DIW_2505회_C형_TEST.xlsx create mode 100644 250526_DIW_2505회_D형_TEST.xlsx rename DIW_2504A.json => DIW_2505A.json (76%) rename DIW_2504B.json => DIW_2505B.json (72%) rename DIW_2504C.json => DIW_2505C.json (71%) create mode 100644 DIW_2505D.json delete mode 100644 filtered_score_diff.py delete mode 100644 filtered_score_diff.xlsx delete mode 100644 score.py delete mode 100644 score2.py delete mode 100644 score3.py delete mode 100644 score4.py delete mode 100644 score5.py rename 250522_DIW_2504회_A형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_A형_채점결과.xlsx (100%) rename 250522_DIW_2504회_B형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_B형_채점결과.xlsx (100%) rename 250522_DIW_2504회_C형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_C형_채점결과.xlsx (100%) rename 250523_DIW_2504회_A형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_A형_채점결과.xlsx (100%) rename 250523_DIW_2504회_B형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_B형_채점결과.xlsx (100%) rename 250523_DIW_2504회_C형_채점결과.xlsx => 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_C형_채점결과.xlsx (100%) rename 구버전신버전점수비교A형.xlsx => 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교A형.xlsx (100%) rename 구버전신버전점수비교B형.xlsx => 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교B형.xlsx (100%) rename 구버전신버전점수비교C형.xlsx => 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교C형.xlsx (100%) create mode 100644 회차별채점자료/2505/excel_채점기준표/DIW_2505A.xlsx create mode 100644 회차별채점자료/2505/excel_채점기준표/DIW_2505B.xlsx create mode 100644 회차별채점자료/2505/excel_채점기준표/DIW_2505C.xlsx create mode 100644 회차별채점자료/2505/excel_채점기준표/DIW_2505D.xlsx create mode 100644 회차별채점자료/2505/hml_변환/DIW_2505A.hml create mode 100644 회차별채점자료/2505/hml_변환/DIW_2505B.hml create mode 100644 회차별채점자료/2505/hml_변환/DIW_2505C.hml create mode 100644 회차별채점자료/2505/hml_변환/DIW_2505D.hml create mode 100644 회차별채점자료/2505/hwp_정답/1교시/DIW/DIW_2505A.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/2교시/DIW/DIW_2505B.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/3교시/DIW/DIW_2505C.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/4교시/DIW/DIW_2505D.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/DIW2505A_Q.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/DIW2505B_Q.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/DIW2505C_Q.hwpx create mode 100644 회차별채점자료/2505/hwp_정답/DIW2505D_Q.hwpx create mode 100644 회차별채점자료/2505/json_채점기준표/0526/DIW_2505A.json create mode 100644 회차별채점자료/2505/json_채점기준표/0526/DIW_2505B .json create mode 100644 회차별채점자료/2505/json_채점기준표/0526/DIW_2505C.json create mode 100644 회차별채점자료/2505/json_채점기준표/0526/DIW_2505D.json diff --git a/000000_DIW_2504회_B형_채점결과_0점카운트.xlsx b/000000_DIW_2504회_B형_채점결과_0점카운트.xlsx deleted file mode 100644 index cdfa50d365a16ae0730cf0ddfcd11755c5dacb03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163613 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μO)z#Aw=iTGyseXp3c>=6Nyh{E7{& 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 LaCQg!5y<}q^CkBf diff --git a/copy_all_hwp.py b/01_copy_all_hwp.py similarity index 87% rename from copy_all_hwp.py rename to 01_copy_all_hwp.py index 268f47e..e9fdae1 100644 --- a/copy_all_hwp.py +++ b/01_copy_all_hwp.py @@ -5,7 +5,7 @@ import unicodedata def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, target_root_d, target_root_e): for root, dirs, files in os.walk(source_root): for dir_name in dirs: - if dir_name.lower() == 'diw': # DIC 디렉토리 탐색 + if dir_name.lower() == 'diw': # DIW 디렉토리 탐색 parent_dir = os.path.basename(os.path.dirname(os.path.join(root, dir_name))) target_root = None parent_dir = unicodedata.normalize('NFC', parent_dir) @@ -33,18 +33,16 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t test_folder_path = os.path.join(target_root, "TEST") os.makedirs(test_folder_path, exist_ok=True) - - test_folder_path = os.path.join(target_root, "TEST") - os.makedirs(test_folder_path, exist_ok=True) + else: print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.") # 사용법 # exam_round = "2504_2" -exam_round = "2504" +exam_round = "2505" # source_directory = r"C:\Users\dra\project\data\제2504회 수시2(제주)\답안파일" # 원본 디렉토리 경로 -source_directory = r"C:\Users\dra\project\data\제2504회 정기\답안파일" # 원본 디렉토리 경로 +source_directory = r"C:\Users\dra\project\HWP\HWP-Scoring\회차별채점자료\2505\hwp_정답" # 원본 디렉토리 경로 target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로 target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로 diff --git a/conversion_hwp_to_xml.py b/02_conversion_hwp_to_xml.py similarity index 94% rename from conversion_hwp_to_xml.py rename to 02_conversion_hwp_to_xml.py index 051d7c6..0400137 100644 --- a/conversion_hwp_to_xml.py +++ b/02_conversion_hwp_to_xml.py @@ -61,7 +61,10 @@ def convert_hwp_to_xml(input_folder, output_folder): # 출력 폴더가 없으면 생성 os.makedirs(output_folder, exist_ok=True) - + + parent_folder = os.path.dirname(output_folder) + test_folder_path = os.path.join(parent_folder, "TEST") + os.makedirs(test_folder_path, exist_ok=True) # HWP 파일 검색 및 변환 input_path = Path(input_folder) @@ -131,7 +134,7 @@ def delete_gen_py(): if __name__ == "__main__": exam_rounds = [ - "2504", + "2505", # "2504_3" ] @@ -147,7 +150,7 @@ if __name__ == "__main__": (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), - # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), + (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), ] diff --git a/250526_DIW_2505회_A형_TEST.xlsx b/250526_DIW_2505회_A형_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bb80e7aef162d8f0380ce25782719ce6712e1a15 GIT binary patch literal 7149 zcmZ{J1zc3i`~FhW9qIy0cbBkqNUDG!CEX#tw6t`0Nr;pprF2L)vXq20EV#s_yMK%K z-oN+qzu*0Q&e=J0&ht#X@60pvj_MN>R1yFHfC1on)9_NR=b1t>;%N|Z5g;xz2UAsN z2S*5(v7;lWhn?-Sp=a3b+&K3ZTh!cY(<4Cnc#p**vYUoDU4v^_?1IjBwooPPJw1EL z-*bl3GS;NY?s2Zz@$vTHN>0$7ix2eYM&z!%F5{UCi24k~&!+;RbiB8l^bh925&E`V zTe1F~Q_j+LC`H=+i|}*Cj%96r;m=G|pJpkr2;g1};*rEpz^QC#H<9WCr0Ur}`yDRL z&|1(N?yLT*2_>+Zz#T-@*^mJM!hbfw)WO;Owhe;`12!Gp1hRewRt~XLu2}7RjJco4 zuyCtfnDP~AO~m2~r_L_=?Uz-j@z>P&v@D^mRilt~DwkHvKP%*QnQCtuay%Dm7FU^-Sjf4UJK)t%fWWC*MzC*sJ zimf2rml3Kz87k~E)`myLE4&mHVZNE4e z+ibEgw4*m>C^UQy5q_;#xw%s7RXHd2rHr+hku9U-0D5>x>xzl z=RJ*zS4)%nE{6Z^opilSI)ZxuKqeCaK#b@e4_hu5D|0*ZKkq!Z{j>E_7cwnG;=5Bm z>|uFqhu!@spr(o#V(m6ll^(REOchM19c}Ar79Zr-BL9eBAO&|T;aS65QB?Nz3#hC- zd`-ynV4KrqEhH>y-^1t!*UUs?E!X^_7B4-a6!*iT^4(Uff~N-6FRcL`LOy-OL>;q% zkr+=rNCqbK7IlGKbQ2p@Gjp0j*0#A10n4*wMxZzN;>c&+B^@5 zSWAkrKCEj0%(m-tdS2XoXkD0+H^82oT$|bt>QJW4 zpCq&f#pAp&QVd>P5#cOtsGIk3=T=Ts|FjFg9dHr0=OI)xFdFGdfx7s-F}pqM(6%LC z3bQKDdf060c)BdUusB*>W$eUfVe_q3CRVhr%GfLSxv`k=?$Tio+~z%%(2lb3?oY!m zo7Rj>S7opA*U7A;Z=)zF1}x{UNx&bJjdN0ZyV~2}aKh{E zF4PI@(T6Gga?V+CXm|j@&XK38-sMs?5sU2!qk3@@LoC&*K#YvufFt=pny%UMtE1G$ zzI;BfEFWR$t0X_`Pe?^ujcCd5I-3vO>~qR4I`2F?mvQLr$x@O9&T&ld$heg{0Cm5`6^w zK2spRW-FM!&K#56P2!?ISBj6duB0n+VH{lJ1GdSPle>mmjf#3*qn%|6U{S=AQzBcE zSIW@@SvT&2%IRY=O4|w9q{U4hJ_0&dlLgc`eGD>sNz^^!p*&hec&Sq&kSK1{`^R9s zD|8|rk1)YN5b-TEGLEnX6e6UQvGv|b8}%yNphK~3EpWi%s?IlLoX?g$=0yJceWewA z#v+MzUVikv3?0m`L7Fx>#i9J-A3(fVXnXY_@l`JmEWwoSCe^aQ*GM-b(}L}vP6J!P zew;o-1v~YJV!5NWf^@{ z?`@s`pbsj~(BYsXi+d7KDMep*8QH(f+KIVlrptgi@M6qdFoGysn%sU}{YWW!a<#mk zxlUAfWxYJtMVx);Owqb8}jno&sU@bfoEWzYbQh^1%(WsUngN`Z@G zeYX|50&ewGnL40!Gm2e9)~v8lc3ONr)|gtHL&w>Amj`ee`~$V#Cr!%^J~c9O0dIR= zk+&n7LfI3x|DI+$HzaMSLnhSowPBiNae>y-B9;1DX4VG}8sCfzSodVlaxy&2A?*r_4ZBFk4pl=`3v_Or)H zS-pNx4sel(aW62vT%Qa0|%2`H%y0U`I-LKIQ(s9nHR0wd8&Jx(f*ZVpFIAm z2;A^cU#86Wcn)@MpD3d6G}E(-5XnUrnJ$^)9@%}~71iy8xO>D%gGqglcaa0l3Mu^4 z&auDlx+P&Uno9XzxAVz3d|%xLta!^=L4gXw0*;JaAWeKEO%y!1s-WhmsWS6#bo z$&K~|=!|y(>^LJlk7DqXm|Z5{x6LOa!k_SyNpnNF${9nZNY(4T0P44w6Epe8bBj3M z-#@)9Fk>T>c!KUtm2l5AO81c8FqXumwD5Cj_cRZVr@!_APOgQ}La1y8kZ(M)1RRa! zAT=(zDlzjN*XkITpCTU3fG54?QQnF&mgwyD4sJzzXUx)8WDC;21tg`z4?PeG02o2Y z>w`Z9#NEO96~xNi+y%n*>+hF}1gp*1z_f07R#Rrny&51RwPxHI9BOTuB|$6-EIWu%c-2NLe*hw28e zoR{K!Mc3$Id}WqW2(eDyeyq_s)vpyilRH9L;!Wf>!Fux<6&9lQw2Ni8q?W^3Qd73P zW*7PNlcDGSN|@R!Z2jS~C!+iXby)^nd}Xm{Edn@8-;}lcrt1aWK$~j$Pcd+8;|NK_ zUe}?RJ_xhA6f=o%q8H4bVLHrtE@G|o3E&QG+5pa|=|$v+$Zg?>H!dN?cz)BU%iSp}={8KXnD$q>>(RU@8?bbOQ75FYTuS-Aa>RE1XDbA0l^njivU?M)rFVt$Z@V2)^mP0{ z0|1tp|EJw}Z`D6}dck2@fdGBi5AFHK*tUz;wG0Z1pT>@s@;{90Q?W4#A(3(mC_A4l zkbjcN{j%cJIL z*PYpk!5Z7f@t^i?Q-T`xqV`pD-&~%b{;1L0DU3YZtNvucQ@%4Z=%uAEkl1nMru*nd zU-Rwxo_BHK5SO?9Lh1B%@DGz_uAO2Bjf<1(;`Ip&nWR-O-7UOLFG1_#nS=G#?g1Wq!wOhAHr|_X`C!>T^{-QC}`jRDFscy%m2^OV{EnpM|G* zf!i}MG;$*Z@^R;%T+Kay;m};3y0zgAEJ`$Y)tz^kELI+8D^K}Z^dIvAReeN9zo1tkohrJ?M_z7#IX*PwC zlPpBTa!vy;<60{*=UXai)=&4YM2cKasImzplpi>?bJOEENYEK4NiLl_g;6c|$}KZD zckhi6NPNAD%J=rxz`<;g<$NRi@Z9bT3rWG^Ly@Au7P9jV6uGbnTQ@rBP==v zsV34Lk#>?tHxLbay}eH2r%R|Ty>-j+Y#&~Fwh79XXmkq%l?GCyk7zd8p*gVy*vldS zx>Acu)Ov}IgV}y{|C`(?cTb9svUxQVruuGS@UW453`s_jUzsFPcQJ& zMUWu!-}Eig@Ulb#Ao5WCLZ47*R%<;S{FVi-yf_;VN&N^Lt|t~cS(&w*c3+#t&V22> zjVRb<8*QtR2`+y7ox$R4A|wY<8idPgK@5D7eoQHR5@_7;`*o~+y=BPya6OfX#0ZU- z^R_44BW%%7NJ79>a##$1PI65g3oq#1#kVUrj5%!KW65EeLetRUHvli{wSZ82>O*RO z5Qf)cE;)u6M)!KaJ9JP(z(3zIuLZmd{q_wQ1VTNTLy^KycM?V)P%a=eC>=O9Js0c(>Vc}vc80Bp?n5~c*=S-3 z2fZS-!=5Dk+wqz5^Yy{dyjD+oc>FD%`4<1ryzO@f%;{jNXITeO%D*_9AfZfaXi#FX z%57@>S1O&wWla=w!;==y0>Q@x`$xQ zMnyS%3?<%~m4PcRipC#wiku945(%l~^_U@?5spuNaTw_1WP+UQSF#O$)$*;#b((aY zrF5Tauach&RLEiw`^F*<4m&Tpxn_Oac(l#^<3;V9W|z(a{Uep3F|pFBqw6~PN!OW) z8Q5|$YpTYW-@Dg0HDxpK#Ro}D$=-S?Y=?zL7y-}JM=}@IR8r%tC}6W7+EDhIXKJo+APXN z0{@*8`&oh^_UrK@672V^_kOgI4_{P3XowS)@^G}vhk4QM`UD4#7-LUSPgS|kb-uk% zL|Nuxo5Kp(tB=5qC%!{E zD5av-)38$Ea9wdo#4aL4$QUi1eGN3d(CID zWR(_9@#Ukg{a%H+xcRnDwaef1LmKIWWH$UHY57_H=(s_>kF?Y*oBxW)o$qVh#+|st z;%M?`OvVFLiTe=eLLE}pjLklSva)0~Nzxm_(S;eSX>%c$!NctpTlWo~?uTdu_3 zgRJ9h4yM02%8I9ef5|A=G9`Wl8XQUI%Xqk?f3#iF384!zEz(?XehP#)s8~<$kdN$N zzgZ8um;b0{6))vD?l_CIX(Rr7u?x@JRqKHQpJZM~3+at!kIbh1FB~wIU%jnFr`7})r^BRd(#FWi=$1L#G zSGD(Uk`?>Ii(~1Wvcur9z~_p-+!+@XoKd=r2c>MplalLP#-J>MgAr0x(AUIHE6Ja) zbHDR#pX;cs57Aty4@&2>Xik}gj5nn@{v5$EZbybK$YFnWXy?3UVc%RCspCS)l)pGC zZxh-xljTtH^(kiZVLi_b!}FbY-MG~0dt)yvbU}q(rghnF8vS{n^t&V0$s)lcV|nAO z**tXM$^fLe2l#Atud9LWa>d-kvwsDBUeQ&8Q@eOat?(@S0$Lk5ccv@wB3a zNPsHob$Tmr{q%w?LugH!o0u^}x4zZ|IdoAp$DY$lQ9nHK!z0)z$Zg)t$baK>@8H7U z_KGP+HPgR~u#=gR6(xdLI|+K@lFi_m?f<-kJ0Rm{gh`a|MqqC!?unE>rx15FC0_Qw??r0LU;6?UsOa7tojg`~rlh6hR9ZeD^)XyIG zbmV9}$gP9=0g!ib><2q-p(oG1JXH!NZ-OT8ZU#~#8Yx;4zD$hpYlK?^44utwAzYld z_pF3^d&I;c>DM)!&5b@x6UJx0M}~Tar1>6yiU=)2Hmjw4y1*$8`=O_pDA6p)T5?M$ zzb5kIgDV0x>zCtoND4I!vDVOd>9X(aAc4?P$;UIMG8He`#U(i(TGW0uBP)XBYlZ1e zW)+CdaH&W+_?HVmb&|GLc*2LbJ2>jcdvbsyAiJtWm#ho)7+bw|TT~p$rPU_OknJ0L zPg&qc*>fB>wq9;ZTjiy@cIIUD0xM?Llp)H=r0QBAun+$aU%FU8rAvKJ7K%(&GEq~ zST0(em%j+a()^GhG*2>y4nu5|Iwoe-@d+!1qA{}wMv~b#x=3>vMpB!RoOmw{{>O6c zE>*vrmjtmT{3XUgN^h6tmQ*-kJW~Va$-w%6Z~hxmCcbaX$rV1%>L`1L9{CQeY4I*V$$#sbi@{>znd!?#cRoKRbT3*oCgX z>n55oQMaqYt)?U^xfx839;)oSnC#MZJJ5#NK$mQ;`6jnIPEKt@J_v+<&}gzbN}_qp zOg&p|KfU2r8kp_8pQq4NU)5A+Gs$FbJ7@FSM1HhlI?Cpgh{V6m)o8o%M+3r4K!mw~ zf12x0*Zil^ez|E^A{g%tA{bmA=nV*AP$Wds08WQtYjd-kd|pjwcDx{9ZdHrm59>cS zJ-gD1%42d%AQw=bvvTfkCTAuSsBA`2H8ADs(*TB^6}~7;6_r;HNbzK23u-;EH#)|N zfBd>I@fq-jrud7kv-gL~aagNF>#k;D0Wdx|QBj?y2f5pxoR~dy2WqyIFU$V)le5sr>Vd3+b_6`LIm4))e%YTbJTFJ=oz7H|W{GcVGQuV=_JiLM0DPJ;x98dfTzX_{8FuSSVCdh2UW`dibgU8W#X&lNI zwYiCRe!V~UnnSe0p6axkp-B~^atw=%G#uj_*t z^hn4gfd73Qf^el@KYv6||Nn<0chPrGBL2hz0RBiF|3v?NE^!xrH&p){zJw_LKLYo6 z3GRk!{wAmipvCw_@SlO3yDWDD2ftaSG5?e0R~X?g%iZhA*p|1sEApP(U5d2Ur18_0)nIB^t-RRi^G#ar)k$GAxwwxWhNU;axZQ%Q?mGmXZEvDVfxNuF zQD$?$VPL6Bl;7oEb`aq2!jT?jJd^D0$qLI_ep$>n6A)fTftO25gVL7mFyW6=Z-wClIpy(HS{KYAQ5 zEYO-T>c}+z(S%_gE4*#Qt8*X&00e(;g1MuMJNo1=gw3=hyaGJV&Lz^)Iq(nVDrWL%Q}*?!%9Pwn9it|pQ`BQe_Y4ZNnpQp)g| z35dN9K^)h`8QC7zKYJ(1FqIJ>9RNsW1ptT;z2j-m<7#c`VEKE`chf(c20-wn2(jOG zNx!Gnkpotza6nZB5!l9ksv;?9Q=K-LKtICX%OW}m(xfPi-y4s!8KYL0B7w@eb`F(S zgs+Nt?Qe0Lt%kgg+w(M;;F%h&ujZMZ*W+g*kl`gSDA{So%u{_{XHeor3>=N=DpqI(PDpy6Mp)(` z5$VaW)V{9RJGJk)n4Fcggsq8D^9O)NA^L*0Fj+BY-8dnR249Vq6Pc0EO^dI#S+QK8O1sZVcBJFsuc zmAPAyW7BUjel%Geo&PC9TVv?hcWxuaIu$bls4-;cF*6kTrn9Ku6Q^-kBebpfO=n@h z>xK;r>t(TB?i#7JtisZUHz7&oiu4d2K;OxI^!p%6{PX)~ZgCV7)b%qmhCBLOqHhSU zIy+EDZ3fBX1r=P0@5V+IYQMq&3WH7V{Se+xKN45aUvF1b8R zsPE1d@J{m;gWAPGYzmPIHtSPhu@~Ug<&1*ZF*RAJQv>JS-E&5uX(%g5oXACt%1YJ; zc61b-$IK7gKE>Qnm$0JMjW0EV!Ism*T^Q?Uj`V$xG!#LMV;`H#8OGuinB+6Qan&so zh*T=$@DoYhNefA|)ucksy~`J$6>?J1`I%sz$hW%j&bPUU*T;p9$q)6i^pz)rPVf~d z7E{4LzytQ@7-ADISKkCND24m1V0IJc8q$yZ{96Rm7pdf?2E%fmkCK=Vj=t} z>Zhhebj6W3d6haOy%Wd7bfyyh&ZeBPz?G$MRe+*Jp@h;c)Ot|D`wHzeRS1(RnvxpX zin3gRKFFqiho*!nGP$UgfJ0W&j9i$)rIIwD%K2lEi2-5ffT#Lk1;NF$&qA@1Cf|Pc zMY};qqj3pho3U%DL2Kbj zV6!NM+ZUF%U3>5_Yq0tOqpwxV&|BcF0tncCUd%T+CdkcZuIJMCt?Ow??EP`kjOL%0 z){^PFn`aYDK_$u0xEM*J9tV`mFx6bV?b%^(zq@JyWWL+`bjb2S7-70BC1_3iQ04vD zN=YqSjRbIctt87;k`s0+VGOV6!xE6Ic6q#B71vnFBBF9o_T5RHrWae>N+O23$|I9n z=={jYeVH+jS35zjhC;Rx#i1^3T1+H8F}fCWNGr;*?R2fflVVYH0=3pRQO^NBJ}__& zZ+TLhvn>%%-Sv7en|>=RBoWpo7wYxWIMM2Tr=}pWgZ*bFPK9cdnz3C@;&}@bu1t(q zB~Os|v~*1PfSo8DQQ1DK;qt3a@B~BSrGc2GseH>yP|1A{at8)2(N>#8BCEolSLM8J!vV4{7eRAzaIEQk(j!2WdKow!ay@sV9 zUC!#-HH7X}c*y*<^`alWE%~hS_vW~;?{WfPKO8uiIDo@x*zQz2U_G) z`6r%Xeci*Zy-xxyk`#r=bG`~ue?G`eNE}v*jYd!Avb4P&YwHm{cE%at5cHJaVuY+m z?oG=>0T;RPr_B4slPp-lQ;Sdg>M0soOdhv+gVMNIucw|5Kdc~osIZ@tG*43=3QqB^ zX_fzctv^b0%0DOSG$l5R^85!8r(CXIi*Hz%KS7~cV_k{HDRZiL#mn6Qx|EC2sobNP zd2FBILW4XD4g#si7(TQy=;qexYsz+s7yptZCsd$}R4Dm<*Lyv?QT z_9gwNUkq&st07GSDrT}1mKlO$0`Tzsd#MmSE&xl$sB0E6ml=f1a=gMsC$WY`tVa+E z3|>Af!v2b()5T(E5uXpXdB62Yr+vIfFL)|zfcmo!q5CNNbtURjh?Z){{hi!uE*EKC z`I4#~?32L~2``sNA1i~ot;d*YlC`GQOA^S(x&rlZT!kOS{k@)POfOn5AMd(P!JD>O$2@ej`heVsoJIvhOw3V1_4H+LO z=B_}Zzes!yQ<`wS!jT~?i8d6D>Aga7zdkui>EBz)t^DC=h#TR9avsK=9d*7hx@S*+ zG0_w^x6aLkPO+}S`qq%?sW?H`C9+I2(YKi$#o}3@fF~oehbxq z!7+gb04%cor{DN*)c^hDoa3YtKE@6N?a9Y?E$1(*nU&NEhYlBVKa3dBYN$IQvztIg zx@RB|;rleKXZ+$`ugy@>%lK$vpU3tK>Q24%b#%l}J?bZ@xeE%bW*~`uxYdQWKpO6K z-^z{I+QJlv3HQRj%b%r=pIp4At?QH4vUkcIYG>8R_LuC&`plk7Riqpi*MV3HS%m1ZtI-GujV6Mw!*^rO6LD&s0*!r^!< zm|}5FyFnv4La!lww*l+yWZ^3A;SsGT>TVzYTn}J$?bxiFWEB(%=my%B5QhQ!LK3T|t{8F4H9+!>_^&qWtI$9AbQ?U8@!e<8O98vUPW!FqJ{QU5-iiL zB9fm!Vn#60OO?D$)Jrb8(P_lxEANo{m-@$ z2Q&RvyO3tLI!zo%wLHB86>l7sE|@4#7!hR^yk*Pu5IE8T5{H%50s33x}_+b|OUYSh`i z`30d4%m&~d$ZLBi#thAJhR`F$W^RGG1GA@&c~-cM@~kTG3#hxguVVWoGCcFMIPw<% zrg$R&LCLRD*gc{{X%E8s=r(?kx2rQV#X{);y zR5ErH`HdRLy+aTFQ6q)2L6Jml4YObnX3fc{qi zZ@SfhP!Qb#-Ms>gKpM|g^uJ%t%tYAu1?=#>@uxlTP#;=!t|1P?huW;gB0@p*2Xr;t zG~c}D(|{5-tZb_RsTi}h!O&NknTjqn0s?mZUc@5rmL*<<{OI?h5|;uKF~;nF6R$>? zi4T;ZjN8+)@F)E>h*4f%u(AZ4p-x$|))I*8r z{q`G1LhODbQH=&LUK(q_{v#;S_Ou*ad0rxdCKeHl=~Dhbhp>)1lI{jwmDOpF`Xy;> zRB#M}4OXNUt!$o4sA@ORVDu@#x(+q2FP{h>Z_Jo}`M6bA6!x}J**-m^;N^3hjZ5cu zp!KSv>aGqQ9qz*XYw6=FBctkq_gBu13uT=h*Z-7*-r#vO351Mu{kMz@+{l5E)_{5& zFZRWIHri5G5){G8_nr8G7`ZlgJfQ~F5%KNJySgVYW5RVv@SZrpw|;`P!&f64G3bsQ zDh`>q--J}+H*U2kH8msI*Vqh@E7QBB?Yu&nV2T-FfPDd)=6-2l*K&Y=Le|KAADm`> zWfATwg_r5fc^YGk^>XBp7%Q6{eWHc3|GX4TPZXyqxyXZkt+uhYSF&c3` z=#8iENXuV1N0$t`^?2uJ;pEyoS1*1y3aMubl3RyJGYH=Q*>;UehP2QqpKC|xA@DV7 z{Z?IKeoIsFBciuSu>b&^--#30)yv)zeACS{x>I3OH`&qx-iO%4a-0hg+Z9!HhxX1-fgEsub`#4V%er z%7MMBS8GA&xx!T|xba6(M`(RrXT=`N~Y!r=OpPAeJECv)Sj6XU=r|mV zlq&_IRPE`OGU{1=Sy0*feDKnXV??xuY;~N{k`o*i#uh8;eKrPwwPBW1EmdeyzJ&_1 z1jIj6-c*1Kpmk0{$C8Fs=vp2rt9 zRWwbT&cUEq?gfA9qEK7e?Wp6pShn=^>RHB^Rd&;{te0VDJ*=^{(7Ah=e}zB0OKo^o ze^S~+C`23gGO3xrc5+UhIkYO#{h=vyr;*+{C3IdQ1H^5uZ1g7fgYeQIjr**HiU0b^ z?*6&I{UvLpW~zS&K|32YJ4zUlejN1LHJ#Zj-Tz4~SI)PXWlm*vla8o}Yb`Nnb)<|F z<+lvId#RsRUl8?~$c=Epc6n$bdT_|&aM>@7iq=3wM0;0Mnuzp6_CxGotWsKBu@J*< z9eobl;!M74l#E+IGWGDgjd|4$(Ptq>c`i91-Uwo};CaqYD?!+s_2rX@ZzI$u}p-BYeZNBj9o14 z!93hI`?Q!^5MttxhII6&^J4VVzZS6EB}F|&(#^&jCqxUAPircf%yW*yBKLYIK{!og zBfTk-TlMziy-R#88-tM=B&90mcQ(*y+2UbN8lliZ=|@xMa-{~GlG5DdFRH&Dm=KiIEV}ht zQy5NJY{iB(Bn@1Kt5_o^xax#~0kY0Zwk}r!7pG7uD+jib<^-4dR40}SMKkl5s*QCz zboIkPRq1hcCX#~A_)pvGkC1TOuuVk3DG{Avz4tK(pA|NE_Y{#0N}Fh6a{Oo|Xw|$v z+8-2Eh>+wLETFmHNRA(xBOS?j=iwk-WaNs|V|FTKQ#SECaTebh-&!u+iEA-Yko-oE z_pt=4Llcr=fdB5Z;Ahhym6Sz=1r4qxzVTkm_Y}1O-~HFMP*PO#?}qt-%nO|C%!x&x zT9KOpFPRm{wnGI@B{k{i>%R99u=4Knu@0d7zW$OebiwvYU~IGP_{2WsgHY%Pod(;( zIQmCybkmif$#wUlz;u_r9HoZZiiR57F;+|a8QYg;ii4$-;kJe1QvX!9di(XCbqF_6 zAlyaq+g-my^Y2dk6{a1rqPVYk@#RYbeE=cM$^=L{6qB#9^m#eW%2txtoX+vtnzh0N zU-z7upI+*P=dilRPzq_zSi5vKQnHZ>l{cbjJ~!v-)}aVJ&3~GoAfc!o5bwpo5!Ad7 zGC9JIe)KXwR*mAC{?iwG7oQIoBTLOv%{#jJc@)vXvC7)?UC5mvN+QnCZK%aUt~{rz z!3i>y6q7S+-Y2V{5EGA>AzduD??s>P{Y>*rYf1CL)@8fsX8A5Hz(Np#Cv+1Th2Y2c$5XRlcq z9vk~guFi~RLcaajZ44d8^~|xvSc<(0_T{`%rmcpIcLDEgIvUsdk*JeHmU|bB zfWC-9kAzGN`0wQqL@53G`6GJz|6d%rjlR7S@f!;O_#?Ib9sSq3#BKQPQvDzJ0^;%i zQn!2Hu|f{{Zii{J%H|lAlb1&dj;*IWx~QbI&}Zri_M83IG7G0QHge&*i$GC?p}D29XyL@-lNU zRdaT5gmM`>I&ym0**<|k!ENKlyR*=&?pBi)0nR6QBo>j?2d`Eb%*QB0Of0`+`J)Jr{ z5TI}trc&Vj*u@mOou|PszKjw$!s05)3NZ|jQJ0Gg#7+$k?lCj193mz=^=PI1y3lTE zYneLi|3LT`t5n?GmKA=UjL_-;N~1txxs)bcEAl1%OQ49mzd^jrXXWDU^TzTYGqo}( z+wkcL&)EUDaLpp8i=>hqXp2CDitk5owi_k0@{4hb@-NO+%g67$iChnP>aKPgutgkx z&0U!;f6TF6m@w$!`giZ7>1Qwy-2nhHSO5SZvUfaexm>Kw?acqW^W5~$=5syhln|-! zcKMKp<&hn3*TaD7N+8tQZMrfoXj6qIm{=#;*3&F5$gf%cAyI!a{$~7>`nRI!9P8&W zS$V{okmvpur^#AKSmK_C(RZ%t@rD|%xrJxEjKosh6h-AbEjR^_UsOG}2DA(L^a4rR zX96R!ls!oM$MqNVKwJ#t8=cd%5^@BMSt*AT?ThwgpXtA-B(0Zj%(EUcn>?B-iz_US)=(Wi_L=|r)+z%hT2FQKrTgsYoA9pEArJhfUDeR`vhc2t zLoPq9nOQE&UgocpTS?0;|MVgut6G&Dr3L6Xx{VKvpe4UxJ9AA0eWz}imD1nQ*@A=< zUv+h&k6VvWB=gHTXU1X>00cXRAFFwnOI1fKw8f9;$Bx69J4@f_(-d9CND*Y3?=2>Jb$qON9VXlQp;{>hA1_VWH1r;j#NkrBQwbd zi0=~x;1zqp)K$i)QTh5!y#93?fX zCFK`6x*+R@9dJ40oAlB)Vs>e96N-l*=PL4mYNroDM$bvQhCNh9Dv2+2O9T?cje33! z#<{}A;|Pf3UkD=Kg+;~^H-kfjl+rifIq9HZX1!=vY+VcNx45kJ4H@IJ<#=-}|Lv~Q z3L$fm#5ylOW?s53_SYb7o9yCHe)0EUUL1_wIP*_>)|QEwvQ)) zEf7CWA9%rb-GNx{NR1$ak7es|T)7|3Il1HMQx)?P&R?cDFcUNh5U!tU1`H5ZH^$&#kDU)MNPN}5zy8;CCGR5I-k^Mc8JO0;d4am z(~7)p(PZlGu)TM5Te%^r@OGI{&sT=2mPuV|{G@iaC5#+$HAb})yBwqoW=0QkFkhEH zMcq@^GUCzeLSv78=lwWJcFhryqHnl79KSqWXkKMs&gM>GN3RZPvrYwCe(akw|J15Q z4cF4!t7x(jt0Yr_U+I?iWaAO5kmHglm?qvWRC>2hq0xk3SM1OdYL?}zCP}&1xcsBr zNkyZU#I2eTmA9?|^1;iT$Fgv5{sA5~hhCU2$7-1qIji|uGpu6k5yuF=Z;~q6}#t~o_q{(YGcDGL^ zyj6_PS!Pm`X}@fW88>)(Npr9P)WmG0-0o$c`GDnm`o%Y~%DZB6`*~>#;4h)jw_dev zvL)9#W6tNDmbDuSKIg%Z5?kGHzS)-{w*Ne4_8qGQ2>Bp zq`cnyOF-NmoL@q%%*|b(T)+Q*t4Of=wEZ+U-X)m~+R;6TT*iS3rH(q@rc6MN>_oS8 z_`1$}Gfxs=jh}?NVwBP35X-KY2SKNa@qshcsfwac*$#xbyUcK zEdHlE?*Uko`fW*^ZaS<$s~)IDZ2HoW%sxiWz2Zo5Qt#shf+UJkiH8i)k}y}*gQ83J zb*hzbLAm*8rI)y1oV-5AAjQK2%RsF-`Nar#5Uz+Z6D4BqyXSl5I9@vL3RyX| z11ckoE^eaX6Q4HHWd-}jO8A;Yp4-UhrzqO6#tqQ4x_)?mh}k}z^7EO!V>E@v(kxL$I$U7-}xbRiBF)rZC1#a)E^ zYWfy6#NM-d&z{NQ9Cxye8beSoet%l%k!9ZZk--22YM&r%@%!R6WqIux+Q03VY%$*X z9RmPZV*Q_X8AJa z+CcN|*{*kSA)L$GV7_$fD)_re6W4aJgVy=+Rq^_`g-qhAm)<79PcK31;_3Z$mcvD9 zGTG+NU54wDkKOH7o+C8}K!lT!TeUxc2m*_qf~nXfsd4`c=J} zjOZoRc7nw+8JDT(W}vult%Nz@B_>$Xo3BIA);oCV?Njf_& z+SIi>N+j|1GAiHOTMG}nUY7H4^O+s^(Y?qKqK+UbaHY9ky5 z1*t}|ZIL$8hu2UoM*ZCm;NwMfww~IhIQI9?JzE83OSHNKf=UBvF^9Dq?J%6!1MFpy z06nP%C0hLi$3fg@v9(~JAd54R(;)EKP_6dqd=i+2)TusD3I%1T?j0?rH&54JX$J)==y;V`Wu0Y z2+5$Fs|$cd=VVddlvTq;zXKW-X@NJrq9$ezp&<8QckJD$Oa;+q2`_6lr2$VEy^Vzv1!u zo9#ZVzIuj5&e0~BB^AjTVy6`A`CKO!?ya8M{>p8lIv}lk(2V(%`}-N}#D-y?+Q;Vv zX(A|4`2hoqRDw*A0H{37pwK52mf2FrfVg2ns4UFHK~p{~57hyMj#p+Zr`*?Oa5G*x zZy_so*}~XtU_prAy!T>ZCIOm_tPRR#H7^D^PCKF&J`Oal|5F@eUuPMzK2%2|A~8(o z<-FyI@CaKl6p|2dl^hZyoRwS?#~}#HIUl%m!)C@5pg$o)*Jjk^R{yKS<@giPcrvm)PHj}LPJ^BFknE4 z>P>3>cPfp|Wla=&!;>Dt1|=jARt@yZ>hWC46!|+d+#SioXf^X2gPF-9C8oL}x{GAY zLPtAz1Osl*$RHFKMC0~5M2?3%NrY7My3LTzh#;grKM3@3GC|GtE7^j)Y#u0bog!Oj zE8U~n{ld=$E@XQV^V%X0v3yo^eRcnB!{HY9cg>nv?M~f!#)qo#QL)m>!>d~P3D@cI z>E)&3`zczZemSqMtIMVlNmouyi=VnWum3Fv{lNH&i~waU)>H-jH;TS6r5>#WftWk zL73yjaT;%k`)cfv6!+czJKtL=ht4aYbif3qJUpH9Aznw^l}%MYLpWnZ{1 zTB)e@)ba_QpRe|)e@wiYmJn51r1-~oZ=^Od$%%)YED`tFJ0J(8?bvJK@v4d5cbZOP z$iG-P#g&h^_IVZN;^*5s)hrDdgfuV)$!z#Z((|+ZYQILmi?Y}xoBxu;o$qVx#;v%- z!j_u+2V`%P;{pKqe=VG#E}pjL(3@_a)t-)+<|eu%TO@p+keXiG5%7?RwbI=9IJaDh zqZ?J%*&M=newZ0Yh4`FauxSc>2p$|x<4dPlG&tNU>3}i>nHFiUH$4U+>Q$|$wke1A zu3oPP-N}Dgy-JXL6nm6O*0>S(t=NUK6%|5f_{GVEO2V-9p z0@14Xv?~~%nSWkX+A2AC<;gwt(r4L6gG`cJ)2Ha^|7x|=tWG~jknDL zUw&18=O$UPH?%OC#wj}l84Y}@=*yjcPQ@9e$Gl(44xEr&=Q0Lo673I@p@Y9BbXZCL zc$NE&Z|h7~bsbK3sWB*>-K;%n5;E49>iAB7i!HuxpnrCeJMYr*#kVdg50&6jh8mW23Ltg`HGTvQHEv z>HGIGiq|ZFgGMrA58%68;OIVlibR6@mjzQ=5NuAI? zdEC*Jqw}D&4(bCyb7DF6w_8JxpL%(!7ED|RP2AoLq(n4OwIF>Ni1cfuTLTQ8&26Dv zoHzH(_&R&!#3AX|Ih4hXIYbx6XTD30eu|>~j&PC$BSJQ_xqPa?DHfN)Q%sa(25c?4 zDU@Fw`QhFrk-GKsv04;`YNi-#Se$g(Hx95s=!oQ_X;Ybs=N#gaoD>!{U(Lvip!v_j z^d~Y4#HP7ar5yargTPrB@5$p_(`0*a^;|a*FDlsJKfjmZ6uiO?ChjZz5$kSze zN8eEw_)&Ks#g49*o6=W$>8+hQS!v?DnK5OGax$sB5(w-i{N)Sy_jIZCp2P5F*Q1LD z01*B)cyD$+CJqiSZ-#GGe7{n=Bx#5t(*RoPRIw4ytWKl9)l(-4MU`|J1c?Q+c7ysf zreiK^nSL!<;{*LQ+_4h^6_UUJX{Tiy=PSO8Q<#LM9qU+2it|E-BXgy^iD`WG&kfo; zDu;oOB_~xF$%?v?i?=r(q2RmX83{q(Mt4Q@v*C>Ber)vWE4@1+X{3h3{-ce!P3`(< ze*_{IEzZkd1ZHcZAPUWse8YexHbVR6&8nmFeJVv`RuQa3vjK)k^JT2WRwFs_9y-Dg z<+z<{e%a57VoLZ+jDwWkF3BybK3L|N>^DyW)ddXrZ>XcaRVu`e@U=HBa(rn@3emKr zFwwhYlB1BlC;99S8>Vp|6bdRfEZe{qZLatxHrtO+Y(w4)gud5mv^h+q zd&EjRQ)NH3;Z_=$<-C`t&{$X5SZg!EVs1NY^U6eiq+%+{=A($jzs=QPyYZ_YX(kZT zT%fE{h zcV>Ee`7A1r#VwvvKyB8_xvPnim0aLU6Pnr!Q?6buQ0Qr)W?_n`yhcE>Cp&vk%f7wQ z5nkM*SA_{rK-YA|pKYDJ-(QR^w@9??XcrcM;(`+tHR!rgyX+}}9HHAVv&DQ_j>peW zP+{aa9JveLxkDs4grxLY!uf+1gW8v?EnZpkOXE!)u2x*Vhd%-1&lJS}-QvOvB|QeD zgU+M>71!01ajc2 zbk42Kfoo=&1LQjS8Eg4%Z2csvapsHdVf=+Etv8tw?_hkvs$pO97SSnI22~ADl_n~BY0!j35`ZFgC zSvv!0Yn^*qyB=jYNpr$U&U%jhWoG*c)OkUltCS8(s4RP7O8H+gNJmL5z3^P^?hoZo z33C$P1F}Zr10d{j!{7PSJleQ@9m;+X@@h!J^oxk%sFfWdTULsO29L-CA6cA*vCu0U z`iQU1j_3IG{Mc;@{YK!MLzVo~^5Xk)!d0*j$CV;Yjo)Oq9@eIVVVy6T3WeWF|Du7O z4|33>pppXq_i+f)m45&Hkv;wYACBBc-#&@>3kv}FqqP4M{hxD*+wj|=`akeRWcB|g zaDSWNcBtk*1l0lbSicGWYvATK%k99yAC@WX|H|?^jBuOf_ImRV%Q|vCMKU literal 0 HcmV?d00001 diff --git a/250526_DIW_2505회_D형_TEST.xlsx b/250526_DIW_2505회_D형_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..31db4e67fb61ece60e1d102501b3c8bc12db3672 GIT binary patch literal 7150 zcmZ{J1z1!~`~FhWxqz~CgCLEvbVy5xq=0lvFD)%4-6h>3rP3fFUAu&Ybh?Ce_iyoi zzrXLx|NHj3&e=J0&V5fj&&)mZjH)6EDlq^6zyM@KHoTPSR+39ZJPjf)0>ou%Z=&jC z?*QR6a&X{qx3y7%DPe!(!nwE5qUKtg8b+0m_f#Y-vkAuG5>&%#8+g96g(_y};n72$ z%khqmsU}5wk7LD_m!}(7e4PGVw7)MWENA6SIrpr8#3vAbJ~b6ed#>$-Ul2Erz`#;% z<@$FH84DL!lBC;b!RJivOWJ&bpO~pX&QM?xz&#m7!-0z6WHz*$@E83gFEW4j*iY)F}_ z44_-J#v+-T+}a^9Y!F=IFJu@+x?o1$LI&q zk@f+({swNe&47P*PpV!zJ;6NyAe|Wi03y1_-GN?6zVRJbP9B(hATn;N1%(YM%)R z$53=9?jP4%&;@bQk8e~>&uRu*+2lNsH8u2p#cnA+r2hP+y#Y(ct)tc2LQL~@_wb0EUqG*S z0$PLoao#8i1`n=~V1_o-)$6!pD=VUJ%9+m=w6MJAE>P1y67E2Oy70U)^IOKDO-sH6 zW>ucmkm=;{RC#P+N#qNa(G&0a&G(k+SdqFaqp#g&N2A_#l?}P$Ht(r~w3ol@`Z(mg zX~o2RRsK4EozzlNW_i<-h@^T|e3S;D?ch2-FoKfwiuK$j0rZ2iaaKZaS9=@$j_|sx z6Ls8bge-|q#wjBP4G-|7WB8e>SA|4P*uuBC5xtmk7;CjE2qUe>|424~wsWT9>L|If zH=oxt!&?ygI>FcKBT~^;<9k^AC1hW$jDUkCqxs!5&Ppi602^WCgwapkk^O2z^AMMjbv~slNrvgt2WI#*l zke`rYn+x;;nc-uNrkT8CZ4#v92lIR-{Oq0M?uo5?W$D6{K%&6}?0XWy$qYf0f~o8DQSsdbPKI-Z*l4RS^hM50gKNB?Hkk@?mk`SlVb5!{vvhteidb?=WDD{y zGPHqKjk{D83{h!i-w4?xMUBZGgPf{K{c9XQ1RB01>Kb-e9;qU{)G6hU7d7npH5lsx z9goE$jC=J2@hvnwhOmVySU@3dE7wsQ^(ymKyL{VPK)?A_olo!>uMKqgb`&*lH0AnI8sQQSgojM zsT0;+S+B@(7G;N>2^+wx2C;diYMm4}Y7&~OnFJILKMgo2Q}yErSqR5b*0^O;@?RY5 zyROg|aJ@*Dssl+jqu4fN%m@l(ro`4`jjF}ix1X(dx`UR$KTzwvQ?zX1lf%Oo@V4ib zc{{>Ml-;5GxwP9k!6~qIsSuAh1}PSaU8;P@u~6brXB+#0#c|kFwFm6Umt*+%HtfJs^A03}=(?&=6>m=B*)0e$cf1v)fVm zMIDiA4L&kYeIxjTrx~|J;r{$1987lIP#vNrCH<{2`1|y7PdeB0WVbfM{VRuFS^QNY zxWS>mRJqUb?DDx?ypY_pbdOF#Bxh-4`b3I*r1yDNRJY?|?g5bo6MCQSA_tfjQuw8u zV}ISpsb?jDmWhIWrP<#GE590HBq9#0#6hFI@3g$L6L0MnF>%iBZyTu2V>))fPwHKp z2(OdWq&nk4`4kg&(Dah}U?ZrR$xyM~(=Ou?^Ud_D?;=(AMPv^0QWvPcgh1YV)_s#M zz0n@0I^&rKJ4_4Cp}hJDWS7eKY4Z*X^CSFd+}u#1a>kf0RP|=hpXUAL_;mj9>;jJ0 z_m3|NOxXy<6w$q?8#iqaGS{~!_QN*IX;!dr3oVTKkB|LMzgIoEnBWiIgyanms0&+Sewj6*201PAa z^}$~P;%4vk8e(Z?<_zKd{r6i%g4Cw%rnzvgNTg7XAAn`j4~@ySK{#7d{@KzK-IDLt zwTn$Xh=8@eVrudchLc0gd!FuioyHE=B2|DCFYVDFwW`po$ONP501cxh&o!1&0eh0T zO*fuHDs{^DrLj6`&;pGHpa!AIYXcIyXc@Q4WBEzlkC$+w2yz8(5_oI;Ty+nU4$0T4 zHr@rrmgALP!h&(qhHU+0cT0sm6VERLb)uw~BV2*lLPm__@VOrz#fq^!v|N?aGOC9Z z3wRMmG`V{hfvjDzGwxPd!@e?G`DS^@GvI@g*EWidjBy}P^^?<;;5P#6y|MvpK_w5H z$cbQrAC3EE(kbstj5RDj63HtnEp*iOzDa_O{MtyGvl4{6)o2ft+hf0b8u@zVII!xH zh_!!oGc-X7?n^7T#2?o$}Gmwj15J2JH_t z0APvbf7*@bR{ayF=Iy8C2+((Z(Vl;ZZo7C>%P6OmH+r;~Up%Hy&BiQ%M8d_d>~u1p zr38uwdZ%UxKmCLRn@owe7~ecInY|P)Eh)*kY@Gdt2Org#-WD4$4|%Uq{RrRUsCmj| zXJ&k`#-?%Xr=9EM6ODRdyQvr!_W4rKbmt_>`V`OYU%UGw_myHKEBac ze}BH`RZgi{e;egVn_Yvy+{ib3NO~-o5fRP4iU-o84j`=Ve!dDVx}*ow)5cy5&cy z*NuHfIrR?fqYb1_){n|>GMlTFPPQ8qCpb7-yl!&z7dc>>(}P~)t{0;%+>Ptk4XRSY zR}?$(=F23UCc;|*qCRzEX82d=RN`K|9Zzh$f|lMt_X=O0rfoJ`eoZ|8bGebW*<_iV zcs_DD>onjpru7TvT+0{Q_0zp8p(5uK>P!MLE(;9xdLbG(%%JGcGJN?fo&CX^zHsYYPa*?-IxM4C@C9o9{0h(#|a z(L}N%^o{uO4Mc-MZ?6ORY!Q{Ur*0{ht@x!!+Y{+hjV}JcvH%+NVa+C6G)FdnJ81+! zS7JedMlarB5L+vzjtcmM*@?h$5U4d&r+GG?NJU~lR~OJzO}av}BKV>$$H^8IELZiAeXuNU}$7(JuRGRv`h-#^%EELHv$vSdUJq~vpjM1(d84r@4;B&HR4z=jg*?a8omfU7i;=(-kc5{u<79RQ63cI^2 zeL~(zYSNt(YRcD^(5da1HJ@^Gm;V&-+3sEK;BIhpS$3)JzAf*TP%}L}%Vv~c8)F=p6#hXsxG*-?G4!7iMB1$sd-7>VX0$D>D{TZfi5x>2I92 z5d}MMqir=Z!$ohud$lkV56ME52H~`v7XhE79#aaQ1Q<2^c^z$6ZxOscR8K7=Hcad3 zwCw?R4_z=25aV|d9}>Zz6<-s@!VAp47`Sr9n8g-679Wx-Gzl4c3-F{_^AEA3Ii&HU z!th+kA;%EG=vw#BMyG1<|L0qlHUI38fdNn;73#?>iUfYDqaY%=e8`oiyqu$p0Btv- zJ5jmANmZsWu{>$u{%&?T2Q(~evFY6ilrt3?lpY+Nnge#G>V~S!bcC)5??WFUve881 z4tj)YhdhY+wqw&}=jwx?d95A{@Yq{C%Psz&dE40sEU92>rHlh8<=>o5kPzlIG$;_P za+_NJol0eOUK7UL@SuaULh$hfRRTOSdpwphg#ONa=Z4^6u$=jgLC;{85K&nX-a{~E zqM{r=g#veGq~P)k!m$S(LMKBWL;@;#-KGdE)%8hsheFzS(bXYRaeKiPw(Ji=VnWZ~iR@{Xq+8!U!3E^uJ}C_f`({)rOT3yXDJ7 z7V1i85){7b#4dsW^n5D}cj(L7$fOR&JfQup_(nc1X(3NF(||2+BCvh z3_shE{VdJ^`_0%9F?R05dq3L9hb}51w7__UJRI$cAs%$w-Y5M>Owp&Pr>b1%Is>`! zC`;T-oJzf41PCmPSs(W7g4;=}q9lzXD#VmTt0Ou*yfl0j=H4d1J*A{Dl?;#oC*c@ zZe$%NGcd!&QAR8U{Bv5tmI?4N)!=X{ZyMR6{?T@62ZTP*q)2nU`56e_pkg((Lq5EJ z{dPU@UjE~nRlKC*nBxqRrj6L|CC=RMSFQRBl*idbs;0+}Z0zrC^_eE+Z)(^cj(w2} zK&jc+tfbd6`@E>IU3&P&gKZ34cYke?+>9L(6UGt`_B@{ez}m6CP%Kxek%vS1SOVu~ z>#pwYMpHeOE7;~m>Gm9Rga?l4YP(0dHTzFmwxkQmZ5f_W@X=88Ls0*NteAi zs%R6~GnIa%;^SSy?EUaOJrvJp&Sm3Lr}wR$w7>;5cDdH&HCEXyU)xFLJw#yYWcaOdm^f`GK4YNjxhs;NH)}|VmSB2LEb94P(DNn18OHgZ=5q3Ju>~C*FVbZiCbZpS2pa7iM&x0bW}#lI+YKn z>)%f=Su+O?8cK~lg6(lqMfTy6CEz{0(l1-L8wKuPQ>cn~+e;S5kHpJmB$V^h?KRNm zu`JCNI>$)3_@_~RkKSB()(O@L)-Q0%v*U^+MhjYC@3P>7z1vthjXViyVARnhc0~Q; zeose+)}7ocunz#qj$uF8X$v`d?&+aYFmV$&ad$J29M(wDituG1!mkl-4KQ#rvw?7O z+}<g^B{hq!O&P$n1p5N#;0*&ZqC8Ioo${v;7vm~=)<#Z-Y~3^tjEh%nI%m6iCG zKz>d5hX+>#YF01D>X77W7^AJAv6AKA*{S$LM#P^^n@Cl@WEU0ZATzK1YD!uJ$=3?i zo5&~-ndVfHu=lGFeC8-=C8x-Xw>voE%X4yo!!Nz6K%b}!avxp2c3qGk&Y{yLO_S~& z&7~~xrR+YA8C|b1p{w%LT|0BMRL6>%F=32wG_Jbl59r1J<#Q)&rcumpaJ%c#K>+~p z{~ElvyB=eE``5R_w>qw0pfWM^UvbEDS@8ua(%)*vstTowbA>DzgO4isUu4Z$C=AQCV zz%%hlWd@R>uB4Kkji*SsE;xn)koS>YVg0OFBRU_OJp0P-kBA$pVzK@FM)*zj=J;R) zEE6fp!&gMb+Dt|ek|!QTk0CNb6BV`Up!kqN-iSpABf)flKHO{>BcaVuMzn_(|3d|K zr>bw(OM>W9zEYz=h4)J`iz<(nxhMP05<&I;1AZH7DDM>tF~fZ9Oo|*{n-GK5Ey#>@ zuNY;>q#uZD-D5>J>Z2g3q)=UZ092xo0J}51$uvDl9!)M<-;{NAOVs!M+5V%&He@xs zi)h^Vg>4mXH6>~3&0u0A>`U*(M5nInf%dXBbkX{ncVesklWOQ)`8au!nlFU=^buS__5H9#R}h3bXL!m=;?lRVhi0$UI443BYQ zpS~%KR|4J8mVCBx@+!U@TW%F=-PJ5C0L2Ey%fF!QM((mB2eOCkKus6(rP-goJVl0* zVzK8ec;yTcVc`?gWeVmGnh$DTt+sk*&M%EOceq$`_8x5l#UHnVd!Q1@^!gXrHn>0kovR?52!3N~DtZjV7y0hX|H${=nGrmyuH_?Wjs2Pv>ymJ4$lEh|YUX{G?|4@zi)gpQ{xPODQaRp$hq5(TGQhEIe^sY#$EgObK!j zJ^->r;sU^IGQ&UkQr*9C`Pi5L#OHY-4%I6nh^16?0B>8$8|XhJ4R~sP9?DFoXy7fn zHani}+w*g;IpjN@Pc}u;rp4ut<@oC$Z}w|>>RR8)Ze5HmdxLr(5@j;qmHtJ2U2nvo zM?xkB{O|J+ge(32`5}7x|34kMi@tjl@fQ{V@Iz|xxjRYXIa^4zL2HlPoo&Uj?EPyYv0x literal 0 HcmV?d00001 diff --git a/DIW_2504A.json b/DIW_2505A.json similarity index 76% rename from DIW_2504A.json rename to DIW_2505A.json index 0604868..2ad00b6 100644 --- a/DIW_2504A.json +++ b/DIW_2505A.json @@ -46,61 +46,61 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "맑은 고딕", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/① 글씨체 (맑은 고딕)" + "item": "문구 (천혜의비경철쭉)/① 글씨체 (맑은 고딕)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "28,61,98", "points": 2, "category": "Color", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/② 채우기 : 색상(RGB:100,170,92)" + "item": "문구 (천혜의비경철쭉)/② 채우기 : 색상(RGB:100,170,92)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "110", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/③ 크기-너비 (110mm)" + "item": "문구 (천혜의비경철쭉)/③ 크기-너비 (110mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/④ 크기-높이 (20mm)" + "item": "문구 (천혜의비경철쭉)/④ 크기-높이 (20mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (천혜의비경철쭉)/⑤ 위치 (글자처럼 취급)" }, "6": { "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (천혜의비경철쭉)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "클라우드컴퓨팅컨퍼런스", + "searchValue": "천혜의비경철쭉", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (천혜의비경철쭉)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", @@ -141,19 +141,19 @@ }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "글로벌 클라우드 컴퓨팅 컨퍼런스", + "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로", "value": "BOLD", "points": 2, "category": "FontAttribute", - "item": "문구 (글로벌 클라우드 컴퓨팅 컨퍼런스)/① 진하게" + "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/① 진하게" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "글로벌 클라우드 컴퓨팅 컨퍼런스", - "value": "UNDERLINE", + "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로", + "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (글로벌 클라우드 컴퓨팅 컨퍼런스)/② 밑줄" + "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/② 기울임" }, "14": { "path": "//CHAR[contains(text(),'{char1}')]", @@ -215,44 +215,44 @@ }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 04. 26.", + "searchValue": "2025. 05. 24.", "value": "1400", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/① 크기 (14pt)", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 04. 26.", + "searchValue": "2025. 05. 24.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "글로벌멀티클라우드협의회", + "searchValue": "운봉바래봉철쭉제", "value": "궁서체", "points": 1, "category": "FontName", - "item": "문구 (글로벌멀티클라우드협의회)/① 글씨체 (궁서체)" + "item": "문구 (운봉바래봉철쭉제)/① 글씨체 (궁서체)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "글로벌멀티클라우드협의회", + "searchValue": "운봉바래봉철쭉제", "value": "2600", "points": 1, "category": "OneAnswer", - "item": "문구 (글로벌멀티클라우드협의회)/② 크기 (26pt)" + "item": "문구 (운봉바래봉철쭉제)/② 크기 (26pt)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "글로벌멀티클라우드협의회", + "searchValue": "운봉바래봉철쭉제", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (글로벌멀티클라우드협의회)/③ 정렬 (가운데 정렬)" + "item": "문구 (운봉바래봉철쭉제)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", @@ -349,87 +349,87 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "클라우드 컴퓨팅", - "value": "60", + "searchValue": "철쭉과 진달래", + "value": "50", "points": 2, "category": "mmSize", - "item": "문구 (클라우드 컴퓨팅)/① 크기-너비 (60mm)" + "item": "문구 (철쭉과 진달래)/① 크기-너비 (50 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "클라우드 컴퓨팅", + "searchValue": "철쭉과 진달래", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (클라우드 컴퓨팅)/② 크기-높이 (12mm)" + "item": "문구 (철쭉과 진달래)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", - "searchValue": "클라우드 컴퓨팅", + "searchValue": "철쭉과 진달래", "value": [ "DoubleSlim", "283" ], "points": 2, "category": "DoubleAnswer", - "item": "문구 (클라우드 컴퓨팅)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (철쭉과 진달래)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "클라우드 컴퓨팅", - "value": "50", + "searchValue": "철쭉과 진달래", + "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)", + "item": "문구 (철쭉과 진달래)/④ 글상자 모서리 (둥근모양)", "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "클라우드 컴퓨팅", - "value": "202,86,167", + "searchValue": "철쭉과 진달래", + "value": "225,15,161", "points": 2, "category": "Color", - "item": "문구 (클라우드 컴퓨팅)/⑤ 채우기 : 색상(RGB:202,86,167)" + "item": "문구 (철쭉과 진달래)/⑤ 채우기 : 색상(RGB:225,15,161)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "클라우드 컴퓨팅", + "searchValue": "철쭉과 진달래", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (철쭉과 진달래)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "클라우드 컴퓨팅", + "searchValue": "철쭉과 진달래", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (철쭉과 진달래)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "클라우드 컴퓨팅", - "value": "견고딕", + "searchValue": "철쭉과 진달래", + "value": "맑은고딕", "points": 1, "category": "FontName", - "item": "문구 (클라우드 컴퓨팅)/⑧ 글씨체 (견고딕)" + "item": "문구 (철쭉과 진달래)/⑧ 글씨체 (맑은고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "클라우드 컴퓨팅", - "value": "2000", + "searchValue": "철쭉과 진달래", + "value": "1800", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/⑨ 글씨크기 (20pt)", + "item": "문구 (철쭉과 진달래)/⑨ 글씨크기 (18 pt)", "desc":"1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "클라우드 컴퓨팅", + "searchValue": "철쭉과 진달래", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드 컴퓨팅)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (철쭉과 진달래)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", @@ -441,17 +441,17 @@ }, "15": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", - "value": "80", + "value": "85", "points": 2, "category": "mmSize", - "item": "② 크기-너비 (80 mm)" + "item": "② 크기-너비 (85 mm)" }, "16": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", - "value": "45", + "value": "40", "points": 2, "category": "mmSize", - "item": "③ 크기-높이 (45 mm)" + "item": "③ 크기-높이 (40 mm)" }, "17": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", @@ -462,91 +462,91 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@VertOffset", - "value": "24", + "value": "23", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 주목하는 최신 트렌드", + "searchValue": "1. 철쭉의 특징", "value": "굴림", "points": 1, "category": "FontName", - "item": "문구① (1. 주목하는 최신 트렌드)/① 글씨체 (굴림)" + "item": "문구① (1. 철쭉의 특징)/① 글씨체 (굴림)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 주목하는 최신 트렌드", + "searchValue": "1. 철쭉의 특징", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 주목하는 최신 트렌드)/② 크기 (12pt)" + "item": "문구① (1. 철쭉의 특징)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 주목하는 최신 트렌드", + "searchValue": "1. 철쭉의 특징", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 주목하는 최신 트렌드)/③ 진하게" + "item": "문구① (1. 철쭉의 특징)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 기술의 경제적 가치", + "searchValue": "2. 봄의 전령 진달래", "value": "굴림", "points": 1, "category": "FontName", - "item": "문구② (2. 기술의 경제적 가치)/① 글씨체 (굴림)" + "item": "문구② (2. 봄의 전령 진달래)/① 글씨체 (굴림)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 기술의 경제적 가치", + "searchValue": "2. 봄의 전령 진달래", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 기술의 경제적 가치)/② 크기 (12pt)" + "item": "문구② (2. 봄의 전령 진달래)/② 크기 (12pt)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 기술의 경제적 가치", + "searchValue": "2. 봄의 전령 진달래", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 기술의 경제적 가치)/③ 진하게" + "item": "문구② (2. 봄의 전령 진달래)/③ 진하게" }, "25": { "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", - "option": "클라우드", + "option": "거름", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (클라우드)/① 각주 설정 및 문구 입력" + "item": "문구 (거름)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", - "value": "중고딕", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", + "value": "궁서", "points": 1, "category": "FontName", - "item": "문구 (클라우드)/② 글씨체 (중고딕)" + "item": "문구 (거름)/② 글씨체 (궁서)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (클라우드)/③ 크기 (9pt)" + "item": "문구 (거름)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "searchValue": "땅을 기름지게 하는데 사용되는 유기물질", "value": "Ideograph", "points": 2, "category": "OneAnswer", - "item": "문구 (클라우드)/④ 각주 번호모양", + "item": "문구 (거름)/④ 각주 번호모양", "desc": { "가,나,다":"HangulSyllable", "1,2,3":"Digit", @@ -561,81 +561,81 @@ } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Digital')])", - "ignoreWord": "Digital", + "path": "boolean(//CHAR[contains(text(),'Breeding')])", + "ignoreWord": "Breeding", "value": true, "points": 3, "category": "Boolean", - "item": "Digital/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Breeding/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word":[ - ["전환", "轉換"], - ["핵심", "核心"], - ["확산", "擴散"], - ["보안", "保安"], - ["도입", "導入"] + ["생육", "生育"], + ["유년", "幼年"], + ["허기", "虛飢"], + ["풍류", "風流"], + ["식물", "植物"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 전환(轉換), ② 핵심(核心), ③ 확산(擴散), ④ 보안(保安), ⑤ 도입(導入)" + "item": "① 생육(生育), ② 유년(幼年), ③ 허기(虛飢), ④ 풍류(風流), ⑤ 식물(植物)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'션이발전')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지를잘라')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…보안(保安) 솔루션은 발전하면서…)/\"은\" → \"이\" 글자바꿈" + "item": "문구 (…새로 나온 가지가 잘라…) 가 → 를 글자바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이터유출')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'보다참꽃')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…유출과 데이터 사이버…)/\"유출과\" / \"데이터\" 순서바꿈" + "item": "문구 (…참꽃나무란 진달래보다 이름에 더…) 참꽃나무란 / 진달래보다 순서바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "클라우드 보안(단위: 백만 달러)", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", "value": "돋움", "points": 1, "category": "FontName", - "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/① 글씨체 (돋움)" + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/① 글씨체 (돋움)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "클라우드 보안(단위: 백만 달러)", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/② 크기 (12pt)" + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/② 크기 (12pt)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "클라우드 보안(단위: 백만 달러)", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/③ 진하게" + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "클라우드 보안(단위: 백만 달러)", + "searchValue": "철쭉 관광객 현황(단위 : 천 명)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/④ 정렬 (가운데 정렬)" + "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/④ 정렬 (가운데 정렬)" }, "37": { "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "value": "233,174,43", + "value": "140,249,62", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" + "item": "위쪽 제목 셀/① 색상(RGB:140,249,62)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -687,7 +687,7 @@ }, "44": { "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", - "option": "SUM", + "option": "AVG", "value": true, "points": 4, "category": "Boolean", @@ -696,11 +696,11 @@ }, "45": { "chart_xpath": "", - "chart_type": "묶은세로막대형", + "chart_type": "누적세로막대형", "value": true, "points": 2, "category": "ChartType", - "item": "① 종류 (묶은 세로 막대형)", + "item": "① 종류 (누적세로막대형)", "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { @@ -735,28 +735,28 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "클라우드 보안 투자", + "searchValue": "철쭉 관광객 현황", "value": "굴림", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안 투자)/① 글씨체 (굴림)" + "item": "제목 문구 (철쭉 관광객 현황)/① 글씨체 (굴림)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "클라우드 보안 투자", + "searchValue": "철쭉 관광객 현황", "value": "1300", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안 투자)/② 크기 (13pt)" + "item": "제목 문구 (철쭉 관광객 현황)/② 크기 (13pt)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "클라우드 보안 투자", + "searchValue": "철쭉 관광객 현황", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (클라우드 보안 투자)/③ 진하게", + "item": "제목 문구 (철쭉 관광객 현황)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { diff --git a/DIW_2504B.json b/DIW_2505B.json similarity index 72% rename from DIW_2504B.json rename to DIW_2505B.json index 2ac1a76..5a7444c 100644 --- a/DIW_2504B.json +++ b/DIW_2505B.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "친환경에너지박람회", - "value": "궁서체", + "searchValue": "광양매실축제안내", + "value": "맑은 고딕", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경에너지박람회)/① 글씨체 (궁서체)" + "item": "문구 (광양매실축제안내)/① 글씨체 (맑은 고딕)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "친환경에너지박람회", - "value": "199,82,82", + "searchValue": "광양매실축제안내", + "value": "199,80,124", "points": 2, "category": "Color", - "item": "문구 (친환경에너지박람회)/② 채우기 : 색상(RGB:199,82,82)" + "item": "문구 (광양매실축제안내)/② 채우기 : 색상(RGB:199,82,82)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "친환경에너지박람회", - "value": "110", + "searchValue": "광양매실축제안내", + "value": "100", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (친환경에너지박람회)/③ 크기-너비 (110mm)" + "item": "문구 (광양매실축제안내)/③ 크기-너비 (100mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "친환경에너지박람회", + "searchValue": "광양매실축제안내", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (친환경에너지박람회)/④ 크기-높이 (20mm)" + "item": "문구 (광양매실축제안내)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "친환경에너지박람회", + "searchValue": "광양매실축제안내", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (친환경에너지박람회)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (광양매실축제안내)/⑤ 위치 (글자처럼 취급)" }, "6": { "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "친환경에너지박람회", + "searchValue": "광양매실축제안내", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (친환경에너지박람회)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (광양매실축제안내)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "친환경에너지박람회", + "searchValue": "광양매실축제안내", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (친환경에너지박람회)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (광양매실축제안내)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "지", + "searchValue": "올", "value": { "Height": 2800, "Width": 2800 @@ -112,147 +112,147 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "지/① 모양 (2줄)" + "item": "올/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "지", - "value": "궁서", + "searchValue": "올", + "value": "궁서체", "points": 1, "category": "FontName", - "item": "지/② 글씨체 (궁서)" + "item": "올/② 글씨체 (궁서체)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "지", - "value": "58,220,255", + "searchValue": "올", + "value": "186,255,26", "points": 2, "category": "Color", - "item": "지/③ 면색 : 색상(RGB:58,220,255)" + "item": "올/③ 면색 : 색상(RGB:186,255,26)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "지", + "searchValue": "올", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "지/④ 본문과의 간격 : 3.0mm" + "item": "올/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "태양광, 풍력, 수소에너지 등 신재생 에너지 기술", - "value": "BOLD", + "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다!", + "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (태양광, 풍력, 수소에너지 등 신재생 에너지 기술)/① 진하게" + "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다!)/① 기울임" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "태양광, 풍력, 수소에너지 등 신재생 에너지 기술", - "value": "UNDERLINE", + "searchValue": "봄 매화, 여름 매실로 우리 함께 힐링합시다!", + "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (태양광, 풍력, 수소에너지 등 신재생 에너지 기술)/② 밑줄" + "item": "문구 (봄 매화, 여름 매실로 우리 함께 힐링합시다!)/② 기울임" }, "14": { "path": "//CHAR[contains(text(),'{char1}')]", "path2": "//CHAR[contains(text(),'{char2}')]", "path3": "//CHAR[contains(text(),'{char3}')]", - "char1": "▶", - "char2": "◀", + "char1": "→", + "char2": "←", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ▶, ② ◀, ③ ※" + "item": "① → , ② ← , ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "행사안내", - "value": "중고딕", + "searchValue": "축제안내", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "문구 (▶ 행사안내 ◀)/① 글씨체 (중고딕)" + "item": "문구 (→ 축제안내 ←)/① 글씨체 (굴림체)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "행사안내", + "searchValue": "축제안내", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (▶ 행사안내 ◀)/② 정렬 (가운데 정렬)" + "item": "문구 (→ 축제안내 ←)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구 (블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록)/① 진하게" + "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/① 진하게" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "searchValue": "광양매실축제 홈페이지(http://www.ihd.or.kr)", "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록)/② 기울임" + "item": "문구 (광양매실축제 홈페이지(http://www.ihd.or.kr))/② 기울임" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "searchValue": "기타사항", "value": { - "Left": 10, + "Left": 15, "Indent": 12 }, "points": 2, "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)", "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 04. 26.", - "value": "1300", + "searchValue": "2025. 05. 24.", + "value": "1400", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/① 크기 (14pt)", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 04. 26.", + "searchValue": "2025. 05. 24.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "친환경에너지발전협의회", - "value": "돋움", + "searchValue": "광양매실축제위원회", + "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (친환경에너지발전협의회)/① 글씨체 (돋움)" + "item": "문구 (광양매실축제위원회)/① 글씨체 (견고딕)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "친환경에너지발전협의회", - "value": "2700", + "searchValue": "광양매실축제위원회", + "value": "2600", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경에너지발전협의회)/② 크기 (27pt)" + "item": "문구 (광양매실축제위원회)/② 크기 (26pt)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "친환경에너지발전협의회", + "searchValue": "광양매실축제위원회", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경에너지발전협의회)/③ 정렬 (가운데 정렬)" + "item": "문구 (광양매실축제위원회)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", @@ -280,16 +280,18 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "HangulSyllable", + "value": "CircledDigit", "points": 2, "category": "PageNumber", "item": "① 쪽 번호 매기기 (A,B,C 순으로)", "desc1": { - "가,나,다":"HangulSyllable", "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", "一,二,三":"Ideograph", "㉠,㉡,㉢":"CircledHangulJamo", "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", @@ -349,87 +351,87 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "친환경 에너지", - "value": "50", + "searchValue": "매화와 매실", + "value": "55", "points": 2, "category": "mmSize", - "item": "문구 (친환경 에너지)/① 크기-너비 (50mm)" + "item": "문구 (매화와 매실)/① 크기-너비 (55 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (친환경 에너지)/② 크기-높이 (12mm)" + "item": "문구 (매화와 매실)/② 크기-높이 (12 mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": [ "DoubleSlim", "283" ], "points": 2, "category": "DoubleAnswer", - "item": "문구 (친환경 에너지)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (매화와 매실)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (친환경 에너지)/④ 글상자 모서리 (둥근모양)", + "item": "문구 (매화와 매실)/④ 글상자 모서리 (둥근모양)", "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "친환경 에너지", - "value": "53,135,145", + "searchValue": "매화와 매실", + "value": "122,179,64", "points": 2, "category": "Color", - "item": "문구 (친환경 에너지)/⑤ 채우기 : 색상(RGB:53,135,145)" + "item": "문구 (매화와 매실)/⑤ 채우기 : 색상(RGB:122,179,64)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경 에너지)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (매화와 매실)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경 에너지)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (매화와 매실)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "친환경 에너지", - "value": "궁서체", + "searchValue": "매화와 매실", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (친환경 에너지)/⑧ 글씨체 (궁서체)" + "item": "문구 (매화와 매실)/⑧ 글씨체 (중고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "2000", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경 에너지)/⑨ 글씨크기 (20pt)", + "item": "문구 (매화와 매실)/⑨ 글씨크기 (20 pt)", "desc":"1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "친환경 에너지", + "searchValue": "매화와 매실", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (친환경 에너지)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (매화와 매실)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", @@ -467,92 +469,98 @@ "category": "mmSize", "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" }, + "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 친환경 에너지 개요", + "searchValue": "1. 매화의 특징", "value": "돋움", "points": 1, "category": "FontName", - "item": "문구① (1. 친환경 에너지 개요)/① 글씨체 (돋움)" + "item": "문구① (1. 매화의 특징)/① 글씨체 (돋움)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 친환경 에너지 개요", + "searchValue": "1. 매화의 특징", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 친환경 에너지 개요)/② 크기 (12pt)" + "item": "문구① (1. 매화의 특징)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 친환경 에너지 개요", + "searchValue": "1. 매화의 특징", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 친환경 에너지 개요)/③ 진하게" + "item": "문구① (1. 매화의 특징)/③ 진하게" }, + "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 신재생 에너지", + "searchValue": "2. 매실의 효능", "value": "돋움", "points": 1, "category": "FontName", - "item": "문구② (2. 신재생 에너지)/① 글씨체 (돋움)" + "item": "문구② (2. 매실의 효능)/① 글씨체 (돋움)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 신재생 에너지", + "searchValue": "2. 매실의 효능", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 신재생 에너지)/② 크기 (12pt)" + "item": "문구② (2. 매실의 효능)/② 크기 (12pt)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 신재생 에너지", + "searchValue": "2. 매실의 효능", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 신재생 에너지)/③ 진하게" + "item": "문구② (2. 매실의 효능)/③ 진하게" }, + "25": { "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", - "option": "태양전지", + "option": "문인화", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (태양전지)/① 각주 설정 및 문구 입력" + "item": "문구 (문인화)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "태양의 빛에너지를 전기에너지로 변환시켜 전기를 발생하는 장치로 친환경 방식으로 알려져 있음", - "value": "굴림", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구 (태양전지)/② 글씨체 (굴림)" + "item": "문구 (문인화)/② 글씨체 (돋움체)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "태양의 빛에너지를 전기에너지로 변환시켜 전기를 발생하는 장치로 친환경 방식으로 알려져 있음", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (태양전지)/③ 크기 (9pt)" + "item": "문구 (문인화)/③ 크기 (9pt)" }, + "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "태양의 빛에너지를 전기에너지로 변환시켜 전기를 발생하는 장치로 친환경 방식으로 알려져 있음", - "value": "CircledHangulJamo", + "searchValue": "그림을 직업으로 하지 않는 선비나 사대부들이 여흥으로 자신들의 심중을 표현하여 그린 그림", + "value": "CircledHangulSyllable", "points": 2, "category": "OneAnswer", - "item": "문구 (태양전지)/④ 각주 번호모양", + "item": "문구 (문인화)/④ 각주 번호모양", "desc": { - "가,나,다":"HangulSyllable", "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", "一,二,三":"Ideograph", "㉠,㉡,㉢":"CircledHangulJamo", "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", @@ -560,82 +568,83 @@ "정답에 맞는 값 value에 입력":"" } }, + "29": { - "path": "boolean(//CHAR[contains(text(),'Campaign')])", - "ignoreWord": "Campaign", + "path": "boolean(//CHAR[contains(text(),'Vitamin')])", + "ignoreWord": "Vitamin", "value": true, "points": 3, "category": "Boolean", - "item": "Campaign/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Vitamin/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word":[ - ["저감", "低減"], - ["화석", "化石"], - ["투자", "投資"], - ["달성", "達成"], - ["세금", "稅金"] + ["매향", "梅香"], + ["불의", "不義"], + ["국화", "菊花"], + ["매실", "梅實"], + ["해독", "解讀"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)" + "item": "① 매향(梅香), ② 불의(不義), ③ 국화(菊花), ④ 매실(梅實), ⑤ 해독(解讀)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'택을제공')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'흰색,분홍')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…세금 혜택이 제공하고 있으며…)/\"이\" → \"을\" 글자바꿈" + "item": "문구 (청색, 분홍색, 붉은색 등 다양한 색을…)/청 → 흰 글자바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'탄소배출')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'킨과폴리')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…배출 탄소 규제가 강화되면서…)/\"배출\" / \"탄소\" 순서바꿈" + "item": "문구 (항산화 성분인 폴리페놀은 카테킨과 해독(解讀)과…)/ 폴리페놀은 / 카테킨과 순서바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "친환경 에너지 성장률(단위: %)", - "value": "돋움", + "searchValue": "광양매실축제 만족도(단위 : %)", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "제목 문구 (친환경 에너지 성장률(단위: %))/① 글씨체 (돋움)" + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/① 글씨체 (굴림체)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "친환경 에너지 성장률(단위: %)", + "searchValue": "광양매실축제 만족도(단위 : %)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (친환경 에너지 성장률(단위: %))/② 크기 (12pt)" + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/② 크기 (12pt)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "친환경 에너지 성장률(단위: %)", + "searchValue": "광양매실축제 만족도(단위 : %)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (친환경 에너지 성장률(단위: %))/③ 진하게" + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "친환경 에너지 성장률(단위: %)", + "searchValue": "광양매실축제 만족도(단위 : %)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (친환경 에너지 성장률(단위: %))/④ 정렬 (가운데 정렬)" + "item": "제목 문구 (광양매실축제 만족도(단위 : %))/④ 정렬 (가운데 정렬)" }, "37": { "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "value": "202,86,167", + "value": "233,174,43", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:202,86,167)" + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -664,11 +673,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "중고딕", + "value": "돋움", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (중고딕)", + "item": "글자모양/① 글씨체 (돋움)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -696,11 +705,11 @@ }, "45": { "chart_xpath": "", - "chart_type": "꺾은선형", + "chart_type": "묶은세로막대형", "value": true, "points": 2, "category": "ChartType", - "item": "① 종류 (꺾은선형)", + "item": "① 종류 (묶은세로막대형)", "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { @@ -720,10 +729,10 @@ }, "48": { "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", - "value": "80", + "value": "90", "points": 2, "category": "mmSize", - "item": "④ 크기-높이 (80 mm)" + "item": "④ 크기-높이 (90 mm)" }, "49": { "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", @@ -735,42 +744,42 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "친환경 에너지 성장률", + "searchValue": "광양매실축제 만족도", "value": "궁서체", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (친환경 에너지 성장률)/① 글씨체 (궁서체)" + "item": "제목 문구 (광양매실축제 만족도)/① 글씨체 (궁서체)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "친환경 에너지 성장률", + "searchValue": "광양매실축제 만족도", "value": "1300", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (친환경 에너지 성장률)/② 크기 (13pt)" + "item": "제목 문구 (광양매실축제 만족도)/② 크기 (13pt)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "친환경 에너지 성장률", + "searchValue": "광양매실축제 만족도", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (친환경 에너지 성장률)/③ 진하게", + "item": "제목 문구 (광양매실축제 만족도)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "value": "바탕", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/① 글꼴 (바탕)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "value": "900", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/② 크기 (9pt)" }, "55": { @@ -778,7 +787,7 @@ "option": "i", "value": "1", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/③ 기울임", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, @@ -786,14 +795,14 @@ "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "value": "바탕", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/① 글꼴 (바탕)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "value": "900", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/② 크기 (9pt)" }, "58": { @@ -801,7 +810,7 @@ "option": "i", "value": "1", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/③ 기울임", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, diff --git a/DIW_2504C.json b/DIW_2505C.json similarity index 71% rename from DIW_2504C.json rename to DIW_2505C.json index 0cf3fff..fd15754 100644 --- a/DIW_2504C.json +++ b/DIW_2505C.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "서울국제도서박람회", - "value": "돋움", + "searchValue": "별사랑천문대캠프안내", + "value": "궁서체", "points": 1, "category": "OneAnswer", - "item": "문구 (서울국제도서박람회)/① 글씨체 (돋움)" + "item": "문구 (별사랑천문대캠프안내)/① 글씨체 (궁서체)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "서울국제도서박람회", - "value": "28,61,98", + "searchValue": "별사랑천문대캠프안내", + "value": "53,164,78", "points": 2, "category": "Color", - "item": "문구 (서울국제도서박람회)/② 채우기 : 색상(RGB:100,170,92)" + "item": "문구 (별사랑천문대캠프안내)/② 채우기 : 색상(RGB:53,164,78)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "서울국제도서박람회", - "value": "100", + "searchValue": "별사랑천문대캠프안내", + "value": "120", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (서울국제도서박람회)/③ 크기-너비 (100mm)" + "item": "문구 (별사랑천문대캠프안내)/③ 크기-너비 (120 mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대캠프안내", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (서울국제도서박람회)/④ 크기-높이 (20mm)" + "item": "문구 (별사랑천문대캠프안내)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대캠프안내", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (서울국제도서박람회)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (별사랑천문대캠프안내)/⑤ 위치 (글자처럼 취급)" }, "6": { "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대캠프안내", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (서울국제도서박람회)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (별사랑천문대캠프안내)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대캠프안내", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (서울국제도서박람회)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (별사랑천문대캠프안내)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "책", + "searchValue": "별", "value": { "Height": 2800, "Width": 2800 @@ -112,155 +112,155 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "책/① 모양 (2줄)" + "item": "별/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "책", - "value": "돋움", + "searchValue": "별", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "책/② 글씨체 (돋움)" + "item": "별/② 글씨체 (굴림체)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "책", - "value": "206,166,29", + "searchValue": "별", + "value": "211,202,24", "points": 2, "category": "Color", - "item": "책/③ 면색 : 색상(RGB:206,166,29)" + "item": "별/③ 면색 : 색상(RGB:211,202,24)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "책", + "searchValue": "별", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "책/④ 본문과의 간격 : 3.0mm" + "item": "별/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판", + "searchValue": "천문우주과학 체험학습", "value": "BOLD", "points": 2, "category": "FontAttribute", - "item": "문구 (문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판)/① 진하게" + "item": "문구 (천문우주과학 체험학습)/① 진하게" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판", - "value": "ITALIC", + "searchValue": "천문우주과학 체험학습", + "value": "UNDERLINE", "points": 2, "category": "FontAttribute", - "item": "문구 (문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판)/② 기울임" + "item": "문구 (천문우주과학 체험학습)/② 밑줄" }, "14": { "path": "//CHAR[contains(text(),'{char1}')]", "path2": "//CHAR[contains(text(),'{char2}')]", "path3": "//CHAR[contains(text(),'{char3}')]", - "char1": "◆", - "char2": "◆", + "char1": "●", + "char2": "●", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ◆, ② ◆, ③ ※" + "item": "① ● , ② ● , ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "행사안내", - "value": "궁서", + "searchValue": "참가안내", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (◆ 행사안내 ◆)/① 글씨체 (궁서)" + "item": "문구 (● 참가안내 ●)/① 글씨체 (굴림)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "행사안내", + "searchValue": "참가안내", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (◆ 행사안내 ◆)/② 정렬 (가운데 정렬)" + "item": "문구 (● 참가안내 ●)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조", + "searchValue": "그룹별 20명(선착순 마감)", "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조)/① 기울임" + "item": "문구 (그룹별 20명(선착순 마감))/① 기울임" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조", + "searchValue": "그룹별 20명(선착순 마감)", "value": "UNDERLINE", "points": 1, "category": "FontAttribute", - "item": "문구 (서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조)/② 밑줄" + "item": "문구 (그룹별 20명(선착순 마감))/② 밑줄" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "searchValue": "기타사항", "value": { "Left": 15, - "Indent": 12 + "Indent": 14 }, "points": 2, "category": "ParaShape", - "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (14pt)", "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 04. 26.", - "value": "1300", + "searchValue": "2025. 05. 24.", + "value": "1400", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/① 크기 (14pt)", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 04. 26.", + "searchValue": "2025. 05. 24.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대", "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (서울국제도서박람회)/① 글씨체 (견고딕)" + "item": "문구 (별사랑천문대)/① 글씨체 (견고딕)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "서울국제도서박람회", - "value": "2500", + "searchValue": "별사랑천문대", + "value": "2600", "points": 1, "category": "OneAnswer", - "item": "문구 (서울국제도서박람회)/② 크기 (25pt)" + "item": "문구 (별사랑천문대)/② 크기 (26pt)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "서울국제도서박람회", + "searchValue": "별사랑천문대", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (서울국제도서박람회)/③ 정렬 (가운데 정렬)" + "item": "문구 (별사랑천문대)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "중고딕", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (중고딕)" + "item": "문구 (DIAT)/① 글꼴 (돋움)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,16 +280,18 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "RomanSmall", + "value": "LatinCapital", "points": 2, "category": "PageNumber", "item": "① 쪽 번호 매기기 (A,B,C 순으로)", "desc1": { - "가,나,다":"HangulSyllable", "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", "一,二,三":"Ideograph", "㉠,㉡,㉢":"CircledHangulJamo", "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", @@ -300,7 +302,7 @@ }, "29": { "path": "//PAGENUM/@Pos", - "value": "BottomRight", + "value": "BottomCenter", "points": 2, "category": "PageNumber", "item": "가운데 아래", @@ -349,88 +351,87 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "출판 산업 트렌드", - "value": "70", + "searchValue": "별자리", + "value": "60", "points": 2, "category": "mmSize", - "item": "문구 (출판 산업 트렌드)/① 크기-너비 (70mm)" + "item": "문구 (별자리)/① 크기-너비 (60 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "출판 산업 트렌드", + "searchValue": "별자리", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (출판 산업 트렌드)/② 크기-높이 (12mm)" + "item": "문구 (별자리)/② 크기-높이 (12mm)" }, "6": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", - "searchValue": "출판 산업 트렌드", + "searchValue": "별자리", "value": [ "DoubleSlim", "283" ], "points": 2, "category": "DoubleAnswer", - "item": "문구 (출판 산업 트렌드)/③ 테두리 : 이중 실선(1.00mm)", + "item": "문구 (별자리)/③ 테두리 : 이중 실선(1.00mm)", "desc": "1mm = 283pt" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "출판 산업 트렌드", - "value": "50", + "searchValue": "별자리", + "value": "20", "points": 2, "category": "OneAnswer", - "item": "문구 (출판 산업 트렌드)/④ 글상자 모서리 (반원)", + "item": "문구 (별자리)/④ 글상자 모서리 (반원)", "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "출판 산업 트렌드", - "value": "106,82,82", + "searchValue": "별자리", + "value": "191,179,233", "points": 2, "category": "Color", - "item": "문구 (출판 산업 트렌드)/⑤ 채우기 : 색상(RGB:106,82,82)" + "item": "문구 (별자리)/⑤ 채우기 : 색상(RGB:191,179,233)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "출판 산업 트렌드", + "searchValue": "별자리", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (출판 산업 트렌드)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (별자리)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "출판 산업 트렌드", + "searchValue": "별자리", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (출판 산업 트렌드)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (별자리)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "출판 산업 트렌드", - "value": "휴먼옛체", + "searchValue": "별자리", + "value": "중고딕", "points": 1, "category": "FontName", - "item": "문구 (출판 산업 트렌드)/⑧ 글씨체 (휴먼옛체)", - "desc": "폰트 '견고딕'과 '중고딕'은 한글프로그램 내부적으로 '한양견고딕', '한양중고딕'처리 되어서 프로그램 내부에서 수험자 답변에서 '한양'을 제거하는 과정을 거침" + "item": "문구 (별자리)/⑧ 글씨체 (중고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "출판 산업 트렌드", - "value": "2000", + "searchValue": "별자리", + "value": "1600", "points": 1, "category": "OneAnswer", - "item": "문구 (출판 산업 트렌드)/⑨ 글씨크기 (20pt)", + "item": "문구 (별자리)/⑨ 글씨크기 (16pt)", "desc":"1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "출판 산업 트렌드", + "searchValue": "별자리", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (출판 산업 트렌드)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (별자리)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", @@ -468,92 +469,98 @@ "category": "mmSize", "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" }, + "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 출판 산업의 확장", - "value": "굴림", + "searchValue": "1. 별자리란", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구① (1. 출판 산업의 확장)/① 글씨체 (굴림)" + "item": "문구① (1. 별자리란)/① 글씨체 (돋움체)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 출판 산업의 확장", + "searchValue": "1. 별자리란", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 출판 산업의 확장)/② 크기 (12pt)" + "item": "문구① (1. 별자리란)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 출판 산업의 확장", + "searchValue": "1. 별자리란", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 출판 산업의 확장)/③ 진하게" + "item": "문구① (1. 별자리란)/③ 진하게" }, + "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 도서 박람회의 가치", - "value": "굴림", + "searchValue": "2. 우리나라 계절별 별자리", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구② (2. 도서 박람회의 가치)/① 글씨체 (굴림)" + "item": "문구② (2. 우리나라 계절별 별자리)/① 글씨체 (돋움체)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 도서 박람회의 가치", + "searchValue": "2. 우리나라 계절별 별자리", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 도서 박람회의 가치)/② 크기 (12pt)" + "item": "문구② (2. 우리나라 계절별 별자리)/② 크기 (12pt)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 도서 박람회의 가치", + "searchValue": "2. 우리나라 계절별 별자리", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 도서 박람회의 가치)/③ 진하게" + "item": "문구② (2. 우리나라 계절별 별자리)/③ 진하게" }, + "25": { "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", - "option": "오디오북", + "option": "북두칠성", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (오디오북)/① 각주 설정 및 문구 입력" + "item": "문구 (북두칠성)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함", - "value": "궁서", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (오디오북)/② 글씨체 (궁서)" + "item": "문구 (북두칠성)/② 글씨체 (굴림)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (오디오북)/③ 크기 (9pt)" + "item": "문구 (북두칠성)/③ 크기 (9pt)" }, + "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함", - "value": "CircledLatinSmall", + "searchValue": "큰곰자리의 꼬리에 해당하는 7개의 별", + "value": "CircledLatinCapital", "points": 2, "category": "OneAnswer", - "item": "문구 (오디오북)/④ 각주 번호모양", + "item": "문구 (북두칠성)/④ 각주 번호모양", "desc": { - "가,나,다":"HangulSyllable", "1,2,3":"Digit", - "갑,을,병":"DecagonCircle", - "A,B,C":"LatinCapital", "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", "一,二,三":"Ideograph", "㉠,㉡,㉢":"CircledHangulJamo", "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", @@ -561,82 +568,83 @@ "정답에 맞는 값 value에 입력":"" } }, + "29": { - "path": "boolean(//CHAR[contains(text(),'Platform')])", - "ignoreWord": "Platform", + "path": "boolean(//CHAR[contains(text(),'Babylonia')])", + "ignoreWord": "Babylonia", "value": true, "points": 3, "category": "Boolean", - "item": "Platform/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Babylonia/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word":[ - ["출판", "出版"], - ["독자", "讀者"], - ["박람회", "博覽會"], - ["교류", "交流"], - ["증가", "增加"] + ["성좌", "星座"], + ["유래", "由來"], + ["표석", "標石"], + ["천구", "天球"], + ["계절", "季節"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 출판(出版), ② 독자(讀者), ③ 박람회(博覽會), ④ 교류(交流), ⑤ 증가(增加)" + "item": "① 성좌(星座), ② 유래(由來), ③ 표석(標石), ④ 천구(天球), ⑤ 계절(季節)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'래도점점')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'역에해당')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…콘텐츠 거래는 점점…)/\"는\" → \"도\" 글자바꿈" + "item": "문구 (…지역이 해당하는 티그리스강과…)/이 → 에 글자바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'양한산업')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'나는반드')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…요식업 등의 산업과 다양한 연계되며…)/\"산업과\" / \"다양한\" 순서바꿈" + "item": "문구 (…둘 중 반드시 하나는…)/반드시 / 하나는 순서바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "출판 산업 성장률(단위: %)", - "value": "돋움", + "searchValue": "지역별 천문대 수", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "제목 문구 (출판 산업 성장률(단위: %))/① 글씨체 (돋움)" + "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (돋움체)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "출판 산업 성장률(단위: %)", + "searchValue": "지역별 천문대 수", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (출판 산업 성장률(단위: %))/② 크기 (12pt)" + "item": "제목 문구 (지역별 천문대 수)/② 크기 (12pt)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "출판 산업 성장률(단위: %)", + "searchValue": "지역별 천문대 수", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (출판 산업 성장률(단위: %))/③ 진하게" + "item": "제목 문구 (지역별 천문대 수)/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "출판 산업 성장률(단위: %)", + "searchValue": "지역별 천문대 수", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (출판 산업 성장률(단위: %))/④ 정렬 (가운데 정렬)" + "item": "제목 문구 (지역별 천문대 수)/④ 정렬 (가운데 정렬)" }, "37": { "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "value": "233,174,212", + "value": "255,164,95", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:233,174,212)" + "item": "위쪽 제목 셀/① 색상(RGB:255,164,95)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -665,11 +673,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "중고딕", + "value": "궁서", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (중고딕)", + "item": "글자모양/① 글씨체 (궁서)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -688,7 +696,7 @@ }, "44": { "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", - "option": "AVG", + "option": "SUM", "value": true, "points": 4, "category": "Boolean", @@ -721,10 +729,10 @@ }, "48": { "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", - "value": "80", + "value": "90", "points": 2, "category": "mmSize", - "item": "④ 크기-높이 (80 mm)" + "item": "④ 크기-높이 (90 mm)" }, "49": { "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", @@ -736,36 +744,36 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "출판 산업 성장률", - "value": "바탕", + "searchValue": "지역별 천문대 수", + "value": "맑은 고딕", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (출판 산업 성장률)/① 글씨체 (바탕)" + "item": "제목 문구 (지역별 천문대 수)/① 글씨체 (맑은 고딕)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "출판 산업 성장률", - "value": "1200", + "searchValue": "지역별 천문대 수", + "value": "1400", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (출판 산업 성장률)/② 크기 (12pt)" + "item": "제목 문구 (지역별 천문대 수)/② 크기 (14pt)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "출판 산업 성장률", + "searchValue": "지역별 천문대 수", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (출판 산업 성장률)/③ 진하게", + "item": "제목 문구 (지역별 천문대 수)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", - "value": "돋움", + "value": "바탕", "points": 1, "category": "OneAnswer", - "item": "X축/① 글꼴 (돋움)" + "item": "X축/① 글꼴 (바탕)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", @@ -785,10 +793,10 @@ }, "56": { "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", - "value": "돋움", + "value": "바탕", "points": 1, "category": "OneAnswer", - "item": "Y축/① 글꼴 (돋움)" + "item": "Y축/① 글꼴 (바탕)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", @@ -808,10 +816,10 @@ }, "59": { "chart_xpath": "//c:legend//a:ea/@typeface", - "value": "돋움", + "value": "바탕", "points": 1, "category": "OneAnswer", - "item": "범례/① 글꼴 (돋움)" + "item": "범례/① 글꼴 (바탕)" }, "60": { "chart_xpath": "//c:legend//a:defRPr/@sz", diff --git a/DIW_2505D.json b/DIW_2505D.json new file mode 100644 index 0000000..d8d8f7e --- /dev/null +++ b/DIW_2505D.json @@ -0,0 +1,841 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "1": { + "path": "//PAGEMARGIN", + "value": { + "Top": 20, + "Bottom": 20, + "Left": 20, + "Right": 20, + "Header": 10, + "Footer": 10, + "Gutter": 0 + }, + "tolerance": 1, + "points": 4, + "category": "PageSetting", + "item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)" + }, + "2": { + "path": "", + "value": { + "FontName": "바탕", + "FontSize": "1000", + "Alignment": "Justify", + "LineSpacing": "160" + }, + "points": 4, + "category": "BasicSetting", + "item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)" + }, + "3": { + "path": "", + "value": null, + "points": 40, + "category": "오타감점", + "item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경" + } + }, + "1": { + "1": { + "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/① 글씨체 (궁서체)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "49,95,151", + "points": 2, + "category": "Color", + "item": "문구 (여름방학특집해양스포츠체험교실)/② 채우기 : 색상(RGB:49,95,151)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "120", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (여름방학특집해양스포츠체험교실)/③ 크기-너비 (120 mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "20", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "문구 (여름방학특집해양스포츠체험교실)/④ 크기-높이 (20 mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "true", + "points": 2, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": "Center", + "points": 2, + "category": "OneAnswer", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "//TEXTART[@Text='{searchValue}']", + "searchValue": "여름방학특집해양스포츠체험교실", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (여름방학특집해양스포츠체험교실)/⑦ 글맵시모양 (육안확인)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", + "searchValue": "여", + "value": { + "Height": 2800, + "Width": 2800 + }, + "tolerance": 200, + "points": 1, + "category": "TwoLineSize", + "item": "여/① 모양 (2줄)" + }, + "9": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "여", + "value": "굴림체", + "points": 1, + "category": "FontName", + "item": "여/② 글씨체 (굴림체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "여", + "value": "144,231,51", + "points": 2, + "category": "Color", + "item": "여/③ 면색 : 색상(RGB:144,231,51)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", + "searchValue": "여", + "value": "3.0", + "tolerance": 1, + "points": 2, + "category": "mmSize", + "item": "여/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "시원한 바다와 함께하는 해양 스포츠 체험 교실", + "value": "BOLD", + "points": 2, + "category": "FontAttribute", + "item": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/① 진하게" + }, + "13": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", + "searchValue": "시원한 바다와 함께하는 해양 스포츠 체험 교실", + "value": "UNDERLINE", + "points": 2, + "category": "FontAttribute", + "item": "문구 (시원한 바다와 함께하는 해양 스포츠 체험 교실)/② 밑줄" + }, + "14": { + "path": "//CHAR[contains(text(),'{char1}')]", + "path2": "//CHAR[contains(text(),'{char2}')]", + "path3": "//CHAR[contains(text(),'{char3}')]", + "char1": "◐", + "char2": "◑", + "char3": "※", + "value": 3, + "points": 3, + "category": "SpecialChar", + "item": "① ◐ , ② ◑ , ③ ※" + }, + "15": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "참가안내", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "문구 (◐ 참가안내 ◑)/① 글씨체 (돋움)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "참가안내", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (◐ 참가안내 ◑)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)", + "value": "ITALIC", + "points": 1, + "category": "FontAttribute", + "item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/① 기울임" + }, + "18": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)", + "value": "UNDERLINE", + "points": 1, + "category": "FontAttribute", + "item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/② 밑줄" + }, + "19": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", + "searchValue": "기타사항", + "value": { + "Left": 10, + "Indent": 12 + }, + "points": 2, + "category": "ParaShape", + "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", + "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "searchValue": "2025. 05. 24.", + "value": "1400", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/① 크기 (14pt)", + "desc": "1pt당 100" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "searchValue": "2025. 05. 24.", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (2025. 05. 24.)/② 정렬 (가운데 정렬)" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "해양스포츠홍보위원회", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (해양스포츠홍보위원회)/① 글씨체 (견고딕)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "해양스포츠홍보위원회", + "value": "2600", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양스포츠홍보위원회)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "searchValue": "해양스포츠홍보위원회", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양스포츠홍보위원회)/③ 정렬 (가운데 정렬)" + }, + "25": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "DIAT", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구 (DIAT)/① 글꼴 (굴림)" + }, + "26": { + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "DIAT", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/② 크기 (9pt)" + }, + "27": { + "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", + "searchValue": "DIAT", + "value": "Right", + "points": 1, + "category": "OneAnswer", + "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "value": "CircledDigit", + "points": 2, + "category": "PageNumber", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "desc1": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + }, + "desc2": "1, 2페이지 모두 정답이어야 점수 부여" + }, + "29": { + "path": "//PAGENUM/@Pos", + "value": "BottomRight", + "points": 2, + "category": "PageNumber", + "item": "가운데 아래", + "desc": "1, 2페이지 모두 정답이어야 점수 부여", + "desc2": { + "가운데 아래": "BottomCenter", + "오른쪽 아래": "BottomRight" + } + }, + "30": { + "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='{option}'])", + "option": "180", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문제 1 줄간격 180% 설정", + "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)" + } + }, + "2": { + "1": { + "path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside", + "path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]", + "value": { + "header_inside": true, + "all_double_slim": true + }, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "2": { + "path": "count(//SECTION)>1", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//COLDEF/@Count", + "value": "2", + "points": 3, + "category": "OneAnswer", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "해양 스포츠의 세계", + "value": "60", + "points": 2, + "category": "mmSize", + "item": "문구 (해양 스포츠의 세계)/① 크기-너비 (60 mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "해양 스포츠의 세계", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (해양 스포츠의 세계)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "해양 스포츠의 세계", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (해양 스포츠의 세계)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "해양 스포츠의 세계", + "value": "20", + "points": 2, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/④ 글상자 모서리 (반원)", + "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "해양 스포츠의 세계", + "value": "248,231,130", + "points": 2, + "category": "Color", + "item": "문구 (해양 스포츠의 세계)/⑤ 채우기 : 색상(RGB:248,231,130)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "해양 스포츠의 세계", + "value": "true", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "해양 스포츠의 세계", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "해양 스포츠의 세계", + "value": "궁서", + "points": 1, + "category": "FontName", + "item": "문구 (해양 스포츠의 세계)/⑧ 글씨체 (궁서)" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "해양 스포츠의 세계", + "value": "1800", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑨ 글씨크기 (18pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "해양 스포츠의 세계", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "문구 (해양 스포츠의 세계)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림D.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (80 mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "40", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (40 mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 국립해양박물관", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구① (1. 국립해양박물관)/① 글씨체 (돋움체)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 국립해양박물관", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구① (1. 국립해양박물관)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 국립해양박물관", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 국립해양박물관)/③ 진하게" + }, + + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 윈드 서핑", + "value": "돋움체", + "points": 1, + "category": "FontName", + "item": "문구② (2. 윈드 서핑)/① 글씨체 (돋움체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 윈드 서핑", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "문구② (2. 윈드 서핑)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 윈드 서핑", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 윈드 서핑)/③ 진하게" + }, + + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "option": "마스트", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (마스트)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "바탕체", + "points": 1, + "category": "FontName", + "item": "문구 (마스트)/② 글씨체 (바탕체)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "문구 (마스트)/③ 크기 (9pt)" + }, + + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "선체의 갑판 위에 세워진 기둥", + "value": "CircledDigit", + "points": 2, + "category": "OneAnswer", + "item": "문구 (마스트)/④ 각주 번호모양", + "desc": { + "1,2,3":"Digit", + "①,②,③":"CircledDigit", + "가,나,다":"HangulSyllable", + "㉮,㉯,㉰":"CircledHangulSyllable", + "A,B,C":"LatinCapital", + "Ⓐ,Ⓑ,Ⓒ":"CircledLatinCapital", + "갑,을,병":"DecagonCircle", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + + "29": { + "path": "boolean(//CHAR[contains(text(),'Display')])", + "ignoreWord": "Display", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Display/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["유물", "遺物"], + ["상설", "常設"], + ["체험", "體驗"], + ["해양", "海洋"], + ["기교", "技巧"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 유물(遺物), ② 상설(常設), ③ 체험(體驗), ④ 해양(海洋), ⑤ 기교(技巧)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'을헤치는')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…물살을 헤치은…)/ 은 → 는 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'연의바람')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…바람을 자연의 이용하여…)/바람을 / 자연의 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/① 글씨체 (중고딕)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1200", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "233,162,149", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:233,162,149)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "TableAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "굴림체", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (굴림체)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "TableAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "SUM", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "chart_xpath": "", + "chart_type": "묶은세로막대형", + "value": true, + "points": 2, + "category": "ChartType", + "item": "① 종류 (묶은세로막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" + }, + "46": { + "chart_xpath": "//c:valAx/c:majorTickMark/@val", + "value": "out", + "points": 2, + "category": "OneAnswer", + "item": "② 값 축 주 눈금선", + "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "③ 크기-너비 (80 mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", + "value": "90", + "points": 2, + "category": "mmSize", + "item": "④ 크기-높이 (90 mm)" + }, + "49": { + "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", + "value": true, + "points": 2, + "category": "Boolean", + "item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)", + "desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리" + }, + "50": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "궁서체", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/① 글씨체 (궁서체)" + }, + "51": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1300", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/② 크기 (13pt)" + }, + "52": { + "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", + "option": "b", + "searchValue": "종목별 해양 스포츠 참가자 수", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "제목 문구 (종목별 해양 스포츠 참가자 수)/③ 진하게", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "53": { + "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "X축/① 글꼴 (맑은 고딕)" + }, + "54": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "X축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "56": { + "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", + "value": "맑은 고딕", + "points": 1, + "category": "OneAnswer", + "item": "Y축/① 글꼴 (맑은 고딕)" + }, + "57": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "Y축/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + }, + "59": { + "chart_xpath": "//c:legend//a:ea/@typeface", + "value": "맑은고딕", + "points": 1, + "category": "OneAnswer", + "item": "범례/① 글꼴 (맑은고딕)" + }, + "60": { + "chart_xpath": "//c:legend//a:defRPr/@sz", + "value": "900", + "points": 1, + "category": "OneAnswer", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "chart_xpath": "//c:legend//a:defRPr/@{option}", + "option": "i", + "value": "1", + "points": 1, + "category": "OneAnswer", + "item": "범례/③ 기울임", + "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" + } + } +} \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index ff17d01..e2955c0 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -339,16 +339,17 @@ class XMLScorer: # 가로 차트일 경우에만 x축과 y축을 바꿔줌 # 세로, 꺾은선, 원형 차트의 경우 그대로 사용 if "가로" in chart_type: - chart_xpath = chart_xpath.replace("catAx", "valAx") - chart_xpath = chart_xpath.replace("valAx", "catAx") - - + if "catAx" in chart_xpath: + chart_xpath = chart_xpath.replace("catAx", "valAx") + if "valAx" in chart_xpath: + chart_xpath = chart_xpath.replace("valAx", "catAx") chart_items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else [] for item in chain(items, items2, chart_items): - user_answer = item - + user_answer = item.replace(" ", "") if isinstance(item, str) else item + right_answer = right_answer.replace(" ", "") + self.evaluate_answer(scoring, user_answer, right_answer, points) if scoring['points'] > 0: @@ -475,11 +476,12 @@ class XMLScorer: continue font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") + if not font_name: all_match = False continue - user_answer = font_name[0] + user_answer = font_name[0].replace(" ", "") # 공백 제거 # 접두어 제거 if right_answer in ["견고딕", "중고딕"]: @@ -508,18 +510,22 @@ class XMLScorer: # hyperlink가 아닌 경우(일반적인 텍스트 일 경우) if not has_hyperlink_ptag: - charshape = root.xpath(xpath) - if not charshape: + charshape_list = root.xpath(xpath) + if not charshape_list: charshape = None user_answer = None else: - font_attribute = charshape[0].find(right_answer) - if font_attribute is not None: - user_answer = font_attribute.tag - else: - user_answer = None + for charshape in charshape_list: + font_attribute = charshape.find(right_answer) + if font_attribute is not None: + user_answer = font_attribute.tag + else: + user_answer = None - self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + + if scoring['points'] > 0: + break # 하이퍼링크인 경우 elif has_hyperlink_ptag: @@ -709,7 +715,9 @@ class XMLScorer: chart_type_list = { '꺾은선형': "//c:lineChart[c:grouping[@val='standard']]", '묶은가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]", + '누적가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='stacked']]", '묶은세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]", + '누적세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='stacked']]", '원형': "//c:pieChart", '분산형': "//c:scatterChart" } @@ -1024,17 +1032,18 @@ class XMLScorer: def main(): # 시험회차 및 유형 - exam_round = '2504' + exam_round = '2505' # 채점하고자 하는 유형은 주석 해제 exam_types = [ - 'A', - 'B', - 'C', + # 'A', + # 'B', + # 'C', + 'D', ] - test_mode = False - # test_mode = True #/TEST 폴더 채점시 + # test_mode = False + test_mode = True #/TEST 폴더 채점시 output_excel_paths = [] for exam_type in exam_types: diff --git a/filtered_score_diff.py b/filtered_score_diff.py deleted file mode 100644 index cf70d97..0000000 --- a/filtered_score_diff.py +++ /dev/null @@ -1,25 +0,0 @@ -import pandas as pd - -# 엑셀 파일 경로 -file_path = "./diff.xlsx" - -# 엑셀 파일 읽기 -df = pd.read_excel(file_path) - -# 데이터 미리 보기 -df.head() - -# '총점' 컬럼 기준으로 점수가 다른 경우만 남기기 -filtered_df = df.groupby("Unnamed: 0").filter(lambda x: x["총점"].nunique() > 1) - -# 결과 확인 -filtered_df.head() - -# 점수가 다른 경우만 남기는 필터링 -filtered_df = df.groupby("Unnamed: 0").filter(lambda x: x["총점"].nunique() > 1) - -# 결과 저장 -output_path = "./filtered_score_diff.xlsx" -filtered_df.to_excel(output_path, index=False) - -output_path \ No newline at end of file diff --git a/filtered_score_diff.xlsx b/filtered_score_diff.xlsx deleted file mode 100644 index 206c4721a016e8957bac44a79d852ebf4b4367f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35553 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 diff --git a/hwp_conversion.log b/hwp_conversion.log index 544050c..61be2cd 100644 --- a/hwp_conversion.log +++ b/hwp_conversion.log @@ -14819,3 +14819,33 @@ 2025-05-01 15:44:21,157 - INFO - 변환 성공: 워드(한글)-002494-윤요한.hwpx -> 워드(한글)-002494-윤요한.hml 2025-05-01 15:44:21,758 - INFO - 변환 성공: 워드(한글)-2504-000156 유지연.hwpx -> 워드(한글)-2504-000156 유지연.hml 2025-05-01 15:44:22,061 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\C\DIW +2025-05-26 15:07:50,038 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:07:56,898 - INFO - 변환 성공: DIW2505A.hwpx -> DIW2505A.hml +2025-05-26 15:07:57,380 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:07:57,881 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:08:00,725 - INFO - 변환 성공: DIW2505B.hwpx -> DIW2505B.hml +2025-05-26 15:08:01,155 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:08:01,657 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:08:04,140 - INFO - 변환 성공: DIW2505C.hwpx -> DIW2505C.hml +2025-05-26 15:08:04,529 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:15:47,294 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:15:50,425 - INFO - 변환 성공: DIW2505A.hwpx -> DIW2505A.hml +2025-05-26 15:15:50,848 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:15:51,349 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:15:53,969 - INFO - 변환 성공: DIW2505B.hwpx -> DIW2505B.hml +2025-05-26 15:15:54,401 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:15:54,901 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:15:57,190 - INFO - 변환 성공: DIW2505C.hwpx -> DIW2505C.hml +2025-05-26 15:15:57,577 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:16:15,271 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:16:18,622 - INFO - 변환 성공: DIW2505A.hwpx -> DIW2505A.hml +2025-05-26 15:16:19,034 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\A\DIW +2025-05-26 15:16:19,535 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:16:22,096 - INFO - 변환 성공: DIW2505B.hwpx -> DIW2505B.hml +2025-05-26 15:16:22,518 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\B\DIW +2025-05-26 15:16:23,019 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:16:25,439 - INFO - 변환 성공: DIW2505C.hwpx -> DIW2505C.hml +2025-05-26 15:16:25,819 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\C\DIW +2025-05-26 15:16:26,320 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\D\DIW +2025-05-26 15:16:28,759 - INFO - 변환 성공: DIW2505D.hwpx -> DIW2505D.hml +2025-05-26 15:16:29,195 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2505\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2505\D\DIW diff --git a/score.py b/score.py deleted file mode 100644 index acc99e6..0000000 --- a/score.py +++ /dev/null @@ -1,227 +0,0 @@ -import json -import xml.etree.ElementTree as ET -import os -from pathlib import Path -import pandas as pd -from datetime import datetime - -class XMLScorer: - def __init__(self, scoring_criteria_path): - """ - 채점 기준표 JSON 파일을 로드하여 초기화합니다. - - Args: - scoring_criteria_path (str): 채점 기준표 JSON 파일 경로 - """ - self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path) - - def _load_scoring_criteria(self, file_path): - """ - JSON 채점 기준표를 로드합니다. - - Args: - file_path (str): JSON 파일 경로 - - Returns: - dict: 채점 기준표 데이터 - """ - with open(file_path, 'r', encoding='utf-8') as f: - return json.load(f) - - def _find_element_value(self, root, element_name, attribute_name): - """ - XML에서 특정 요소와 속성값을 찾습니다. - - Args: - root (Element): XML 루트 요소 - element_name (str): 찾을 요소 이름 - attribute_name (str): 찾을 속성 이름 - - Returns: - str: 찾은 속성값 또는 None - """ - element = root.find(f".//{element_name}") - if element is not None: - return element.get(attribute_name) - return None - - def score_xml_file(self, xml_path): - """ - 단일 XML 파일을 채점합니다. - - Args: - xml_path (str): XML 파일 경로 - - Returns: - dict: 채점 결과 - """ - try: - tree = ET.parse(xml_path) - root = tree.getroot() - - total_score = 0 - results = { - 'filename': os.path.basename(xml_path), - 'criteria_matches': [], - 'total_score': 0 - } - - # 각 채점 기준에 대해 검사 - for criterion_id, criterion in self.scoring_criteria.items(): - element_name = criterion['ele'] - attribute_name = criterion['arg'] - expected_value = criterion['value'] - points = criterion['points'] - - actual_value = self._find_element_value(root, element_name, attribute_name) - - match = { - 'criterion': f"{element_name}.{attribute_name}", - 'expected': expected_value, - 'actual': actual_value, - 'points': 0 - } - - # 값이 일치하면 점수 부여 - if actual_value == expected_value: - total_score += points - match['points'] = points - - results['criteria_matches'].append(match) - - results['total_score'] = total_score - return results - - except ET.ParseError as e: - return { - 'filename': os.path.basename(xml_path), - 'error': f"XML 파싱 오류: {str(e)}", - 'total_score': 0 - } - - def export_to_excel(self, results, output_path=None): - """ - 채점 결과를 엑셀 파일로 저장합니다. - - Args: - results (list): 채점 결과 리스트 - output_path (str, optional): 출력 파일 경로. - None이면 현재 시간으로 파일명 생성 - - Returns: - str: 저장된 엑셀 파일 경로 - """ - if output_path is None: - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - output_path = f"scoring_results_{timestamp}.xlsx" - - # 요약 시트용 데이터 준비 - summary_data = [] - detail_data = [] - - for result in results: - # 요약 정보 - summary_row = { - '파일명': result['filename'], - '총점': result.get('total_score', 0) - } - if 'error' in result: - summary_row['오류'] = result['error'] - summary_data.append(summary_row) - - # 상세 정보 - if 'criteria_matches' in result: - for match in result['criteria_matches']: - detail_row = { - '파일명': result['filename'], - '채점항목': match['criterion'], - '기대값': match['expected'], - '실제값': match['actual'], - '획득점수': match['points'] - } - detail_data.append(detail_row) - - # DataFrame 생성 - summary_df = pd.DataFrame(summary_data) - detail_df = pd.DataFrame(detail_data) - - # ExcelWriter 객체 생성 - with pd.ExcelWriter(output_path, engine='openpyxl') as writer: - # 요약 시트 작성 - summary_df.to_excel(writer, sheet_name='채점결과요약', index=False) - - # 상세 시트 작성 - detail_df.to_excel(writer, sheet_name='채점상세내역', index=False) - - # 열 너비 자동 조정 - for sheet_name in writer.sheets: - worksheet = writer.sheets[sheet_name] - for column in worksheet.columns: - max_length = 0 - column = [cell for cell in column] - for cell in column: - try: - if len(str(cell.value)) > max_length: - max_length = len(str(cell.value)) - except: - pass - adjusted_width = (max_length + 2) - worksheet.column_dimensions[column[0].column_letter].width = adjusted_width - - return output_path - - - def score_directory(self, xml_directory): - """ - 디렉토리 내의 모든 XML 파일을 채점합니다. - - Args: - xml_directory (str): XML 파일들이 있는 디렉토리 경로 - - Returns: - list: 모든 파일의 채점 결과 - """ - results = [] - xml_files = Path(xml_directory).glob('*.xml') - - for xml_file in xml_files: - result = self.score_xml_file(str(xml_file)) - results.append(result) - - return results - -# 사용 예시 -def main(): - # 채점기준표 파일 경로 - scoring_criteria_path = "scoring_criteria.json" - # XML 파일들이 있는 디렉토리 경로 - xml_directory = r"C:\Users\gzero-ser7-win11\Documents\hwpTest\Output" - - # 채점기 초기화 - scorer = XMLScorer(scoring_criteria_path) - - # 디렉토리 내 모든 XML 파일 채점 - results = scorer.score_directory(xml_directory) - - # 결과 출력 - for result in results: - print(f"\n파일: {result['filename']}") - if 'error' in result: - print(f"오류: {result['error']}") - continue - - print(f"총점: {result['total_score']}") - print("\n채점 세부사항:") - for match in result['criteria_matches']: - print(f"기준: {match['criterion']}") - print(f"기대값: {match['expected']}") - print(f"실제값: {match['actual']}") - print(f"획득 점수: {match['points']}") - print("---") - - # 결과를 엑셀 파일로 저장 - excel_path = scorer.export_to_excel(results) - print(f"\n채점 결과가 다음 경로에 저장되었습니다: {excel_path}") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/score2.py b/score2.py deleted file mode 100644 index 65b82df..0000000 --- a/score2.py +++ /dev/null @@ -1,327 +0,0 @@ -import json -import xml.etree.ElementTree as ET -import os -from pathlib import Path -import pandas as pd -from datetime import datetime -from Levenshtein import distance as levenshtein_distance - -class XMLScorer: - def __init__(self, scoring_criteria_path): - """ - 채점 기준표 JSON 파일을 로드하여 초기화합니다. - - Args: - scoring_criteria_path (str): 채점 기준표 JSON 파일 경로 - """ - self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path) - # 오탈자 감점 설정 - self.typo_penalties = { - 'slight': 0.9, # 90% 점수 (약간의 오탈자) - 'moderate': 0.7, # 70% 점수 (중간 정도의 오탈자) - 'severe': 0.0 # 0% 점수 (심각한 오탈자) - } - - def _load_scoring_criteria(self, file_path): - """ - JSON 채점 기준표를 로드합니다. - - Args: - file_path (str): JSON 파일 경로 - - Returns: - dict: 채점 기준표 데이터 - """ - with open(file_path, 'r', encoding='utf-8') as f: - return json.load(f) - - def _calculate_similarity_score(self, str1, str2): - """ - 두 문자열 간의 유사도를 계산합니다. - - Args: - str1 (str): 첫 번째 문자열 - str2 (str): 두 번째 문자열 - - Returns: - float: 유사도 점수 (0.0 ~ 1.0) - """ - if str1 is None or str2 is None: - return 0.0 - - max_len = max(len(str1), len(str2)) - if max_len == 0: - return 1.0 - - distance = levenshtein_distance(str1, str2) - similarity = 1 - (distance / max_len) - return similarity - - def _get_penalty_factor(self, similarity): - """ - 유사도에 따른 감점 계수를 반환합니다. - - Args: - similarity (float): 유사도 점수 - - Returns: - float: 감점 계수 - """ - if similarity >= 0.9: - return self.typo_penalties['slight'] - elif similarity >= 0.7: - return self.typo_penalties['moderate'] - else: - return self.typo_penalties['severe'] - - def _find_best_matching_element(self, root, target_element): - """ - 가장 유사한 요소를 찾습니다. - - Args: - root (Element): XML 루트 요소 - target_element (str): 찾고자 하는 요소 이름 - - Returns: - tuple: (가장 유사한 요소, 유사도 점수) - """ - best_match = None - best_similarity = 0.0 - - for element in root.iter(): - similarity = self._calculate_similarity_score(element.tag, target_element) - if similarity > best_similarity: - best_similarity = similarity - best_match = element - - return best_match, best_similarity - - def _find_element_value(self, root, element_name, attribute_name): - """ - XML에서 특정 요소와 속성값을 찾습니다. 오탈자를 고려합니다. - - Args: - root (Element): XML 루트 요소 - element_name (str): 찾을 요소 이름 - attribute_name (str): 찾을 속성 이름 - - Returns: - tuple: (속성값, 요소 유사도, 속성 유사도) - """ - element, element_similarity = self._find_best_matching_element(root, element_name) - - if element is not None: - # 속성 중 가장 유사한 것을 찾음 - best_attr_value = None - best_attr_similarity = 0.0 - - for attr_name, attr_value in element.attrib.items(): - attr_similarity = self._calculate_similarity_score(attr_name, attribute_name) - if attr_similarity > best_attr_similarity: - best_attr_similarity = attr_similarity - best_attr_value = attr_value - - return best_attr_value, element_similarity, best_attr_similarity - - return None, 0.0, 0.0 - - def score_xml_file(self, xml_path): - """ - 단일 XML 파일을 채점합니다. - - Args: - xml_path (str): XML 파일 경로 - - Returns: - dict: 채점 결과 - """ - try: - tree = ET.parse(xml_path) - root = tree.getroot() - - total_score = 0 - results = { - 'filename': os.path.basename(xml_path), - 'criteria_matches': [], - 'total_score': 0 - } - - # 각 채점 기준에 대해 검사 - for criterion_id, criterion in self.scoring_criteria.items(): - element_name = criterion['ele'] - attribute_name = criterion['arg'] - expected_value = criterion['value'] - points = criterion['points'] - - # 오탈자를 고려하여 값을 찾음 - actual_value, element_similarity, attr_similarity = self._find_element_value( - root, element_name, attribute_name) - - # 값 유사도 계산 - value_similarity = self._calculate_similarity_score(str(actual_value), str(expected_value)) - - # 전체 유사도 계산 (요소, 속성, 값의 유사도를 종합) - total_similarity = (element_similarity + attr_similarity + value_similarity) / 3 - - # 감점 계수 계산 - penalty_factor = self._get_penalty_factor(total_similarity) - - match = { - 'criterion': f"{element_name}.{attribute_name}", - 'expected': expected_value, - 'actual': actual_value, - 'element_similarity': round(element_similarity, 3), - 'attribute_similarity': round(attr_similarity, 3), - 'value_similarity': round(value_similarity, 3), - 'total_similarity': round(total_similarity, 3), - 'penalty_factor': penalty_factor, - 'points': round(points * penalty_factor, 2) - } - - total_score += match['points'] - results['criteria_matches'].append(match) - - results['total_score'] = round(total_score, 2) - return results - - except ET.ParseError as e: - return { - 'filename': os.path.basename(xml_path), - 'error': f"XML 파싱 오류: {str(e)}", - 'total_score': 0 - } - - def score_directory(self, xml_directory): - """ - 디렉토리 내의 모든 XML 파일을 채점합니다. - - Args: - xml_directory (str): XML 파일들이 있는 디렉토리 경로 - - Returns: - list: 모든 파일의 채점 결과 - """ - results = [] - xml_files = Path(xml_directory).glob('*.xml') - - for xml_file in xml_files: - result = self.score_xml_file(str(xml_file)) - results.append(result) - - return results - - def export_to_excel(self, results, output_path=None): - """ - 채점 결과를 엑셀 파일로 저장합니다. - - Args: - results (list): 채점 결과 리스트 - output_path (str, optional): 출력 파일 경로 - """ - if output_path is None: - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - output_path = f"scoring_results_{timestamp}.xlsx" - - # 요약 시트용 데이터 준비 - summary_data = [] - detail_data = [] - - for result in results: - # 요약 정보 - summary_row = { - '파일명': result['filename'], - '총점': result.get('total_score', 0) - } - if 'error' in result: - summary_row['오류'] = result['error'] - summary_data.append(summary_row) - - # 상세 정보 - if 'criteria_matches' in result: - for match in result['criteria_matches']: - detail_row = { - '파일명': result['filename'], - '채점항목': match['criterion'], - '기대값': match['expected'], - '실제값': match['actual'], - '요소유사도': match['element_similarity'], - '속성유사도': match['attribute_similarity'], - '값유사도': match['value_similarity'], - '전체유사도': match['total_similarity'], - '감점계수': match['penalty_factor'], - '획득점수': match['points'] - } - detail_data.append(detail_row) - - # DataFrame 생성 - summary_df = pd.DataFrame(summary_data) - detail_df = pd.DataFrame(detail_data) - - # ExcelWriter 객체 생성 - with pd.ExcelWriter(output_path, engine='openpyxl') as writer: - summary_df.to_excel(writer, sheet_name='채점결과요약', index=False) - detail_df.to_excel(writer, sheet_name='채점상세내역', index=False) - - # 열 너비 자동 조정 - for sheet_name in writer.sheets: - worksheet = writer.sheets[sheet_name] - for column in worksheet.columns: - max_length = 0 - column = [cell for cell in column] - for cell in column: - try: - if len(str(cell.value)) > max_length: - max_length = len(str(cell.value)) - except: - pass - adjusted_width = (max_length + 2) - worksheet.column_dimensions[column[0].column_letter].width = adjusted_width - - return output_path - -# 메인 함수는 이전과 동일 - -# 사용 예시 -def main(): - # 채점기준표 파일 경로 - scoring_criteria_path = "scoring_criteria.json" - # XML 파일들이 있는 디렉토리 경로 - xml_directory = r"C:\Users\gzero-ser7-win11\Documents\hwpTest\Output" - - # 채점기 초기화 - scorer = XMLScorer(scoring_criteria_path) - - # 디렉토리 내 모든 XML 파일 채점 - results = scorer.score_directory(xml_directory) - - # 결과 출력 - for result in results: - print(f"\n파일: {result['filename']}") - if 'error' in result: - print(f"오류: {result['error']}") - continue - - print(f"총점: {result['total_score']}") - print("\n채점 세부사항:") - for match in result['criteria_matches']: - print(f"기준: {match['criterion']}") - print(f"기대값: {match['expected']}") - print(f"실제값: {match['actual']}") - print(f"획득 점수: {match['points']}") - print("---") - - # 결과를 엑셀 파일로 저장 - excel_path = scorer.export_to_excel(results) - print(f"\n채점 결과가 다음 경로에 저장되었습니다: {excel_path}") - -if __name__ == "__main__": - main() - - - - - - - - - diff --git a/score3.py b/score3.py deleted file mode 100644 index aed92be..0000000 --- a/score3.py +++ /dev/null @@ -1,304 +0,0 @@ -import json -import xml.etree.ElementTree as ET -import os -from pathlib import Path -import pandas as pd -from datetime import datetime -from difflib import SequenceMatcher -import re - - -class XMLScorer: - # 채점 기준 경로 초기화 - def __init__(self, scoring_criteria_path): - # 채점 기준 로드 - self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path) - print(self.scoring_criteria) - - # 채점 기준파일 로드(JSON 파일) - def _load_scoring_criteria(self, file_path): - with open(file_path, 'r', encoding='utf-8') as f: - return json.load(f) - - def _calculate_string_similarity(self, str1, str2): - """ - 두 문자열 간의 유사도를 계산합니다. - - Args: - str1 (str): 첫 번째 문자열 - str2 (str): 두 번째 문자열 - - Returns: - float: 유사도 (0~1 사이의 값) - """ - return SequenceMatcher(None, str1, str2).ratio() - - def _count_differences(self, str1, str2): - """ - 두 문자열 간의 차이(오탈자, 띄어쓰기)를 계산합니다. - - Args: - str1 (str): 첫 번째 문자열 (기준값) - str2 (str): 두 번째 문자열 (비교값) - - Returns: - tuple: (전체 차이 개수, 띄어쓰기 차이 개수) - """ - # 띄어쓰기 차이 계산 - space_diff = abs(str1.count(' ') - str2.count(' ')) - - # 전체 글자 차이 계산 (Levenshtein 거리 기반) - total_diff = 0 - m, n = len(str1), len(str2) - dp = [[0] * (n + 1) for _ in range(m + 1)] - - for i in range(m + 1): - dp[i][0] = i - for j in range(n + 1): - dp[0][j] = j - - for i in range(1, m + 1): - for j in range(1, n + 1): - if str1[i-1] == str2[j-1]: - dp[i][j] = dp[i-1][j-1] - else: - dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1 - - total_diff = dp[m][n] - - return total_diff, space_diff - - def _find_similar_element(self, root, target_element): - """ - 유사한 요소를 찾습니다. 완전 일치하지 않더라도 비슷한 이름의 요소를 찾습니다. - - Args: - root (Element): XML 루트 요소 - target_element (str): 찾고자 하는 요소 이름 - - Returns: - Element: 가장 유사한 요소 또는 None - """ - best_match = None - best_similarity = 0.7 # 최소 유사도 임계값 - - for element in root.iter(): - similarity = self._calculate_string_similarity(element.tag, target_element) - if similarity > best_similarity: - best_similarity = similarity - best_match = element - - return best_match - - def _find_element_value(self, root, element_name, attribute_name): - """ - XML에서 특정 요소와 속성값을 찾습니다. 유사한 요소도 고려합니다. - - Args: - root (Element): XML 루트 요소 - element_name (str): 찾을 요소 이름 - attribute_name (str): 찾을 속성 이름 - - Returns: - tuple: (찾은 속성값 또는 None, 요소 이름 오탈자 여부) - """ - # 정확한 요소 찾기 - element = root.find(f".//{element_name}") - - # 정확한 요소가 없으면 유사한 요소 찾기 - if element is None: - element = self._find_similar_element(root, element_name) - - if element is not None: - # 속성값 찾기 - value = element.get(attribute_name) - # 요소 이름이 정확히 일치하는지 확인 - has_typo = element.tag != element_name - return value, has_typo - - return None, False - - # XML 파일 채점 - def score_xml_file(self, xml_path): - try: - tree = ET.parse(xml_path) - root = tree.getroot() - - total_score = 0 - # 결과값을 Dictionary로 저장 - results = { - 'filename': os.path.basename(xml_path), - 'criteria_matches': [], # 채점 항목별 결과 - 'total_score': 0, - 'deductions': [] # 감점 상세 내역 추가 - } - - for criterion_id, criterion in self.scoring_criteria.items(): - element_name = criterion['ele'] - attribute_name = criterion['arg'] - expected_value = criterion['value'] - points = criterion['points'] - - actual_value, has_element_typo = self._find_element_value( - root, element_name, attribute_name) - - # 채점 결과 저장 - match = { - 'criterion': f"{element_name}.{attribute_name}", # 채점 항목 - 'expected': expected_value, # 기대값 - 'actual': actual_value, # 실제값 - 'points': 0, # 획득 점수 - 'deductions': [] # 각 기준별 감점 내역 - } - - if actual_value is not None: - # 기본 점수 부여 - match['points'] = points - - # 요소 이름에 오탈자가 있는 경우 - if has_element_typo: - deduction = 1 - match['points'] -= deduction - match['deductions'].append( - f"요소 이름 오탈자 감점: -{deduction}점") - - # 속성값 비교 및 차이 계산 - if actual_value != expected_value: - total_diff, space_diff = self._count_differences( - expected_value, actual_value) - - # 띄어쓰기 차이당 1점 감점 - if space_diff > 0: - match['points'] -= space_diff - match['deductions'].append( - f"띄어쓰기 오류 감점: -{space_diff}점") - - # 나머지 차이(오탈자)당 1점 감점 - char_diff = total_diff - space_diff - if char_diff > 0: - match['points'] -= char_diff - match['deductions'].append( - f"글자 오류 감점: -{char_diff}점") - - # 음수 점수 방지 - match['points'] = max(0, match['points']) - - results['criteria_matches'].append(match) - total_score += match['points'] - - results['total_score'] = total_score - return results - - except ET.ParseError as e: - return { - 'filename': os.path.basename(xml_path), - 'error': f"XML 파싱 오류: {str(e)}", - 'total_score': 0 - } - - def export_to_excel(self, results, output_path=None): - if output_path is None: - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") - output_path = f"scoring_results_{timestamp}.xlsx" - - summary_data = [] - detail_data = [] - - for result in results: - # 요약 정보 - summary_row = { - '파일명': result['filename'], - '총점': result.get('total_score', 0) - } - if 'error' in result: - summary_row['오류'] = result['error'] - summary_data.append(summary_row) - - # 상세 정보 - if 'criteria_matches' in result: - for match in result['criteria_matches']: - detail_row = { - '파일명': result['filename'], - '채점항목': match['criterion'], - '기대값': match['expected'], - '실제값': match['actual'], - '획득점수': match['points'], - '감점내역': '; '.join(match.get('deductions', [])) - } - detail_data.append(detail_row) - - # DataFrame 생성 - summary_df = pd.DataFrame(summary_data) - detail_df = pd.DataFrame(detail_data) - - # ExcelWriter 객체 생성 - with pd.ExcelWriter(output_path, engine='openpyxl') as writer: - summary_df.to_excel(writer, sheet_name='채점결과요약', index=False) - detail_df.to_excel(writer, sheet_name='채점상세내역', index=False) - - # 열 너비 자동 조정 - for sheet_name in writer.sheets: - worksheet = writer.sheets[sheet_name] - for column in worksheet.columns: - max_length = 0 - column = [cell for cell in column] - for cell in column: - try: - if len(str(cell.value)) > max_length: - max_length = len(str(cell.value)) - except: - pass - adjusted_width = (max_length + 2) - worksheet.column_dimensions[column[0].column_letter].width = adjusted_width - - return output_path - - def score_directory(self, xml_directory): - results = [] - # xml_files = Path(xml_directory).glob('*.xml') - xml_files = Path(xml_directory).glob('*.hml') - - for xml_file in xml_files: - result = self.score_xml_file(str(xml_file)) - results.append(result) - - return results - -# 사용 예시 -def main(): - # 채점기준표 파일 경로 - scoring_criteria_path = "scoring_criteria.json" - # XML 파일들이 있는 디렉토리 경로 - # xml_directory = r"C:\Users\gzero-ser7-win11\Documents\hwpTest\Output" - xml_directory = r"C:\Users\dra\project\HWP-Scoring\output" - - # 채점기 초기화 - scorer = XMLScorer(scoring_criteria_path) - - # 디렉토리 내 모든 XML 파일 채점 - results = scorer.score_directory(xml_directory) - - # 결과 출력 - for result in results: - print(f"\n파일: {result['filename']}") - if 'error' in result: - print(f"오류: {result['error']}") - continue - - print(f"총점: {result['total_score']}") - print("\n채점 세부사항:") - for match in result['criteria_matches']: - print(f"기준: {match['criterion']}") - print(f"기대값: {match['expected']}") - print(f"실제값: {match['actual']}") - print(f"획득 점수: {match['points']}") - print("---") - - # 결과를 엑셀 파일로 저장 - excel_path = scorer.export_to_excel(results) - print(f"\n채점 결과가 다음 경로에 저장되었습니다: {excel_path}") - -if __name__ == "__main__": - main() - - diff --git a/score4.py b/score4.py deleted file mode 100644 index 1bf6b89..0000000 --- a/score4.py +++ /dev/null @@ -1,50 +0,0 @@ -from lxml import etree -from difflib import SequenceMatcher - -def get_all_text_xml_file(root): - # all_text = root.xpath("//CHAR/text() | //TEXTART/@Text") - all_text = root.xpath("//CHAR/text()") - print(f'all_text length: {len(all_text)}') - return all_text - -def find_typos_and_spaces(original, target): - typos = [] - spaces = [] - space_differences = 0 - - for text in original: - # 오타 검사 - words = text.split() - for word in words: - if not any(SequenceMatcher(None, word, target_word).ratio() >= 0.9 for target_word in target): - typos.append(word) - - # 공백 차이 검사 - for orig_text, targ_text in zip(original, target): - min_length = min(len(orig_text), len(targ_text)) - orig_text = orig_text[:min_length] - targ_text = targ_text[:min_length] - orig_spaces = orig_text.count(' ') - targ_spaces = targ_text.count(' ') - space_differences += abs(orig_spaces - targ_spaces) - - print(f'space_differences : {space_differences}') - - return typos, spaces - -# XML 파일 파싱 -original_file = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-010128-윤빈.hml" -target_file = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009939-이준.hml" -# target_file = r"C:\Users\dra\project\HWP-Scoring\output\원본 copy.hml" - -tree = etree.parse(original_file) -root = tree.getroot() -original_text = get_all_text_xml_file(root) - -tree = etree.parse(target_file) -root = tree.getroot() -target_text = get_all_text_xml_file(root) - -typos, spaces = find_typos_and_spaces(original_text, target_text) -# print(f'Typos: {typos}') -# print(f'Spaces: {spaces}') \ No newline at end of file diff --git a/score5.py b/score5.py deleted file mode 100644 index df65cc2..0000000 --- a/score5.py +++ /dev/null @@ -1,580 +0,0 @@ -import tkinter as tk -from tkinter import filedialog, messagebox -from datetime import datetime -import difflib -import json -from pathlib import Path -import os -from lxml import etree as ET -import re -from difflib import SequenceMatcher -import pandas as pd -import base64 -# from xpathSearch import XMLPathHandler - -class XMLScorer: - # 채점 기준 경로 초기화 - def __init__(self, scoring_criteria_path): - # 채점 기준 로드 - self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path) - - def set_typo_score(self, score): - self.typo_score = score - - def get_typo_score(self): - return self.typo_score - - # 채점 기준파일 로드(JSON 파일) - def _load_scoring_criteria(self, file_path): - with open(file_path, 'r', encoding='utf-8') as f: - return json.load(f) - - # XML 파일에서 element의 값을 찾아 반환 - def query_xml(self, root, *args): - first_xpath = args[0] - second_xpath = args[1] - points = args[2] - category = args[3] - - if ("특수문자" in category) and (second_xpath is not None): - try: - result = root.xpath(first_xpath) - # 결과값이 리스트형인데 내부에 정보가 없는경우 - # 결과값이 없음 - if type(result) is list and len(result) == 0: - return None - elif result < points: - result = root.xpath(second_xpath) - return result - else: - return result - - except ET.XPathEvalError as e: - return None - - elif second_xpath is not None: - try: - result1 = root.xpath(first_xpath) - result2 = root.xpath(second_xpath) - if (type(result1) is list and len(result1) == 0) and (type(result2) is list and len(result2) == 0): - return None - return result1 if result1 else result2 - - except ET.XPathEvalError as e: - return None - - else: - try: - result = root.xpath(first_xpath) - if type(result) is list and len(result) == 0: - return None - return result - except ET.XPathEvalError as e: - return None - - def chart_query_xml(self, tree, xpath, namespaces): - - result = tree.xpath(xpath, namespaces=namespaces) - if type(result) is list and len(result) == 0: - return None - - return result - - - # 유사한 텍스트 찾기 - def find_similar_text(self, root, target_text, threshold=0.7): - """ - 전체 문서에서 유사한 텍스트를 찾아 반환 - - Args: - root (_type_): xml root element 객체 - target_text (_type_): 찾을 텍스트 - threshold (float, optional): 유사도 설정 Defaults to 0.3. - - Returns: - str: 유사도 기준을 만족하는 텍스트 - """ - # 전체 텍스트 추출 - # all_text = root.xpath(f"//CHAR/text()") - # all_text.append(root.xpath(f"//TEXTART/@text")) - - namespaces = { - 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main', - 'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart' - } - - all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text | //c:chart//text()", namespaces=namespaces) - - # 유사도 비교 - max_score = 0 - similar_text = '' - - for text in all_text: - score = SequenceMatcher(None, target_text, text).ratio() - - if score > max_score: - max_score = score - similar_text = text - - if max_score >= threshold: - return similar_text - else: - return None - - # 하나의 XML 파일 채점 - def _score_xml_file(self, xml_path, chart_xml): - try: - tree = ET.parse(xml_path) - root = tree.getroot() - - # 네임스페이스 정의 - namespaces = { - 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main', - 'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart' - } - - # 차트 XML 파일이 없는 경우 0점 채점을 위헤 빈 XML 생성 - if chart_xml is None: - chart_tree = ET.fromstring('') - else: - chart_tree = ET.fromstring(chart_xml) - - total_score = 0 - partial_score = 0 - previous_first_digit = None - - # 결과값을 Dictionary로 저장 - results = { - 'filename': os.path.basename(xml_path), - 'score_results': [], - 'total_score': 0, - 'partial_scores': [] - } - - print(f"File name: {results['filename']}") - - for criterion_id, criterion in self.scoring_criteria.items(): - - # 키값의 첫 숫자를 확인 - first_digit = criterion_id.split('-')[0] - if (previous_first_digit is not None) and (first_digit != previous_first_digit): - results['partial_scores'].append({ - 'section': previous_first_digit, - 'score': partial_score - }) - partial_score = 0 - - previous_first_digit = first_digit - - id = criterion_id - xpath = criterion['path'] if 'path' in criterion else None - xpath2 = criterion['path2'] if 'path2' in criterion else None - search_value = criterion['searchValue'] if 'searchValue' in criterion else None - right_answer = criterion['value'] if 'value' in criterion else None - points = criterion['points'] if 'points' in criterion else None - category = criterion['category'] - item = criterion['item'] - similar_text = None - - # chart xml 파일에서 채점하는 경우 - if "chart_xml" in category: - if search_value is not None: - similar_text = self.find_similar_text(chart_tree, search_value) - if similar_text is None: - xpath = xpath.replace('{searchValue}', search_value) - else: - xpath = xpath.replace('{searchValue}', similar_text) - - result = self.chart_query_xml(chart_tree, xpath, namespaces) - - # 그 외의 hml 파일에서 채점하는 경우 - else: - if search_value is not None: - similar_text = self.find_similar_text(root, search_value) - if similar_text is None: - xpath = xpath.replace('{searchValue}', search_value) - else: - xpath = xpath.replace('{searchValue}', similar_text) - - result = self.query_xml(root, xpath, xpath2, points, category) - - # [ boolean 타입 ] - # 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라 - # [ITALIC] [BOLD] [UNDERLINE] 태그가 있거나 없을 수 있으므로 - # 존재 유무에 따라 True, False로 판단 - # 2. 두 가지 이상의 조건을 모두 만족해야 하는 경우 and 연산자로 연결되어 - # 반환값 True/False로 판단 - # [ float 타입 ] - # 1. 부분점수의 합산으로 반환되는 경우 float 타입으로 반환 - if type(result) is not list: - if type(result) is float and (result > points): - actual_answer = float(points) - else: - actual_answer = result - else: - if type(right_answer) is int: - actual_answer = int(result[0]) - else: - actual_answer = result[0] - - if "오타감점" in category: - points = self.get_typo_score() - - scoring = { - 'id': id, - 'category': category, # 채점 분류 - 'item': item, # 채점 항목 - 'right_answer': right_answer, # 정답 - 'actual_answer': actual_answer, # 실제 작성 답안 - 'points': points, - 'deductions': [] # 각 기준별 감점 내역 - } - - # 점수 차감 조건 - # 1. 정답이 실수형으로 반환받은 경우는 채점항목의 부분점수 합산 결과이므로 - # 반환받은 값 그대로를 점수로 사용 - # 2. 정답이 정수형(사이즈 비교)의 경우 오차범위를 넘는다면 감점 - # 3. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감 - if type(actual_answer) is float: - scoring['points'] = actual_answer - - elif type(actual_answer) is int: - # 오차범위 3 이상이면 감점 - if abs(actual_answer - right_answer) > 3: - scoring['points'] -= points - else: - # right_answer(JSON파일 내 valuer값) null일 경우 점수감점 없이 진행 - if right_answer != actual_answer: - scoring['points'] -= points - - - # 점수 차감 이유 작성 (개발중) - results['score_results'].append(scoring) - total_score += scoring['points'] - partial_score += scoring['points'] - - print(f'scoring: {scoring}') - - results['total_score'] = total_score - - if previous_first_digit is not None: - results['partial_scores'].append({ - 'section': previous_first_digit, - 'score': partial_score - }) - - return results - - except ET.ParseError as e: - return { - 'filename': os.path.basename(xml_path), - 'error': f"XML 파싱 오류: {str(e)}", - 'total_score': 0 - } - - def binary_to_chartxml(self, xml_path): - tree = ET.parse(xml_path) - root = tree.getroot() - - binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()') - if not binary_data: - return None - binary_data = binary_data[0].encode('utf-8') - - # 태그와 그 내부 내용을 삭제합니다. - encoded_data = re.sub(b'', b'', binary_data) - encoded_data = encoded_data.replace(b'', b'') - encoded_data = encoded_data.replace(b'\r\n', b'') - - # base64 디코딩을 수행합니다. - decoded_data = base64.b64decode(encoded_data+b'==') - - # 디코딩된 데이터 내용 중 xml 형식만 추출할 때 , 사이의 데이터만 추출. - start = decoded_data.find(b'') - print(end) - xml_data = decoded_data[start:end+len(b'')] - - # xml 데이터가 없는 경우 None을 반환합니다. - if -1 in [start, end]: - return None - - # 디코딩된 데이터를 파일로 저장합니다. - base_filename = os.path.splitext(xml_path)[0] - new_filename = f'{base_filename}.xml' - with open(new_filename, 'wb') as file: - file.write(xml_data) - - return xml_data - - def typo_check(self, correct_answer_file, user_answer_file): - user_answer_tree = ET.parse(user_answer_file) - user_answer_root = user_answer_tree.getroot() - correct_answer_tree = ET.parse(correct_answer_file) - correct_answer_root = correct_answer_tree.getroot() - - # xpath로 바이너리 부분추출 - user_input_text = user_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]') - user_table_text = user_answer_root.xpath('//TABLE//CHAR//text()') - user_input_text += user_table_text - - correct_input_text = correct_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]') - correct_table_text = correct_answer_root.xpath('//TABLE//CHAR//text()') - correct_input_text += correct_table_text - - # 각 요소에서 공백 제거 - user_input_text = [text.replace(' ', '') for text in user_input_text] - correct_input_text = [text.replace(' ', '') for text in correct_input_text] - - - # 숫자와 특정 형식 제거 (예: 1., 2., 3., -) - user_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in user_input_text] - correct_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in correct_input_text] - - ignore_word = self.scoring_criteria["2-29"]['path'].split("'")[1] - print(f"ignore_word: {ignore_word}") - # 특정 단어 제거 - # 오타와 누락의 경우만 판단하면 정상작동하지만 - # 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음 - # [정답] Hybrid [실제작성] - user_input_text = [text.replace(ignore_word, '') for text in user_input_text] - correct_input_text = [text.replace(ignore_word, '') for text in correct_input_text] - - # 리스트를 하나의 문자열로 변경 - user_input_text_str = ''.join(user_input_text) - currect_input_text_str = ''.join(correct_input_text) - - print("user_input_text as string:") - print(user_input_text_str) - print("\ncurrect_input_text_answer as string:") - print(currect_input_text_str) - - - # 문자열의 차이를 비교 - diff = difflib.ndiff(currect_input_text_str, user_input_text_str) - diff_list = list(diff) - - # 차이점을 정리하여 result_diff에 저장 - result_diff = [] - - # 누락 된 단어만 따로 리스트로 저장 - missing_list = [] - - # 오타와 누락된 단어 리스트 저장 - error_missing_list = [] - - skip_next = False - - for i, line in enumerate(diff_list): - if skip_next: - skip_next = False - continue - # diff_list의 line 시작이 '-'이면서 다음 line이 '+'이면 두 line을 붙여서 맞춤법이 틀린 단어로 판단 - if line.startswith('- '): - # 오타 - if i + 1 < len(diff_list) and diff_list[i + 1].startswith('+ '): - line = line.replace('- ', '-') - next = diff_list[i + 1].replace('+ ', '') - result_diff.append(line+'=>'+next) - error_missing_list.append(line+'=>'+next) - skip_next = True - # 누락 - else: - line = line.replace('- ', '-') - result_diff.append(line) - missing_list.append(line) - error_missing_list.append(line) - # 없어도 되는 글자가 있는 경우 (추가) - elif line.startswith('+ '): - line = line.replace('+ ', '+') - result_diff.append(line) - - # result_diff 출력 - # print("\nResult Differences:") - # for diff in result_diff: - # print(diff) - - # result_diff 배열의 길이를 맨 앞에 저장 - - # 모든 차이를 계산해 점수 차감 - # temp = 40 - min(len(result_diff)*2, 40) - - # 누락된 텍스트만 계산해 점수 차감 - # temp = 40 - min(len(missing_list)*2, 40) - - # 2503회 기준 오타 1개당 [2점]->[1점] 차감 - temp = 40 - min(len(error_missing_list)*1, 40) - - self.set_typo_score(temp) - - result_diff.insert(0, temp) - return result_diff - - # XML 파일 채점 - def score_directory(self, xml_directory, correct_answer_file): - # xml 파일 불러오기 - xml_files = Path(xml_directory).glob('*.hml') - - # 결과 저장할 리스트 - results = [] - - for user_answer_file in xml_files: - result = {} - chart_xml = self.binary_to_chartxml(user_answer_file) - result['typo'] = self.typo_check(correct_answer_file, user_answer_file) - result['score'] = self._score_xml_file(user_answer_file, chart_xml) - # result['score']['score_results'][2]['points'] = result['typo'][0] - results.append(result) - return results - - def parse_filename(self, filename): - if isinstance(filename, dict): - filename = filename.get('파일명', '') - match = re.match(r'.*-(\d+)-(.+)\.hml', filename) - if match: - number = match.group(1) - name = match.group(2) - return number, name - - return None, None - - def export_to_excel(self, results, output_path=None): - if output_path is None: - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") #연월일_시분초 - # timestamp = datetime.now().strftime("%Y%m%d") #연월일 - output_path = f"scoring_results_{timestamp}.xlsx" - - summary_data = [] - detail_data = [] - typo_data = [] - - for temp in results: - # 요약 정보 - result = temp['score'] - summary_row = { - '파일명': result['filename'], - '총점': result.get('total_score', 0) - } - if 'error' in result: - summary_row['오류'] = result['error'] - - summary_data.append(summary_row) - - # 상세 정보 - if 'score_results' in result: - filename = {'파일명': result['filename']} - number, name = self.parse_filename(filename) - if (number or name) is None: - detail_row = {'채점항목': result['filename'] } - else: - detail_row = {'채점항목':f"{number}-{name}"} - - section_num = None - partial_idx = 0 - row_index = [] - for i, score_result in enumerate(result['score_results']): - current_section = int(score_result['id'].split('-')[0]) - - if section_num is None: - section_num = current_section - - # 다음 섹션(페이지)로 넘어갔을 경우 - if current_section != section_num: - # 이전 섹션의 부분합을 출력 - detail_row[f'문제{section_num}'] = result['partial_scores'][partial_idx]['score'] - row_index.append(f'문제{section_num}') - partial_idx += 1 - section_num = current_section - - detail_row[f'{i+1}'] = score_result['points'] - row_index.append(score_result['id']) - - # 마지막 섹션의 부분합을 출력 - if section_num is not None and partial_idx < len(result['partial_scores']): - detail_row[f'문제{section_num}'] = result['partial_scores'][partial_idx]['score'] - row_index.append(f'문제{section_num}') - - detail_row['총점'] = result.get('total_score', 0) - row_index.append('총점') - detail_data.append(detail_row) - - summary_df = pd.DataFrame(summary_data) - detail_df = pd.DataFrame(detail_data).transpose() - detail_df.columns = detail_df.iloc[0] - detail_df = detail_df[1:] - - detail_df.index = row_index - # detail_df = pd.DataFrame(detail_data) - - for temp in results: - result = temp['typo'] - typo_data.append(result) - - typo_df = pd.DataFrame(typo_data).transpose() - # detail_df = pd.DataFrame(detail_data) - - # ExcelWriter 객체 생성 - with pd.ExcelWriter(output_path, engine='openpyxl') as writer: - summary_df.to_excel(writer, sheet_name='채점결과요약', index=False) - detail_df.to_excel(writer, sheet_name='채점상세내역', index=True) - typo_df.to_excel(writer, sheet_name='오타내역', index=False) - - # 열 너비 자동 조정 - # for sheet_name in writer.sheets: - # worksheet = writer.sheets[sheet_name] - # for column_cells in worksheet.columns: - # max_length = 0 - # column = column_cells[0].column_letter # 열의 문자 - # for cell in column_cells: - # try: - # if cell.value: - # max_length = max(max_length, len(str(cell.value))) - # except: - # pass - # adjusted_width = (max_length + 2) - # worksheet.column_dimensions[column].width = adjusted_width - - return output_path - - -def main(): - - # 시험회차 및 유형 - exam_round = '2503' - exam_types = [ - 'A', - # 'B', - # 'C', - ] - # test_mode = False - test_mode = True - - output_excel_paths = [] - for exam_type in exam_types: - scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json' - # xml(hml)파일 디렉토리 경로 - - xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}' - - - # 오탈자 체크를 위한 정답 파일 경로 (형식:DIW_2503A.hml) - correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml' - - # 엑셀 파일명 (비어있으면 자동생성) - timestamp = datetime.now().strftime("%y%m%d") - output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx' - - # 채점 클래스 초기화 - scorer = XMLScorer(scoring_criteria_path) - - # 폴더 내 모든 xml 파일 채점 - results = scorer.score_directory(xml_directory, correct_answer_file) - - # 채점 결과 엑셀로 저장 - output_excel_paths.append(scorer.export_to_excel(results, output_path)) - - print(f"채점 결과 엑셀 파일: {output_excel_paths}") - -if __name__ == '__main__': - main() diff --git a/250522_DIW_2504회_A형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_A형_채점결과.xlsx similarity index 100% rename from 250522_DIW_2504회_A형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_A형_채점결과.xlsx diff --git a/250522_DIW_2504회_B형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_B형_채점결과.xlsx similarity index 100% rename from 250522_DIW_2504회_B형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_B형_채점결과.xlsx diff --git a/250522_DIW_2504회_C형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_C형_채점결과.xlsx similarity index 100% rename from 250522_DIW_2504회_C형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250522_DIW_2504회_C형_채점결과.xlsx diff --git a/250523_DIW_2504회_A형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_A형_채점결과.xlsx similarity index 100% rename from 250523_DIW_2504회_A형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_A형_채점결과.xlsx diff --git a/250523_DIW_2504회_B형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_B형_채점결과.xlsx similarity index 100% rename from 250523_DIW_2504회_B형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_B형_채점결과.xlsx diff --git a/250523_DIW_2504회_C형_채점결과.xlsx b/회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_C형_채점결과.xlsx similarity index 100% rename from 250523_DIW_2504회_C형_채점결과.xlsx rename to 회차별채점자료/2504/excel_채점결과/250523_DIW_2504회_C형_채점결과.xlsx diff --git a/구버전신버전점수비교A형.xlsx b/회차별채점자료/2504/excel_채점결과/구버전신버전점수비교A형.xlsx similarity index 100% rename from 구버전신버전점수비교A형.xlsx rename to 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교A형.xlsx diff --git a/구버전신버전점수비교B형.xlsx b/회차별채점자료/2504/excel_채점결과/구버전신버전점수비교B형.xlsx similarity index 100% rename from 구버전신버전점수비교B형.xlsx rename to 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교B형.xlsx diff --git a/구버전신버전점수비교C형.xlsx b/회차별채점자료/2504/excel_채점결과/구버전신버전점수비교C형.xlsx similarity index 100% rename from 구버전신버전점수비교C형.xlsx rename to 회차별채점자료/2504/excel_채점결과/구버전신버전점수비교C형.xlsx diff --git a/회차별채점자료/2504/json_채점기준표/0522/DIW_2504A.json b/회차별채점자료/2504/json_채점기준표/0522/DIW_2504A.json index c688cba..0604868 100644 --- a/회차별채점자료/2504/json_채점기준표/0522/DIW_2504A.json +++ b/회차별채점자료/2504/json_채점기준표/0522/DIW_2504A.json @@ -412,8 +412,7 @@ "value": "견고딕", "points": 1, "category": "FontName", - "item": "문구 (클라우드 컴퓨팅)/⑧ 글씨체 (견고딕)", - "desc": "폰트 '견고딕'과 '중고딕'은 한글프로그램 내부적으로 '한양견고딕', '한양중고딕'처리 되어서 프로그램 내부에서 수험자 답변에서 '한양'을 제거하는 과정을 거침" + "item": "문구 (클라우드 컴퓨팅)/⑧ 글씨체 (견고딕)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -445,14 +444,14 @@ "value": "80", "points": 2, "category": "mmSize", - "item": "② 크기-너비 (80mm)" + "item": "② 크기-너비 (80 mm)" }, "16": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "value": "45", "points": 2, "category": "mmSize", - "item": "③ 크기-높이 (45mm)" + "item": "③ 크기-높이 (45 mm)" }, "17": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", @@ -599,7 +598,7 @@ "item": "문구 (…유출과 데이터 사이버…)/\"유출과\" / \"데이터\" 순서바꿈" }, "33": { - "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "searchValue": "클라우드 보안(단위: 백만 달러)", "value": "돋움", "points": 1, @@ -702,7 +701,7 @@ "points": 2, "category": "ChartType", "item": "① 종류 (묶은 세로 막대형)", - "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다." + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { "chart_xpath": "//c:valAx/c:majorTickMark/@val", @@ -717,14 +716,14 @@ "value": "80", "points": 2, "category": "mmSize", - "item": "③ 크기-너비 (80mm)" + "item": "③ 크기-너비 (80 mm)" }, "48": { "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", "value": "90", "points": 2, "category": "mmSize", - "item": "④ 크기-높이 (90mm)" + "item": "④ 크기-높이 (90 mm)" }, "49": { "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", @@ -764,14 +763,14 @@ "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "value": "돋움", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/① 글꼴 (돋움)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "value": "900", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/② 크기 (9pt)" }, "55": { @@ -779,7 +778,7 @@ "option": "i", "value": "1", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "X축/③ 기울임", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, @@ -787,14 +786,14 @@ "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "value": "돋움", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/① 글꼴 (돋움)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "value": "900", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/② 크기 (9pt)" }, "58": { @@ -802,7 +801,7 @@ "option": "i", "value": "1", "points": 1, - "category": "OneAnswer", + "category": "ChartOneAnswer", "item": "Y축/③ 기울임", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, diff --git a/회차별채점자료/2504/json_채점기준표/0522/DIW_2504B.json b/회차별채점자료/2504/json_채점기준표/0522/DIW_2504B.json index 4a2b765..2ac1a76 100644 --- a/회차별채점자료/2504/json_채점기준표/0522/DIW_2504B.json +++ b/회차별채점자료/2504/json_채점기준표/0522/DIW_2504B.json @@ -412,8 +412,7 @@ "value": "궁서체", "points": 1, "category": "FontName", - "item": "문구 (친환경 에너지)/⑧ 글씨체 (궁서체)", - "desc": "폰트 '견고딕'과 '중고딕'은 한글프로그램 내부적으로 '한양견고딕', '한양중고딕'처리 되어서 프로그램 내부에서 수험자 답변에서 '한양'을 제거하는 과정을 거침" + "item": "문구 (친환경 에너지)/⑧ 글씨체 (궁서체)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", diff --git a/회차별채점자료/2505/excel_채점기준표/DIW_2505A.xlsx b/회차별채점자료/2505/excel_채점기준표/DIW_2505A.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..755c6b14cab0f0dfd0c29cf8c8bc568e1ff620e7 GIT binary patch literal 19901 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 literal 0 HcmV?d00001 diff --git a/회차별채점자료/2505/excel_채점기준표/DIW_2505B.xlsx b/회차별채점자료/2505/excel_채점기준표/DIW_2505B.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dd56de1db7a7410bc9cce63dbf87728dd46c9c56 GIT binary patch literal 21054 zcmeFZbAM&c(=Qy`wrx*rYoZ<7wl%SB+qP|IVoz*aljO;D{qE;;biadh)*rpp)oXXH z`c_r1s@e)NpkQb~5I|5sKtRMm&K#O0p1?prLEu0@s6bF4S|WC~&L+0bdMY0FCQdpG z?l#s$1z;dlc|aiF{r}(ge=!HDRHo%Yn2~xiUl1~N;k9n`qYQTaJXKI`fGv6I;I~>% z;h^lUt%VHXgrT%s)>`gAWX(zhw13p73kl4GW%TeMu13p6l&in zgu~}yA=uizEy#hKk)Pq<1e=8Iyc%OD6^8v<&=xPov_!b;+3<6I%u;8f})$*)aAzg-*y%eEdrtNVbT7+uKTG z1zhG}BAbG}02a221>+IN>OXid=~g2hGc{1xf_%ODCIELi{#E1ZaQzo=9EWOzW-ilm zwNsnt6@7k>HAu_@?_hKB04+JX;Zx!n`O_QQMAuUdWBzTjkJ1@w1#9eYx3+Kymrz)f zgWrn07X;t1b|sjpuy*%-CG1PIk8r4}e5@ryJT0X`tXEX7mS>i*Xbuka4Cc*3fsHdI z3ldpFo!z|1aF5wRyi>iAxmgCVlb_ZRHunnz5YX2bD3HSc0@-E&6Y0aZ9Ljzp680Oi zdX6U6PK*rywEqvP{}~#f4ykMXk$09joB3-crQ{S|AdE})Vm=*x%*oJft;T!In)vY*2cT@uWl?9CeSv)_f+zbmF+9IkEK4%_`&WOQ~&VZUiJOw5qkgiB&B;Fvi#A+ywyiD|F zNQCLdeG2N*Az_p)o;)lMIYm$aRwDyo&g=oD9W|_&a~3p8Ef}RfbRY#B(Uj)?AvFL_ zAhz=~<=B+&mkZl!GN7+U>2GmamWJHV%AbM@WRq01^0!rXu;D65zl9($lz0hVC^mg! zHzC=caC}0?u$`7^(wij%e4eIhPw0jq{D`i7t*nvD6q%2zxN?`xC(uii_G z5jTG}G7f&q`>!wU>0jPmuMfk$@2uigUAJLxwxiikzOciOkT z;KR3uN8?P9lz*qPRpM5is+B*o zS?$H!2zEJBcZG#uI-<{rQrQ=9c`NBsP7mqS=Q!ChQ)`aAL`-;;5h`^(`cBxiEad2$ z*W$>5a|6(Dqf-K#5-s5gfg{Zv1kqejy{o zF+(?&f(fW{H8HXRzaE~PCJpN|m$A+!2L}aTJzi1kRI`lVFV)ZB4=Xba1R314D~4NF z2qkvlTjMOxx{fnCwOT9WH)o`Iw78 zgvDUF`8@(I>fb}5dZR@dk9=VAKArJ|H!Ga@u0C-)or2ZCj@^?b03kAjI$Dl?z^M_` zu7@gaRGACM;TpizoWkJPYDop>Nwd8=IyKwKZ1>ea*0_2s@crulPfdG;{>Ls07YL|3 z7YGRJyT^ZNS|@W86K5yJe|OCPsNAfijhJ;Nq>yXcM|_g)#G&0L(Y}gx^fT4V3K~9b zTr&_1hphFZ#fs}c^->`8D8fWzWDcLRUw8vA4vdlduB6xabV*ZTfKWJX`+R~%*W%=u z3Xb}bSVLF>CxK`}cmf`Dc~5ZuowmKZsyAtVlSEiZfX0KJY5@zp+?|$v!s%nlnLRnJ zD4i(rMZbs?k;hvDU9xE;$o-!Mg8hEo{U7~$t!pFOy{l3%HOY$Y@bP%~e0n7U5#q@E z^rtLenM_TX7OOBTeW*0;vnZFXRR>__f1q)jnA8}uZACeVd-vZK`X#rB`SCNF1&q0$ zobEIrIiqeS$e#4CMxqnUxo5y!w@vWO$0!f*+ys=ZzCP$52RqQV*az{G zs|(&QYz*E%fa(@@mp!`q{&CNKO$B$FAu`Jx@Kx-5CQ6}=+&~-zvw3xpX&hw5in)(P z7^vBI1Q3D6`lDU(jog}e5xS8y((*h36fNf({9>jWfm*72~Y@IW6yj=;r zojY2$rW#cpcKfd4=d?(?f<$FQr>+4gyK#c+#mNhA2#_qhD5IiFTW}WT`l3T1*ddLS zad2{qkKTNX8wNFF>QfLuYp2lJKe6A*m|D&nYjhb8%P@?1xk`^k{69Jx+G*zE( zl?9O05R-qglL|!q`d7{UE2m95lQDSh$bZod&S{C2YqL z&6Dr#&FjL#$pKS*ZJ+pdneJM@trKVsu!DPphp=ff^^9wYPvaEgxs7g~yu0T+6T zlRGOIu8B_&TkMc%h zh)WTBB?ycUlwl@bXp&}A;-wnKHM~6a#D&9A{sm5uxJ!$NV9Qm-lB?X+hGQ9LfWNVO z?5gkefCI8_ol^5E!^Yf+((!~`e?-{4{({X3)HrsquCRfH#P^A&rSm&3*(!`VYa*g; zsKvY0dstt%%efPW1|?Su|CSifmB{yjW=H}RwKv%WA35gbl4uB2WN1Sn-W?jMbakEN z4-)&H5iW9Ue~^3oV@-%93Smt-=xyOj{0njIi@D+6@xU3sFoywc9LR*cZ6qku+U?v( z#MGqCFA#p6(KR^KIh+(DQfBz$fhO(6B?W!Wu21CYhsNa}1s^Sw)=|2IgsN!1`r~w0 zu#@?9c(9YuDR^76a}BV&$F;d%561$ZS6y%JfBt?hg!amNPj<+-z?QIH~@g2=l+xTrrDt~hMnAL&!_B!;csWHXuH#HOJO!=_H z#JURY2L-`5@FLn%zaBA(fP4E_cA55M3=6okf8x^2Nc4dHz&C(?NQ)i6u)JC1XXO4pEu@0DUTf8KgM z5=!O6J2`ix9z!we$VQ(Pp*6N;FZ)S4iL*DC)f#qejJ@I@#8Q(Y#gRy+cz;WTN*Jb5Vv@4*j8jGa-@i$CJDyKTxy&qPXw~a-IQ(nQ*`<^fWIj z9UD2n&J?ahQpK|NB%ZGF>=VOm`E=c3CW7a$ciA+sgLJ>7NdX@L(ZtC0xdSeS7Q&(18j?QU=(tU;HiPu8XXk2!d#EA3Yt5%AhNh>CPtbGB-dP;NGCSOM_TvWNWO^% z{PScs$EZ1(uCTn-EnPryR9> z0A=%7yt<+)#-}VO7}T?32Og0Et#@qgDa{W1-@QKx4NM@Hv2j%h&ds!f(JE|Bt`;AL zR>2b)NPwFMu(w7!Q3`I`QqX`n<46z0^xvIs0W%T0!6a0Z8g@!6a2h0N1YnS1LjUB9 z3%w9WHxFo*a)o)gl&qop?a|b}ilBIg(JFoh%FVsb-tPrQRc!+(HaA<>NXBT|pD?#k z6FU{>*1hDu62+#J-i~>Spvsom;8tV5Fu*bGY9XD9?^?h&J_~EE4nVz>b(FCOnaS^} z`0=CS$2Uow_ClszoqyHIv_})YPg2U{AJ9WC3xIdc`e)E=UfCyLL2D)Zha)Syj zX()5eFF<<7oG@%>1J6cwhOAFudHL8P7hCzhu$4cMqt|;j!8p)C$=dP4Ptl!VuyOgC={z3=mmht-zE5LWkpD~ z%Nx)yhrAjVl_t!KZtOr`KK8{;tiCzV5y{`+;#k=wQaHa35fwY2e|Ia=8avL%sk#>7 zdX#2TS!2_ezF%RzRc76MZax|-M!3e^4v2|gFY4|fhgJxXiL z1|O}D=c=KZkET(2Pj}#5bo65AWds@@(bEDFX@mU-e%TG#QDBPEd!CoWjK67Q3^tSu7iC{p@b&N5Fdc?B15KCm zICvML7=DbIIHJ9GmlX-{ z1e7e#Ebh~gK4xsyA;|gwvTOlanzJn+nh(gOiCR96;)g8-cQAdbIcD_CY-slvjrmUK zIUM}=-w$#Zr@hw(WM~00I2Q49-pNEq1)1n?y|?uA6Gi;?niE%@&{bvwv?Q3lneyyL zQo9aWWNq+0Uux%{cZSBEs1m_Dy6J?p+~-_Y0tRIsEs;I1ZOjYZPfIR8l7^qfQ!74| zj#XEhy%<;XY<>*F4(YPO}E zlQshjNqyFMh$8CG2rioBZ*X>`C59N6UY7-FE`)(k`^#Ljdl5{{zLo(zQOmP*HAG2#s{-c}{ko$0n!2PA_Q?&Z3Q zKDqjr_H&ej?V=osgwbP!chWHw5{_)`_W7fX67JtWYg3Dr(RgfRtUf2I5R~ztVu~&z z+otI0cB!n1$9S2d6@@-dz&NIG+yPIH|5X7DRz_EN3N2SqkS8%qwwcsUn;}tKP7kAb z=ER-S2U{2KO6cxjIS~$30yZtpIPIXl)PgN9!8l2SQ-h~IOO8EdPMQw)Q@-9Qfc+k( zk{`#xk(Q2BM^XlxYSd8_da{5q<|IvhIjF9gb@I3Sqn|&*lwSILoA_7(=e}?^c zcaaq4$+?4XN2XV9xeBCHS27PcjU`+PC)=6!LWG<%S;Q_Qk> z^vjwyb~R~6G9HHbl@Ows^J{fMH;U2dbA(RX$$nxV_3hoLv~QAqaf>vZA>k9QaEGLh zLM+@Y<0;-?;}yWWX;R{`xMY|pNCZtSy5#x+?Bx2AyDrce#b8o^q2rGs29h_@Tz+9!^FjFC!uKZByLtXvGXQsGdk1r@0r$7jOQcNj(X;9zJ-#? z8g!S&YT-m6_K^j`#w~{PzvGhOEJqcL#;GA@UufJGCBaBk{p}8ck|I(bQx%3CayjI0wfR> zo*@6nysDs><1dkFK&?gxF8efr#`Q0h1?X42beH5z^BIkSx~6BcOmapaYghMA9 zVOxlswtMS)hL^`~q5kb)3M4bjHbzYnbp#k;3=eb6<0rhEPu;qB_~@tLpqA;V#zLlz zWK?_KW7coV$YuwjW^pDMrQ+U#d~)ihjc+N7Vb@15V%+V*)yQ;Fu^+J|d|3yj99;Qh zZ_gGe)YOIm9a0JpBMMR%l?{l#zrg6`$b~;2!&Uf54TS8pm#g(#o;sYZRmH&6YP+Rp zDmlxOj#KhIG#d4_UDG1U_#ppQNKYh{7Ff8SENp(BCa~uCj5&EvW}u$32I_&&#%9OY1Cg1 zKPYA0bH`FCbm3;n)E>{|^%iCMHonEPavyh0+A$r89SwiA??7t#0$k97yi&W_wSqk8 z6k@zsn;nzi@w!Q$^&er5ugw2lLDW7K26DLP9M2A7?#&v=@i~mTK)V`DA+w6T zsbc4@y9ogATmaKOTjPzw{_<6c)iEm9FOC0e5S8xkFdDO;dB$Z`1cUK0zqd?Q-t3fS z3SP;c6=If93FBHyL;YyYc*PIns!XHKdfUiU@OO{lX;(75L$1)5-~sA7+zq{Id8Vt- zu~idT-~Fh&Lf$Q-T83{UvNM)@E9q=ec8W)#tF3UH{>lcqJs(DKqG54Q1MZLns#G)* z%8(}UX%n#9zF?gly~v*ft%rVsEc7i9g=Q2a*c7d8k7Bi;g1&(|S$rTSky@~$KbPer zaZBD%7jBx`631=o9vKC7P^++2Mg(NkM6b3#=bp!_ZxG_gy9PzQ1e~4e7@IOMzTXdw zwAHMOX5Hpa+hXF8kSlowC2G~Q10i2K{bNyjno%B=AJCy%gKs}l-cUV_nALIcrcy-6 zaj-TZf(H;$ZuYH{q#gdc$6nM<50ObE3DBpPi%N{%M$dIUXQD@LP)a@S+=4M)@v5;p zVJmw@<5m+BX(^7a7~e6AJsJlLmygXVyMhl4Lf92RmurB+qFV=q}_|`BFC4Bn`}cE&efi*t}88@=RIA$%#Ir- zjcy=KRyicvsdYuuKZ~tGi`-0{_N6^cL*Z z@x{J^Qr^=cr&t#O7o=GaJssI&NG#$A@(P<_r_=rRQydAyu|KIKkhcvCznAri+Cgr9 zX~ri48^M)BLnkrDDQO+BkblIkGKR9wl@Bxi6>#Rk?E@;wkZ`GxA?GuP5|1A*Fm}YN z9lQfcDc@XgdPgFO-Ex8eh=f5)dm1mZ9ckA-TVlFNd_K&j?L!hcKZBs663X%S=Ve}j zdbjHoVk{8?H}|=C z{nEdC1z&msB2QqCx40B#k#+enawp+R*Uq1oMNNlZrfC03;#3uwIBY{f(Y}}_$dwSO zDdvYVUcvkgSX;mrPL5O!U~A^_dgULkjr)k2QuWaMGo2U;Od&Q>CqLTU;uY&-+V_uhEGh~h4i)Q(|=?4|wivl=q za{nlU_*fxlG_uq?WGX_T2e}`9WC15uJO3CBMNOXjKNa=ty!X1vv2T75Tni1m)vZ(>s{E>&^fiILkO?`7)bA z>>gJZ4PK&qW0p=R$NK*cy(UJ<3ffOA@jhEk9?8hSemn2VI_@no11Syb7Lr7p&dp2ql8s#_c274$OE zN`qYe%Zt`0$Z7rJ++89C(%u%arb4BJqK)qRw)D5o8y+%%x|IO>^XBg3_4V=Q@^Rz% zJ1^ur8uRa`ZfAg&?FJK4S41A@(4LGp5eLycR6;BWxFZOAz725<)oQcL6MPevd3sg=9E5uHP|AI9Ovrnf9gG5XP zbsK2DF;R`eoHAUvNRSehQ%fC-+{sQE3-%r_2@e0Z6bEG`w?HF_FmS>uEnK2QQs?kn zgw-!xY64Q8C|w!Lr(jbnPG21Nk1h1ZD>*t@%@PZG43G0O6bI=PXuIhrNx=A==-55lQCPqYbx0VHyP4lkerCI6?3Fh$TQb`P|9m1h-d*u$xD4$X_K2P z5&RSmJ&@Mabhf61cxymt8T#P7#-6dS)%lgi+v{dR zFQ~NZ9ESZZ#NbzcoO;+`3yOftb$7BiW2B*o>3`rD~@% zOj^Vr(cgAJddaa}QJP5(G-(fP><@Odxun8&Tu^D{2~0%_?V-NWNZF*HRz;C6RQl?Q zby(;7OV4gw!JH!vk8B?3lqT>E;oTs=M;XXaoytufdeSr{m5ny-?xQ!VGUWyR#d-SA z9>#4ZJT>^A$nZz9wB4FcE>`l}KxvvIE}dKQtt_QxK%8(wRoS(|hemO3JPoV>^{CG5!lH=|^3JnGBL7^{*kkBNY&!u~ zw=-0qLo2rs7v~I;yxuV;qFSE1;qDKnbfr#`k;!08$j?i+1Sd4bYA_YLevG`<>va#& z?REEjIC-5b%#9%s;P-qeEIzc}9I;T@d^y{g{rvl8^f20Jr_1*`5SuFYw^qRWZgMvF z-9JtaHeA>D^`Z6nr=IWQ>Gd|>ZQl=Y0<>M945V<|M3JUZ)Zf!sBgt8CL$9t6MzY!X zoDk~-^E&7}eH+SC-fbKX(QZEliEn}JWC=JMu0{j-R<9A;D zR!6cHvVEi2p!%RwsMv7;8P_?Ok0iS##t0gVv9I_zV$c;$Ol%wH$30fW2x= zBF2Z!&R`~TjGq5$h;zJ)Wr2;sP$13-N-@f{{jT4wEtB}|#|v;NWyd=Kc}(X|Mld&v zgRmwjqz_{f-kvU@w#-;%j)5T+Y^rPdVtMnol7?xj#mmVCKAusIU8H;R*{6C#ACxOS z^@7$LvMusB^ht?Dli;4J-~GROgmaT7G4)b0i?J#m3a&YH+#O3OyhX7$)Re_-r4~YE zIHN-N)Y%3D(g}`1H8BQPx<1_OM%B4>B8rp{Ph4)!{)(ISC3-O(3$bHayAyH>!`U13VT&k+RE#ZD#K##IqMor zbkYp!xEM>PNkMeQr0hitB5&=3|ds@TGo}xNs zNEYHHjFftK_RTKn+G|VBAwX;^7G#u)%E#@YOjNdhBS)vWOXmsx%%X z&@mb6Tq=^M{as?5y71M(9bf#4yxBPEwhtzBp)Wrx9vhqcG5Q&gd344}xS1NGlwnTB zR&Ft~bn9J;*khJ7JylIof|H}dLH2=B| z)26^2N|Q9qb^+Zc%GwNC0AAy}%M6CTX_5IAfOqo6aZCrFxXc8o;KLyn+T~TMCo;yI zNC@vy4g=gZP9_+05u+-CJD8Xb6U2cIymdfuJggDqVF_=kBzD1JZQi~({W`{G3v*7q z|9R#6gs#f68{QG=7??ey01YgD$@YQ0PS!ebgv!jpT%*^@cPBGzcy536BJ zUGEzpyl(JXBnnxn_p=>hZQ_9>13gK>JFVl4YTW+>_y6~F*ao$&gmD-kASE9lAo%}S zD<@|UYZIq`l1?skWMcP4k$S%K{OGnDePt8UqZ0Dcv+IMvXonb3)F>TL8hu4u8Z&{b znA~q~Q=WHo_U4AVAbO1VAR~bESOz>C1M{ON8 z)9$D7V@?^(O==y@>9@JO$`ES2$DS3FbqJNA5`|pIl6h zxm>rpMoyw%J#X$=Y>1;A5LHNZkW%n$Oel&cnxK9|lpjn82`KFTjSNewJyT?$v0qjN zEs$GdGwIY`+}+xR%@}CEQ_|^cyT(Wlt^=A5ZJYUXYqlM;0@#d9H|=L?ivdp-`vgkh#rlj^Fq6ZjQOM1ENOl0gl&AEW79C~M{7&EQtCME zV2#L>48r34Vx*sqBAENp=Y$u6=#|R@Iu?`JmQNqhIrIWLV7#xxNWXN4RLII~zo_Ed ztP#s6VtpTDxnXJxYRvy=kTRLsifm)3fC$MjmrSFeD&T0QG(O=Wst9f*=i7$Oi0YNazn$vOtAerr9XZ3_VdGg;>a`g~X@)By)p9Oj*3P)*n=_jZ zN*-{Zgq$C$udX1Av3#+MGD|ywHFKc2XWvPmW@^4lDQV&R`6Db}NYb_(dqf$H?A;mv zC#{I}dEHS}cX`^Mccx+Jd_lHy+|QsBlbZ#^{#VHRa?2Ck$wj&}vSqxVdIjajl&fpqRJRjTT4A>K&xAIrc|71>TC}4Ek_j@*FbskA(pcV^5MAXr~Sotqn*Q@O735 ze!b00W1`{2pg{c9iHVrQg#!0UDxuUWnG6T@XgcY&OY0wb26ED54fs5@z0eZDnWvH= zYty0)1R>ya%H?qpm~+JA$0e*}FDpjiMD3~uk9AGjXLBAJ5y8|vy`d@D2l0CRA z?Kw#pF;U1M^}&^dQAv>g8P05C)6tHK{rH4n!XikQ#f0Tp4pe$bCMq4h6^gu2VU4~J zZU)dezM}DH)6b_PVJEb%U-Df&#M;d+0|VvUO4{I_suAgaIqKq)izriXgGCyaY`@k# z)6&i)@vEDSQJASQgiX*japhz|HjB~A4`)%2D|oWc&A}bV>9DreWDI#&*l|TN1kI+f zD5pT6nbDJ70=^W$Svqxb98zL5#AHOLs!B`@u@>d4Lf1GbEMQ$%Adyqq>MQBO;=JnZ z={~r}u?H!ttF%&Oc-@XL|H$xpI}v>d!*%v3gI5ytY>6=%E6(mE{bX$jNkaqALrJva zX`^0HSgQ`aU;okBxF*FTbEE=zC6xRyJ2pHgn_+xdqD3(nJWcwy8R66)pLd5fEnh{`p z_JLdg+gH&-DOX>I>qbiXThX~;I8TB{qzNX?KWULb zoUH}90#o~J`vRywefG>J-gRiqPg<@$aE{D|m?GPa6mQiDqtsXsmwVS{P`|Klh~KtE@cgu~SYOkuihixtSQ_)!lcpzD)N^dP9}4bL0H(_Fll1 zokA!t%K8gP_Mdt2;rN}Bw6dMp+>epjb+s(*&;o*2LVZ-ZtXheb*}@Ap#ZSs1iz)NX z@d$Ki8J2|FY5nUpVUo#Y_j(puDO|A=NVinChyYZ6e2cIb;d~7dCkruG`Z=9R6ffgf z-2|~j?1sQ;Tmi&oj zc?6twT~!AG^swmkkc|NdV8u}tba}v%*QFksJ-oqa2y4TZ7G--4QMkLm(aB>%GO@R> z_WM>b=gMkq$6NT!DytS3Vq^Yhot;Ri1@)vu(2Xy8cKT(=zqY$h1gI`?mGVx#3tMVW zupOzm-@Zy0zGeio(4QqizmBu3n~=H?>`8I3X}N$%%D2G=%-8wyw8Zp8wX8w}JewDm z8wUY43`tlX%7NwK^}o-#R_0JKv4;f$V&($^Li;bD*WAF-#8}zc(Zbg3U)Og^OXnx< z8g@@?(wDuZMX{7|otbr`pWl*crHWT;Ma$At0yyRGfc%#GC0Y>(WB!I6Fv^hCMZaib zmktQLJ@d7vUUkdN8Lq<5VE*GM8$5(M+nGFi7%VS zLZf82B8MRP#DB(yZbn9Z-RizXj-YqXva%uJ65@m*&PfL!szG|+<^vP<&bMjS)O)LH zXA^+7yu6I5DLR_bpnN%^CAdreonr%%DCtRyU;}%2;aB&^Pg7s10H_n^H_7`Zle1!0 z>pS~_VVx+-fd_VXO*vB1wo%q^1-&9E@EmAEOsIUc$= z?x38{^!8|#@u3rPSP`e(o8NRCd2N5?y(TBYBcOzMsvCWkVj*RL%+qa$pDw*u)EE&^ z_ewd%tI)5%gmQ5kMFK}BEMte(T$8g-Q3ssCh&o+Cwkn>?U(QxTWdZ+NgA!2CqxQJS zU=a@EWi+cSYP3e5BENoaky1(BZ=H5!y(ZtQ>HtQkTt`S*1>^0X;2U{QmF~)IgwH@* zu1+qK`Ue@`eM}BTL8BsvMmIjDD_DZlpi!VdVI0EKsg( z4eb*MtPiu4LET%8mavu_=Y|v~ZMK6BTf~4tmr2^@QWz+=CUv7)UuROlj+7;_*s79$ zx(B1hVfc`)khC_!bxl$~SpD9=967b6y=<|Ep&YH*6-c%$ zH75Z@A)8K}XdriLNHTE4>W<0O?Aj@bAeDHx$3nW*DJZ%F%Rlotds5in@w{%?7je0R z3-m{Be#-wbZDmb0tQ$Q=bVE+uwxVzMrD>>EFoOVf7RjSHEBRel2NCqb{ z&{5NG$$~hKl|zj6vjLe!hn2Vv0V!&!CjaJ^QxET9hmodf&09s z{riHU?R4?;;PYlEuQU~PmQ)#4SrMiC{W9;Eqv!9-UTR@$zd8@2i1cWMR0p7hR_4Ma zV7r@@my7>)tQ{YzG74V8XmH>^bNR#gg?7^=P$-z^D4?9~n&^l*FOfpX%&#?0 zXCSjosvEpK7eygfluC`oVkse20VkWtX%AmZVoXy*qV(yGU)-!A=dG)RuzTv*rR7LI zklXfkj(?ba)(x1>DTo7Mks36zF_(0oC77M6T-jt+SH-e`C)BvfEeyVyBE#so12CSz z@W(-k9!iIr9tWao302_c0xl;koFf-!`rI9S`UW@Oc5k#5`NGv?SkL$Mb!FmUoO*Ve zm75hdBgC8y(DaAIGwe?}&N9v$9G9^KMP_wfan=Oa1}*He7Wn7G-lA9??SM2?##$bl zbz?#PVBiIg)?H&M(?geB7gMogy*kWT$i#5ygT+f-Iz2u8CF1*DE+S3X{=oo7g-~n7f3MR4@@YoH8M0Y zfF!>>Iwm;WS?7gWEYI9hd#4j_u=3aX@ulLu&ZA0s_L$hhDmq}pif-LlAAZRK#rLJ! zlVP>dsj;Y^U(~qaP`?k}1d>q}a-W*r;EOda#k=^LN zIjm^X$Ablo2^fgIh>#sqUe_;cuNVwwanZ@qfM661KO;>bU{{ThwYfh2jMFsLb}|#e zj+qvOlL#6$MihKxWBiPj=CsQR$7+A+-*@n55^nuY9PNahN2a41vYcg9nzVU_()?;7 z%MloHNA4zyF3F~=kzAD6g6r$nmr(M*rwY0J4B>n`;STdhq2J(AV&+aUO?cF-yTWHH z=nseSyBy1-R!1?##f;2enwWHDhmHYRU-FCWU3})$$f|^n4}|Y%GPGMtyp%}W3`{4S z_B}{EeRr>H=Mry=t$6NPi5i-a!#3lQKx)9w)!~0H)h!B zicB^=(?(unA`Y=PjfuwXTz`x{ckXEdPpB5tI<3FY&%F0iB)Jsue`%Cx4=f#vQ9Zw)@9L8}#}paG-BHYPEY0CC4oyTk0>uuJQ+@x{n_eMs%EfDeJ{ z5-gZOdYj_l0h?*LmuIn_hwG51^S+2$PbnK7({vq9NvQ8yR`*hFaf0xI0Ba&zioK)( zog`|*lctsVPL};V^%e%}a03{(JY5iQ*PA85swExrygTp@tn(wa(@WFTWlWIVdo&}6 zRE_YMNLsv)Q(6YMZCfbj@UNHVcI#(#@9?$|^TAV9qw&6ro0+#=M)R5J-F_!~b(=9h zNV%IplOa1xLFk|er|z7g=<0w}$%MH;H!v7*kWGbjU80zZ3|LF1!9zC^|9d59EshD2 zY%1F9jqEW_6ncz?EF9%~FIfOarU;Ti1uT{1M<%VH3V?P}7{E(nf+U|3`d-4=s^_*v$XwdY$aRv(v zJsF_#^3vg>aq8%>^}&i{A6SFFLu>Uh(B*ObM{82y9!%q}k+{FBDlBd8^dOrU<(seR z4t&%Cx%redJ}+W?2zhM_duJr?W`m@-;`I3oB)P`KF7Nydh0fica;$t1z)EbUChwo1 z|2q!gp^P70e$QUz`=4bf|HA?M@5PC;iKDWKv-3Zz6vqGUoSDJU!uCRC+V;CL|1(Rp ztPFD~9dwTXxEGP_B zM8H`$?{3!f>guc7h+tr_Qx~k@6^1JNdl>bBD%L@~$dWf=J3>`9MYtao-VUyNm3!PY8bpHfSu?=xD)xgF{6usIyOC;3QW;5EGvR<^CiD>EXk zR2G}e^4XvYTFg-!p}? z7nVgWIdi4&`ZL)i<;dq-%j(VN{aO6L)qd8$th9aLZJOvaIn@WI2yh6#PkCir*>x#Z_hiDETp z{`~Lp=he^N>FiGI*sIQ&s@R~IdH-w4)B-zMG3f+D%~w;twg|~dEL{0~vzPYj?`~g@ z6fwJUsx3`CUU`LWZda@PgrcI42UkwHU+}b$W5uovfytX|G>^>M9m7z%G;+d)X^U8{ zJr_Oj=Jh8-i@Ik1tnk}`bC=j(diL`DHqW1oHMipJv3l;5#MZ}gK$&jfp%j9^t@bJT z$pJ~?$H`yle`*sEecX?a(JUt zealV7FGc#&KU=>`Egu9>L+#hK`~p4664l8>iU-s}Hq=EbjbzU{y2CRYzJ#oeb) zOcFi>te9mOGSh$k{_crAQMPo;&YA#BlnlVNWCF;EGO?gwG))4-1q$X&^7VUdAkzBW zKZ$?h^DCMPEn3GpJ}R>*Xl*qxKj)kL@YclI&Zsn>M%e>G_n0C?-Zaj3nIa-#xZB?S z`22p|Z{o$XuLvyqsF!@$@sv=(t>?$i8kJev-n^6S>GHHFb#HTzuHvTJoge*sn%65V zXq+*jwOdkKaJAs`!086zg$~*7vk$fJbjmv1^LvqjRNtO`bDN#_Om<_!r6Ib5h`Q(50yzA#{;dk4o9lq=Vjv7Sqz5(tu`UB$ zEBb&oLhCk5h*tFBZFCdR8{7yJB3#kK0BiFb-9YsAE5g7iH?VYwV zdpy8~qBMBWb)&W+5PBIHGCdg>Fj^Go+EGh;WbOaFk+eh0{s3=QU@i-G54(7V~MbRjUaIVtbK#7^|Y}I5R9wQ{OUrUvftPNw^ni z-N=W-{=tB=v3;AD0ij`EGbFXhe<2|~!@>$S4%>M(LQ^aV^PSfcEkd_|yX#u_j^lI# zlEbxN9QgAM!`$ek+)?T7S#dD$p%B&dtWhpmijln-p;oHpeji$hY{Fd83({$Y(Ke9A zk68&=YHuu^f;kTowt@lW9>?t8e=qJ@Eg3V>SJQ-ez4FEfb2<85?P7oZfisFlF+??+ zX|d9-#r29hx5peL;*N8$v2cKr99{P%_Kf)Dg=wtgp^7&5Hr_+-gs_Y;^3ka!7{VbC z)?n|qEb9rzGpJPoVj`&3d0zqj674M*sv;X}K^IR=t{>|em8bpP!Cm#Y7R`T3uQUYQ^x*UtbGaxMN5I`X`@8HXS!GLtRzR4YZHbVHc$5I)Igu+GKg%mM@G$`eH5}b;QxYbhX-R#ES6o73;T>8Hag|L5>3_ zk-M&uRnNU}W;gPu7p-j8h$0aS(hJkH*f8mzM_-KwmfP`c_W?G@{)&;C(SS(&(ygE9 z^4E4O3zS32>M3AW^(hv~_*R0jDV3k5Z zsv&dsm=Z*O2FqFlCenziNM(QC<1b#-NYW<{68_gAuBW`61c6@vD*~_?q_f0Nuf)<3 z3Zo5ybDx?-A+-Sc1cJmpo&qYjUuz4ots=oeYjD+kxzlvMI-k6mpPZTA?P=bfEpI+} z>@w|`HI&A;I={Z3rw=cNhtK771GpT>BO4#_1IU%d#slnr)BV1N7Xr_b=tg@iP5|qG zfB#EZt9bx12V($rT+)MZ7q;1%B#D2Wy<*dD+Ux=AxbsxIYPY;JvDI^#?uPli1g7)1 zd26_2C+fkAN<1&WHGstl{1-nRbTONehGxwrI(J8ry}>lS(ldOrzFtmJ-JC>0QSs&>2jbf>`w0nkv(;v95dF-tvM+ikbT`}}vAz}YT)CU5x=dy`qkH0w+sKf5G$X#;Rg?}KYgMb6QlIGZ{~@xEug@b-0I z*Qys1d@NH`BMGR0N*7~8OVI1V@k!#a9y2McY*J8Q(3Rt5)pk{j`27;S4BoI(gFvAE z4cj7^HTh6Nd!AMHvaIVk!&A%E0$u|dhs0v|x#?d7eDf%wivD~_%>)s7u~Xlc?d29M zJY1i%@rTf8OgA$_pu+xLWGXkBltmodq?V5j`{vu47tgK9d=*< z0LaAx0Q?;Oud8)5Gd6Z|r2p4}@!vjI+jfls#XGm*$LD5~$oi!~loqQjQpqefT@MLy2*tiHBS+r}}%i5v)!F}oxGI+>jxW`#{^wh+ccFwasw-FBKTVR?rw536`|JblXbUnv->uJ}*()*7Y%r zTAg@MGN})bhZ2%x8gD6i&g!?pCOD@FH@n#f*^5*=%hy+hw4z;A6qQxjghIiq^J~2s z8sipoXZ1G`7H13#H}rCkKb3nX3Fm2RfxPdgMj7^={>hTg zh{KilojSOgsGAXz=gq-|s6<27F;M$86&wo+^qs#+EQ{<$gqSya4IBA=Pu(JNQV;DP zAW5K#GdcMcO$sUD5>=9yq9m`qiN=h%(b2~OW(MBFYtH$2u=`=RKS@DV; zUfG@RzB%4qv4J06=^IXD=){^M_5vN+f>vEsC*4nhG89`xXB7B?HfLy54XQ1YFxl07 zkk%xM`Yr&+J$}@?U`-1l$4=Ur$~}eeO5(vWgwFkH?>3z|k&Yc&DUj>1?;=F`Cd9Jc zHJXu?n+*2mNX&V<$|_zK(%p17pIFU8u|54aV*dr(hV04ejTXdU-NBX$Bg5vmZrF8x zn~KcMNF(F}K$u}<_<#uz!{h5qp@@=!awQac7&cR8=HEpYr|l$z{rQEiy4_x1AJ!i) zm;0fv-Jfr{s@yk8{6MXc*7B z`=9npnteaFUtZ5krn`mL&mNCX``hIxNAVR?Fd8Eu^N%eXzTbsDx?OF*K6f`W<-$DZ z6m0c4J?Bqk&~4j1lx~VM**2q3WeOPz)RyHhs42RN0x^vmhsA{W)L; zL;{}Vn9*&qI#2gxRBfTQobHR;88PWHp;8~u9&6^lg)6t0jTD!joa0F z*(-D9PpuxExquOW(ju({Pbr?mPFN1-&)kA^! zD{A$aaY%L!&~Pk+A*I55iY(e*<~hz0ju9u8+#)(m0i#~Ta6ryD>cJHPB6s~t1_t>T z9(;ZMLmA)h*n+NpH-q4i?4rNb*xQ%6stww7O_FB+s=BCYEBpAOIuMOT)Od>0#Sx$P z%f0T`OZ)oO<>k%0tF2GQjzV|K@d;scF2_fgr)O?Iw8i{iIqjOF%31-qTQt7yurhO= z$Pc94431-qZk0OqkYib!m&3iswZ&-rmC`rVT=18O7gcmrkD42 z7fFU=<$M+Ivogv;Qmw&sSTWsJLEKo5wBu5D6kI!r%5#W&Dl#^$Brd0F6Qyo1EU*p% zFBo3gVCmOk+O3!_>L8b8?qj7UQoqQs*AK&QP!%3=0CgtmOtsBi9Vm0O@o||C%)2ie z;&9sLO%nA}Wm;^oAm~RdS1wPheMRJXMEq0>#`#+PWUB`X&I{D$JOa<_(q1i{;-Eb` z0y{>UA=`kp;+FqtDy?@AL7Y(h(;PWk@v_!|6i*v}kcq!84KMPvOGA`@r7KM|&2G~P zxuwU_lVnrM>XM}noptGDYygucIPo_)ve#-zQB++)Q>>CeU=azZ#O z3D)P(i`X>YCLzr%#t%0sOAXIPK_?m8n1ZMGypP;NNlgjA0#^$^QD-ZJdlp4NeFoN+ zg{Y8!rk2}dZNte0wlRfxU^TurU{$tRv-@DlX;~$UH{47lTdeEx?L+}hVw(1FiA5$b zd+M+>Y{U#e{7qv%YjT_ERWVMozz{xkYMiCAJk?clo zy~mo1dm4Y8BOoi>pky%Guvs}u-O~D=-38U0`4cHRnIkHLD7D<~&x}zkaC6b9CD-K- z(q(2BJcehrsKzQAH{5Y1Bi7P=DCcN`{g|cgd3kh)ATnzVNr9iCoAHv285|U22u$-= z8Vh0is5@Kojqn(#%PG>Go2(msu$vaDr^1-5WSune5J|k$uNNF(fd8&FC4#g({^=^3 z-D4eACYLOaFm#ntMwtPQQ$?AXSBzd>Ijh-s0;M26I}-#6SBM zup25N_YEEYhC!Rg{!HG;K}r~_w$pS{@;igYFBS4T)_NSL2x2Kp|9dL%I%u5~9y{Bp z9xSbS7LmMPq>v7v#=mY1G0(1^-4attvObS$S?chSJ)~2rNuJ$mFa?BmFj!L}x6^jx`udFr7>g zlT}n2a5s(UK%)Uyrf^ZZDjw2X5jaYgYKFXR8@J}Ftem4zW}O{y z+hASv-*x_U^4RwSg-~o;EFSZNnblh;1BFe;y@gN5*;`wz!|s82u$Zm`=eQmv&Ciok znh#Cd1EWd5s!s+oSGoB(6b(H@UFNO$Sqi zjXbS(D&=eIbOFX=Sdgh;uQ2lp+Zsz+1VVAEY2!RjKmTD?^^vni2{l*U-h;8Nd>R)b zVH;JTg= znH|NHnH>UpD_32ckOnXvubzqV3#x+O^cmb%%Wz4QpF9EdNs1)nI^CVonB>WgS-5Cu zl^GUp1O+Cp6jxzmWN?QkkN|-gB~V8#yY`4cB28Ssd%JU{HM+#l1sqDH%p6vYJgAdI z$c9mA3T1#Qlxw`LdZ50-)!rboel8SxyY<=_bij2Epp6V|#>Eu* z!wK!!Xwy}Fi=QsLd~u)&W4gG-fL_K#O0xHD8EiJW36J9YC4jWRawj>Q!NP;T$YQHf zd-U|<=*VQ2;Cp-w2ef(nv$+D4HOTZ(=LRj zwJI@4CHc5x9^OvvmAPk5TXjgfb;w+5^oWVZ8QiEl+DgN5T_jJhpc0RgWkQzy*>H&# zb@m0RqQ^@Se1w0Eyi#b%fcn2cRntKkgib18p-ca~+W4;A4YLa8HW7zUugsFbZF!** zgm*2*zy?(9oa153SOpw)8Oy3{85C@tY#sPPh1uu}mnX-~K(~0Y50+8slc>%#0B=!s zv>W=SEJ4#Iu*k2Ud5A}@+;{ty!zeJ<)D?QNsj5YyZY56}vq^fYR38uW%OADFpDR4t z=`sw)B%9SHCKib(@*nPb7yxtDTfv(BoA;edTw(y4^_SOtNpEwsshW6wMs3C{R(nx2 zk3aTE(jJ=7(}HkqwFB2{)^7|l5dznz+LM)|}^48tkTs38uktT{O+1=KE7) z5yPQm(J=4$f$ESI}eB))tRNb4|xiWR3Ux9@ll-oD5RjV2ygJc}pkHgzB;}QZIaS zIXY3NhG49RxzBL&7d(#s&TY_r1cCXK*26ztYF%6vSW{kcR-i`=H3Uyoqz_}-FGM7a zIt(D5`%0dRcBh0E=!;>i?X_MJ7`-^}MB9Supi?CKkqtf!r=yd-(TT4$4#}IZUu53wsNS~-Sq@_>NWp30X?Pi%RcYARK5&C9#&;X86$=ldE zn*t7u3mNzN^cT!fT*?N0V%KMrRoEtvHl`4;6qZ_xckSriY z8E)pI9l9RENdSiCAg&&)g(SN?hRZGq0L^&R5oJqugPH;xA~;221Ll!8BcA1#7S*f!1~PkeP=~BagX(m z06A@srm}*$(D{DJgOUoC5@97vhZWO}bZzkaC8#@W2QD-T$d6-yX0^k1TlsDTfZviF zKhF={lSN|FcuRoIe`r70G&9J~CS^sRgz?~4 z^z8`t5JFHlzz+_7#>vnG0Ivg2zX*iyE0E!u&agQ{@9Z`&&Ucds~J;iup%0Np`(;B0*LCST`2LU2i?q_ z_A@Dxv5QIMXX-M<$vZ~1K&~DM5|`V>reJG79^NG{nzvTLz(OuRyt%JA(u3m-D=w{} zjrT4BAwc%Fx>P0TrAQd5=&7{_1%Ej0{T!9`b-X4bUg+T%J}P3@+w=z~2I#1c4^*Pk zZShAG@4sPvE`ej_r4kb)ftiDGdJ9Pw57z=n=rxY?U zNd_dDnGXqk%ADg^GSusnh{2W9oZ~6Q=#>Tv+o=Wu@qpyuFayTy(F-Fo(~amHP?hMe zZ!+Bd)?I#Q1a3*nH&)P5B^sg|GZ`0+HmZ_^dFa2QDx3sp!L;;Pm#|-r{`rSr>H8Rs zeRJw?H`Yv@b;q|B#$y)#5fY6OX%A3D(t`h3TsRgTZ%yJSM(QvwHiWxTKeVA}?P>bD zp`audA2&k&%%CN53oK7FaOuD3(&&;S;q~JX&5^cW_gCD_11RQ`-CI3`<7R%Qq`B&M zmD^_CPb9FmYho>s@B%eOuTAKB;b${qJS`5JG?OGFmfWdj@n7#*zYE#;k0=mDc8ltw z9VGsd5omZkP7yXog-NDA{64Y6dcoSEwlanI^TEz$QP6Kdb;WrW|27gNCi`zb!I+Do z&Xr)?%t0H}#zOQa?cfNqjv}%tg<>7i_cf zFXiy#M>B~~q<%&sgOnTKbkRX3kaRjEs&>&5568ZU zVa@azN1NAU)XvDK7esJ6q$TM8USwk>NulKl_jB1js55qS=drSUrM-M-9OSNR>KP@x z3~^869~0TjOd3u9LdLlj9JW4!7|}P|-8gGNlOi)eooMc2ulkt!TPbHwRF%KD|4gWK zW~QW>JYd569?afA|CONiA!;-=e^rgt7)RGN1zuEAW_ipu${9qnT z84!lghCqtH+f&^Ay>EScpUy$2lY)co-(t8=&ZMo?VKh(%ic(vaI%=(IyARH+ddJzS zKX{#(X!rnqxF>KclyNTrt?P}uSDtREeQGGPeVhH3MLaiuPX2+LJHkA@xi2+!3|>8e z<|}U%ZyHn2tx!Z^A72s~$*rvg05U2ytVxBc&48@FO zYV37uj>A~$cq2zrtovqDr+F^kHy+zB{N_u7KAncl?`h)|DVOSgy-{~X@0GF~(Y830 ziewU^1n1Z=VJwL`g3zaUrVEnm{kVO|CJNNI8ViLs1U`W(c^T&7I6oq0ebclQUYN03 z!8T~F%~=R>3(2|HIBsNS%$aNVU-FC%8M8go5?H}u1}iv2r)IyPK~i7|9)VWOe$ngVR4~x!lphvB9yYRh6_fS*OHM9!ymi7o8&22Kk>r<$HDNmK0(1cRioYr|#Wb zEz5Yz!5h;jkoY$1a=%+IddNl+=b<~UD#2EhRGB4i32Iy)h=KFB$MfTnSefmzg>R%ZTCo^MfWBPyX|CQ{xP?xgBW<%&gKk+4a$~n=O zXo?!~CzZ0#WM{M@6^U7hSTi2brV}5Fu@P~gk^f_+@u2vp884y<5b00q!*YwvY%%|r zVCaFQhK7?BIoMkrT+_fO`!(j2-Cu3rGzKUBph9kI(Bz6kfOwVzp$yTg9h+`fV_JU2 zU8gWiISJ}CBuuSsx9?6%H|;?ZLWrjl2i)cWwKA(tIFANxf_v zS4&&nfFm$vhNa9dXLRUGctfMu*Pr^90lHMCcA-&(`?=>>A`#^l)%WOn;ag4s)ocya zW>Lz_MMc?z#IJXZ2q=~&Za8~`$z3Ruq@*(F6Y~C~TY%!5VAPoiTt7x$>vp?^=ybbz zJe<7F7Uag@@$q^*6cim=Z48+!Z@iqXPk(*989ofx+v@PV_Qj@(eEj9}x*MO)efN)( zfezR4d3|U;mecilJiXrLx$R*C#Y5Tk&OivaNfc@rMxL3(7)s898F+PhFqF>5Wd~cs zo6|<+>RDHs@M>YTk9L*gC%gr;mBwSQyBapgFAcq)WViR@%Bp8Y*8$#G=zv1IlA9Zu z){>5B;faFx>fmB`)>_Xtl9w?RI9=&NMi!gU4p9mwPCyENVCE$oDA@Ft#BINtk+&Na zgW4=9jV@az@#eGxGOsnyB-=?XlQXqzG|bHQES*f3JEwKnAtEGXxQEy#pJ3dF;I_)-oM(Nd+laT3N5+a!#iYd($v@P?M{4$pIO-|Xry4v$2Mi1B8z z)t`zSq2;|AU?1&ZnrERi;EOYaP>6DAz3X*t$s~MZdjTvVZ+pihjcJ#o2XQq&2y1{q z_%tHo?&=U|$&6KE?Hf?Wq_~zXk~MoPuA8J-xE!zJ;TmS$MYt!OeyTO_M!M2f%Wu9R z*(8la9T!_L4(_U)>Gkar%uO0c*G)w)!YF^pzh>2Tb0{YB62@FtRT8z4m=Bd=j|$;Y zW9bh_$2$hrKxyXiwF>=R;O1UrOvuxC=&v|#Un2(0qj@sa|tFT51oQZG| zEu|I~_MQSBFeQUz_*_zm$mi%2n94h@d%v7~u${;&^GpC4Y zy45aO>@icCu8IaR-pNt&CWWidZ|O1JII2O0uiUcyY2=m|HB1ZmAiGQ&hPl@@s1|v~ zP^zRsmJ7%hVdh5Qe9&s2T}BYp4fD+J0GyL=)?*sj#3hE`cqQX(Dp_tG`YSqToHqiYJaPu89Xe!@eqlEuE2Mt#)_y)VEI2ay!Mf z$)P(k*L>ZlHNncl-|4#EbqYB&izg-IDO`3na2n7I;<^uo#`|oJw=;Ur? z?D$Vo{sMP2W`F3>hTxn3rh0cSp=~kF$VrY35crAUCdyxnGCUz|mnd!_YHbL>ktHrr zpMaMX5Ql)@>xTBVeBuTFuDk_RB&8)x1l1av*}}fU!?W|bT+R0Fw6`gUE#x?}ni)CS zw2lH}YECetAb=o1H~(q& zHtQf)ub1a%{O?Vz}k#(vC_}GemVT__sdY< zuaDg**$U?BuEMeL|Z|0Q6U#-~0tnLD`%k zxFSL{K`j2^AItt9(zvo@%ga!2THDe!mCJwt#4sINEn83q#Vd?m3I1`rt*;AAOMvY5 zIjyVt-Tv)?*TL8z2+9*B)JoeeF*bzLzkKrh5)lFgT7Ds08ya6(pU|?vJlG8>l*~!lJqak_J7`fCEhh*gM8x5=u(PZ_Zw)rEH54onZxan2*pC^AkqNZnxK~T=QtC78blX7nYtO)lAV7 zGE|g(-%D*i^LKS#B=cIbIJaOWL=cMc3IyqHjSXNkA!=ixx4`ygC3yoAffj}x7%8Nn z;4o#NA4t+w{*?b)>HWb z-ObXx>)$9~69|eNCrOWCl$T@$IRpX>fVLc{XsER8J^prsxuhe^I4N--fiQjC-+4cI z*a6i-wIp%Sj3h&2NsCd4$?6ArT4tA8`iBw;?rs$kfoj=!{5d|-%gDI?Ix#qL9o7M* zybI+NY@yM=FI0M~2GQd%Oy2Rj8VC6Sl&4d!REaPdp(Oy59FI4pvXtF@(y<0|Na@y2 zzq!6(3aFd-^X!t4Zd@@@3tX}DF}lwo>ZJ|K{Jp}p^-sOoLNGgldik=M{R@GfLh;{a z>S-jyL0mIOP8U*zEHwwb>dI7tMsRkt$QsbxDwV*F1;j}4+GZlovLNx}QwZB#g~p7jr9J4EB(S__ z`e=$leoGa%V7&@f@lSXVl(Rq&ry36Qd?;B1cLxZJ+uLRREr6|CsClSlESK6xsrt>% zT*&X<-M4C0L_g0;0=62*etW*}40M|SidF$;v04Ge08Eu`jP}tt@%Kq-R4XCLAXB=q zXv}B&Y7n|kL%mpNQrsbHv)~vorZsZc=!pz*co4};*EXlm9Y23bzwCu!g#>RLoQZw(*p-@XQ zBvnsG1c-C+?-J&R#=^AmV18vzhsF@U6r{rmT(S=Avo%gMVp}c=Nve^LA&F0^WF>Tl zr`Qn-`jl`JUA%TZmGb0f4$I3(WAd2%Q+v?fQNn_U$Ae3LM;O_(LSzLX2f*cMB{?^l8TbWb;gBMeqz;E*s1X z{K6-w`=a_nO1<0Y+M*~rM+MNvS(rJuOS`cnYz`Q=--f9Wo>1#hz`KJbV1F2~0a{in z85;D?U9dlTWAoq#?TG7~r9*MSPG<|~NrG-;kq+K%#di3CY;PV`SPT|UONS5&)h(R7 zl%Zo8CQh0*r$JCE4`HnILFT4Jg&!iJo0kn&RH>>oKiHH zJsLAQ`J#bvS3)$R3iG1g6KT|e*k>&*IcX&Sq__Vuuy}V*MGTFo)6PLn$o*AmA1klg zSVa2Hi@pp)2r(%x4%I)R3~zleB6hGjF{OR4psZ|K-NWd*R~JeiRJS9Oes>j;+OX=n zYUj6uJy~&gcTaLHK~nhDTfyrPtQ|5l{3jrMp?7{JXg zkg8fL9I=XI@CC3YMZT4rZkz4=yZt2V+NVEs`#8b?b#QA03MibM^oaQz0QQx{LT*;)dCbn)2KIS^__8zFSRC>G9BKWB~WUS zJkMuYgQ%ZW%xIaloL)SXrl3|oJ2ksIt12ohF{?qORDEiDzW_evCWNoGEj(3*C^^Vh z&ORjjNEALWE+XG6A#bi1>I)uZ!S>3-~X-tou8#LeS`!6SYZJGK=}{-Yo_mDY^3DmU~XgjFBv?c zX)TAniu#2|`MqmVD495-H+_?U09ZltyZp1MylL*KKq!kJl(jM2X?jxSBiK@0eoL#t(lRqCzgbnZj??ZQlZ~@T8vm9Jkox=xPt|gS%_d@ zZ`qBovY}z^@GJ?h>rKcIo*4Pp2fIV_t5MI4XecsrLI0?N&3b+dH;!}+9Qa}4(Y&NK z3iR3O1G|@$Y?L>uDZJtAK`OkSg5l`Ttrd2xcI-%2^it4iHH3Gx3r=UvBt;UgLF4$T zT+`l*KIE4k_%jszjX{yxErh|Ol@+ooV{5r2r9P@~gP1y^FPBu)6cKyTo*kgmw2sNv zl_Hy%%nCooYMt55>wAOF5NE7qaZg^~D92P2wvLmJ3HF0_=PspP;{-&u=3^YS!ovfo zf#9&?ZAi=9y+9?oa8qVsHoc%!_;3Z+gjItPK%Gj4%~~acs-f=sOgV7{;Oi{W=-KBp zlKTENDUq&lRm|eZzT%Oh&BZLWzlj@G#aC8?lbrj_xIG z;!uq3J?Js%fW9lvOJa=939DU&81C@GW?`$k14B60Rm^)bfgn)Z%OV^?>xHyOQ_6mO z()by&2>}W8NiThLlbJ-0aMT8exVe+}4WP|tN37|`D9ocdfOa1cH;EG_p8e4X_QRVn zWiGzNF;hi|n+q3wNWM9$^S0q>B5iKE9a#Vl2cDrIhjWp2^{_Zd-)C}0;4Z_K> zrilES)@4g`>pox5opD$aBRdgjJ{5Qd_+|eoSR`BS=P=xSzIRFQBM&N}D1}LeCfP>? zrj|+0?h(SUYFoYLhSzYpGA*v7$ebzIj{P@RJ4Iu%GW1- zHw%NivgbBAbxinSGmbse2`s~PTy0%v! zgL3h?{+s}M4}%cYYHVwUu5h;bX0TcK6`NT07pX82 zU`oBovRsc3pxKISqC5q(a%?WiYXX^XczD2m$ZUyIep*UUME z8(z)lNbkVqLlI@&jk4aM4kr{>`Ju=?m$S(yk2-{yxWMJeWHO)cHta5d&f^7HK~*x` zOL7ap=%~>Egehio$==*XD>Dfl|D*=rtY2I|4({1@cYOY8#mO$$sT)%VWwDk%{z(J# z@axJbnsqJZaaJ==>p@-mTds00XxxC(jGS|Gs;|CA zT_~==e=neAoyW#1%NKRz3);X{q7i-5kzr7xWTkd=j1(3&H63SHI~^l~lwk{Vk!Ep< z_Q?J^R0!U>?UweHijrN8Din56O|ji9Q^^V>nm!5>WiuvU%Fw3@j}dJj%a#=^co>vG z$w`q1cW@K^5WZf=&S&OoY<74ncjP+fEx0P5KGG0DinMk9kklv2^JI-Yai!fz9=#3B zXxHF>xqr2`qapLrI^aXus0>Ea-q8hMeTgS^i2LNS83IsxXt(+L=sZg(5qBtYgbYWG zsjk=H-;KX`JSO7iKOZ%<>ZfR2C36VPR#yHrq6gLHroYNm zh6tJ*EFn5%ezJ*0!Bb-Zgv>LQ?3w@@Q|f#%916Z;=r|5arcS$k1xO-y2j>eM$%7G zu&flDMFyrBDih_gn{YIi_BkR-v3}&}0HT6aBuNT@$T@Y-Wk+_0u0JMH5E$TUylkwq zhrqZ*@M$%(s!4N1z~gdAZ)cw03I-E!e@MRP;+(jxa~-5}NpIywWZ*X&bJ11#XyK~) z#^vYy199}M?Q_=IkfFfpbwz?wj7SA8zjXbK^)f-9M8!Z??BxK z_U46gDX;@kD63v)9#)-!MnH+uy zLV~}3iVR};W)0*5??5DJL01T3Na^=&cq6sIC54P@>ZkbTNgy%ijkK1{g2Ot>q9d)s zj#;yZ#12nEkCP5FfPo{9;9zH}T((RI&xdjI%EEXzJF7UlqTl5@97vpPY#kt3?}22- zL@woAOFfD!jt`^WAbdIBT^jS5@{b1VOl)!V&h7|Ig8njRT>M$KsHMl>{F5t zg?O$I{l(3qq`wNNQj->$NX6j_1&j1x&-jQ+JjRHsq!~{y>+lvA7$f*Hojd9NZ)GBv zHIr2Dk31Co`IY$JGVz}xxc?|)`gc{_|5wcPubQ}^*xraf1{9HJ;4dLJ&%~u*7$GG# zqL$yszy@z?VC$)I&nTas^*F{ohlh64hpd_J+-2A%aPc$?Z9u^XhUjKBH=b*>-2%1j zXB#MxwA^v}^K@Mqz_PNE;lpuisL-{+3M8Kx{XPS$wK0%oalA*X65;L)qpy+JGnM5Q z)_1z#4fL{&*E9#-s)3w5it1k%G2ZyxHU-^N;&;Pu1`6Z z-f$qr))V9RPd{?_zZL`HAdMbf{)}Gv=UEWs|F(eLk3x1bc2F{Qa{5Oq)Biu;8R-nn zZ7!52ZRYtAzOsZ%OVJ0?f%otr^ZCaaW9C_Z`_QcC@z^nrlBn0-YMeVS2Drfw0N+4$ zz`*xn_cRwL^9w>0;<4AvxtVsoy7;Kn!|Chq)C9|Wh9OJO3?e^J#M+A%T5v~fN2o}r z2=*cabqC14Pnl}DgyhaZ*`eb!K8gi9+{~G~oV7mRkh+aO zJBXhW=LaRxH4?&wxtKq`=;SDIk)YifJ7aGHa_EQ-#D;PAD|HwS*efj2DT9JFGMAaD zbCMLWWJuRgBqfhoDyf%ow^M=EPK`$2D_WIrL68;DV3Ve4k_L}wGdWEq(qKk03p;$%<5e9*NvKFpz^IaBaD_NlRJFPO4}@pxt&ba%utD=HVw0V z+&Pfcfv_pzHl|UpOGg)ZIxQRLJ!3=ADh{8?CJP^`6zGY8n?kPxRwx9 zhtLyWbLG({&5{cp1XGia;56pR3j!B4JA1918$0V%;Hllyg_xWwb4DvqV)Y0e${Ba7kq*)ld)~V{G4WZo}4uj#3no6Bw|n`SS|31!-k0m$q_& zb)2YU@i7Jk@)I-bNe0$E2vRnGC5q(@)wYABTj3YVG34O-jv(E{<|JGW=kfd63D< z`rVJv7vuMv6_H2B#VttyNkhuCnI7w+d4jOpLMu5{JHzIyv3Hz;g{$8KO3i7 z>T#5$gpZ?RB_zbqq7?1nI>W632du6F?~epLrrD1Ip;Px4SG?t zKhtar9(wK!UUZ3~y^vm=a^gv$RcSP&!+;4crG3A7Pycbj{}q)%k+>OgKd1!wS>1&2 zpHZoAXZOFL{ISb_Y*`61vgZsa!N+n2@bSkBlmtOk!w|Q`U<6c+3~W;}hP!L=-r*W1 z(*C$TNLxT^C>Q>j!bvC?jO~14!@04vPw0-B3kdnQbcX!`V@P&u$3v4$E*w0o8-^0X zhYrS_fl;)Cb>6MFa#4YQ3I6z}#RW%VQX^I%9xJ3WsM`OZIb^%fKGeR`DeG|0??nbu zeS7xJZFb%_b=htiF%G@KA7Tr&!c!d53taXyrl5_|dDwl0Y$w?AM0{rCU&*s6XciX2OzU#Pa?j_@I zX-)ODu|MGz2P2a%aQqGX!BenUgV9)yp$hOuH30P(9GFHBy&0G_kPgK`*NA>J2tw-( z;F>P9gF?_XqaK)m& z&<#Le8-Ot2u{PKM#7Y5lt?0w5NLtMxTG0nt(M>>aaU)FNazqaUtnF`f1JN6>2m^VX zzy_iA W1H4&*DHycMgO?!%m`-<>wWh*ckkV2f8QUtC&wC@ zV~vRUWMs}cBc7ZQGZdsjKv4nU07w7;Km>4R(=7G?0ssQR000yKB(RpSovpKpt+Sqr zyS<5%4!xU=HDNv|Fl8+g+rAzu$d^Et z+_i9<%}211b{E!yhOk1A+RdxYH*Yd##r)dr)#`#mIG$u4CTgf#-x!ysX|BF_o$-VN zOS%_mUn+#b8y1BUa>pxp%~fxpjj?eikY<-u3oC`eiKrNV#-|62ij$g z**=&mfK>@p>R=+1j5QA$x`GMq9?R@Ea3kSbEfqb{U)zjyvGU9hdp7n_?c#9piaUl) zIZQp9VY$+w&HaQnx5FGL>W;g+v9ODp6jlE&{($uEiDjbep@u&9{G*q`8F3kN^tDS{ zD40_)w9&zLS?)VH?~rx{sHu>4*G&b?W0aRr$XB@-OZqq(3WJ#MkvUo(nL;Aj*icg# zm-G2H&J;|Dr1iCSbHYR2X1j4tbw=i9=|E1tTKiaBkKh2n#|H>N;on@gNtKc0_R|h! zK0OlV(`EG>O{|?5=>IzZudDt)?4SSg=#}xZ@&k;p!50#*A)^nAo3V&O(yoFM9YiYL zzLFaVO;H7;IGa5bxQHs)0U+W&UEZ(b>zh1L$D>5|J1mtE$f(>T&8}6!DbEhyAgIY5 zlf@h=w+E427Vj4C)5N9RDP6i^s4H4a^Q6aqk%-M-iPRxZ)2m@ap%mc;qw}WuX%5S3 z{4{*523izSKC23@ZDG$nPMFT{SxzoKg5wY6lsTPCLmPE6G+V9q9JMC8d%{*#Hs`dc zHOzM8B6im^w(h+V$>>3O^Q4o@991G_L4IVK79SzYz4Os*WV!m0-eu-gbm{d^af%9AE06JYp3TlW*?mdrpcFfk@VMk(BW7B&^3NPWtD$v6NT)WYT07MX$i^C10Z{D2W6 z&fr`MnLYb4saAR8J^H#0v{Vy5oJnAdJ4v=+#j9Cf@`1!hL8AldS8Y}4DMdw1rD*D{H8Lvy{sNJJu zvsCr8dA^o9%E?}=6@Qx}p-)HgH+pyOiFwXEO(BO*U$cjnt)b5U`blWwj19%edbq`ssY3 zrG^2(0~>Zluxkn-L=L>G9A%jou|`K$s|9?9vW^MG2y@e{g#7cUAxeJyi7kZTc`;KT zRvqP*EWF%rvvGSc=uDS0!(bwQ-Q-^{wJ73{c1>O;)9-Pog%V!W$FC-nG3!~ex-Gy>c7P{fQXa$wn9{5hMF=^a}vDPcXRf31v6OgDV7`{)~OSUKSTRQ><# zY%}Si54!h zf1UsA71ddzytHu+0@b68Of!Hh?ti&jU-x~5$|Js%-06(@<>Wc>YRYi3h1G~uu7QX> zOzIn4A;fY5_Vj-CZYc$9q@i4^$y!SY!MMBs{MPX#cSNBKv;u&N(uf^jlf@SeRwGP< zS_H?=q)JMj*s0PLH!bi(( zWFD{QpCH3;!>*=121oogAN_tSk2IFYN1a`&K{d+#;wbb=zve1qi{UK!YFe*~6l{6C zbS_vTIyzgggg?R*={N7uw|5MKL&~{J+6{2{(p{V6!&Wmg5Lz!1+7p9nZLVM8hJv~~ z_fA1^?L_#&w&w_K*)M!g`5@L}ZpO$D`bTR~@rNF|kQ-hp4!L>Su?Q?5GQS5W-4+pm zxSbsF)SESh;5LA{a!DVn615%o*^-M_uHW7Ytd`rojx{}t77_+{a~WN#d4{VdTG6I2 zkt{vm;89q5I#amQf6cnF;K?%`P#nW$>ALQpza90G!ceX@H|s5)qlA7lne8K$8CGXo zc6E1X1skZ_o)t;uqE}-TvWG3ShroDAI`i5H>;LM87Lo>n`Q6@v{1N;YcE#?rOLr0O zUF*7TOx=9R$KmvkFJ25IE92t78M9!26nKIS|Aa|d)u1Rq52_O-Yq+E%TyT@e#%V)(Mf=S|#$XjiFCK4zGdg=% zkKhh{4HW!)lHUIm+{!HB)oav%RYPZz(+tk)RUcT0E zrKRWnI!CRi`#UDSuGjl=NDhC=M;8_wLXG$9^|?WVhuhuNubiIO>*@89ocC-xsJmYV zFWbK}dfx0_Z=Zgb%h3WnLW5$i_g=jx`tfE@Af`2wK|+ zh(f14J1U3}@5s^qSbnQ4d=X?`Z_2~a3@JM{dZSI4YYz^>F>S))D$n^Cgwzk|p_ui0qU3c7QYY zba~BcXG&5Wo>dT|8w{ErS~!433eh6s$SvHcejZ3Li^MeUL=+aiqZ86Sq)S+ZU4z0P zFb9Ze`f)75_n$(-#(kv~)5LKtwzyO3g!5({7>tWH8sdy&Vf|p{I=D60i;!MnabV~* zI=|Z-==RE|P+tRhLnnVxpXzg@N*2zLtr>EZfqEHu>3O}I_Gvx;sr}&N`SKhRM*T!= z3&y+aP}6JI!QKLGH^>z~_u37RY+H6kh@s7jW_raK%{B`aglP9)y%J!rEG($=ZRXLz z2XmrNHE24I_IjlJ2HBl%5byc!^lN4jakyRN6M|k?JvHoBQ@wcBENBGz*2V5vC?5!ya7&j{)C41lwe*0JRJKan7^bbv5`?TJMF|=t zFpSnTT& z@puJGmSy^`v6eCR?~Y86h1V{ytd`RSx(Qvnt>kWy7lz0;=x7Z2jD&dUZNcTaCCetZWr zRK>rW7q7ub?eKfT$0+m&#TS|f`#&K$X?a~TBNkx9Xo&|1c;Knx?3=Lpbjzlnht|zU<7c4kl9bhgHl_RA(1pfIUL;e|7wNSl=r5*wu#bbF4Dd#hD zc|=P1B0~>@!j>Iwk>qkW?eI2txgn6Bk`2*3JpqxS*Pc2uTKG00S?5^5d##-2vkef~ z&NJK~ss+-bJg=|r&B#j2;YZXk)YC6`N0sI_Fz?=1U!9pMo>@sd6HFa*C_w61xS=md z1o-pOQmIc)}UHF=&@?xZ~iNnFNe>J`@C5d4QwG=*?vaDn?(htgIR`kTV*sOhXi`9N1>QZ&}ydo zidUwmhA^jRyPWV`+*;*zKIkVeu2yW8J~H|qytwd}h;G83uU}%w=`UxDgGJrA{YH-Q zUOiui6{@ih3YcXHc=~qLM7W5ve7Vl0-#tqxVkdq{g_)(&?y_m-vh#=F7QVr1Tsn@T z&0oNBqTfEia6+1MMK$_`MU#lmW6Bk!V`;XU|v%5l~*uJ}6A628x zaVwf{j(8Q)F#w;Bm?3RKK=&L8QH`}JRS7Rb5xQ0@C_A$#pwyeC?nfJ?XUIQX*9%B5 z2Vcw#o%p}Zf|X4=3#QK(@1j>g(0{d7Il>Md>wCh&y<8+i(JYKQpLVF=8C;GmruQ$TNl8~f0wCIT z`-kS;TiNLIhG02|aA43iMClpn^9Cn>D}A{_8b4aISTk~jre=^?%eSO+cM=nZ!PCJ` z%b5C=ZV{Z-7VhaCZ3E<@&}-^Kc*E(eZ|D*}7R9N>E6nM&@7dcJ7+vi)F_{OFraL;T ziGl4b6td`kyu;U2{d%cg&Be&6aPZk28M!Y{T>6A1zU9fV@?3q>rz*-daz+H~d{2!M zeZ0JErKi1vVJ75;5ac6MxhCbz3Q72zQH=bv^D?|1r#E6A=v1`_W(TBh`i{2(znFN3 zNN*1lgSx4C+h6p(i%Xm{#g6HDA3Ni+MJ-Q{!rBB78d>(x6?kX|c88+Tp8(~jrKxQE z4Io`S15?^byu7hZy{1bG6$I}3jwQyIj%MrJq|o~)NR4Y+#&EX+8FK& z;YjT};Yc#9jw*Zu)4Mzs*=O^^orZUwJ)>dAoLSA;7@`N9DSMrKvg-+igM%j+iPPgfQ@PBFU&riig$zF1nP;&O8g z?qFPd5F^0pjk4uZ8&P*mPDk>()(>6c4Wq|x#wfZB>|)YTPO;@?PqTf3{8fI+Y^b!x9 z{LBx`I%;)5Rrt!3%{scWZGcL_Q;+Q*Z-ymKM3~;76;|11(|dICgpY~mc<>tG3xy05 zovAjW3{=Gf*7pid%Q zlJL+D_RUMAeZ|h7tOC zht|-?=^Fg_)8H@&{?tGwx(xtX;*k==||%YB4xnB zfq~5Yb)ZZB)@{-^fw9&y91H-sDI{PeS>&(3%18VG*>**RzyS+?fVML*S^= z$f>yeF%Y*nScT1c9aPuO@>XH8wBAg6ICObP;yBoDfu`Nb!&M(b5c&o3mB~r+T7+vit zP}L8Jer^Lxl=8ma0fv@+t{}IXF|bDR>xls-ARobG;YaK9b$rFWU4RilSMV@CH1vk2 zT-Y!>Osg6#F}i@6uv4zl?HCxm?cEhC%_^7k6=6Ig`5~Y>tWuhhgK1U#Gu8Gdroz!v zdGAUKKReSMbtIa`DW-5zH{F{Ui}ULt*DI_-k+>-5>rtv<)^(+%&p5N)rGMZ#m|L**v)bPTPwveRq}jOiV}kSJ;bfA8 z(2n*GQk{r(BCeNm2UduQd3l|1Fe8ZZC_h|myk-UjWMVLmsI?hB<1dQp1Gl+oRp7^A z3O6p0S|ZH^`PLz0WEO&WoFDK+l0fNv&$q-=%~xbm@gUX%K8T%W3+y#cXG z_u~*1CIiXk;nmz=Mx6hRFnjnr1%t(4XjNwOFm3Vhi1HRWp4#&ENT}NwknsKT9`n#I zw&cKewpuI(+VQ5tIf3Y8O+csLbb108J?>DsCciWs*5wF1Y>J)DTvA^|Pgm3&=nXb8 zu9ShdJvB#pX3RwgLNg%MpY#2~XTtn=Q5hWN^OsVjkL>N71*@_rF53PSmScJx=6vJw zs8N{i9l7ZIY2%88AbXEc5K(~g+foU3{`s4YI;;WL6%CPs19pNR0Qk?(HtZ}E+X52Q zwWq4!s%$Nga^&Lr%~zQfCkhMLUqseOi`lvcxR4Q|j=9?HXo&?B^}prkPE`sD^s=w? zk1y77{_17JdAf?&Yn5f_GYRJ`#zKOlv!duf$GEzJ>-AS$?mZ>u(~0EKn26GgGBvF7 zf@kn?RdqH^1E9kq;~Rf%pNJ!WU2P6tSBc@vEPG86uaf12K>N?nL%E^d_^MQ02{s7} zR2J9rZijCpau!S|a)&jax7^|Gav`ln8Ddw^CJZ?WGQQc-Vy~n>9IR7LpQvT7=!%Ij z|Gb-IvpNC9I7PFO9jaRei8gJI z8sDgR#jn_x ztiYTf9QF{Z^Q&ZJQSx>xPV;<>q~Dp*X^y@os;JW3rj`Z*S<3v;M(4tV`+Cz-kz3~|wDCsO*&C7tQXf`@o%H!k1AsNBz-@x-v8+dC-U!F~X0$yq z8cM9;p>dt)j-(mPQ*ya9+N04{5JYDt1eFnH_GQ*H;ieJ{G#-fgn5uP$#fw{)>q;;H z)qR4q^CerU`O%Vu@!8OXVZ<6c(DBZAVM`L-@bPghSYgJLTJaM5D2s;)g;joFDyu`D zF1#TtKAi|HA3sZ8I`-5L>SY=9mQD2z&W^qwy(9>{Os~} zq&~b{uN(5B*>Z9z28CyBW&)`sfx>sb_2YTkvL{&8RxHcKYxep zoy|>bOc?$?{~fJA)sVKsVMpx7IP@XB&ptGeY>piDBa?Q>;P_%qCK|mEzGgD0LoYEN zZ7b?XtB`B1d8?G$f*;-tgq)jlyWA=}TP*M{6tXL&sp)J@0sdSM-#qxnae*~uU!&ub z%IGW*Sjb}omQ=9^h-29mP8X}%vh8s-p%YNrb`Hgom!wHW#?t=f_R(eKrZYrJ1bJWL zh}Yt;US{2;5>G^H zS8QNO#UXTgGR>a8(QxSxU#;>&UC6YRW$Vz6m&fky*8EvVYHpcakO@toOM>eGKKD}K z!CIBeT(rbV3Q8Mon(aGJ6lIE2y3><1`EG_^jJRrW@34ZrDdGCbo`t!sS|-4^{%4Z zULKEHGhOV%i5*%_xoo;OEt$8!1UJ5lBJ;FsS}kpJ0}02H9g#Lao6%(`;R}i6SikRI z26TU&+J-?D8Q_^?i9nKH)Yzf#Lufq&QnxcypG7UR5EJ7Fl(^V3CZt@Nxa8^!qHv)~ zl$K6sh|kMSvjihB#jH0Kyts?F(Ccvv*6nfgxIKKDEy#(+=jZddEhyTv-Waw}*?2r& zpMHORHo6^Yu+!yz>W@hgeXZg5y#6tr^WqmP3lpa6{dC)MAg||rcXaWK_o|m23?Fsd zD;+V+HbJ;?1Z8Ftb2upzcJRsN)<`A`j{|%Se@+LDyLVlA!n2jlA<9)=fanUyP6nT& z{(QtRzcl1#lEcB5JF|feLlvy+?SoA!E^v4X6b;L%Dq z3X1rIPOx$iNj!4UEi)haV8N!B6kf;qjDr1`IP_*oX;j%VsTY?$utl9k2KiP>nY@{O zlTk+2_tMEU`4c+FEn*@f#v90A6cb;5!|^C`T*aOK4n%|VhN)Pg*nL+C6xCLvzH}DB z6yGF@n`=3U26(~9^@QcQxNmk36o*BihDUp`*cnVkjMDL)4|0rkGR?El8}i2*K`KVN zv|abPwq_7Lvp)irP_)0`lSOyPGl05U?1nZ%BEA_D^K^F#wr0dAv-Jr+*1T=T}@fcR&qW>nj}5FIF>X?T0%7Gcxxc%9Bl?rDsF+zusXC&XPVH72Vb44h+)$}h>Lp>N66Gz zY8eZY(?#TLIJx~-Q<{p4;Y!0Iu3779OEi*ns@P~tr=-4|ALV^J8|gE9gojbR<8YXV zO{a`6`eMOr=PqJ7ZK4g`3K(OU2$JU{RS)$s)Webu>S;l7BjO&#JVWAOwz9JKc&%AO zlAH0DbccYq)cD=-qwjBTrUzvUuZ+Ak4X z-qb4n!Ea?_*8ShMCyV)MY3ykX&$&s9BozHhIheQ>xxqO%nXW{iIDwS8r9B zalKgTA;$Ndvixb3)@XGsON2oC3|hvyr#0wSg)br0i9;->P^}`&O(6MT)!y4*K+!fV zGCurq4?oxrXyFo;7*)%8v55q?d6eo1jWNdK!@8A2Rj(U<#2a%Gp(uhmn3xXX$Aa`f zw}Z3YuHxrn3T>(+bi!h8Ts=DZ9AL48Iw#!7pLtp{<+Sk5Z2H;MoxU^Q6E_LXGT?&A zUaXpVl)H1f4fJ_W6)b(NB#WxJVv_whnV456~&QBPqb0LKELl@r)<5N;@;%c8=Y%8a-Oz0b$8mYcXGU%+&p-S z%+gw^`&Ku9mx>*K?-qW1Z_c)WIg-k5HH4w-c?rPn0;@qJmyvuq-XhW_>Q6M#lMuMp zI!Ld=`N#C#pG)3;x<|ZZKm!0Bt^fesKSnDjXLoB8r@v;EPw{jj*2ONnWap9(Td`WB&Fz16u^h^qV(G@qia+!CwN|ZFDHLO$kOquqOBtP zq3OOkOv-m+jT!ug{_EYRVN6_qeBA4;}U`V*_$&FA%qLYTj`A(BFR020)^|4Mv^3G!=7{H}aTaMjDhM$&d~QrpR@2O#99 z(6w52-n8d!tc_$j?E{$>JKh)T?YZo)7K2M&W+$p<$7?jaj1cKEz2_kWm;f~Pn&ED;^>hDxd*6SXt_kvaf8N_fu$!H9 z+GMNhxXcgF(LK&a=tN^Hg`eS^&`^YFhH@68AOkgoG>7g3Yj^BC@BTP{i>YaueKhXj2x-Ui7q&rh>ZGz6Q)(_<@Pf2($nMhaFTNYf7r;ijeQh7h*W@5AKsE0DI%M& zU0|UB+&p8m;_!VF9R^%lM9YB4KfCJIH9K5lkbeRaOBxCWid57;_W7&gT2U>IDzkf< zU5M#fX&P+CZhN8$ICZgv56YTz$8=VMU6Td%IZ}ik*DOs zuUZ9}A5t=9_)O_rgKm&w*7|PI;1EK$FGriuGUO1aXEVKh4@nzcm$%%aXR1EEu5?bp zx#~Q*T$n&1z^frMw0O(FWqPs4(=h`ou3yB)^n90{WiX{P_+r zKqgLJ0KQ1znsVB9;C#x~m^ovNvDiIo>9sU<#IG|f9ks-{=dacp6 zL_b))^ZOIF0{l8yk!_4jt8EVHRA`}QiH`#}6CaS-F=+c<@>zos!!Apm`G+w{w2?G1 z)7^}zztu9hkOh3>@a7JQ>8%Fd)XE?A!7wDpZLIN3wAa=ZDxdq^xNAfZq^790fUyLc zN)lthfuREIpJX^8C#~(PQi0ija>G z{(&G`+@Vz3C13IE;IuF;^!0t(P0CW|RgDX@a zKl3(@cc|GPhh~`mFbKoKn@kwdHXOCD)^2{Bq7iG#94!542a}mUD;?o=aA>c90B3 z2@6LzH7TJo+(BBum6ej6!8}`n{ZLg)nF^*-p7iS4t@_;XVsdcxm`pm0^8Xh z5fcOl2Gk}D&k|95WiJ|buu)nS64L%mh6$C5uDTwH3`6wy;X5^+Gs+!`e_m^z(?P`QZ}3-A{!Q9X;K2!??GKaZku z{GLd`2qJr2gaTPZm6nTK&Rp3&)H5)S8RHUJO)}dr>-OL_m>Eogk`}`?!nl^ySAa|W z*}%xBpO&Nb^s!sDHw3&})PsUKy6Tm63a8O)G_+AqooJ`iYXXi|y|YVz+3womq0q9E z;H8Gvz*JM{x~(u%Q;*|x)r$6}IA6RPe{p8Ewmn1aUKy8i);!8ml8Js6YheBIg*pZ6 zNlIvX+7Q!?54OqBF2Z6ufvXN5U+^zI4G?fUUng(dxoI14LY`F77i`E%T2S_H@41|; zrj_*sId-Ok#O}E&$d035CfCNxPF;#^yq{V}D81<_<5Gg;9Ac2ZO>HkfRqHE{FhmSp zRN-A7W3I=_aQAOV=>_~rEEA*ke>Im4O2sr$$u7*K#V1h%UBy4?+b}i#V2GTS% zBM5aG3qCEA#VHzce*c8sMl7@=O-F}4I@TzTaN*Dx>5ydn1SDnGv&8G=e#t{m7rA!R z*jgi@g-a?6xU<3)h!B$lvG)W0GWqVx6FAzXKo0!tMIOT|&1-zpqu^0QW)S5E z^Ba5#tmRoa*Mxz+8x;qfnC}?!GI=GV(nuVCBa|`{G9p^9l5pFJGqeFOgLEa#B|4K_g)j&TSOr++MZQZE)1~r3%V%?g;s0`SP^p+XIEB86iQY| z$I z%sGO##A`|$o*Hf8CLcR5zi&II6%IB1FkpLJu91S4_W?lf)6f6`IF#HZY}$Z;H7-ThG_H6dN|Mujpu25-5Hdgbta-iaI^4dLf$AToi% zO4W3om}b8fRwE2#_cd=^?sEBlsdZG@Q))CxGci=F@bQZT_S0wxvcRR9`gihHmzL#& zfDA3!Gwso3jI8st*%MfgW%exHhrYYXD7IMDr#>1)PZh*_WT_y01tTg-XrC#?jm7_R!LXuodjh-|8vsqX4l5(%csqU}) zMtq>}HKuPW8cK<^6UChEft1i}X+Y_BWZG(6W)oSw(xtr~23)S1OV;eq|DXMyg%2 z6>0kQb@A((_boETjK8c6#p-PWk+5;^>Q*IO@Jh9$46KHDmak+cz2Zkik!(hr>$`By zcQb1l(9ub(!hFP`-}av8T?ae|oYQTQURMJfv>iCIq-HyHpUe;Oy3X91+S`fT<@?6N zh#dulm?v#o_@J$r>F>J3)(dZzqZh-S>!LbirlHG*y4_YguB7xHd|2|5;sU2QV?sWH zsO>DRt3hqjpp>xnzFkjZ?6$PbXfb7{20>obcJ$1Mi9yd#e2V1$gLm|t?-Xn|%iOay z8x#WuzXsJEO$}*T`(%|>mWTbz!s>E8clc}?MVbn;r{o7(7A6+hp{odbLIp`Z_1fw)v9Q(0QXXC0@HqE6T6K5RpIZb8t6Be<~9jEm=|qbK3b zX*S=B@X|%5m!ebB>@c{x+sdk7fWlVCM~|&$-sl`3w6;N~UhYY!zZoeeW~iGzLR(C$ z{oLLtS`A0Z%E1cpY#GvHamz9uq(9Yw0Jq=_LUth9*(NdQEPm8)n%n6Eo`u8Qz7sZF zXmXmybo5ojk!hG{T(P_sFMbI`Wxbr@vSfPJZE|8zcP$%bugf+{r?iO>8vaQe>KL(G zoY5Wu*KrvR44SXrKu}1BqAn0__YMEs06l8e8!gq~1hSsjNdIMsj!6Kj^4Z1|*wCmJ zVSk*uCj+%~V-tPofjFtcV;$Ks=NdV$(Y+7|3fN}jUHus7n57bFxr*QzBZxBG8dK^Ii3Fl7C2qW?u4KTU1rJ=AY#aSO%Vtfr%anTW2le#iUW0eZ%G=&sF9O<)r^MK-G|U6=;_(ELF}gEg zX2aIPm(0|}_0@Y!?1V@RBP+dh9z%YA-9uI`{Tf&alv%M$*m&85oE{^5`;woT3`87} zImeQ=Q~?2h3!T*&kB(zCQDVpwIvwlN-KY0U7+3Z^YBOpg`bDfzi3=?!ib8$o{^57G zq-W42836@3Q61L@oUs@Svu8&iK}~px#nXA!=*GmU*TI>fi3wM{gxDql*L7KLIm_VJ?ByS7^m^^%{hs^-xOcHNyBe)D1kba#S#Hu7-DD3d zoMe>frLy|!G}nn9Q$IMVRIuw-cQnQhI!-=hh!n3wq7e&0=Ej;}SP@T};iE}m)r$?z zE`adB$q?O0pq#%rjz%a&tiiVhY|ES){@8>H&&hA~EynLX3_}|J@H2G|Q*-U*wf~9G z5baER1Wn3x3qwX)M|7XDVp*=eMAJd#4B*$%dq1!I4D=Po&hDMpk_-oM@Fcqf@q*RS zV~BmZaHB=3Bp9pZ4{1?s44#f&^o~;BM*$ZNDBBu0uKc>6DOW~N0G}EvyVdtwcEV;# zjrGN;p`aelo@C$`mJALjL(y}?(?*raCJP?f8c&vU*bb10PM|UpmRU_fCKff0#J2JI z8cktbx|4**MW;lG0V> z`*EU*InzYK4E{=RnP3%|Uax=VR6$Bo*5oLC;M?VV^OlScPoY2c9vWIbjDFM1zUvn^ ziGnSj?K|3p__d{Mr}nulWk@CdP!|~vRvFu>w?<(!;Q5DrA40JbYq2@v9-1F5rf2Mx z0o2nNp<;eVcyO?tCxO+W%}j{b{w!@()8CdX)RK6F3S7G~{A{l$femqRe#4m!$~jAE zuYl;a$m4DpD8v7}&)7A$Z*J0xtZ`rFeo)(b!J5AvXX`raVbtt8^BEJsB9z9YKpwQf z>{>ZMkrX6?J@*v*ZTiz&;gXp(K)9kSn;Rcy%VhG9MM(2e^N_vKKVcf=w>1bx8uV+f zgkO`+xlQd%+tZ`>b)7q1FLd=ypUG|6z~AFrg{+_! zdWFcdpEThK2r-3l)kT(Ahvca_bMciKWLpd06O5bL34ojmpCcaE$2}ZquXPhl%aEnm zCZ;qM0fT0qy=b}FmCV_tL4r=R?V&U+folxBI}F3znVS4hQ1(VgB7I-hu0Pe03{!4 zwHr73_q`;=%3uRo=PtxBmG)5C8ycuq@uA7~$Q!miw)I8}M{)M^RxZD%>_bS1Sl8_$ zRcQ7t*UAyz#@$X7yVSgz4fgLllSq^)E8yo7uVq-2!bNFllN)*Si(D332Jih zn__ERW<~LAim3kfN#-%B6f9)-^bPv)vjReI2+N)SOfb1^n56qYiKWozlpo1I2q7a^N+Nye`e$SozxW=(-+>)h${L3@-FQ5Jz*&bR#=&xxK;H4#PE3yd_5)h0rl;B z1FlK$-k$yR9$Ur>PZ^FWd>rjUJ8;mh5r%o~<@YtZ9>F?};|)|OI-XdAdHU{j5IH%i zu#s4GG?=;|MbbCS0q?=px@f4fSib#L$uM`uv8M=}naXlYn`=FYMh3a23))>TwE!+& zC5`vfXfFaD+k&1ciRS6Dej4 z?<4T@=>e1g0L4Gvfc+=8b~bTTHgR_Ti)1tW@&60Gp@r>fT94F#0_t#2!XR6buoozV zD25=Ze=FKYr!VBDNN9k9Xk&oU1~bP494JBG>g?jsvi-wG;5ue`A6uEtWycdiypz25 z)6`@aMaPP}PT$DxHwejI6;_qjOkK{ro>G7g4l+v_mepvRHln3k?5zfQN5vbaAYV z6tak&U7{u!JIKxZ@0*JKbJ`Ar&@Kun6Cz(Ci(hxnN%nkr=s5acsE!lw0+I1C^U4ky zq-ZK0#O?+iK}4a*iws8G7r?W^g9u_B9k2Sz5`Wq6IY5@SnjHVI*M97mju#LEMRe7`X5h||GD7s<$pvW6Q$uB>huXb_MfKBeNAHXibAqRlJW zb>yDZb-q$;E;DAM90P-)BD12!%27GEjT2)w3Dtl|R&GHP>%dAVN#X{mT%NX*-ch`k z+A&CVo7-=Q-o#j|&xEXat!S-WJ$Vrp!lKmJyAFCTUsOzJNWsdBV`E zN^5yFd!v@~@fY0PGtQ*+k;jLd(v2f+jaVu&qPwy25>gWONClTBx2%1!xb+RNv*m!> z%x_B&c-+&on_kU=Aa+N}>2a~5i9rij-V-f~9{QY^?W6pTqM%yL6McFgGjM1 z#XUYbx1Z}h{-;d_M&PB#{?&7S<^d!At4$i%+yAdge!iFgIx^#Bg1M3W%g5s`qNUl8+3iAh4GRD;v) z#;Wrbly*o^RiglHj&84QwohD7-?4K>AMAnwY*tp_7kGel8uU-QArTsw5Mx>x6B5XG zR>YFr^qJxDKuXc50&JG&SP>`jI-9y(O;K}urmq$HiNgJs#yay$&Ec54>o@Z+Zyzlq zDGwoPeUfug>-9C~%ckP+T0m$g{lmG!c|%;g3%NmVijk_ldZ{5^`^kAE=l0}e02j0S zr#0z$$zPq*ksV|0J^*?NHq#*t80RO(d%6|*~b#3@` zjepr}`7;&!pGcyx|F;qU zBQg6=ls{L8{S)Q!lUIJW=Fhcae**kDVgFBnV(PyE{yBaBr|6$i(tnCtf5uHe@9p$w z%=Ax$KWXqk5hg$L*Z)fq|9_-e z`BVDeDa1cz0f2A90Koqs6n~2UdvE`*;!tA$BK}`}zk)Q_rv?AD^a2iG{C@__1m`_K FJOCOis%roM literal 0 HcmV?d00001 diff --git a/회차별채점자료/2505/hml_변환/DIW_2505A.hml b/회차별채점자료/2505/hml_변환/DIW_2505A.hml new file mode 100644 index 0000000..790c812 --- /dev/null +++ b/회차별채점자료/2505/hml_변환/DIW_2505A.hml @@ -0,0 +1,4220 @@ +1user2025년 4월 2일 수요일 오후 1:24:06^1.^2.^3)^4)(^5)(^6)^7^8^1.^2.^3)^4)(^5)(^6)^7^8