жІ•…D 94&+ 9 9 WaUжЅ%œу™Ѓ\ЋIqRM{ЩычбЌї4”ЪГ{ЖГTДm:Ј\ЩГe„cz"m>$ 4§лš;д%_33 в§џ…ƒГ'U:*hSxѓ^ФКЮГџћiХМЕЫszл‡п gР{ОE‘щF=WБЋчп’ы–ЂЪ3YЛуD"4Ьѓ ЏlшШE]зСG26veNt%iПнфJ  Ÿ#}ЈБI™ƒ`ž]ЇvЈjTšжЁ“њёЭ“$ШкЁhqйјвэHKeщšBZ8ИВŒВћшi€^ШЏ Cь:d}@ЏТм –>YДХ›vHcЎ’^ЋRлpMѓ%АEXтBE4мщєђЈ0‚2ЫPЬ,ъœq!ŸУR˜їУ‘7†ћЗЬBіЅqH:“Ъtѕ+;3‹Fь‘?9z$KlЛЯЛЛXѕшХeŽqєњ w'кѓcpќіВ6њюirQ+JКV&!Ж›kсПžYX Y>ћшмМъИПЛrzПsAљџПХc:l]šAЭ\B€?€?€?жІ•…D 9 209 9 Wa.< юtбАЕх+`YЄ=nš,Gч~Ѓд{ЭПiьэЊЅОуЯy+&, ХWsBЏCB\}OЏ…ћМVн%~с БсF*ŸF:Лѕ„s‘СЦЕЂёЙе—АЫ§‡35ї=ё8BE}ЖљЖђŠv:ДRуТ[у!ŒE•œ UЫ Mди{8Ђњ№ыg67>ќІRБлЏ\ЫzьГА8DІџI?ƒ`”‹Ьѓ.а•кI.2 Юˆ#&„•–yhvGHhQCџ$NР—езоЛа­Œ™ѓ;жУ::ХlКJ"‚щп”Нš!чvHYх9ЮLxT™ЏmФ–ођ ї,А–ЯŠ—ЗЁїТœЮЉ­UQМѕ˜[ёБ”Ъn:­SХЪe&tпv5K%nDргg[ЂuVзMT‹…+zс]ЁSиW%мy„>ЖxЁ3ЫwЭŒТЙXDчрIВ'іlpF@уНюgТ•чУ§F §'WshќГM)yd‚#h5˜ž`ƒо€+]ЯгПˆs˜2йF‘TŒIHЇХˆЙP ,MUђ#6ЭЖvјЩŽeŽŠIZŸЭАб\ —IE3:і4ќ'#A7rˆš2уаFэ№х%пOС?KHYVhёeІeт@Idfч<8Zp82н8rѓЩ№ CјŠ ѓ$ПГŠ/м~ЏCA!ЕŠ}вїтЖ!,h7yсˆюfЊ‚HQžkТp3(V:йЩAЊ‰§уЈ м–›ЇuЁх…чwќЧzтe}Бd„џЪZiъџРŸ†`]i”улў иЗЃTН!уTЗоRЙZЁ ‚˜va@ё1АіУлuгHt”Sє4&CУ›Я‹hѓрЮч'”Нj]оxxPŽhбіB|ІюŠfJszZNя™сЋ&/џ№Ъ$=›ЅM’jКy|ШИAj…mшЎ›ZН† =Цf•Xьё9VЪU Џ(№Vи† }XьэдЏњД>сeФБпЅ—В xЏŒяОkЬЮD[ќcГчLь”Н“DCУОŸпrbЂrvЋ,••ЖJЖэ Ћf3й}Й‰Mшq№Dў@q1Є9ЯKЎ[)œVzFf*€э3ф]Зšд”{ш$Зацž Ч”ЁтДіveЯомЯМ!AzЇ6а§ŒОн;4&ОOіЈ†+ YaїТ†…ТNp–ЙšsЯC8RЋ_vЏqŠ›]b‹чhvqM}Sv™ЪўО@зшi%ЃѕхU}-ž@ZL+ˆіЄžb\Ÿиž0€ЯОђ;<јVФ: в}?ЏrоB€?–A€?€?€?жІ•…D 9.#509 9 WaН ˜уZаиЕ;•”'ДЌeЮйВ Pƒ„АфЖСsMŒ‡›ЭЙ€з[]#–:б–eзK—H€Фq4кˆT&иažЮ‚тЃуrѓ…D5@hоU%ю˜ѓбСz3ЗНu™6\G0ъьщ\XV q7х„ІЊDСЅOi ЉGjТ?Lx@юyМiЭЧлxЩ~§кE$6ކQ vєщќ ХyџŽМяŒdЦzМ•ЂР?а/L€х8е[йсбVbC*HˆОПЉ•РCжЙв|o *тa@]!еиїv`ДD _‘eЇтВxОw˜5%Vєс‡iЮћs}p Ќ[]9žьЌЊk \a1ЃJЊŸ;‹ ž7јєœjуE=ђKхV€ѓ>Я ŒЌ‘яјђY”ПѓVМ ruWyOЖ[#z{$#YcT$oъŒ.аDмЮEшзсl‘Gяі"ЏВЛ7нхLЮ<Іь‹"™чЬ>‘еžлрЏЇсMXzСїZюЃ{e‚-›і2NњwлЧЏЁЮoю~GАГ;gG(зtfoVњЙ™[Ѕ-hдю­*ц„ё0В\ –f‹H‚YqрOВ8e‡ŽHYкFbЖфсnўp~g?в‡нQHQZ-ЬЖ‹;‡^з ˜Нкпп Ъ1JщUžЇ4#§ЇЦЪэ3ЗJю<С2щрАšVšzр‡š$Ђž„нбж^*hŽGœ†Ўжб2N„бСЫёєuuіМXфєџJгОљ`4:e-–ѓ 7šаzнзШЮПk‚™яДœЌŸЏщЇђы4У aё+АŽЮR*Яrž+М*RыРнАь8ГњХHж№ъ‚<ІoЁ4Гœьd~Зhpх/иžWHy№л^ьJœ+z1Ќ:p%Ђ0‰=ъйn?§џ>€О A€?€?€?€?жІ•…D 9 . 5.79 9 WaŽ.їw 1ї`ђe ЃfПS‡4*LAщйewlLЋGѓsfk|ш^сxZ№Ђ ћШ5 ЁіD)YjРвєi)'Hъ^'CмбТЛыћъcy'š*Šw~ˆш ;3˜ўЊФиЕh#wMк‰c ДBc 1бE舉VјažХоњЦxЗАYЦЎ~YHЁ!‘ЧzчQТпЗн-­ШE"гмЇ.d,НdЭМ<7ьeе/ГѕмP*ШšЯ-’ї‘›dю‘(є/ё!;Š‘ЮЮUЕ/&WгiBЋH 7šјє.=RžWЉкFœ:ЎЪЙц™ˆЙ"оМy!HqsбPWўfАŸ”ЈO,‹ЋюC—qЧ{(ŸЩ[§Н—™е6Oп—РЇс ’Нj—ИР5Љжа"чЉ <ІV!wЛŠij0у-ЂFЉђo­–p.И**х;Œ'&€б4hXЬёuэ…§ђю•]ЪОёœВ„-Уu<дOјхЇкЮ1•`Ђ^1§И?Ѓе›&жцS§$’‘(IК‹Ž]RћmђЖ#9‘2{gsћˆCgkйўЌ р~ yЇxpч•ѕщЌtЏ bNАЛЕ„YШ0эE‡$iч^6[n †1@ч›ћћnО(ь{1AЏdФр,ž:’З)6–cO'ХwЉ•{ТЬ+Г # Nк5}цl]9 i*лЧ 2-ѓм™Eєі4)Sбf&ƒŠъPsжmh.тфъЏўPfxАІ1 $€Ї§mВŠкZ- AwOтK–f]SI€ш›/;…LŠібЃHoœj;Jw*іBў_П••UgОљьяaJ2АўЄ#9O:3МwoЙЦїЫ/+“4І‡ћS $Б(YЂWKф"ЈъвˆХ=Пoй*ћ’EE„0ЎДэ}ёњ:жШW)Є7kГАZЙ žѕ™з€цœэе2gTƒr"НыыV †A|А JхцH‡є%ёт‹XЈ<э„ЌЁ­ŠКє$lНn”q‡8…@Œ'/­Кl+Kџмg‹!‹x9 kЖyнЈЃ$™гfD†Kр€*‹ѓ?Њ8њ(уBzЗ†(R›KgѓЙЂ7влВѕоdнЇЮч+ОњMp•&jі &dаšА5™kдKšЕПuMюн^sвWdоэзœR1БГ'U€фьйVS:!р)ќЎ][„ AЫšD0№5уQb_cЭK У^^л @qЃ)™ГЩь‚Ѕуд˜ХkUЙ%ЁqQ%ы}аY№E‘ѓњЛ/•c"ЇЇD>њцВМЖfaЛ:в|ПHC€?€?€?€?жІ•…D 9 -%< 09 9 Waъd+0&э}СYЖм*8Qx>рїQ:–bяЁIЇZџ[ЎгЗ~гЁ"Ѕ^К’\жЅ;+I.(:с #‚Ш“Шй2%ШЃЖ>OУ а…­=Šи…ёSУ‡Й 1gxиАЏа"ж@9‚diГ v8п1ТhЊ ьЁ!Елn[ #ќѓЋизт*YЄмqєЭ0К‹Ѕ`tN|{6ыЧoœЮЦєд‰ЕТ|‰[Rv™ў.I˜Й0ЌќВ9ЫQЩ‡lвЏTDpНfшBqVnС:шЄ7Кљ`…В‰зAŒЫKшЧђn#в~pЬЬжФ_Nоs–є‹xwќХO)/йИЋuB]’аУЄЉnD|AћЁдi)­•5ѓј.ќ8Љ ‰\љЏюЦгзШПaћБЫђ> w КџљdЯˆэо…fї_хЦ~еE%Pu'0 РжCвДC0З+'Џ„Гѕ’щл;–БЊГжЫ1Ц.E'ьЪз­КЏЕo {šп" jtЙ•­ЩwdSkvє†ЭlГ5U5V6П> ч†hЕЩ3j>Ћhе`Y<О^+НйvоъЁшТЛVs)š=јvˆ§г^зНАм]п,[кфБN1ъ$hу_юЫмG>zІяЩМZ ЭњАЎЃ{)яМ\Эƒ6 (žnуL–•НњрзбЉюOOg|\@кЁtOYФПсЋeяfމFѕ Пcdш$жЦКџѕчˆ‹A Љ™ЁKЧёF_žй}yWС7’ыHйE€‰г`zŽЊЪDђx/YЦч%Эи›]В ья(LYўIЪ;Зџ4;ŽШ-єЋ ЯoлУiVП"€‰“:8‘…N$Gmь@‘ЪЈ…,П%с :+ЁДю‘K№пыlB/|JЉж–УЛ[OŽr+B’ Vћƒђ&ŽFо{шыи2Ќ:їсAтвˆcјЎв&ДŸЭЛŸй† і”іІ—]КŽdˆ&=R•nјЁй- p?<џД‚В/AOъЖЖ9Bо’ЄЕЧdeПLљe\G‚Йeg я^пЩ0јUДУ];*МЮ7п[ZŒfя)ѕ7Дa[bMО= к”ЉЧФR•э}Щ8„0 ЉюџJz*ЬDzЂ{р9ШоЇC3‹Apїж›ПђC2уЕaэщ–L„I1rхО ‘*zEїЅ0№=9šЊЛЉ‰дЉЕ>џI+ЪV•Ѕ(ји§Ј Uz{­…y^ь_žTЁšтTБO C"Щ•ŒЊ5]2iїѓ…BЪyJлGЂ0‰=ъйn?§џ>€О A€?€?€?€?жІ•…D 9 58:09 9 Waœ`;ц( ћБ`s/ЗSѓ>=ёБS”…№ЖgЃc\ц'hZк›(П•ЛƒYЃФkуj‡•xЎm§вVRRКN„eѓWгЬTЊІЏsNѕѓ7%њгДсэ­P и(h•ш!l‰™бc!КБЦВЉ€OбАз_х*ќ’эПFуe›ЈGњZvЏoЙњбЗkдеG#Х›…`Ёљ93"(+/А†*)?#WѕИS—YаyjО>T7FАЂ+тm~/FЅwЏ5% 1й XХОџСNU8ѓхзА'Ё‘S€Ѕ.?™ьЮМ9[џ=^ВŸк|цŸКИљ Œ8wъЗEцг? €5^э‡Ћ  QŽЎЪ  о­h€(ъ˜Бд‘ьЊіL˜–*аVњ€ŽEўубlт4~’ЊЄЄЙПyњ7 ю6Z\йЯџaмuдв?вЛДЉО:з„šZsчƒš$ЃЯвЊёН MUjŸэŽwsdГћ€XИ28/эХ—g?‰@ІЙэJkB pчnс*†ЄјФsg‰ЇP тWЪмЯЎ97'/ў–Ћ'3аяSP ОБ‡4Ѓ<ЖF ’щЁhн<^0 LіSБё`ЃHЧё“ћ]МЂ дšVЯ, єёњА‡\zЊ5БЗi1Š.MРиMhз+еo лМЮ‹)вщŽ5Щ$FК>7ъё4Ÿюfb‚СЪщї`•_‚г9)tуэ_q2MsЁфћнšвхѕ ‰1ЮNх `Krя%Ц{UјbHј–Nч/Šл,мъlG`УVuѓЛR~ЯcYNЈtЪ8*Њ?%™2ІЯa‰|}s 'зeѓ­ЈSБktјШУ3˜|LfŸ1/цъНўЙnŽƒJЧ;mЉHыыy'ъ[рр}+й—P–V’IКВюЋ…А~FЂxЁc}]фBёO>ш.ƒчƒВШ#%\ЩЏЯь"Ій‘ђЈ›‘=э/Щи|Qкˆ?/I DќAїaТтє_Рс]щh0/g-ю .=<§D[Ъ<Ÿ›M’1cХSо@u–т@>5jгŒы”†ўjчgлЬ+ыЙ‹Хз'?э2TLџџjC$ззњC~# *ЕPЖ_’к(dьыпpВš™ЙЛ№Ђ(~šdё~%ЉГАѕpџь(Dќ(PjmЋ@jКБЖ2+ИЋт™їqˆTУ[ЈЯ„ЦЂњџЅ‡f§O=TѓцМ'Е)œ8—юVu“$Џ!˜ Xyw0мЈMqŠ:9Jх\ЎњмўРиC^уб}"Л>ЖŠЛМvUМh4nПœJлAБXz>I;x?yљAиA€?€?€?жІ•…D 9 .$ 13)59 9 Wac [­Š#дЙ^’ЫHW›1<ъўмЙЦ ~аЩN.ЏфŽŽМ˜=&a)xLHпх( y—еHё„sЇEИ'ЖяГ\•C=`+[wЬfcІО^ѓˆ$iЏEŠHR+2ŸвсЊЩњЭu†џќ+У|мљИD„ 'Щsњјc>yEрsФUкx wя7KZWЈ+zcш Не–†!"Акhй)њН‹ёL_oщyжIЫѕ*ЏВ?>4і’aЧC1ЅвRГ›„!ГOzНacсЖ/ФЏЅтgY?РrПHоМ”РЁaкч…ТчA—ѓ’к%Џ 5бУzўN)MvђON…m7>ХцHУсEЛ<Ў‹OFYЉ>+ScšВIGgГFj—;N№}6JNЙ6ўn-Љ%_Љo#)xЎŸRаo;лфВlbт еkШбЂ0‰=ъйn?§џ>€О€?d)П?RйР€?€?€?жІ•…D 9 .$( 79 9 Wa&пA‡`Љi‹T?/ъ6L‹Yo—Ў-$GE,бŠз"z•П/ПrАы `„,QI+(e2џЕ…Ѕ†TХ4d%ШœZМb(УjіќЇ]pЭ…Ёžм Š$ъEКtbЌjqU Z§?nhsu 'ЊDz‡(Ў ~ gіžy)!АэЅД b™`xХžLыГDИз.ЊMYЫ%‚(sщ щћЎRŠђНJП•(7Ћ„Щl{QSблЗ‘—џЮš•K Џжэ/MK6ёTЦ%ОQI~ЅbY9'ХуФЂGлиe0нуŽьЉёЇHƒJi-аУtz]шkТƒ- [n‚э‡O‹‰tYФƒP„ˆ?кгQAyайЏдzШ”cщuXУЛдc|^ч)ўM4щBh›нщFі,­LЬаХbДsq№šћŸ}ZœgЂ$AuчЬ"паЅъЙWmІНЧ†Ћ@ш +ќэЗў>є[є >~q@kAХїcгџ5N“ФœУA…!“j№ёB ŽtˆB;Ўя{оAUФ;Ў^Ї…ш!{И}ŽА’cАѓНАˆXЇЋXЃ7KьŽјœSkGps^RhхозЊefЯ&і‘`g}X:3b5P+/Aу?ЗŸŒSˆ8ъ›6˜dвEЯˆh<Ћн+o`ёi@j#ЃHН7uL~™JžXЄJ‚@DЖЕ•ЁyїО~ф‹щŽZЏџˆІыeipLѓгѓQ§c0–яWeО–ПуIpЅЭлLйˆВ@Б3ygХƒњЫ8їЧдoFїтY6ƒЕ<€'ŠмvЉYЎe43^ˆZу5БлЃ Š{~кАG4# З0Ћp /љЏК>тГЫўЕаoјuч{u ŠщmЩ‘LЌЕ$|аnSЫŸѕъш­-ђ=ŒЈr‘X‰ў–О;"ЬјЋДы†94NnНR”#7юIћ|Jg&ЧнЬOу…ыKЏв\ЪЂ0№Šy$цмo €О€?ˆћ=іQС333?333?€?

$ 4§лš;д%_33 в§џ…ƒГ'U:*hSxѓ^ФКЮГџћiХМЕЫszл‡п gР{ОE‘щF=WБЋчп’ы–ЂЪ3YЛуD"4Ьѓ ЏlшШE]зСG26veNt%iПнфJ  Ÿ#}ЈБI™ƒ`ž]ЇvЈjTšжЁ“њёЭ“$ШкЁhqйјвэHKeщšBZ8ИВŒВћшi€^ШЏ Cь:d}@ЏТм –>YДХ›vHcЎ’^ЋRлpMѓ%АEXтBE4мщєђЈ0‚2ЫPЬ,ъœq!ŸУR˜їУ‘7†ћЗЬBіЅqH:“Ъtѕ+;3‹Fь‘?9z$KlЛЯЛЛXѕшХeŽqєњ w'кѓcpќіВ6њюirQ+JКV&!Ж›kсПžYљџПХc:l]šAЭ\B€?€?€?X Y>ћшмМъИПЛrzПsA?’’š™™>ЭЬL=pB€?€?@Ffff?џџџџќІRБлЏ\ЫzьГА8DІџI?ƒ`”‹Ьѓ.а•кI.2 Юˆ#&„•–yhvGHhQCџ$NР—езоЛа­Œ™ѓ;жУ::ХlКJ"‚щп”Нš!чvHYх9ЮLxT™ЏmФ–ођ ї,А–ЯŠ—ЗЁїТœЮЉ­UQМѕ˜[ёБ”Ъn:­SХЪe&tпv5K%nDргg[ЂuVзMT‹…+zс]ЁSиW%мy„>ЖxЁ3ЫwЭŒТЙXDчрIВ'іlpF@уНюgТ•чУ§F §'WshќГM)yd‚#h5˜ž`ƒо€+]ЯгПˆs˜2йF‘TŒIHЇХˆЙP ,MUђ#6ЭЖvјЩŽeŽŠIZŸЭАб\ —IE3:і4ќ'#A7rˆš2уаFэ№х%пOС?KHYVhёeІeт@Idfч<8Zp82н8rѓЩ№ CјŠ ѓ$ПГŠ/м~ЏCA!ЕŠ}вїтЖ!,h7yсˆюfЊ‚HQžkТp3(V:йЩAЊ‰§уЈ м–›ЇuЁх…чwќЧzтe}Бd„џЪZiъџРŸ†`]i”улў иЗЃTН!уTЗоRЙZЁ ‚˜va@ё1АіУлuгHt”Sє4&CУ›Я‹hѓрЮч'”Нj]оxxPŽhбіB|ІюŠfJszZNя™сЋ&/џ№Ъ$=›ЅM’jКy|ШИAj…mшЎ›ZН† =Цf•Xьё9VЪU Џ(№Vи† }XьэдЏњД>сeФБпЅ—В xЏŒяОkЬЮD[ќcГчLь”Н“DCУОŸпrbЂrvЋ,••ЖJЖэ Ћf3й}Й‰Mшq№Dў@q1Є9ЯKЎ[)œVzFf*€э3ф]Зšд”{ш$Зацž Ч”ЁтДіveЯомЯМ!AzЇ6а§ŒОн;4&ОOіЈ†+ YaїТ†…ТNp–ЙšsЯC8RЋ_vЏqŠ›]b‹чhvqM}Sv™ЪўО@зшi%ЃѕхU}-ž@ZL+ˆіЄžb\Ÿиž0€?–A€?€?€?€ЯОђ;<јVФ: в}?ЏrоBџ•@BЇ•Script: shader code Aš™™= A A A3DRad_res\system\shaders\0002_pp_smooth_glossy.fx€??ShaderTesting_TorusKnot€?€?€?H(00005Script: shader codeжІ•…D 9.#509 9 WaН ˜уZаиЕ;•”'ДЌeЮйВ Pƒ„АфЖСsMŒ‡›ЭЙ€з[]#–:б–eзK—H€Фq4кˆT&иažЮ‚тЃуrѓ…D5@hоU%ю˜ѓбСz3ЗНu™6\G0ъьщ\XV q7х„ІЊDСЅOi ЉGjТ?Lx@юyМiЭЧлxЩ~§кE$6ކQ vєщќ ХyџŽМяŒdЦzМ•ЂР?а/L€х8е[йсбVbC*HˆОПЉ•РCжЙв|o *тa@]!еиїv`ДD _‘eЇтВxОw˜5%Vєс‡iЮћs}p Ќ[]9žьЌЊk \a1ЃJЊŸ;‹ ž7јєœjуE=ђKхV€ѓ>Я ŒЌ‘яјђY”ПѓVМ ruWyOЖ[#z{$#YcT$oъŒ.аDмЮEшзсl‘Gяі"ЏВЛ7нхLЮ<Іь‹"™чЬ>‘еžлрЏЇсMXzСїZюЃ{e‚-›і2NњwлЧЏЁЮoю~GАГ;gG(зtfoVњЙ™[Ѕ-hдю­*ц„ё0В\ –f‹H‚YqрOВ8e‡ŽHYкFbЖфсnўp~g?в‡нQHQZ-ЬЖ‹;‡^з ˜Нкпп Ъ1JщUžЇ4#§ЇЦЪэ3ЗJю<С2щрАšVšzр‡š$Ђž„нбж^*hŽGœ†Ўжб2N„бСЫёєuuіМXфєџJгОљ`4:e-–ѓ 7šаzнзШЮПk‚™яДœЌŸЏщЇђы4У aё+АŽЮR*Яrž+М*RыРнАь8ГњХHж№ъ‚<ІoЁ4Гœьd~Зhpх/иžWHy№л^ьJœ+z1Ќ:p%€?€?€?€?Ђ0‰=ъйn?§џ>€О AxјƒЇxSkinMesh : TorusKnotValuePrint : Reflectivity        џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ џџ џџ џџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ˜™?џџџџџџ џџ џџ џџ џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџž1/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Applying "The CG Tutorial" examples to 3DRad HLSL shaders // http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter07.html // // In this example C7E1v, the vertex program computes the incident and reflected rays. It then passes the reflected // ray to the fragment program, which looks up the environment map and uses it to add a reflection to the // fragment's final color. To make things more interesting, and to make our example more like a real // application, we blend the reflection with a decal texture. A uniform parameter called reflectivity allows // the application to control how reflective the material is. // // I've used the 3DRad default terrain environment map, and "torus.jpg" as the decal texture. // (see Skinmesh/data/TorusKnot) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*HLSLSTART C7E1v //The following data structures represent the vertex format //for animated (skinned) and static meshes respectively, //as it is passed by 3D Rad to the VS_Skinning(), VS_NoSkinning() //vertex shader functions (see below). This format cannot be changed. struct VS_INPUT { float4 Position : POSITION; float3 BlendWeights : BLENDWEIGHT; float4 BlendIndices : BLENDINDICES; float3 Normal : NORMAL; float2 TexCoord : TEXCOORD0; float3 T : TEXCOORD1; //in object space float3 B : TEXCOORD2; //in object space }; struct VS_INPUT_NOSKINNING { float4 Position : POSITION; //in object space float3 Normal : NORMAL; //in object space float2 TexCoord : TEXCOORD0; float3 T : TEXCOORD1; //in object space float3 B : TEXCOORD2; //in object space }; //The following data structure represents the vertex format //that the PS_Alpha() pixel shader function will receive from //the vertex shader functions. This format is user-definable. struct VS_OUTPUT { float4 Position : POSITION; //in projection space float2 TexCoord0 : TEXCOORD0; float2 TexCoord1 : TEXCOORD1; float3 Normal : TEXCOORD2; //in tangent space float3 LightVector : TEXCOORD3; //in tangent space }; //The following data structure represents the input/output data format //for the VS_Bones() function. struct VS_BONES_INPUT { float4 vPos; float3 vBlendWeights; float4 vBlendIndices; float3 vNor; float3 vT; float3 vB; }; struct VS_BONES_OUTPUT { float4 vPos; float3 vNor; float3 vT; float3 vB; }; //************************************** // Added for this example (C7E1v) //************************************** struct C7E1v_VS_OUTPUT { float4 oPosition : POSITION; float2 oTexCoord : TEXCOORD0; float3 R : TEXCOORD1; }; //************************************** //The following shader variables may be set automatically by 3D Rad, run-time, //depending on SkinMesh property dialog settings const int MATRIX_PALETTE_SIZE = MATRIX_PALETTE_SIZE_DEFAULT; float4x3 amPalette[MATRIX_PALETTE_SIZE_DEFAULT]; int boneCount = 2; float4x4 mxWorld : WORLD; float4x4 mxWorldIT : amPalette; float4x4 mxViewProj : VIEWPROJECTION; float4 lightDir : DIRECTION = {0.0f,0.0f,-1.0f,1.0f}; float4 lightColor : DIFFUSE = {1.0f,1.0f,1.0f,1.0f}; float4 lightAmbient : AMBIENT = {0.1f,0.1f,0.1f,1.0f}; float ambient; float4 materialDiffuse : DIFFUSE = {0.8f,0.8f,0.8f,1.0f}; float4 materialSpecular : SPECULAR = {1.0f,1.0f,1.0f,1.0f}; float materialSpecularPower : SPECULARPOWER = 30.0f; float3 worldEyePos; texture diffuseMap; //the mesh texture assigned to the currently processed vertex or pixel texture environmentMap; //the environment-map texture assigned to the currently processed vertex or pixel float environmentMapBlend; texture normalMap; //the bump-map texture assigned to the currently processed vertex or pixel float bumpScale; float4 pointLightPos01 = {0.0f,0.0f,-1.0f,1.0f}; float4 pointLightPos02 = {1.0f,0.0f,-1.0f,1.0f}; float4 pointLightPos03 = {-1.0f,0.0f,-1.0f,1.0f}; float4 pointLightPos04 = {-1.0f,0.0f,1.0f,1.0f}; float4 pointLightColor01 = {1.0f,1.0f,1.0f,1.0f}; float4 pointLightColor02 = {1.0f,0.0f,0.0f,1.0f}; float4 pointLightColor03 = {0.0f,1.0f,0.0f,1.0f}; float4 pointLightColor04 = {0.0f,0.0f,1.0f,1.0f}; float3 fogColor = {1.0f,1.0f,1.0f}; float fogStart = 1; float fogEnd = 25; //The following variable will be set by our script code (see Main() section, below) float fAlpha = 1.0f; //The following declarations specify how textures will be //read (sampled) by the pixel shader function. sampler DiffuseMapSampler = sampler_state { Texture = ; MinFilter = LINEAR; MagFilter = LINEAR; MipFilter = LINEAR; AddressU = WRAP; AddressV = WRAP; }; sampler NormalMapSampler = sampler_state { Texture = ; MinFilter = LINEAR; MagFilter = LINEAR; MipFilter = LINEAR; AddressU = WRAP; AddressV = WRAP; }; sampler EnvironmentMapSampler = sampler_state { Texture = ; MinFilter = LINEAR; MagFilter = LINEAR; MipFilter = LINEAR; AddressU = WRAP; AddressV = WRAP; }; //************************************** // Added for this example (C7E1v) //************************************** sampler2D DiffuseMapSampler2 = sampler_state { Texture = ; MinFilter = Linear; MipFilter = Linear; MagFilter = Linear; AddressU = Wrap; AddressV = Wrap; }; samplerCUBE CubeMapSampler = sampler_state { Texture = ; MinFilter = Linear; MagFilter = Linear; MipFilter = Linear; AddressU = Clamp; AddressV =Clamp; }; //************************************** //The following is a user-defined function VS_BONES_OUTPUT VS_Bones( const VS_BONES_INPUT vInput, int iNumBones ) { //This function is called by VS_Skinning(), the main //vertex shader function for skinned meshes //It applies bone matrices to vertex coordinates, normals and tangents, //which also transforms from model-space to world space VS_BONES_OUTPUT vOutput = (VS_BONES_OUTPUT) 0; float fLastWeight = 1.0; float fWeight; float afBlendWeights[3] = (float[3])vInput.vBlendWeights; int aiIndices[4] = (int[4])D3DCOLORtoUBYTE4(vInput.vBlendIndices); for (int iBone=0;(iBone<3) && (iBone<(iNumBones-1));iBone++) { fWeight = afBlendWeights[iBone]; fLastWeight -= fWeight; vOutput.vPos.xyz += mul(vInput.vPos,amPalette[aiIndices[iBone]])*fWeight; vOutput.vNor += mul(vInput.vNor,amPalette[aiIndices[iBone]])*fWeight; vOutput.vT += mul(vInput.vT,amPalette[aiIndices[iBone]])*fWeight; vOutput.vB += mul(vInput.vB,amPalette[aiIndices[iBone]])*fWeight; } vOutput.vPos.xyz += mul(vInput.vPos,amPalette[aiIndices[iNumBones-1]])*fLastWeight; vOutput.vNor += mul(vInput.vNor,amPalette[aiIndices[iNumBones-1]])*fLastWeight; vOutput.vT += mul(vInput.vT,amPalette[aiIndices[iNumBones-1]])*fLastWeight; vOutput.vB += mul(vInput.vB,amPalette[aiIndices[iNumBones-1]])*fLastWeight; return vOutput; } //The following is the vertex shader function for bone-animated meshes (for example Andro) //This function is called for each vertex of the SkinMesh that is rendered. VS_OUTPUT VS_Skinning(VS_INPUT IN, uniform int iNumBones) { VS_OUTPUT OUT; OUT.TexCoord0 = IN.TexCoord.xy; OUT.TexCoord1 = IN.TexCoord.xy; VS_BONES_INPUT vsi = { IN.Position, IN.BlendWeights, IN.BlendIndices, IN.Normal, IN.T, -IN.B }; VS_BONES_OUTPUT vso = VS_Bones( vsi, iNumBones ); // Compute matrix which transforms to tangent space float3x3 objToTangentSpace; objToTangentSpace[0] = normalize(vso.vT); objToTangentSpace[1] = normalize(vso.vB); objToTangentSpace[2] = normalize(vso.vNor); // Output packed constant tangent-space normal. OUT.Normal = float3(0.5,0.5,1); // Transform light vector from object space to tangent space, and pack into [0..1] range OUT.LightVector = normalize(mul(objToTangentSpace, -lightDir.xyz)) * 0.5 + 0.5.xxx; OUT.Position = mul(float4(vso.vPos.xyz,1.0f),mxViewProj); return OUT; } //The following is the vertex shader function for static meshes (for example the default yellow fish) //This function is called for each vertex of the SkinMesh that is rendered. VS_OUTPUT VS_NoSkinning(VS_INPUT_NOSKINNING IN) { VS_OUTPUT OUT; OUT.TexCoord0 = IN.TexCoord.xy; OUT.TexCoord1 = IN.TexCoord.xy; // Compute matrix which transforms to tangent space float3x3 objToTangentSpace; objToTangentSpace[0] = mul(IN.T,mxWorldIT); objToTangentSpace[1] = mul(-IN.B,mxWorldIT); objToTangentSpace[2] = mul(IN.Normal,mxWorldIT); // Output packed constant tangent-space normal. OUT.Normal = float3(0.5,0.5,1); // Transform light vector from object space to tangent space, and pack into [0..1] range OUT.LightVector = normalize(mul(objToTangentSpace, -lightDir.xyz)) * 0.5 + 0.5.xxx; OUT.Position = mul(IN.Position, mxViewProj); return OUT; } //************************************** // Added for this example (C7E1v) //************************************** float reflectivity; C7E1v_VS_OUTPUT C7E1v_reflection(VS_INPUT_NOSKINNING IN) { C7E1v_VS_OUTPUT OUT; OUT.oPosition = mul(IN.Position,mxViewProj); OUT.oTexCoord = IN.TexCoord; // Compute position and normal in world space float3 positionW = mul(IN.Position,mxWorld).xyz; float3 N = mul(IN.Normal,(float3x3)mxWorld); N = normalize(N); // Compute the incident and reflected vectors float3 I = positionW - worldEyePos; OUT.R = reflect(I, N); return OUT; } //************************************** //The following is the pixel shader function. //This function is called for each pixel that is plotted on the screen, for the SkinMesh that is rendered. //************************************** // Added for this example (C7E1v) //************************************** float4 C7E2f_reflection(C7E1v_VS_OUTPUT IN) : COLOR { // Fetch reflected environment color float4 reflectedColor = texCUBE(CubeMapSampler, IN.R); // Fetch the decal base color float4 decalColor = tex2D(DiffuseMapSampler2, IN.oTexCoord); float4 color = lerp(decalColor, reflectedColor, reflectivity); return color; } //************************************** //The following fills an user-defined array with compiled techniques. //Run-time the right technique will be picked based on the number of bones //to process. VertexShader vsArray[4] = { compile vs_2_0 VS_Skinning(1), compile vs_2_0 VS_Skinning(2), compile vs_2_0 VS_Skinning(3), compile vs_2_0 VS_Skinning(4) }; //The following declaration specifies the rendering technique for animated meshes //The technique name must be 'Skinning'. What is inside the code block is user-definable. technique Skinning { pass P0 { //VertexShader = (vsArray[boneCount]); //PixelShader = compile ps_2_0 C7E1v_PS(); } } //The following declaration specifies the rendering technique for static meshes //The technique name must be 'NoSkinning'. What is inside the code block is user-definable. technique NoSkinning { pass P0 { VertexShader = compile vs_2_0 C7E1v_reflection(); PixelShader = compile ps_2_0 C7E2f_reflection(); } } HLSLEND*/ ////////////////////////////////////////////////////////////////////////////////// //The following is our regular script code which sets and manipulates the shader above bool keyUp = false; bool keyDown = false; float reflectivity = 0.5; void Main() { if (iInitializing()) { iShaderSet(OBJ_0,"C7E1v"); } //Monitor key presses and debounce if ((iKeyDown(iKeyCode("DIK_UP")))&&(!keyUp)) { reflectivity +=0.1; keyUp = true; if (reflectivity>1) reflectivity = 1.0; } if ((iKeyDown(iKeyCode("DIK_DOWN")))&&(!keyDown)) { reflectivity -=0.1; keyDown = true; if (reflectivity<0) reflectivity = 0; } if (!iKeyDown(iKeyCode("DIK_UP"))) { keyUp = false; } if (!iKeyDown(iKeyCode("DIK_DOWN"))) { keyDown = false; } iShaderFloatSet(OBJ_0,"reflectivity",reflectivity); OUT_22 = reflectivity; } >Т 00001TerrainжІ•…D 9 . 5.79 9 WaŽ.їw 1ї`ђe ЃfПS‡4*LAщйewlLЋGѓsfk|ш^сxZ№Ђ ћШ5 ЁіD)YjРвєi)'Hъ^'CмбТЛыћъcy'š*Šw~ˆш ;3˜ўЊФиЕh#wMк‰c ДBc 1бE舉VјažХоњЦxЗАYЦЎ~YHЁ!‘ЧzчQТпЗн-­ШE"гмЇ.d,НdЭМ<7ьeе/ГѕмP*ШšЯ-’ї‘›dю‘(є/ё!;Š‘ЮЮUЕ/&WгiBЋH 7šјє.=RžWЉкFœ:ЎЪЙц™ˆЙ"оМy!HqsбPWўfАŸ”ЈO,‹ЋюC—qЧ{(ŸЩ[§Н—™е6Oп—РЇс ’Нj—ИР5Љжа"чЉ <ІV!wЛŠij0у-ЂFЉђo­–p.И**х;Œ'&€б4hXЬёuэ…§ђю•]ЪОёœВ„-Уu<дOјхЇкЮ1•`Ђ^1§И?Ѓе›&жцS§$’‘(IК‹Ž]RћmђЖ#9‘2{gsћˆCgkйўЌ р~ yЇxpч•ѕщЌtЏ bNАЛЕ„YШ0эE‡$iч^6[n †1@ч›ћћnО(ь{1AЏdФр,ž:’З)6–cO'ХwЉ•{ТЬ+Г # Nк5}цl]9 i*лЧ 2-ѓм™Eєі4)Sбf&ƒŠъPsжmh.тфъЏўPfxАІ1 $€Ї§mВŠкZ- AwOтK–f]SI€ш›/;…LŠібЃHoœj;Jw*іBў_П••UgОљьяaJ2АўЄ#9O:3МwoЙЦїЫ/+“4І‡ћS $Б(YЂWKф"ЈъвˆХ=Пoй*ћ’EE„0ЎДэ}ёњ:жШW)Є7kГАZЙ žѕ™з€цœэе2gTƒr"НыыV †A|А JхцH‡є%ёт‹XЈ<э„ЌЁ­ŠКє$lНn”q‡8…@Œ'/­Кl+Kџмg‹!‹x9 kЖyнЈЃ$™гfD†Kр€*‹ѓ?Њ8њ(уBzЗ†(R›KgѓЙЂ7влВѕоdнЇЮч+ОњMp•&jі &dаšА5™kдKšЕПuMюн^sвWdоэзœR1БГ'U€фьйVS:!р)ќЎ][„ AЫšD0№5уQb_cЭK У^^л @qЃ)™ГЩь‚Ѕуд˜ХkUЙ%ЁqQ%ы}аY№E‘ѓњЛ/•c"ЇP!Љ?HB€?€?€?€?ЇD>њцВМЖfaЛ:в|ПHC?~~terrain0100>[00000SkyBoxжІ•…D 9 -%< 09 9 Waъd+0&э}СYЖм*8Qx>рїQ:–bяЁIЇZџ[ЎгЗ~гЁ"Ѕ^К’\жЅ;+I.(:с #‚Ш“Шй2%ШЃЖ>OУ а…­=Šи…ёSУ‡Й 1gxиАЏа"ж@9‚diГ v8п1ТhЊ ьЁ!Елn[ #ќѓЋизт*YЄмqєЭ0К‹Ѕ`tN|{6ыЧoœЮЦєд‰ЕТ|‰[Rv™ў.I˜Й0ЌќВ9ЫQЩ‡lвЏTDpНfшBqVnС:шЄ7Кљ`…В‰зAŒЫKшЧђn#в~pЬЬжФ_Nоs–є‹xwќХO)/йИЋuB]’аУЄЉnD|AћЁдi)­•5ѓј.ќ8Љ ‰\љЏюЦгзШПaћБЫђ> w КџљdЯˆэо…fї_хЦ~еE%Pu'0 РжCвДC0З+'Џ„Гѕ’щл;–БЊГжЫ1Ц.E'ьЪз­КЏЕo {šп" jtЙ•­ЩwdSkvє†ЭlГ5U5V6П> ч†hЕЩ3j>Ћhе`Y<О^+НйvоъЁшТЛVs)š=јvˆ§г^зНАм]п,[кфБN1ъ$hу_юЫмG>zІяЩМZ ЭњАЎЃ{)яМ\Эƒ6 (žnуL–•НњрзбЉюOOg|\@кЁtOYФПсЋeяfމFѕ Пcdш$жЦКџѕчˆ‹A Љ™ЁKЧёF_žй}yWС7’ыHйE€‰г`zŽЊЪDђx/YЦч%Эи›]В ья(LYўIЪ;Зџ4;ŽШ-єЋ ЯoлУiVП"€‰“:8‘…N$Gmь@‘ЪЈ…,П%с :+ЁДю‘K№пыlB/|JЉж–УЛ[OŽr+B’ Vћƒђ&ŽFо{шыи2Ќ:їсAтвˆcјЎв&ДŸЭЛŸй† і”іІ—]КŽdˆ&=R•nјЁй- p?<џД‚В/AOъЖЖ9Bо’ЄЕЧdeПLљe\G‚Йeg я^пЩ0јUДУ];*МЮ7п[ZŒfя)ѕ7Дa[bMО= к”ЉЧФR•э}Щ8„0 ЉюџJz*ЬDzЂ{р9ШоЇC3‹Apїж›ПђC2уЕaэщ–L„I1rхО ‘*zEїЅ0№=9šЊЛЉ‰дЉЕ>џI+ЪV•Ѕ(ји§Ј Uz{­…y^ь_žTЁšтTБO C"Щ•ŒЊ5]2iїѓ…BЪyJлG€?€?€?€?Ђ0‰=ъйn?§џ>€О A‚‚skybox>`00003SunLightжІ•…D 9 58:09 9 Waœ`;ц( ћБ`s/ЗSѓ>=ёБS”…№ЖgЃc\ц'hZк›(П•ЛƒYЃФkуj‡•xЎm§вVRRКN„eѓWгЬTЊІЏsNѕѓ7%њгДсэ­P и(h•ш!l‰™бc!КБЦВЉ€OбАз_х*ќ’эПFуe›ЈGњZvЏoЙњбЗkдеG#Х›…`Ёљ93"(+/А†*)?#WѕИS—YаyjО>T7FАЂ+тm~/FЅwЏ5% 1й XХОџСNU8ѓхзА'Ё‘S€Ѕ.?™ьЮМ9[џ=^ВŸк|цŸКИљ Œ8wъЗEцг? €5^э‡Ћ  QŽЎЪ  о­h€(ъ˜Бд‘ьЊіL˜–*аVњ€ŽEўубlт4~’ЊЄЄЙПyњ7 ю6Z\йЯџaмuдв?вЛДЉО:з„šZsчƒš$ЃЯвЊёН MUjŸэŽwsdГћ€XИ28/эХ—g?‰@ІЙэJkB pчnс*†ЄјФsg‰ЇP тWЪмЯЎ97'/ў–Ћ'3аяSP ОБ‡4Ѓ<ЖF ’щЁhн<^0 LіSБё`ЃHЧё“ћ]МЂ дšVЯ, єёњА‡\zЊ5БЗi1Š.MРиMhз+еo лМЮ‹)вщŽ5Щ$FК>7ъё4Ÿюfb‚СЪщї`•_‚г9)tуэ_q2MsЁфћнšвхѕ ‰1ЮNх `Krя%Ц{UјbHј–Nч/Šл,мъlG`УVuѓЛR~ЯcYNЈtЪ8*Њ?%™2ІЯa‰|}s 'зeѓ­ЈSБktјШУ3˜|LfŸ1/цъНўЙnŽƒJЧ;mЉHыыy'ъ[рр}+й—P–V’IКВюЋ…А~FЂxЁc}]фBёO>ш.ƒчƒВШ#%\ЩЏЯь"Ій‘ђЈ›‘=э/Щи|Qкˆ?/I DќAїaТтє_Рс]щh0/g-ю .=<§D[Ъ<Ÿ›M’1cХSо@u–т@>5jгŒы”†ўjчgлЬ+ыЙ‹Хз'?э2TLџџjC$ззњC~# *ЕPЖ_’к(dьыпpВš™ЙЛ№Ђ(~šdё~%ЉГАѕpџь(Dќ(PjmЋ@jКБЖ2+ИЋт™їqˆTУ[ЈЯ„ЦЂњџЅ‡f§O=TѓцМ'Е)œ8—юVu“$Џ!˜ Xyw0мЈMqŠ:9Jх\ЎњмўРиC^убБXz>I;x?yљAиA€?€?€?}"Л>ЖŠЛМvUМh4nПœJлA?XX€?€?€?33Г>@?@?@?€?мљИD„ 'Щsњјc>yEрsФUкx wя7KZWЈ+zcш Не–†!"Акhй)њН‹ёL_oщyжIЫѕ*ЏВ?>4і’aЧC1ЅвRГ›„!ГOzНacсЖ/ФЏЅтgY?РrПHоМ”РЁaкч…ТчA—ѓ’к%Џ 5бУzўN)MvђON…m7>ХцHУсEЛ<Ў‹OFYЉ>+ScšВIGgГFj—;N№}6JNЙ6ўn-Љ%_Љo#)xЎŸRаo;лфВlbт еkШб€?d)П?RйР€?€?€?Ђ0‰=ъйn?§џ>€Оƒh_ЎƒScript: shader code€П€?€?Reflectivity = %1.1f€?€?€?default<ъ00007TextPrint : InstructionsжІ•…D 9 .$( 79 9 Wa&пA‡`Љi‹T?/ъ6L‹Yo—Ў-$GE,бŠз"z•П/ПrАы `„,QI+(e2џЕ…Ѕ†TХ4d%ШœZМb(УjіќЇ]pЭ…Ёžм Š$ъEКtbЌjqU Z§?nhsu 'ЊDz‡(Ў ~ gіžy)!АэЅД b™`xХžLыГDИз.ЊMYЫ%‚(sщ щћЎRŠђНJП•(7Ћ„Щl{QSблЗ‘—џЮš•K Џжэ/MK6ёTЦ%ОQI~ЅbY9'ХуФЂGлиe0нуŽьЉёЇHƒJi-аУtz]шkТƒ- [n‚э‡O‹‰tYФƒP„ˆ?кгQAyайЏдzШ”cщuXУЛдc|^ч)ўM4щBh›нщFі,­LЬаХbДsq№šћŸ}ZœgЂ$AuчЬ"паЅъЙWmІНЧ†Ћ@ш +ќэЗў>є[є >~q@kAХїcгџ5N“ФœУA…!“j№ёB ŽtˆB;Ўя{оAUФ;Ў^Ї…ш!{И}ŽА’cАѓНАˆXЇЋXЃ7KьŽјœSkGps^RhхозЊefЯ&і‘`g}X:3b5P+/Aу?ЗŸŒSˆ8ъ›6˜dвEЯˆh<Ћн+o`ёi@j#ЃHН7uL~™JžXЄJ‚@DЖЕ•ЁyїО~ф‹щŽZЏџˆІыeipLѓгѓQ§c0–яWeО–ПуIpЅЭлLйˆВ@Б3ygХƒњЫ8їЧдoFїтY6ƒЕ<€'ŠмvЉYЎe43^ˆZу5БлЃ Š{~кАG4# З0Ћp /љЏК>тГЫўЕаoјuч{u ŠщmЩ‘LЌЕ$|аnSЫŸѕъш­-ђ=ŒЈr‘X‰ў–О;"ЬјЋДы†94NnНR”#7юIћ|Jg&ЧнЬOу…ыKЏв\ЪЂ0№Šy$цмo €О„„€?€?€?€?ЭЬL=ЭЬŒ?7Use [Up]/ [Down] keys to change Reflectivity (0 to 1) defaultШ€?€?а€?€?Ы€?€?Э€?€?€?€?,€?€?€?€?-€?€? €?€?.€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€?€? €?€? €?€? €?€?;€?€?<€?€?=€?€?>€?€??€?€?@€?€?A€?€?B€?€?C€?€?€?€?