All Downloads are FREE. Search and download functionalities are using the official Maven repository.

native.win_x64.opencv_ocl246.dll Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
MZ????@??	?!?L?!This program cannot be run in DOS mode.

$?/?~?N?-?N?-?N?-%b-?N?-?8d-?N?-?8P-?N?-?8f-?N?-?8Q-?N?-??f-?N?-?6i-?N?-?N?-LO?-??Q-?N?-??a-?N?-??g-?N?-Rich?N?-PEd?$N?Q?" 
?lԻ?p.j?.@???@?+?),B+?0.?-@.???.textܿ? `.rdata???@@.data??,?,@?.pdata-?,@@.rsrc?0.
.@@.reloc>#@.$.@B?D?D?™A???????H?T$H?L$SH??0H?D$ ????H??H?T$H????H???H?H??H??0[???????H?L$H??8H?D$ ????H?g?H?H??8H?%???????????H?L$WH??0H?D$ ????H?\$H??H??H?,?H??????tH????H??H?\$HH??0_?????????H?????????????????????????????H?|$H??3?H????H?|$H??H?A?????@SH?? H??趡H??H?? [??????????H?%???????????????????????̋9??????????̃?????????????????????????????fW????-????̺?;?w???3???O?????????????fW??Ⱥ??-?;?w???3???O????????????????̺??;?w???3???O?????????????fW??Ⱥ???-?;?w???3???O????????????????̍??=??w??ø???????O?????????????????fW????-э??????w??ø???????O????fW????-?????3?H??BH?AH?A0H?A(H?A H?AH?AH?A8???????????@SH?? H??H?IH??t???输??uH??諓H?C@3?H?K0H?K(H?K H?K?H?KH?? [???????̋%??????????H?H????????????H?A3?H?H?PH?H?H????????????H?Hc?H????????H?Hc?H????????H;QsH9w??2?????????????????????????????????????????????H???????????????H?AH+H???????H?AH+H???????H??(H?
5??'????????????????H???????????????H??馞????????H??????????????H?H???????????????????????????H??f/wH?????????????????̋9u?B9Au??2??????????????H???????????????H???????????????H??HH?D$ ????3?H??tUH????????H;?wH?????H??u8H?D$PH?T$PH?L$(???H???H?D$(H??++H?L$(辝?H??H???H???????????????H???????????????H?H?I?H?AH???????????????????Z???????????????????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA???????????????,??????????????D$???????????H???????????????H???????????????H???????????????3???????????????H???????????????H?????????????????????????????3?H??AH?AH?AH?A H?A(H?A0H?A@?AHH????????????@SH?? 3?E??H??H??AH?AH?AH?A H?A(H?A0H?A@?AH?B??~D?E??~???k?
H??H?? [???H?\$WH?? 3?I??H??H??AH?AH?AH?A H?A(H?A0H?A@?AH?BE?ȅ?~D?E??~????
H??H???)?
H??H?\$0H?? _????????????@SH?? ?H?ى?B?A?B?AH?BH?AH?BH?AH?B H?A H?B(H?A(H?B0H?A0H?B8H?A8?B@?A@?BD?AD?BH?AHH?I H??t
??J?H??H?? [??????????@SH?? 3?H??H??AH?AH?AH?A H?A(H?A0H?A@?AH?O?
H??H?? [????????~
???????????H?\$WH?? H??H??H;?tmH?J H??t
????H????}
L?_8L?[8???G?C?G?CH?GH?CH?GH?CH?G(H?C(H?G0H?C0?G@?C@?GD?CD?GH?CHH?G H?C H??H?\$0H?? _?E??D??R邂
?̋	?"D?????H???????????????̋%?????????̋????????????̋??%??????̋???%?????D??????????3?H9A????????̅?t=H?\$H?t$WH?? I??A??H???6L??D??H??H????9H?\$0H?t$8H?? _???????????????H?A????????????H?yrH??H??????????????????H???????????????H???????????????H???F??????????A???????????H?yrH??H????H??(H?
???o????????????????@SH?? H?H?H??HcHH??L?H??tH?H?HcHH??4?H??H??RH??H?? [???????????@SH?? H?H??H?HcHH????H??tH?H?HcHH???H??H??RH?? [??????????????L??H??t5H?AH??rL??L??I;?rH??rH??H??H?AH?I;?v??2??H??(H?
???g????????????????H??????????????̋??B?AH????̉D?AH????????̋D$(?D?A?AH??D?I????????????H??HH?D$ ????3?H??tHH???w
衖H??u8H?D$PH?T$PH?L$(?˷?H?k?H?D$(H?w$+H?L$(?k??H??H????????????????H?L$SH??0H?D$ ????H???L??H??H?H??H??0[?H?H?H?BH?AH?BH?AH?BH?AH?????????????????3?H?H?AH?AH?AH??????????????E3?H?APH?QH?Q@H?AHL?@H?AHL?D?AD?H??BL?A0L?A(L?A L?AL?AL?A8H???????????H?\$WH?? ?L?AH?ى?BH???A?BA??B?AH?BH?AH?BH?AH?B H?A H?B(H?A(H?B0H?A0H?B8H?A8L?A@H?APH?AHH?@H?AHH?H?IH??t
?輈?,H?GHH?KHH?H?H?GHH?KHH?@H?AH??H?\$0H?? _?H??H???C?~?H??H?\$0H?? _???@SH?? H??H?IH??t????N???uH???;?H?C@3?H?K0H?K(H?K H?K?H?KH?KHH?CPH;?t??H?? [??????H?\$WH?? H??H??H;???H?JH??t
??܇H?KH??t????ˇ??uH??踇H?C@3?H?K0H?K(H?K H?K??{H?K??7?G??/H?KH?C?G?C?G?CH?GHH?H?H?GHH?KHH?@H?A?H??H???\?H?GH?CH?G H?C H?G(H?C(H?G0H?C0H?GH?CH?G8H?C8H??H?\$0H?? _?H??(A????y9QuD9Au?%?A;?uH?yuD?D$4?T$0L?D$0???H??(?????3?H?H?AH?AH??????????????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H????????????H??HH?D$ ????3?H??tXH????????H;?wH??H???Q?H??u8H?D$XH?T$XH?L$(?{??H??H?D$(H?' +H?L$(???H??H????????????????H?H9?????????H?H?H?BH?AH?????????????????H?H?I?H?AH??????????????????H?H?H?BH?AH?????????????????H?H?I?H?AH????????????????????????????????H?L$WH??0H?D$ ????H?\$HH?t$PA??I??H???E????H?OPH???8???????H??H?\$HH?t$PH??0_???????????????H?L$SH??0H?D$ ????H??H??P??t
?H??H??0[??t
???H?T$SH??0H?D$(????H??3҉T$ L?CL?C@H?CPH?CHH?PH?CHH??SA?H??BH?S0H?S(H?S H?SH?SH?S8?D$ H???T?
H??H??0[????????????D??A????????ƒ?D?A???P???????C?H????$?????????Hc????????̋A??A?BH????H???????????????H?L$WH??0H?D$ ????H?\$HH??H??H?H?HcHH???H??tL?I?HcHI???H?H???R?H?HcHH??????t.H?HcHH??ѮH??tH?HcHH????H?????H?HcHH?????GH??H?\$HH??0_???????????H?L$SH??0H?D$ ????H???????u
H??o??H?H?HcHH??;?H??tH?H?HcHH??#?H?H???RH??0[?????????????H?yH?QrH?????????????H??HH?D$ ????3?H??tKH???w
H???n?H??u8H?D$XH?T$XH?L$(????H?8?H?D$(H?D+H?L$(?8??H??H?????????????H???????????????H?H?H?BH?AH?BH?AH?BH?AH?????????????????3?H?H?AH?AH?AH???????????????D$(?	?QH???A?Y????H?L$WH??0H?D$(????H?\$HI??H???D$ ?????H?OPH???x????LJ??D$ H??H?\$HH??0_????????H?L$WH??0H?D$(????H?\$HI??H???D$ ?%????H?OPH???????LJ??D$ H??H?\$HH??0_????????H?L$WH??0H?D$(????H?\$HI??H???D$ ??????H?OPH???????LJ??D$ H??H?\$HH??0_????????H?L$WH??0H?D$(????H?\$HI??H???D$ ?e????H?OPH???X????LJ??D$ H??H?\$HH??0_????????H?H?H?BH?AH?BH?AH?BH?AH?????????????????3?H?H?AH?AH??????????????????@SH?? H??H?APL?QL?Q@H?AH3?H?HH?CH?T$0H?D?D$4?Q?KA?
H?K0H?K(H?K H?KH?KH?K8L?D$0H??A???H??B??H?T$PH???8H??H?? [????????????????H?\$WH?? H??H?API??E??L?AL?A@H?AH3?H?HH?GHA???H?A??OH?O0H?O(H?O H?OH?OH?O8H??B?
?B?L$4L?D$0?H?ωD$0?~H??H???~H?\$8H??H?? _?????????????H?H?H?????????H?AH?H????????L?H????????????H?H9?????????H??H?HATAUAVH??PH?D$0????H?XH?pH?x L??L??3??p?3?H???H???H??L?i?I?$HcHI????H??~/I?$HcHI????I;?~I?$HcHI????H??I+??H??I??H?L$8???????|$@u
???I?$HcHI??M?%???@tCH??~:I?$HcHI??yX?٨H??@???????u	???t$ ?
H??H?\$(????ukI?$HcHI????H??M??I???ШI;?t??;H??~:I?$HcHI??yX?j?H??@????????u???
H??H?\$(?ʼnt$ I?$HcHI?3??j???	L?d$p?t$ I?$HcHI?E3????@???1???uH?L$8???H?T$8H?HcHH???H??tH?T$8H?HcHH??ʧH?H???RI??L?\$PI?[(I?s0I?{8I??A^A]A\????????????H?H?I?H?AH??????????????????H;?t'fff?H?H??I??I?@?H?A?I?@?H;?u?I???H?H?H?BH?AH???????????????????????????????H?\$WH?? I??H?ل?t)H?yr"H?t$0H?1M??tH??脇H???v?H?t$0H?CH?{?H?\$8H?? _?????????H?\$WH?? I??L?AL??H??L;?sH?
͵????L+?L;?IB?H??tXH?AH??rH?	H??H??H?J?L+?H??'?L?[L+?H?{L?[rH?B?H??H?\$0H?? _?H??B?H??H?\$0H?? _??L?D$H?T$H?L$VWATH??0H?D$(????H?\$hM??H??H??H??H???vH???5L?AI??H??H?????????H??H??H;?vH??????H??H+?L;?wJ?<H?WH?K ????H??H?D$ ?H?\$PL?d$`H?|$XH?t$ M??tH?{rH??H??M??H?????H?{rH????H?3H?{L?cH??HC?B?#H?\$hH??0A\_^?????????????3?H?AH?AH?AH?H???????????????	?I?IH???I??????????L??WH??H?D$p????I?[A)s?H??,H3?H??$???H??fW??D$x?AC??AC??AC?D?	A????QD?A3?H?D$ ?D$(H?D$0I?C?I?C?I?C?I?C?I?C??D$h??~E??~H?L$ ??m
H?T$xH?L$ ???
?D??H?T$ H???Tf(?H?L$ ?h
f(?H??$?H3??b?H??$?(?$?H?İ_??????????H?H?I?H?AH??????????????????I??L??L??H;?t1L??L??L+?L+?fDI?K?TI??H?J?
H??H?
M;?u??????????????????H?T$H??H?$????H?T$8H??tI?H?I?@H?B?H?????????????????H?AH?AH?????????????@SH?? H?yH??rH?	膃H?CH?C?H?? [????????????????H?\$ WH?? H??H??H???vH?
??????H?AH?t$83?H;?sL?A?s????rE??tXH??sRH?l$0H?iH;?HB?H??r%L?d$@L?!H??tL??I????I???ނL?d$@H?kH?C@?4+H?l$0?H??uH?qH??rH?@?3H?t$8H?\$HH????H?? _??????????H?T$H??H?$????H?T$8H??tI?H?I?@H?B?H?????????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I??????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?\$H?l$H?t$WH?? H?zI??H??H??I;?sH?
c????I+?L;?IB?H;?uJ?I????P???L??3?H???C????H???vH?
9??Ӡ?H?AH;?s'L?AH??????H??t[H?~rH?6H?{r$H??"H??u?H?yH??rH?@?8?.H????&H??H?.L??? ?H?{H?{rH??H???8H?l$8H?t$@H??H?\$0H?? _??????????????H?\$H?t$WH?? I??H??H??H??tZL?AI??rH??H??H;?rCI??rH?	HKH;?v1I??rH??H??H+?L??H??L??H??H?\$0H?t$8H?? _?y???H???vH?
?????H?CH;?s L?CH??H??????H??toH?{rCH??AH??u?H?{H??rH?@?8H??H?\$0H?t$8H?? _?H???H?\$0H?t$8H?? _?H??L??H????H?{H?{rH??H???8H?t$8H??H?\$0H?? _?????????????????????H??H?D$0?D$(H?D$ ?5???H??H?@SH?? H?AH?AI???E3?H????h???H??H?? [????????????????@WH?? L??H???3?H???H??L?A?I??H?? _?8???????????@WH?? L??H???3?H???H??L?A?I??H?? _????????????M;?t,L?YM??M;?tI?I??I??I?B?I?A?I?B?M;?u?L?QH??L??????????@SH?? H?9H??t?S?H??~3?H?H?CH?CH?? [?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?????H??0[????????H?\$WH?? H?AH?AH???H???3?H???H??L?A?H??????H??H?\$0H?? _?????????H??UVWATAUAVAWH??????H??H?E????H?X )p?H?m?,H3?H???M??L?D$@L??H?T$HH???$E3?<?iHDž?L???D???E?E-H?]?H????q????HDž?L???D???E3?H?+?H????A????HDž?L???D???E?EH??H?????????D$(?H???H?D$ L???L????)???H???p?H???p?H???p?H???rH????|HDž?L???ƅ?H???rH????^|HDž?L???ƅ?H???rH????/|HDž?L???ƅ??7??????Ƹ??D?fW?????????????H?EH?EPH?E`H?EXL?mhL?m`L?mH?E?BL?m@L?m8L?m0L?m L?m(L?mH??????????D$0?D$4D??L?D$0?H?M?WoH???H?M?Mo?????????????H?ExH???H???H???L???L???L?mxH?Ep?BL???L???L???L???L???L????D$0?D$4D??L?D$0?H?Mp?nH???H?Mp?n?L?l$`D?l$hL?l$pL?l$xL?m?L?m?L?m?L?m?D?m?H?UH?L$`蒇
?L?m?D?m?L?m?L?m?L?m?L?m?L?m?L?m?D?m?H?UpH?M??`?
?H??0H?L$`?n??????0?????4?????8?????<???H??@H???H??HH???H??PH???H??XH???H??`H??H??hH??H???H??L?? L??L??(L?? H??t??HmL????4??%H??xH?I?H??xH?HH??H?H?D???H??0H?????l?H???H?M??????H???H??t?????l??uH????lL??L???L???L???H??D?(L???H?? H??H;?t?l?H??HH??t????fl??uH??0?OlL??`L??XL??PL??@H??pD?(L??HH???H??xH;?t?lH??0H?M??h??????0???D??4D?????8?????<???H??@H???H??HH???H??PH???H??XH???H??`H??H??hH??H???H??L?? L??L??(L?? H??t??@kL??D??4A??%H??xH?I?	H??xH?HH??H?H?D???H??0H?????j?H???H?Mp??????H???H??t?????j??uH????jL??L???L???L???H??D?(L???H?? H??H;?t?}j?H??HH??t????\j??uH??0?EjL??`L??XL??PL??@H??pD?(L??HH???H??xH;?t?jI??Lc?H?E I????t$0I?_H???H?qL??L+?M+?M?|$?I??I??J??H?D$PfAnT5???ҋG?Gfn?????^??AT?fnN???ɋG?Gfn?????^??Y??\??L$8f/?H?D$0wH?D$8??hv?C?fAnT5??ҋG?Gfn?????^??Afn??ɋG?Gfn?????^??Y??\??L$8f/?H?D$0wH?D$8???u?fAnT5??ҋG?Gfn?????^??ATfnN??ɋG?Gfn?????^??Y??\??L$8f/?H?D$0wH?D$8??u?CfAnT5??ҋG?Gfn?????^??ATfnN??ɋG?Gfn?????^??Y??\??L$8f/?H?D$0wH?D$8??$u?CH??H?? I???>???H?E H?L$PL?t$HL?|$@E3?I;????t$0I??H???H?4?H+?H?D$@M+?L+?fn??ҋG?Gfn?????^??B3fn??ɋG?Gfn?????^??Y??\??L$8f/?H?D$0wH?D$8??ht?H??H??I??H?D$@u?H?M??YW
?H?L$`?NW
?H???H??t????g??u	H?Mp??fL???L???L???L???H???D?(L???H???H???H;?t??f?H?M(H??t????f??u	H?M?fL?m@L?m8L?m0L?m H?EPD?(L?m(H?E`H?MXH;?t?}fH???H3??ZsH??$X(?$?H??A_A^A]A\_^]????????@USVWATAUAVH??$????H??0H?E0????)?$ H???,H3?H??A??L??H??E??A??A???????$E3?<(A?E3©?u??????v???mHDžL??D???A?-H???H?????????HDž?L???ƅ?E3?H???H????????HDž?L???ƅ?A?}H???H????d?????D$(dH???H?D$ L???L????)???H??@?e?H???e?H??@??d?H???rH?????pHDž?L???ƅ?H???rH????pHDž?L???ƅ?H??rH????pHDžL??ƅ?D?A????????Ǹ??D?fW?A????SD?CL?u?D?u?L?u?L?u?L?u?L?u?L?u?L?u?D?u؅?~E??~
H?M??Y
?A?ƹ???D?fn????????????????H?EHH???H???H???L???L???L?uHH?E@?BL?upL?uhL?u`L?uPL?uXL?uxD??????A????D$0?D$4L?D$0?H?M@?>cH???H?M@?4c?L?t$@D?t$HL?t$PL?t$XL?t$`L?t$hL?t$pL?u?D?u?H?U@H?L$@?*|
?L?u?D?u?L?u?L?u?L?uL?uL?uL?u D?u(Hcߋ????L???-????H?? H?L$@??????H?? H?M@?u????H??8H??t????hb??uH?? ?QbL??PL??HL??@L??0H??`D?0L??8H??pH??hH;?t?bI??L?EPH??|]I?HH?S?H??H??H??fDfnI?????X?fnA????f(??X?fn	????X?fnA????X?H??H??u?H;?}fAn?????X?H??H;?|?f(??nf(???H???H?L$@??????H???H?M@?Q????H???H??t????Da??uH????-aL??L??L??L???H?? D?0L???H??0H??(H;?t??`I??L?EPH??|YI?HH?S?H??H??H??f?fnI?????X?fnA????f(??X?fn	????X?fnA????X?H??H??u?H;???fAn?????X?H??H;?|??H???H?L$@?????H???H?M@?:????H???H??t????-`??uH????`L???L???L???L???H???D?0L???H???H???H;?t??_H?}P?E?f(?fW5I??t$8I??H????H?GL?C?I??I??J??fn@?????D$0f/?H?T$0wH?T$8?
?L$8fn@?????D$0f/?H?T$0wH?T$8?
?L$8fn????D$0f/?H?T$0wH?T$8?
?L$8fn@????D$0f/?H?T$0wH?T$8?2?t$8H??I???P???H;?}1fn?????D$0f/?H?D$0wH?D$8?0?t$8H??H;?|?E??t??I???Z????^?H?M??N
?H?L$@?N
?H?MXH??t????x^??u	H?M@?d^L?upL?uhL?u`L?uPH???D?0L?uXH???H???H;?t?@^?H?M??RN
f(?H??H3??k(?$ H??0A^A]A\_^[]??????@SH?? H?9H??t?ӉH??j3?H?H?CH?CH?? [?H??H?L?IL??I;?tDM??M;?t8H?$M??H??L+?I+?DI?J?LI??H?J?H??H?M;?u?H?$I?RH???????ATH??@H?D$0????H?\$PH?t$`H?|$hH??H??H????????H;?vH?
??????H?AH+H??H;?soH???????L??H?D$XD?D$XD?D$(H?D$ L?KL??H?SH??????H?H?sH+?H??t??hH?????H??I?H?{H???I?H?sL?#H?\$PH?t$`H?|$hH??@A\???????????H??UH??h???H??H?D$0????H?XH?xH?F?,H3?H???L??H?ً?A?@?AA?@?AH?BH?AH?BH?AH?B H?A H?B(H?A(H?B0H?A0H?B8H?A8?B@?A@?BD?AD?BH?AH????????A?AA9@L?!?????????¸??DЃ?ɸP?H??$?????????????????A??CA?@?S@A?3???x,A?@??x$?A;AA?H??xA?@??x?A;A?!H?D$xH?|$p@?|$`A?QH?'?H?L$`?}????H?D$PH?|$H?D$8E3?H?=?H?L$8?U????H?E?H?}??E?A?|H?W?H?M??.?????D$(?H?D$`H?D$ L?L$8L?E??)???H?M???Z?H????Z?H?M???Z?H?}?r	H?M??fH?E?H?}??E?H?|$Pr
H?L$8?fH?D$PH?|$H?D$8H?|$xr
H?L$`?wfH?D$xH?|$p?D$`H?K H??t
??+Z?{~?{H?{H??H???H3??gL??$?I?[I?{ I??]?????????????H?T$SH??0H?D$(????H???D$ H??H???7?????D$ H??H??0[??????@SH??H?D$ ????I??A?%?A;?uFA9I|@A9Q|:3?H?D$(?T$0?L$4L?D$(H?T$8H???q????H??H???e????H?L$8?jI
?E??D?‹?H???hN
H?Đ[????????????????H??(L?L?AI????????M+?I??I??H+?I;?sH?
r??d??L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?H???H?I;?IB??9???H??(?????@WH??0H?D$ ????H?\$PH??H??H?AH;?sHH?	H;?w@H+?H;Cu
?H???????H???H;H?KH?L$@H?L$HH??tH?H?H?GH?A?4H;Cu
?H??????H?KH?L$@H?L$HH??tH?H?H?GH?AH?CH?\$PH??0_??@UVWATAUAVAWH??$????H??`H?E?????H??$?H???,H3?H??PM??I??L?E?L??L??L?M?H???H?E?3?H?I8?:????A?%????
H?E@3?H?]8?](D?@'H?u?H?M(?????H?EH?]?]E3?H?P?H?M?i????H?E?H?]?]?D?C&H?f?H?M??E?????D$(~H?E(H?D$ L?ML?Eغ(???H?MP??V?H????V?H?MP??V?H?}?r	H?M???bH?E?H?]??E?H?}r	H?M?bH?EH?]?EH?}@r	H?M(?bH?E@H?]8?E(?E?A???I?vH?u?E?F?H???tK
E?_3?E9^uD;_uA?G9u	;G?H?E?H?]?]?A?-H?%?H?M???H?M?W????H?EHH?]@?E0A?7H???H?M0?0?????D$(?H?E?H?D$ L?ML?E0?)???H?M`??A?H????A?H?M`??A?H?}Hr	H?M0??MH?EHH?]@?E0H?} r	H?M?MH?E H?]?EH?}?r	H?M??MH?E?H?]??E?A?$<?
H?E?H?]??E?A?-H?JH?M??a????H?E H?]?EE3?H?$H?M?=????H?EHH?]@?E0A?H??H?M0??????D$(?H?E?H?D$ L?ML?E0?)???H?M`??@?H????@?H?M`?@?H?}Hr	H?M0?LH?EHH?]@?E0H?} r	H?M?LH?E H?]?EH?}?r	H?M??hLH?E?H?]??E?I?F8H?E??7D??A??A???A??E?ӸA??DDЃ??u?fo?fE`fo
?fMpfo?f??fo
?f??fo?f??fo
?f??fo?f??Ic?Hk?Hc?H?LcL?D??A?"D?I??A??HcG@3?I??A?I?#?D?GA??A??AɍD??A???E?HDž0@A?L??8HDž@??????????Hc?H??H??H?G????????Hc?H??H??PHDžXA??EDٍ6?P?H??$B?????????????????A?ЉU?H?\$`H?\$hH?\$pI?vH?D$PH?t$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?t$PH+?H????????I????????H?T$pH;?ufL??L+?I??M;?vH?
?x??i?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????I????????H?T$pH;?uaL??L+?I??M;?vH?
x??h?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hA?H?M?H?M?H??tH?H?qH?L$hH??H?L$hI?vL?L$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?ufL??L+?I??M;?vH?
Bw?4h?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$pH;?uaL??L+?I??M;?vH?
?v??g?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`?~???H?L$hA?H?M?H?M?H??tL?	H?qH?L$hH??H?L$hI??@L?L$PL?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
?u??f?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$pH;?uaL??L+?I??M;?vH?
\u?Nf?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`?,???H?L$hA?H?M?H?M?H??tL?	L?qH?L$hH??H?L$hI?wH?D$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
?t??e?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`?d???H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$pH;?u[L??L+?I??M;?vH?
t??d?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hH?M?H?M?H??tH?H?qH?L$hH??H?L$hI?wH?D$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
@s?2d?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$pH;?u[L??L+?I??M;?vH?
?r??c?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?M?H?M?H??tH?H?qH?L$hH??H?L$hI?w@A?L?|$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
?q??b?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?yH?T$pH;?u[L??L+?I??M;?vH?
\q?Nb?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`?,???H?L$hH?M?H?M?H??tL?9H?qH?L$hH??H?L$hL?u?I?vH?D$PH?t$XH?D$PL?D$`H;???H?D$PL;???H?t$PI+?H?T$pH;?u]H??I+?H??I;?vH?
?p??a?H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$`?i???H?L$hL?D$`H???H?M?H?M?H??tJ?H?J?DH?A?zH?T$pH;?uXH??I+?H??I;?vH?
p??`?H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$`?????H?L$hH?M?H?M?H??tH?H?qH?D$hI?FL?|$PH?D$XH?T$PH?L$`?o???L?|$PI?F@H?D$XH?T$PH?L$`?R???L?|$PH?E?H?D$XH?T$PH?L$`?5???L?|$PH?E?H?D$XH?T$PH?L$`????L?|$PH?E?H?D$XH?T$PH?L$`?????L???M??t+?A?E?H?D$PH?E?H?D$XH?T$PH?L$`????????I???E3?I????????tdH?E0H?E?H?EHH?]@D?E0H?M0?W?????E??D$8?D$0????H?D$`H?D$(H??0H?D$ L??HL?E0H?U?H?M???(?H?EH?E?H?E H?]?EH?M?????H??tL?E?-H?E?H?E?H?E?H?]??E?H?M??Ľ???H?dtL?E?H?D$@?E??D$8?D$0????H?D$`H?D$(H??0H?D$ L??HH?U?H?M??:?H?|$`tH?L$`?_H?L$`?J?H?\$`H?\$hH?\$pI?}r	I?M?+?I?EI?]A?EH??`H3????H??$?H??pA_A^A]A\_^]???@UVWATAUAVAWH??$????H??`H?E?????H??$?H?~?,H3?H??PM??I??L?E?L??L??L?M?H???H?E?3?H?I8?????A?%????
H?E@3?H?]8?](D?@'H?UpH?M(?l????H?EH?]?]E3?H?0pH?M?I????H?E?H?]?]?D?C&H?FuH?M??%?????D$(~H?E(H?D$ L?ML?Eغ(???H?MP??1?H????1?H?MP??1?H?}?r	H?M??=H?E?H?]??E?H?}r	H?M?=H?EH?]?EH?}@r	H?M(?w=H?E@H?]8?E(?E?A???I?vH?u?E?F?H???T&
E?_3?E9^uD;_uA?G9u	;G?H?E?H?]?]?A?-H?oH?M??????H?EH?]?EE3?H??nH?M??????H?E@H?]8?E(A?bH??sH?M(?ѻ????D$(?H?E?H?D$ L?ML?E(?)???H?MP?0?H???|0?H?MP?l0?H?}@r	H?M(?c<H?E@H?]8?E(H?}r	H?M?C<H?EH?]?EH?}?r	H?M??#<H?E?H?]??E?A????A?%?;?u?%?;??
H?E?H?]??E?A?-H??mH?M??????H?EH?]?EE3?H??mH?M?Ǻ???H?E@H?]8?E(A?7H?!rH?M(蠺????D$(?H?E?H?D$ L?ML?E(?)???H?MP?Z/?H???K/?H?MP?;/?H?}@r	H?M(?2;H?E@H?]8?E(H?}r	H?M?;H?EH?]?EH?}?r	H?M???:H?E?H?]??E?A?$<?
H?E?H?]??E?A?-H??lH?M??ѹ???H?EH?]?EE3?H??lH?M譹???H?E@H?]8?E(A?H??pH?M(膹????D$(?H?E?H?D$ L?ML?E(?)???H?MP?@.?H???1.?H?MP?!.?H?}@r	H?M(?:H?E@H?]8?E(H?}r	H?M??9H?EH?]?EH?}?r	H?M???9H?E?H?]??E?I?F8H?E??7D??A??A???A??E?ӸA??DDЃ??u?foqnfEPfo
tnfM`fownfEpfo
znf??foznf??fo
znf??foznf??Ic?Hk?Hc?H?LcL?4??A?"D?I??A??HcG@3?I??A?I?#?D?GA??A??AɍD??A???E?HDž @A?L??(HDž0??????????Hc?H??H??8?G????????Hc?H??H??@HDžHA??EDٍ6?P?H??$B?????????????????A?ЉU?H?\$`H?\$hH?\$pI?vH?D$PH?t$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?t$PH+?H????????I????????H?T$pH;?ufL??L+?I??M;?vH?
(f?W?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????I????????H?T$pH;?uaL??L+?I??M;?vH?
}e?oV?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`?M???H?L$hA?H?M?H?M?H??tH?H?qH?L$hH??H?L$hI?vL?L$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?ufL??L+?I??M;?vH?
?d??U?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$pH;?uaL??L+?I??M;?vH?
!d?U?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hA?H?M?H?M?H??tL?	H?qH?L$hH??H?L$hI??@L?L$PL?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
]c?OT?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`?-???H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$pH;?uaL??L+?I??M;?vH?
?b??S?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hA?H?M?H?M?H??tL?	L?qH?L$hH??H?L$hI?wH?D$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
b??R?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$pH;?u[L??L+?I??M;?vH?
ya?kR?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`?I???H?L$hH?M?H?M?H??tH?H?qH?L$hH??H?L$hI?wH?D$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
?`??Q?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$pH;?u[L??L+?I??M;?vH?
%`?Q?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`?????H?L$hH?M?H?M?H??tH?H?qH?L$hH??H?L$hI?w@A?L?|$PH?t$XH?T$PH?D$`H;???H?T$PH;???H?t$PH+?H?T$pH;?u`L??L+?I??M;?vH?
]_?OP?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$`?-???H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?FH?A?yH?T$pH;?u[L??L+?I??M;?vH?
?^??O?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$`????H?L$hH?M?H?M?H??tL?9H?qH?L$hH??H?L$hL?u?I?vH?D$PH?t$XH?D$PL?D$`H;???H?D$PL;???H?t$PI+?H?T$pH;?u]H??I+?H??I;?vH?
	^??N?H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$`?????H?L$hL?D$`H???H?M?H?M?H??tJ?H?J?DH?A?zH?T$pH;?uXH??I+?H??I;?vH?
]?qN?H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$`?R???H?L$hH?M?H?M?H??tH?H?qH?D$hI?FL?|$PH?D$XH?T$PH?L$`?????L?|$PI?F@H?D$XH?T$PH?L$`?????L?|$PH?E?H?D$XH?T$PH?L$`????L?|$PH?E?H?D$XH?T$PH?L$`????L?|$PH?E?H?D$XH?T$PH?L$`?n???L???M??t'?AZ?E?L?|$PH?E?H?D$XH?T$PH?L$`?;??????I???E3?I????????tdH?E(H?E?H?E@H?]8D?E(H?M(?Ϋ????E??D$8?D$0????H?D$`H?D$(H?? H?D$ L??8L?E(H?U?H?M??P?H?EH?E?H?EH?]?EH?M?j????H?bL?E?-H?E?H?E?H?E?H?]??E?H?M??;????H??aL?E?H?D$@?E??D$8?D$0????H?D$`H?D$(H?? H?D$ L??8H?U?H?M???H?|$`tH?L$`??LH?L$`??,H?\$`H?\$hH?\$pI?}r	I?M?,I?EI?]A?EH??PH3??T-H??$?H??`A_A^A]A\_^]??????????@UVWATAUAVAWH??$????H??H?E?????H??$?H??},H3?H??pI??L?M?M??H??L??L???L?m?H???H?E?3?H?I8胡???A?%????
H?E3?H?]??]?D?@'H??]H?M??ժ???H?EPH?]H?]8E3?H??]H?M8貪???H?E(H?] ?]D?C&H??bH?M莪????D$(1H?E?H?D$ L?M8L?E?(???H?M`?H?H???9?H?M`?)?H?}(r	H?M? +H?E(H?] ?EH?}Pr	H?M8?+H?EPH?]H?E8H?}r	H?M???*H?EH?]??E??E?A???M?fL?e?E?FA?$I???
A?G3?A9FuA?GA9$uA?A3???H?E(H?] ?]A?-H?h\H?M?????H?EPH?]H?E8E3?H?B\H?M8?[????H?EH?]??E?A?KH?]bH?M??4?????D$(8H?EH?D$ L?M8L?E?)???H?M`???H?????H?M`???H?}r	H?M???)H?EH?]??E?H?}Pr	H?M8?)H?EPH?]H?E8H?}(r	H?M?)H?E(H?] ?EH?GH?E?H?8?+??u?GA9$u
?GA9F?
H?E(H?] ?EA?-H?+[H?M?B????H?EPH?]H?E8E3?H?[H?M8?????H?EH?]??E?A?HH??`H?M????????D$(>H?EH?D$ L?M8L?E?)???H?M`??H????H?M`??H?}r	H?M??(H?EH?]??E?H?}Pr	H?M8?i(H?EPH?]H?E8H?}(r	H?M?I(H?E(H?] ?EI?F8H?E?A?D??A??A???A??A??A?A??ADɉM????U?fW???-???0fW??F?-???4fW??F?-???8fW??F?-???<fo]fE`fo
]fMpfo]f??fo
?\f??fo?\f??fo
?\f??fo?\f??Hc?Hk?Hc?H?LcD?DA??A??AD??A?P?I??A??I?W@H?U?M?OL?Mȍ???????%???A????Hc?Hc3?I?1H??3?H??A?H?#?E?OC??D??A???E?HDžX@A?L??`HDžh??????????Hc?H??H??@A?G????????Hc?H??H??HHDžPA??ED?B????????%???A????A???E?H?\$PH?\$XH?\$`M?fH?D$pL?d$xH?T$pH?D$PH?L$XH;???H?T$pH;???L?d$pL+?H????????H????????H?T$`H;?ufL??L+?I??L;?vH?
"T?E?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
uS?gD?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?E???H?L$XA?H?M?H?M?H??tH?L?aH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?ufL??L+?I??L;?vH?
?R??C?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?}???H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
R?	C?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI??@L?D$pL?t$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
SQ?EB?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?#???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
?P??A?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P蓸??H?L$XA?H?M?H?M?H??tL?L?qH?L$XH??H?L$XI??H?D$pL?|$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?O??@?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?˷??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
kO?]@?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?;???H?L$XH?M?H?M?H??tH?L?yH?L$XH??H?L$XA?L?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?N????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?s???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
N???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
UM?G>?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?%???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
?L??=?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P蕴??H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?e?I?<$??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?K??<?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?ȳ??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
hK?Z<?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?8???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XL?u?M?fL?|$pL?d$xH?D$pL?D$PH;???H?D$pL;???L?d$pM+?H?T$`H;?u]H??I+?H??H;?vH?
?J??;?H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$P?u???H?L$XL?D$PI???H?M?H?M?H??tK?H?K?DH?A?vH?T$`H;?uXH??I+?H??H;?vH?
J?
;?H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tL?9L?aH?D$XI?F@L?|$pH?D$xH?T$pH?L$P????H?D$pH??0H?D$xH?T$pH?L$P?[???L?|$pH?E?H?D$xH?T$pH?L$P?>???L?|$pH?E?H?D$xH?T$pH?L$P?!???L?|$pH?E?H?D$xH?T$pH?L$P????H?E?H?EH?]??E?I???E3?I??H?M?H?E?詘?????t	H?QO?H?8OH?D$@?E??D$8?E??D$0H?D$PH?D$(H??XH?D$ L??@L?E?H?U?H?M????H?|$PtH?L$P??9H?L$P?H?\$PH?\$XH?\$`I?}r	I?M?I?EI?]A?EH??pH3??H??$?H?ĀA_A^A]A\_^]????????@UVWATAUAVAWH??$????H??H?E?????H??$?H?Nk,H3?H??pI??L?M?M??H??L??L???L?m?H???H?E?3?H?I8?????A?%????
H?E3?H?]??]?D?@'H?KH?M??5????H?EPH?]H?]8E3?H??JH?M8?????H?E(H?] ?]D?C&H?PH?M??????D$(1H?E?H?D$ L?M8L?E?(???H?M`??H????H?M`??H?}(r	H?M?H?E(H?] ?EH?}Pr	H?M8?`H?EPH?]H?E8H?}r	H?M??@H?EH?]??E??E?A???M?fL?e?E?FA?$I???
A?G3?A9FuA?GA9$uA?A3???H?E(H?] ?]A?-H??IH?M?ߖ???H?EPH?]H?E8E3?H??IH?M8軖???H?EH?]??E?A?KH??OH?M?蔖????D$(8H?EH?D$ L?M8L?E?)???H?M`?N?H?????H?M`?/?H?}r	H?M??&H?EH?]??E?H?}Pr	H?M8?H?EPH?]H?E8H?}(r	H?M??H?E(H?] ?EH?GH?E?H?8?+??u?GA9$u
?GA9F?
H?E(H?] ?EA?-H??HH?M袕???H?EPH?]H?E8E3?H?eHH?M8?~????H?EH?]??E?A?HH?0NH?M??W?????D$(>H?EH?D$ L?M8L?E?)???H?M`?
?H???
?H?M`??	?H?}r	H?M???H?EH?]??E?H?}Pr	H?M8??H?EPH?]H?E8H?}(r	H?M?H?E(H?] ?EI?F8H?E?A?D??A??A???A??A??A?A??AD??E????U??Z??0?ZN??4?ZF??8?ZN??<fozJfE`fo
}JfMpfo?Jf??fo
Jf??fopJf??fo
pJf??fopJf??Hc?Hk?Hc?H?LcD?DA??A??AD??A?P?I??A??I?W@H?U?M?OL?Mȍ???????%???A????Hc?Hc3?I?1H??3?H??A?H?#?E?OC??D??A???E?HDžX@A?L??`HDžh??????????Hc?H??H??@A?G????????Hc?H??H??HHDžPA??ED?B????????%???A????A???E?H?\$PH?\$XH?\$`M?fH?D$pL?d$xH?T$pH?D$PH?L$XH;???H?T$pH;???L?d$pL+?H????????H????????H?T$`H;?ufL??L+?I??L;?vH?
?A??2?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?j???H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
?@??1?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P轨??H?L$XA?H?M?H?M?H??tH?L?aH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?ufL??L+?I??L;?vH?
%@?1?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?????H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
????0?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?_???H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI??@L?D$pL?t$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?>??/?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P蛦??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
;>?-/?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?L?qH?L$XH??H?L$XI??H?D$pL?|$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
s=?e.?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?C???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
?<??-?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P賤??H?L$XH?M?H?M?H??tH?L?yH?L$XH??H?L$XA?L?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
<?
-?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
?;?},?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?[???H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?:??+?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P蝢??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
=:?/+?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?
???H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?e?I?<$??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
p9?b*?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?@???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
?8??)?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P谠??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XL?u?M?fL?|$pL?d$xH?D$pL?D$PH;???H?D$pL;???L?d$pM+?H?T$`H;?u]H??I+?H??H;?vH?
8?)?H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$P????H?L$XL?D$PI???H?M?H?M?H??tK?H?K?DH?A?vH?T$`H;?uXH??I+?H??H;?vH?
?7??(?H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$P?c???H?L$XH?M?H?M?H??tL?9L?aH?D$XI?F@L?|$pH?D$xH?T$pH?L$P?????H?D$pH??0H?D$xH?T$pH?L$P?ӣ??L?|$pH?E?H?D$xH?T$pH?L$P趣??L?|$pH?E?H?D$xH?T$pH?L$P虣??L?|$pH?E?H?D$xH?T$pH?L$P?|???H?E?H?EH?]??E?I???E3?I??H?M?H?E??!??????t	H??<?H??<H?D$@?E??D$8?E??D$0H?D$PH?D$(H??XH?D$ L??@L?E?H?U?H?M????H?|$PtH?L$P?k'H?L$P?H?\$PH?\$XH?\$`I?}r	I?M?xI?EI?]A?EH??pH3??*H??$?H?ĀA_A^A]A\_^]????????????????@UVWATAUAVAWH??$p???H??H?E?????H??$?H??X,H3?H???I??L?M?M??H??L??L???L?m?H???H?E?3?H?I8?S|???A?%????
H?E3?H?]??]?D?@'H??8H?M?襅???H?E(H?] ?]E3?H?i8H?M肅???H?EPH?]H?]8D?C&H?=H?M8?^?????D$(1H?E?H?D$ L?ML?E8?(???H?M`???H???	??H?M`????H?}Pr	H?M8??H?EPH?]H?E8H?}(r	H?M??H?E(H?] ?EH?}r	H?M??H?EH?]??E??E?A???M?fL?e?E?FA?$I????A?G3?A9FuA?GA9$uA?A3???H?EPH?]H?]8A?-H?87H?M8?O????H?E(H?] ?EE3?H?7H?M?+????H?EH?]??E?A?KH?-=H?M???????D$(8H?E8H?D$ L?ML?E?)???H?M`???H?????H?M`???H?}r	H?M??H?EH?]??E?H?}(r	H?M?vH?E(H?] ?EH?}Pr	H?M8?VH?EPH?]H?E8H?GH?E?H?8?+??u?GA9$u
?GA9F?
H?EPH?]H?E8A?-H??5H?M8?????H?E(H?] ?EE3?H??5H?M?????H?EH?]??E?A?HH??;H?M??ǂ????D$(>H?E8H?D$ L?ML?E?)???H?M`???H???r??H?M`?b??H?}r	H?M??YH?EH?]??E?H?}(r	H?M?9H?E(H?] ?EH?}Pr	H?M8?H?EPH?]H?E8I?F8H?E?A?D??A??A???A??A??A?A??AD??E????U????`?N??h?F??p?N??xfo?7fE`fo
?7fMpfo?7f??fo
?7f??fo?7f??fo
?7f??fo?7f??Hc?Hk?Hc?H?LcD?DA??A??AD??A?P?I??A??I?W@H?U?M?OL?Mȍ???????%???A????Hc?Hc3?I?1H??3?H??A?H?#?E?OC??D??A???E?HDž0@A?L??8HDž@??????????Hc?H??H??HA?G????????Hc?H??H??PHDžXA??ED?B????????%???A????A???E?H?\$PH?\$XH?\$`M?fH?D$pL?d$xH?T$pH?D$PH?L$XH;???H?T$pH;???L?d$pL+?H????????H????????H?T$`H;?ufL??L+?I??L;?vH?
/???I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?ږ??H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
].?O?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?-???H?L$XA?H?M?H?M?H??tH?L?aH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?ufL??L+?I??L;?vH?
?-???I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?e???H?L$XH?D$PA?I???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
?,???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?ϔ??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI??@L?D$pL?t$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
;,?-?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?H?T$`H;?uaL??L+?I??L;?vH?
?+???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?{???H?L$XA?H?M?H?M?H??tL?L?qH?L$XH??H?L$XI??H?D$pL?|$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?*???I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P賒??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
S*?E?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?#???H?L$XH?M?H?M?H??tH?L?yH?L$XH??H?L$XA?L?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?)?}?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?[???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
?(???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?ː??H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?|$pL?e?L?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
=(?/?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?
???H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?yH?T$`H;?u[L??L+?I??L;?vH?
?'???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?}???H?L$XH?M?H?M?H??tL?9L?aH?L$XH??H?L$XL?e?I?<$??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???L?d$pL+?H?T$`H;?u`L??L+?I??L;?vH?
?&???I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P谎??H?L$XH?D$PI???L?H?M?H?M?H??tI?$H?I?D$H?A?}H?T$`H;?u[L??L+?I??L;?vH?
P&?B?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P? ???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XL?u?M?fL?|$pL?d$xH?D$pL?D$PH;???H?D$pL;???L?d$pM+?H?T$`H;?u]H??I+?H??H;?vH?
?%?|?H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$P?]???H?L$XL?D$PI???H?M?H?M?H??tK?H?K?DH?A?vH?T$`H;?uXH??I+?H??H;?vH?
%???H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$P?ӌ??H?L$XH?M?H?M?H??tL?9L?aH?D$XI?F@L?|$pH?D$xH?T$pH?L$P?g???H?D$p H??`H?D$xH?T$pH?L$P?C???L?|$pH?E?H?D$xH?T$pH?L$P?&???L?|$pH?E?H?D$xH?T$pH?L$P?	???L?|$pH?E?H?D$xH?T$pH?L$P????H?E?H?EH?]??E?I???E3?I??H?M?H?E??s????t	H?9*?H? *H?D$@?E??D$8?E??D$0H?D$PH?D$(H??0H?D$ L??HL?E?H?U?H?M?????H?|$PtH?L$P??H?L$P??H?\$PH?\$XH?\$`I?}r	I?M???I?EI?]A?EH???H3???H??$?H?ĐA_A^A]A\_^]????????????????@UVWATAUAVAWH??$????H??`H?E?????H??$?H?.F,H3?H??PM??M??L??L??L?M?H???H?E?H???H?E?D?	A???H?YH?]?D?A?I???.?E?]3?E9\$uE;_uA?E9u
A;G?
H?E?H?}?@?}?A?-H??%H?M???r???H?E8H?}0?E E3?H??%H?M ??r???H?EH?}?E?A?bH?a*H?M??r????D$(}H?E?H?D$ L?M L?E??)???H?MP?b??H???S??H?MP?C??H?}r	H?M??:?H?EH?}?E?H?}8r	H?M ??H?E8H?}0?E H?}?r	H?M????H?E?H?}??E?A?$???A?E%?;?uA?%?;??
H?EH?}?E?A?-H??$H?M??q???H?E8H?}0?E E3?H??$H?M ?q???H?E?H?}??E?A?7H??(H?M??tq????D$(H?E?H?D$ L?M L?Eк)???H?MP?.??H?????H?MP???H?}?r	H?M???H?E?H?}??E?H?}8r	H?M ???H?E8H?}0?E H?}r	H?M????H?EH?}?E?I?D$8H?E?A?D??A??A???A??E?ӸA??DDЃ??]?fo-'fEPfo
`&fM`fo#'fEpfo
&'f??fof&f??fo
'f??fof&f??Ic?Hk?Hc?H?LcL?4??A?"D?I??A??IcG@3?I??A?I?#?E?GA??A??AɍD??A???E?HDž @A?L??(HDž0??????????Hc?H??H??8A?G????????Hc?H??H??@HDžHA??EDٍ?P?H??$B?????????????????A?ЉU?H?|$PH?|$XH?|$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
h?Z?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?9???H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?L$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
???
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?q???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?

???I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ރ??H?L$XA?H?M?H?M?H??tL?	H?qH?L$XH??H?L$XI??@L?L$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
J?<?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P莂??H?L$XA?H?M?H?M?H??tL?	L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ǁ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
i?[
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?:???H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?uA?L?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?s???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?u@L?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
X?J?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?)??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?~??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??}??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
}?o?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?N}??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?|??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
/?!?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?|??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?w@H?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
r?d?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?F{??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?z??H?L$XH?M?H?M?H??tL?!H?qH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?Q??L?d$pH?E?H?D$xH?T$pH?L$P?4??L?d$pH?E?H?D$xH?T$pH?L$P???L???M??t)?A,?E?H?D$pH?E?H?D$xH?T$pH?L$P??~??H?E?H?E?H?E?3?H?]??]?I???E3?I??H?M??a???H?E?H?D$@?E??D$8?D$0????H?D$PH?D$(H?? H?D$ L??8L?E?H?U?H?M?????H9\$PtH?L$P??H?L$P??H?\$PH?\$XH?\$`I?~rI????I?FI?^A?H??PH3???H??$?H??`A_A^A]A\_^]???????????@UVWATAUAVAWH??$????H??`H?E?????H??$?H?>4,H3?H??PM??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???7?A?E3?A9D$uA?E9uA?EA3$???
H?E?H?u?@?u?A?-H??H?M???`???H?E@H?u8?E(E3?H??H?M(??`???H?EH?u?EA?KH??H?M?`????D$(?H?E?H?D$ L?M(L?E?)???H?MP?h??H???Y??H?MP?I??H?}r	H?M?@?H?EH?u?EH?}@r	H?M(? ?H?E@H?u8?E(H?}?r	H?M???H?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?EH?u?EA?-H??H?M??_???H?E@H?u8?E(E3?H??H?M(?_???H?E?H?u??E?A?HH?OH?M??v_????D$(?H?EH?D$ L?M(L?Eغ)???H?MP?0??H???!??H?MP???H?}?r	H?M???H?E?H?u??E?H?}@r	H?M(???H?E@H?u8?E(H?}r	H?M???H?EH?u?EI?D$8H?E?A?UD??A??A???A??E??A?A??ED?D?E????U?fW???-?A??A;?w?M???ƅ?AOˆE?fW??C?-?A;?w?M???ƅ?AOˆE?fW??C?-?A;?w?M???ƅ?AOˆE?fW??C?-?A;?w?M???ƅ?AOˆE?fo?fEPfo
?fM`fo?fEpfo
?f??fo5f??fo
Ef??f??Ic?Hk?Hc?H?LcD?4A??A??AD??A?P?I??A??????????%???A????Hc?IcE@3?I?uH??3?H??A?H?#?E?MC??D??A???E?HDž @A?L??(HDž0??????????Hc?H??H??8A?E????????Hc?H??H??@HDžHA??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
t?f??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Es??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?r??H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?

????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??q??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
o	?a??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?@q??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?}p??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??o??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
X?J??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?)o??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XA?L?d$pI?uH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??m??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
w?i??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Hm??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?u@H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
-???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??k??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
b?T??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3k??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??i??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??y??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Xi??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?h??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
A?3??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?h??H?L$XH?M?H?M?H??tL?!H?qH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?l??L?d$pH?E?H?D$xH?T$pH?L$P?l??L?d$pH?E?H?D$xH?T$pH?L$P?ol??L?d$pH?E?H?D$xH?T$pH?L$P?Rl??D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P?l??H?E?H?E?H?E?H?]??E?I???E3?I??H?M??N???H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H?? H?D$ L??8L?E?H?U?H?M??8??H?|$PtH?L$P??H?L$P?H?H?\$PH?\$XH?\$`I?~rI??*?I?FI?^A?H??PH3????H??$?H??`A_A^A]A\_^]???@UVWATAUAVAWH??$????H??`H?E?????H??$?H?~!,H3?H??PM??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???w?A?E3?A9D$uA?E9uA?$A3E???
H?E?H?u?@?u?A?-H?"H?M??9N???H?E@H?u8?E(E3?H??H?M(?N???H?EH?u?EA?KH?H?M??M????D$(?H?E?H?D$ L?M(L?E?)???H?MP???H?????H?MP???H?}r	H?M??H?EH?u?EH?}@r	H?M(?`?H?E@H?u8?E(H?}?r	H?M??@?H?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?EH?u?EA?-H???H?M?M???H?E@H?u8?E(E3?H???H?M(??L???H?E?H?u??E?A?HH??H?M??L????D$(?H?EH?D$ L?M(L?Eغ)???H?MP?p??H???a??H?MP?Q??H?}?r	H?M??H?H?E?H?u??E?H?}@r	H?M(?(?H?E@H?u8?E(H?}r	H?M??H?EH?u?EI?D$8H?E?A?UD??A??A???A??A??A?A??ADɉM????U??,?E??,C?E??,C?E??,C?E?fo?fEPfo
?fM`fo?fEpfo
Df??fo?f??fo
?f??f??Hc?Hk?Hc?H?LcD?4A??A??AD??A?P?I??A??????????%???A????Hc?IcE@3?I?uH??3?H??A?H?#?E?MC??D??A???E?HDž @A?L??(HDž0??????????Hc?H??H??8A?E????????Hc?H??H??@HDžHA??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
#????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??`??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
y??k??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?J`??H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?_??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??^??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
[??M??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?,^??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?]??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??\??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
z??l??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?K\??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XA?L?d$pI?uH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
&????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??Z??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?u@H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
i??[??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?:Z??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Y??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??X??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???v??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?UX??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
6??(??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
y??k??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?MV??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P??U??H?L$XH?M?H?M?H??tL?!H?qH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?XZ??L?d$pH?E?H?D$xH?T$pH?L$P?;Z??L?d$pH?E?H?D$xH?T$pH?L$P?Z??L?d$pH?E?H?D$xH?T$pH?L$P?Z??D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P??Y??H?E?H?E?H?E?H?]??E?I???E3?I??H?M??m??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
.?? ??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??E??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?rE??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?D??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
S??E??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?$D??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
??????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?jC??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?

?????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P??B??H?L$XH?M?H?M?H??tL?!H?qH?D$XH?D$pH??PH?D$xH?T$pH?L$P?nG??L?d$pH?E?H?D$xH?T$pH?L$P?QG??L?d$pH?E?H?D$xH?T$pH?L$P?4G??L?d$pH?E?H?D$xH?T$pH?L$P?G??D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P??F??H?E?H?E?H?E?H?]??E?I???E3?I??H?M??)???H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H?? H?D$ L??8L?E?H?U?H?M?????H?|$PtH?L$P???H?L$P?
?H?\$PH?\$XH?\$`I?~rI???I?FI?^A?H??XH3?被H??$?H??`A_A^A]A\_^]????????@UVWATAUAVAWH??$????H??`H?E?????H??$?H?>?+H3?H??XM??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???7?A?E3?A9D$uA?E9uA?EA3$???
H?E?H?u?@?u?A?-H???H?M???(???H?E8H?u0?E E3?H???H?M ??(???H?EH?u?E?A?KH???H?M??(????D$(?H?E?H?D$ L?M L?E??)???H?MP?h??H???Y??H?MP?I??H?}r	H?M??@?H?EH?u?E?H?}8r	H?M ? ?H?E8H?u0?E H?}?r	H?M???H?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?EH?u?E?A?-H???H?M???'???H?E8H?u0?E E3?H???H?M ?'???H?E?H?u??E?A?HH?O?H?M??v'????D$(?H?E?H?D$ L?M L?Eк)???H?MP?0??H???!??H?MP???H?}?r	H?M???H?E?H?u??E?H?}8r	H?M ??H?E8H?u0?E H?}r	H?M??ȧH?EH?u?E?I?D$8H?E?E?ME??A??A???A??E??A?A??ED?D?E?A??D?M?fW???-Ѝ????????=??w	f??P?????fO?f??PfW??C?-Ѝ??=??w	f??R?????fO?f??RfW??C?-Ѝ??=??w	f??T?????fO?f??TfW??C?-Ѝ??=??w	f??V?
??fO?f??Vfo??fEPfo
??fM`fo??fEpfo
Q?f??fo??f??fo
?f??f??Ic?Hk?Ic?H?LcD?4A??A??AD?C?	A?P?I??A??????????%???A????Hc?IcE@3?I?uH??3?H??A?H?#?E?MC??D??A???E?HDž @A?L??(HDž0??????????Hc?H??H??8A?E????????Hc?H??H??@HDžHA??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
/??!??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?;??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
???w??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?V:??H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?9??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
*????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??8??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
g??Y??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?88??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?7??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??6??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???x??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W6??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XA?L?d$pI?uH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?5??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
2??$??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?5??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?u@H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
u??g??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?F4??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???ڼ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??2??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?a2??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?1??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
B??4??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?1??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
???w??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?Y0??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
?????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P??/??H?L$XH?M?H?M?H??tL?!H?qH?D$XH?D$pH??PH?D$xH?T$pH?L$P?]4??L?d$pH?E?H?D$xH?T$pH?L$P?@4??L?d$pH?E?H?D$xH?T$pH?L$P?#4??L?d$pH?E?H?D$xH?T$pH?L$P?4??D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P??3??H?E?H?E?H?E?H?]??E?I???E3?I??H?M??r???H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H?? H?D$ L??8L?E?H?U?H?M???v?H?|$PtH?L$P?зH?L$P???H?\$PH?\$XH?\$`I?~rI??ޗI?FI?^A?H??XH3?葘H??$?H??`A_A^A]A\_^]???????@UVWATAUAVAWH??$????H??H?E?????H??$?H?.?+H3?H??pM??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???'?A?E3?A9D$uA?E9uA?$A3E???
H?E?H?u?@?u?A?-H???H?M??????H?EHH?u@?E0E3?H???H?M0?????H?E H?u?EA?KH???H?M?????D$(?H?E?H?D$ L?M0L?E?)???H?M`?X??H???I??H?M`?9??H?} r	H?M?0?H?E H?u?EH?}Hr	H?M0??H?EHH?u@?E0H?}?r	H?M???H?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?E H?u?EA?-H???H?M????H?EHH?u@?E0E3?H?t?H?M0????H?E?H?u??E?A?HH???H?M??f????D$(?H?EH?D$ L?M0L?E?)???H?M`? ??H?????H?M`???H?}?r	H?M????H?E?H?u??E?H?}Hr	H?M0?ؔH?EHH?u@?E0H?} r	H?M踔H?E H?u?EI?D$8H?E?A?UD??A??A???A??A??A?A??ADɉM????U?fW???-???0fW??C?-???4fW??C?-???8fW??C?-???<fo?fE`fo
r?fMpfo?f??fo
??f??foe?f??fo
u?f??f??Hc?Hk?Hc?H?LcD?DA??A??AD??A?P?I??A??I?U@H?U?M?ML?Mȍ???????%???A????Hc?Hc3?I?1H??3?H??A?H?#?E?MC??D??A???E?HDžX@A?L??`HDžh??????????Hc?H??H??@A?E????????Hc?H??H??HHDžPA??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?g(??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
??ް?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?'??H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
$????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??&??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?b&??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
ν????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
A??3??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI??H?D$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
z??l??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?K$??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???߬?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?#??H?L$XH?M?H?M?H??tH?L?iH?L$XH??H?L$XA?L?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
&????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??"??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j"??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
ܹ?Ϊ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?!??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
O??A??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P? !??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???v??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
6??(??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?z??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
??ަ?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
c??U??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?7??H?L$XH?M?H?M?H??tL?!H?qH?D$XH?D$pH??0H?D$xH?T$pH?L$P??!??L?d$pH?E?H?D$xH?T$pH?L$P?!??L?d$pH?E?H?D$xH?T$pH?L$P?!??L?d$pH?E?H?D$xH?T$pH?L$P?m!??D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P?4!??H?E?H?E?H?E?H?]??E?I???E3?I??H?M??????H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H??XH?D$ L??@L?E?H?U?H?M??Sd?H?|$PtH?L$P?7?H?L$P?c?H?\$PH?\$XH?\$`I?~rI??E?I?FI?^A?H??pH3????H??$?H?ĀA_A^A]A\_^]??????????????@UVWATAUAVAWH??$????H??pH?E?????H??$?H???+H3?H??`M??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???mA?E3?A9D$uA?E9uA?$A3E???
H?E?H?u?@?u?A?-H?2?H?M??I???H?EH?u?E?E3?H??H?M??%???H?E8H?u0?E A?KH?'?H?M ??????D$(?H?E?H?D$ L?M?L?E ?)???H?MP?w?H???w?H?MP?w?H?}8r	H?M 萃H?E8H?u0?E H?}r	H?M??p?H?EH?u?E?H?}?r	H?M??P?H?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?E8H?u0?E A?-H???H?M ????H?EH?u?E?E3?H?ԴH?M??????H?E?H?u??E?A?HH???H?M???????D$(?H?E H?D$ L?M?L?Eк)???H?MP?v?H???qv?H?MP?av?H?}?r	H?M??X?H?E?H?u??E?H?}r	H?M??8?H?EH?u?E?H?}8r	H?M ??H?E8H?u0?E I?D$8H?E?A?UD??A??A???A??A??A?A??AD??E????U??Z?? ?ZK??$?ZC??(?ZK??,fo??fEPfo
?fM`fo}?fEpfo
@?f??fo?f??fo
?f??f??Hc?Hk?Hc?H?LcD?4A??A??AD??A?P?I??A??????????%???A????Hc?IcE@3?I?uH??3?H??A?H?#?E?MC??D??A???E?HDž0@A?L??8HDž@??????????Hc?H??H??HA?E????????Hc?H??H??PHDžXA??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
u??g??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?F??H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?~??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
W??I??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?(??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
ʪ????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
v??h??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?G??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XA?L?d$pI?uH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
"????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?u@H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
e??W??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?6??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
ئ?ʗ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?

?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??
??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???r??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Q
??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
2??$??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
u??g??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?I??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
??ޓ?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P??
??H?L$XH?M?H?M?H??tL?!H?qH?D$XH?D$pH?? H?D$xH?T$pH?L$P?M??L?d$pH?E?H?D$xH?T$pH?L$P?0??L?d$pH?E?H?D$xH?T$pH?L$P???L?d$pH?E?H?D$xH?T$pH?L$P????D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P???H?E?H?E?H?E?H?]??E?I???E3?I??H?M??b????H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H??0H?D$ L??HL?E?H?U?H?M???Q?H?|$PtH?L$P???H?L$P??rH?\$PH?\$XH?\$`I?~rI???rI?FI?^A?H??`H3??sH??$?H??pA_A^A]A\_^]???????@UVWATAUAVAWH??$????H??H?E?????H??$?H??+H3?H??pM??M??H??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?I???[A?E3?A9D$uA?E9uA?$A3E???
H?E?H?u?@?u?A?-H?£H?M???????H?E8H?u0?E E3?H???H?M ?????H?EH?u?E?A?KH???H?M???????D$(?H?E?H?D$ L?M L?E??)???H?MP?He?H???9e?H?MP?)e?H?}r	H?M?? qH?EH?u?E?H?}8r	H?M ?qH?E8H?u0?E H?}?r	H?M???pH?E?H?u??E?I??-A??uA?G9uA?GA9D$?
H?EH?u?E?A?-H???H?M??????H?E8H?u0?E E3?H?d?H?M ?}????H?E?H?u??E?A?HH?/?H?M??V?????D$(?H?E?H?D$ L?M L?Eк)???H?MP?d?H???d?H?MP??c?H?}?r	H?M???oH?E?H?u??E?H?}8r	H?M ??oH?E8H?u0?E H?}r	H?M??oH?EH?u?E?I?D$8H?E?A?UD??A??A???A??A??A?A??AD??E????U????P?K??X?C??`?K??hfo?fEPfo
z?fM`fo
?fEpfo
Фf??fop?f??fo
??f??f??Hc?Hk?Hc?H?LcD?4A??A??AD??A?P?I??A??????????%???A????Hc?IcE@3?I?uH??3?H??A?H?#?E?MC??D??A???E?HDž8@A?L??@HDžH??????????Hc?H??H?? A?E????????Hc?H??H??(HDž0A??ED?B????????%???A????A???E?H?t$PH?t$XH?t$`I?t$H?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tH?H?qH?L$XH??H?L$XI?t$L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
=??/??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?{??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XI??@L?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??ى?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
Z??L??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?+??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?d???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XA?L?d$pI?uH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???1??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pI?u@H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
h??Z??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?9???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?wH?>??H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?wL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
O??A??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P? ???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
‘????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?w@L?d$pH?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?uH?T$`H;?uWH??I+?H??H;?vH?
|??n??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?P???H?L$XH?M?H?M?H??tL?!H?qH?D$XH?D$p H??PH?D$xH?T$pH?L$P?????L?d$pH?E?H?D$xH?T$pH?L$P?????L?d$pH?E?H?D$xH?T$pH?L$P????L?d$pH?E?H?D$xH?T$pH?L$P????D???3?E??t+???????L?d$pH???H?D$xH?T$pH?L$P?M???H?E?H?E?H?E?H?]??E?I???E3?I??H?M???????H?E?H?D$@?E??D$8?E??D$0H?D$PH?D$(H??8H?D$ L?? L?E?H?U?H?M??l??H?|$PtH?L$P?P?H?L$P?|`H?\$PH?\$XH?\$`I?~rI??^`I?FI?^A?H??pH3??aH??$?H?ĀA_A^A]A\_^]???????@SUVWATH??H?D$h????H?±+H3?H??$?M??I??H??H??L?L$xH??$?H?D$@H?D$pH?D$XH?D$P?D$@I???E3?I??H?L$@???????$??D$0H?D$(H?\$ L?L$@L??H??H???l????I?|$r	I?$?h_I?D$I?D$A?$H??$?H3??`H?ĐA\_^][??????@UVWATAUAVAWH??$????H??pH?E?????H??$?H???+H3?H??`I??L?M?M??L?E?L??L??H???H?}?H???H?E?3?H?I8?O?
???A?E%????
H?EP3?H?]H?]8D?@'H???H?M8?????H?E(H?] ?]E3?H?d?H?M?}????H?EH?]??]?D?C&H?z?H?M??Y?????D$(?H?E8H?D$ L?ML?E?(???H?M`?R?H???R?H?M`??Q?H?}r	H?M???]H?EH?]??E?H?}(r	H?M??]H?E(H?] ?EH?}Pr	H?M8?]H?EPH?]H?E8?E?MA???M?uL?u?E?EA?I???FE?]A?G3?D;?u(A;D$u!A?A?G;?uA;D$u;Nu
D;^?H?EH?]??]?A?-H?#?H?M??:????H?E(H?] ?EE3?H???H?M?????H?EPH?]H?E8A??H???H?M8???????D$(?H?E?H?D$ L?ML?E8?)???H?M`?P?H???P?H?M`?P?H?}Pr	H?M8?\H?EPH?]H?E8H?}(r	H?M?a\H?E(H?] ?EH?}r	H?M??A\H?EH?]??E?A?M???A?%?;?uA?$%?;??
H?EH?]??E?A?-H??H?M??????H?E(H?] ?EE3?H?ɍH?M??????H?EPH?]H?E8A?7H?????H?E?H?]??]?D?C&H?;~H?M???????D$(vH?E?H?D$ L?ML?E?(???H?M0??:?H????:?H?M0?:?H?}?r	H?M??FH?E?H?]??E?H?} r	H?M?FH?E H?]?EH?}?r	H?M??lFH?E?H?]??E???E?A???E?FA?VI???O/A?G3?A9FuA?GA9F?H?E?H?]??]?A?-H?	xH?M?? ????H?E H?]?EE3?H??wH?M??????H?E?H?]??E?A?,H???H?M????????D$({H?E?H?D$ L?ML?E??)???H?M0?9?H???9?H?M0?p9?H?}?r	H?M??gEH?E?H?]??E?H?} r	H?M?GEH?E H?]?EH?}?r	H?M??'EH?E?H?]??E?A?A3???
H?E?H?]??E?A?-H??vH?M??????H?E H?]?EE3?H??vH?M??????H?E?H?]??E?A?H???H?M???????D$(}H?E?H?D$ L?ML?E??)???H?M0?q8?H???b8?H?M0?R8?H?}?r	H?M??IDH?E?H?]??E?H?} r	H?M?)DH?E H?]?EH?}?r	H?M??	DH?E?H?]??E?A?$<?
H?E?H?]??E?A?-H??uH?M???????H?E H?]?EE3?H??uH?M??????H?E?H?]??E?A?H???H?M???????D$(~H?E?H?D$ L?ML?E??)???H?M0?W7?H???H7?H?M0?87?H?}?r	H?M??/CH?E?H?]??E?H?} r	H?M?CH?E H?]?EH?}?r	H?M???BH?E?H?]??E?I?F8H?E?A??D??A??A???A??E?ӾA??DDփ??}?fo?wfE0fo
?wfM@fo?wfEPfo
?wfM`fo?wfEpfo
?wf??fo?wf??Ic?Hk?Hc?H?LcL?I?G@H?E???A?"D?I??A??Hc3?I??A?I?#?E?GA??A??AɍD??A???E?HDž@D??H?? HDž(??????????Hc?H??H??A?G????????Hc?H??H??HDžA??EDٍ??P?H??$B?????????????????A?ЉU?H?\$@H?\$HH?\$PI?vH?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????I????????H?T$PH;?ufL??L+?I??M;?vH?
?o?1`?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????I????????H?T$PH;?uaL??L+?I??M;?vH?
?n??_?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?b???H?L$HA?H?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?vL?L$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
?m??^?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
/m?!^?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?????H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HI?v@L?L$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
il?[]?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?9???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
?k??\?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HI?wH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
k??[?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??M;?vH?
|j?n[?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?L???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI??A?L?L$`L?|$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
?i??Z?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
i?Z?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?????H?L$HA?H?L$pH?L$xH??tL?	L?yH?L$HH??H?L$HL?L$`H?u?H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
Sh?EY?I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?#???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
?g??X?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`I?vH?t$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?ucH??I+?H??I;?vH?
?f??W?H??I+?H??H;?v7H??H??H+?H;?sH???H?H;?HB?H?L$@?????H?L$HL?D$@A?H???H?L$pH?L$xH??tJ?H?J?DH?A?~H?T$PH;?u^H??I+?H??I;?vH?
bf?TW?H??I+?H??H;?v2H??H??H+?H;?sH???H?H;?HB?H?L$@?5???H?L$HA?H?L$pH?L$xH??tL?	H?qH?D$HL?L$`H?E?H?D$hH?T$`H?L$@??????H?t$`H?E?H?D$hH?T$`H?L$@?????Z???m?3?I?N8?׬
H?T$`H?L$@??tH?D$`H????	H?t$`H?E?H?D$h?T???H?E?H?D$pH?E?H?]??E?I???E3?I??H?M????????E??D$8?D$0????H?D$@H?D$(H??H?D$ L??L?E?H?U?H?M??z?H?|$@tH?L$@?^VH?L$@?6H?\$@H?\$HH?\$PI?}r	I?M?k6I?EI?]A?EH??0H3??7H??HA_A^A]A\_^[]??????????@SUVWATAUAVH??H?D$h????H?·+H3?H??$?M??M??H??H??H??$?H?\$xL??$????H?5Vs+H?4?H??u L?
?gA??H??gH?
Js???H?D$@H?D$pH?D$XH?D$P?D$@I???E3?H??H?L$@舳?????$?D$0L?t$(H?D$@H?D$ M??M??H??H???֐H?{rH??=5H?CH?C?H??$?H3???5H?ĐA^A]A\_^][???????????@SUVWATH??H?D$h????H???+H3?H??$?I??I??H??H??L??$?L?d$xH?D$@H?D$pH?D$XH?D$P?D$@I???E3?I??H?L$@虲????D$0H??$?H?D$(H?D$@H?D$ L??L??H??H???(????I?|$r	I?$?D4I?D$I?D$A?$H??$?H3???4H?ĐA\_^][??@SUVWATH??H?D$`????H???+H3?H??$?M??I??H??H??H??qH??qI?yHE?HDŽ$?H?D$x?D$h3?H???H???H??L?A?H?L$h讲???H???+H?=??+I?|$HE?H?D$0H?D$XH?D$HH?D$@?D$0I???E3?H?T$hH?L$0?N????H?|$(H?D$0H?D$ M??L??H??H???????H??$?r
H?L$h?3HDŽ$?H?D$x?D$hH??$?H3??3H?ĠA\_^][????????????????L??SUVWATH??H?D$p????H?`?+H3?H??$?M??I??H??H??H??pH??pI?yHE?I?C?I?C??D$x3?H???H???H??L?A?I?K??b????H?b?+H?=S?+I?|$HE?H?D$@H?D$hH?D$XH?D$P?D$@I???E3?H?T$xH?L$@??????D$0H?|$(H?D$@H?D$ M??L??H??H???????H??$?r
H?L$x?1HDŽ$?HDŽ$??D$xH??$?H3??V2H?İA\_^][?????????L??SUVWATH??H?D$p????H??+H3?H??$?I??I??L??H??H?ZoH?CoI?yHE?I?C?I?C??D$x3?H???H???H??L?A?I?K??????H??+H?=?+H?}HE?H?D$@H?D$hH?D$XH?D$P?D$@I???E3?H?T$xH?L$@賮????D$0????H?|$(H?D$@H?D$ L??L??H??I???J????H??$?r
H?L$x?b0HDŽ$?HDŽ$??D$xH??$?H3??1H?İA\_^][??????????L??WH??H?D$`????I?[ A)s?H???+H3?H??$?I??H??f(?I?C?I?C??D$hA?H??nI?K??ܮ???H?D$0H?D$XH?D$HH?D$@?D$0I???E3?H?T$hH?L$0蔭????t$ L?
F+L?D$0H??H???????H??$?r
H?L$h?N/HDŽ$?H?D$x?D$hH??$?H3???/H??$?(?$?H?İ_??????????????H??UVWH?????H???H?D$8????H?X )p?H???+H3?H???I??H??f(?3?H?O8?E?
3ۄ??H?D$XH?\$P?\$@D?C-H??`H?L$@褭???H?E?H?\$x?\$hE3?H?f`H?L$h?~????H?E?H?]Ȉ]?D?C&H?{eH?M??Z?????D$(?H?D$@H?D$ L?L$hL?E??(???H?M??"?H???"?H?M???!?H?}?r	H?M???-H?E?H?]??E?H?}?r
H?L$h??-H?E?H?\$x?D$hH?|$Xr
H?L$@?-H?D$XH?\$P?D$@?H?E?H?]??]?A?H?{lH?M?芬???H?D$@H?D$0H?D$XH?\$P?D$@I???E3?H?U?H?L$@?G?????t$ L?
?|+L?D$@H??H???I????H?}?r	H?M??-H?E?H?]??E?H???H3??-H??$(?$?H???_^]???????????????L??WH??`H?D$0????I?[I?sI??H??H??I?C?I?C I?C?I?C??D$8A?H??kI?K?苫????D$(H?c{+H?D$ L?L$8L??H??H???#???H?\$pH?t$xH??`_????@USVWATH?l$?H???H?E?????H??}+H3?H?E'I??H??H??H?EE3?L?eD?e?E?D$H?gkH?M???????L?d$0D?d$8L?e?L?e?L?e?L?e?L?e?L?e?D?e?H?E?H?E?H?E?L?e?D?e?I???E3?H?U?H?M?蓩???H??z+H?D$(H?E?H?D$ L?L$0L??H??H???Z????H?L$0?O?H?}r	H?M??<+H?EL?e?E?H?M'H3???+H???A\_^[]?????@UVWATAUAVAWH??$????H??0H?E?????H??$xH??|+H3?H?? M??M??L??L??L?M?H???H?E?H?AH?E?E3?D?A?I???E?$A??A???A??3?A??t
A???H?E?H?]??]?A?-H?`\H?M??w????H?EH?]?E?E3?H?:\H?M??S????H?E?H?]??E?A?H??iH?M??,?????D$(?H?E?H?D$ L?M?L?E??)???H?M ???H?????H?M ???H?}?r	H?M??)H?E?H?]??E?H?}r	H?M??)H?EH?]?E?H?}?r	H?M??~)H?E?H?]??E?A?$A3E???
H?E?H?]??E?A?-H?@[H?M??W????H?EH?]?E?E3?H?[H?M??3????H?E?H?]??E?A?H??hH?M???????D$(?H?E?H?D$ L?M?L?Eк)???H?M ???H????H?M ??H?}?r	H?M??(H?E?H?]??E?H?}r	H?M??~(H?EH?]?E?H?}?r	H?M??^(H?E?H?]??E?I?D$8H?E?A?$???D$x?H?}??}??}??}??}??}?H?LcL??E?E??A??B??A?"D?I??A??IcG@3?I??A?I?#?E?GC??D??A???D$tHDž?@H???HDž??????????Hc?H??H??A?G????????Hc?H??H??HDžA??A???A?R??D?C??P?H??$?????????????????A?ЉT$pH?\$@H?\$HH?\$PI?|$H?E?H?}?H?U?H?D$@H?L$HH;???H?U?H;???H?}?H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
U?F?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$hH?L$`H??tH?H?H?GH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
tT?fE?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?E???H?L$HH?L$`H?L$hH??tH?H?yH?L$HH??H?L$HI?|$H?E?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
?S??D?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@肻??H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
"S?D?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$`H?L$hH??tH?H?yH?L$HH??H?L$HI??@H?E?L?e?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
`R?RC?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?1???H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?Q??B?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@袹??H?L$HH?L$`H?L$hH??tH?L?aH?L$HH??H?L$HI?}H?E?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
Q?B?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?P?rA?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Q???H?L$HH?L$`H?L$hH??tH?H?yH?L$HH??H?L$HI?}A?L?e?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
?O??@?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@荷??H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?zH?T$PH;?uZL??L+?I??L;?vH?
-O?@?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$`H?L$hH??tL?!H?yH?L$HH??H?L$HI?}@L?e?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
sN?e??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?D???H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?zH?T$PH;?uZL??L+?I??L;?vH?
?M??>?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@赵??H?L$HH?L$`H?L$hH??tL?!H?yH?L$HH??H?L$HI?H?E?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
&M?>?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?L??=?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?h???H?L$HH?L$`H?L$hH??tH?H?yH?L$HH??H?L$HI?L?e?H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
?K??<?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@誳??H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?zH?T$PH;?uZL??L+?I??L;?vH?
JK?<<?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$`H?L$hH??tL?!H?yH?L$HH??H?L$HL?e?I?@H?}?H?U?H?D$@H;???H?U?H;???H?}?H+?H?T$PH;?u_L??L+?I??L;?vH?
?J??;?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?a???H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?GH?A?zH?T$PH;?uZL??L+?I??L;?vH?
J??:?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?ұ??H?L$HH?L$`H?L$hH??tL?!H?yH?L$HH??H?L$HL?e?H?}?H?}?H?E?H;???H?E?L?D$@L;???H?}?I+?H?T$PH;?u\H??I+?H??H;?vH?
GI?9:?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$`H?L$hH??tJ?H?J?DH?A?1H;L$Pu?H?L$@?&???H?L$HH?L$`H?L$hH??tL?!H?yH?D$HL?e?H?D$tH?E?H?U?H?L$@?j???L?e?H?D$pH?E?H?U?H?L$@?O???L?]?L?\$`H?E?3?H?]??]?I???E3?I??H?M???????D$x?D$8?D$0????H?D$@H?D$(H???H?D$ L??L?E?H?U?H?M??s?H9\$@tH?L$@?X9H?L$@?H?\$@H?\$HH?\$PI?~rI??fI?FI?^A?H?? H3??H??$xH??0A_A^A]A\_^]???????????????@USVWATAUAVH??$@???H???H?D$8????H??j+H3?H???Ic?M??L??H??3?H?I8?e?
??u4?%???u(H??YH?
6?b???H??H?h6?Z6? H?E?E3?L?t$xD?t$hA?ރ?w}H??e?????t?H???H?&YA?H?L$h?v???H??g+?]H??X??H??X??H??XA?H?L$h?A???H??g+?(H?nX??H?MX??H?D$XL?t$P?\$@A?-H??IH?L$@??????H?E?L?u??E?E3?H??IH?M??֖???H?E?L?u??E?A?H??WH?M?诖????D$(>H?D$@H?D$ L?M?L?E??????H?M??h?H???Y?H?M??I?H?}?r	H?M??@H?E?L?u??E?H?}?r	H?M?? H?E?L?u??E?H?|$Xr
H?L$@??H?D$XL?t$P?D$@H?D$@H?D$0H?D$XL?t$P?D$@I???E3?H?T$hH?L$@?ʔ???H?\$ L?L$@M??I??H???????H?}?r
H?L$h?H?E?L?t$x?D$hH???H3??>H???A^A]A\_^[]?c???????Ě??????@UVWATAUAVAWH??$????H??@H?E?????H??$?H??g+H3?H??0Mc?H?U?L??H?M?D?M?3?H?D$PH?D$XH?D$`D?E??A??B??A?"D?I??A??I??I??I?K3?H??H??L??Mck@3?I??H??H??3?H??L??A??A???A?p?ָ??D?Ic[Mc[@C?	?P?H??$?????????????????Hc?H??3?I??L?E?I?pH?D?3?H??A??+???AʉM?D+?D?e?A?HA?̉M?3?I??H??L???E?3?I??I??A??A??+?H?E????D?C?< A??3?I??I??+???+??????? ???E3???H?E?L?m?D?m?E?E-H??FH?M?裓???H?E?L?m?D?m?E3?H?fFH?M??????H?E L?mD?mE?E#H??UH?M?Z?????D$(TH?E?H?D$ L?M?L?E?)???H?M0??H????H?M0???H?} r	H?M??H?E L?m?EH?}?r	H?M???H?E?L?m??E?H?}?r	H?M??H?E?L?m??E??E3?L?e?E?$A???\$(?|$ D?M?H??TH??0??4A?L?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ufL??L+?I??L;?vH?
WA?I2?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?'???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
?@??1?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?|???H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ufL??L+?I??L;?vH?
????0?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P货??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??L;?vH?
M???0?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ufL??L+?I??L;?vH?
?>?w/?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?U???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??L;?vH?
?=??.?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P辥??H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ufL??L+?I??L;?vH?
&=?.?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??L;?vH?
?<??-?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?_???H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?;??,?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P藣??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??L;?vH?
6;?(,?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XI?t$H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
i:?[+?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?9???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?9??*?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P諡??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pL?D$PH;???H?T$pL;???H?t$pI+?H?T$`H;?u]H??I+?H??H;?vH?
9?*?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?~H?T$`H;?u\H??I+?H??H;?vH?
?8?})?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P?^???H?L$XH?E?H?M?H?M?H??tH?H?AH?D$X?E???H?H??HDž HDž(HDžHDžHDžH?E?H?E?H?E?L?m??E?A?
H??JH?M??s????H??0H?D$@?D$8?????D$0????H?D$PH?D$(H??H?D$ L??L?E?H?Y+I?L$8???
?H?|$PtH?L$P??(H?L$P??L?l$PL?l$XL?l$`H??0H3??	H??$?H??@A_A^A]A\_^]??????????????@UVWATAUAVAWH?l$?H??pH?E?????H??$?H?1Z+H3?H?EhMc?L?E?H?U?L??H?M?L???L?}?3?H?D$PH?D$XH?D$`D?E??A??B??A?"D?I??A??L?u?I??I??I?K3?H??H??H??Ic[@3?H??H??L??3?I??H??L??A??A???A??A?иA??D?Mc[C?L-?P?H??$?????????????????Hc?I??J?D	?3?H????+???AʉM?+?u?H?E??H?ΉM?3?H??H??L?ЉE?3?H??I??A??A??D??D+?A???DD?A?2A??E??A+?+ȉL$ E??H??HH?M0?2(H?|$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?I????????I????????H?T$`H;?u_L??L+?I??M;?vH?
5??%?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?ۜ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?I????????I????????H?T$`H;?uZL??L+?I??M;?vH?
f4?X%?I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P?7???H?L$XH?M?H?M?H??tH?9H?E?H?AH?L$XH??H?L$XH?|$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
?3??$?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?v???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??M;?vH?
3?
$?I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?9H?E?H?AH?L$XH??H?L$XH?|$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
W2?I#?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?(???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??M;?vH?
?1??"?I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P蛙??H?L$XH?M?H?M?H??tH?9H?E?H?AH?L$XH??H?L$XH?|$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
	1??!?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?ژ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??M;?vH?
|0?n!?I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P?M???H?L$XH?M?H?M?H??tH?9H?E?H?AH?L$XH??H?L$XH?|$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
?/?? ?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P艗??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??M;?vH?
+/? ?I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?9H???H?AH?L$XH??H?L$XH?}?H?_H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
_.?Q?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?0???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??M;?vH?
?-???I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P裕??H?L$XH?M?H?M?H??tH?H?YH?t$XH??H?t$XL?M?M?qI?>??E?E??A??B??A?"D?I??A??L?]?L?]?I?I3?H??I??H??Icy@3?H??H??L??3?I??I??L??A??A???A?P??A?AD?C??P?H??$?????????????????Hc?H?E?HcHH??J?D
?3?L?M?I??+؍K?AˉM?3?H??I??E?L?D$pH?E?H?D$xH?L$pH?D$PH;???H?L$pH;???H?\$pH+?H?T$`H;?ueH??H+?H??I;?vH?
:,?,?H??H+?H??H;?v9L??I??I??I+?H;?s3??I?H;?HB?H?L$P????H?t$XH?D$PA?H???H?H?u?H?u?H??tH?H?H?CH?F?H?T$`H;?u`H??H+?H??I;?vH?
?+???H??H+?H??H;?v4L??I??I??I+?H;?s3??I?H;?HB?H?L$P?u???H?t$XA?H?u?H?u?H??tL?H?E?H?FH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
?*???I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P讒??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??M;?vH?
M*???I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XH?D$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??M;?vH?
?)?x?I??H+?H??L;?v3H??H??I??H+?H;?s3??H?I;?IB?H?L$P?W???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??M;?vH?
?(???I??H+?H??L;?v.H??H??I??H+?H;?s3??H?I;?IB?H?L$P?ʐ??H?L$XH?M?H?M?H??tH?L?qH?t$XH??H?}?H?t$XH?D$pH?E?H?D$xH?T$pH?L$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u\H??H+?H??I;?vH?
0(?"?H??H+?H??H;?v0H??H??L+?L;?s3??H?H;?HB?H?L$P????H?t$XH?L$PH???H?u?H?u?H??tH?H?H?DH?F?}H?T$`H;?u[H??H+?H??I;?vH?
?'???H??H+?H??H;?v+H??H??L+?L;?s3??H?H;?HB?H?L$P?{???H?t$XH?E?H?u?H?u?H??tH?H?FH?D$X?????H?H?EH?E H?E(H?EH?EH?EH?E?H?E?H?E?3?H?]؈]?I???E3?I??H?M??v???H?E0H?D$@?D$8?????D$0????H?D$PH?D$(H?EH?D$ L?ML?E?H??G+H?O8??
?H9\$PtH?L$P??H?L$P??H?\$PH?\$XH?\$`I?rI????I?GI?_A?H?MhH3???H??$?H??pA_A^A]A\_^]???????????@UVWATAUAVAWH?l$?H??PH?E?????H??$?H?QI+H3?H?EHIc?M??L??L??L???L?e?3?H?t$PH?t$XH?t$`?????H?H?E?H?E?H?E?H?E?H?EH?E?????%????????????A?ș??D?XD?]?????A?"D?E??I??A??L??H??I??3?I?EH??A+ÉE?IcE@3?I???E?A?G?????D?+?A?????I??A??A??I??3?I?GH??A+ÉE?IcG@3?I??E?A?EA?ÉE?D??D??H?|8H?M?rH?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
F$?8?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?AH?L$XH??3??H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
?#???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?g???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?"???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P螊??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
="?/?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?
???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
s!?e?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?D???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
? ???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P贈??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
 ??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
??|?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P菆??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
.? ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
b?T?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P覄??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
??r?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Q???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P舂??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
'??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?wH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
^?P
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?/???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
???	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P袀??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pL?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?	?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
??y?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?[??H?L$XH?M?H?M?H??tH?L?qH?D$XH?E?H?E?H?E?3?H?u?@?u?I???E3?I??H?M??f???H?EH?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?'8+I?M8?&?
?H?|$PtH?L$P?
H?L$P?6?H?t$PH?t$XH?t$`I?|$r	I?$??I?D$I?t$A?$H?MHH3????H??$?H??PA_A^A]A\_^]???????????????@UVWATAUAVAWH??$????H??0H?E?????H??$?H?^9+H3?H?? M??L??L??L?E?3?H?I8?]
???!A?%????H?E?3?H?}?@?}?D?@'H?FH?M??]f???H?EH?}@?}?E3?H? H?M??9f???H?E?H?}?@?}?D?G&H?5H?M??f????D$(?H?E?H?D$ L?M?L?Eк(???H?M ????H?????H?M ???H?}?r	H?M???H?E?H?}??E?H?}r	H?M???H?EH?}?E?H?}?r	H?M??f?H?E?H?}??E??A?G3?A9FuA?GA9F?
H?E?H?}?@?}?A?-H?H?M??3e???H?EH?}?E?E3?H??H?M??e???H?E?H?}??E?A?,H?#H?M???d????D$(?H?E?H?D$ L?M?L?E??)???H?M ???H?????H?M ???H?}?r	H?M??z?H?E?H?}??E?H?}r	H?M??Z?H?EH?}?E?H?}?r	H?M??:?H?E?H?}??E?A?A3???
H?E?H?}??E?A?-H??H?M??d???H?EH?}?E?E3?H??H?M???c???H?E?H?}??E?A?H??!H?M???c????D$(?H?E?H?D$ L?M?L?E??)???H?M ???H???u??H?M ?e??H?}?r	H?M??\?H?E?H?}??E?H?}r	H?M????H?}?r	H?M??5?H?E?H?}??E?H?}r	H?M??H?EH?}?EH?}?r	H?M????H?E?H?}??E???A?F3?A9GuA?FA9G?
H?E?H?}?@?}?A?-H??H?M???S???H?EH?}?EE3?H??H?M?S???H?E?H?}??E?A?,H??H?M??wS????D$(?H?E?H?D$ L?ML?E??)???H?M0?1??H???"??H?M0???H?}?r	H?M??	?H?E?H?}??E?H?}r	H?M???H?EH?}?EH?}?r	H?M????H?E?H?}??E?A?A3???
H?E?H?}??E?A?-H??H?M??R???H?EH?}?EE3?H?gH?M?R???H?E?H?}??E?A?H?bH?M??YR????D$(?H?E?H?D$ L?ML?E??)???H?M0???H?????H?M0????H?}?r	H?M????H?E?H?}??E?H?}r	H?M???H?EH?}?EH?}?r	H?M???H?E?H?}??E?I?G8H?E?A?D??A??A???A??A??A?A??ADă??U?fofE0fE@fEPfE`fEpf??f??Hc?Hk?Hc?H?LcD?A??A??ADčA?P?I??A??????????%???A????Hc?IcF@3?I?vH??3?H??A?H?#?E?^C??D??A???ȉE?@??u???+????ȉE?E?FD?E??A?F???+???D???E?HDž@L??HDž?A????????Hc?H??H??A?@??????Hc?H??H?? HDž(A??ED?B????????%???I????A?ÉE?H?|$@H?|$HH?|$PI?wH?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????I????????H?T$PH;?u`L??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@??f??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????I????????H?T$PH;?u[L??L+?I??M;?vH?
M?????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?f??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?wA?L?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
???u??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?Se??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?d??H?L$HA?H?L$pH?L$xH??tL?H?qH?L$HH??H?L$HI?w@L?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
$????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@??c??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?ac??H?L$HA?H?L$pH?L$xH??tL?H?qH?L$HH??H?L$HI?vH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?b??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??M;?vH?
7??)??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?b??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HA?L?L$`I?vH?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
m??_??I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?=a??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?`??H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`I?v@H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@??_??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
u??g??I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?E_??H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`I?vH?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
??????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?^??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@??]??H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`I?vH?t$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?ucH??I+?H??I;?vH?
P??B??H??I+?H??H;?v7H??H??H+?H;?sH???H?H;?HB?H?L$@?#]??H?L$HL?D$@A?H???I?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?u^H??I+?H??I;?vH?
??????H??I+?H??H;?v2H??H??H+?H;?sH???H?H;?HB?H?L$@?\??H?L$HA?H?L$pH?L$xH??tL?	H?qH?D$H?u?L?L$`H?T$`H?L$@@??H?E?uH?E?H?D$h?a??A?L?d$`H?E?H?D$hH?T$`H?L$@??`??H?-+H?+@??HE?H?E?H?D$pH?E?H?}??E?I???E3?I??H?M??{C???A???%?????ADċU??T$8?D$0H?D$@H?D$(H??H?D$ L??L?E?H??H?M???
?H?|$@tH?L$@???H?L$@???H?|$@H?|$HH?|$PI?}r	I?M???I?EI?}A?EH??0H3???H??HA_A^A]A\_^[]??????????????@WH??PH?D$ ????H?\$hH?t$pA??H??H??D?	A???D?A?QH???u?H?D$(H?D$@H?D$8?D$(H?L$(H?D$`??u#D?CH? ?KC???L?D$(H??H???J????@~A?H???$C???E3??A?H???C???A?L?D$(H??H???x???H?\$hH?t$pH??P_?????????@UVWATAUAVAWH??$????H??`H?E?????H??$?H?N+H3?H??PL?M?M??L??H?U?L??L?M?H?A8H?D$p?	D??A??A???A??A??A?A??AD??u?Ic}?}?MceD?e?A??AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A?D??A??A???A??A??A??AD????D??I??A??????????%???A????Hc?3?I?GH??E?A?ED?E?A?EH?E?A???DD?B????????%???A????Hc?IcE@3?H??L?ЉE?A??A?ED?B?????????????A????Hc?IcG@3?H??L???E?A?????????ƒ?ADӃ??H???ˀ????????????????Hc?IcF@3?H??E??E?E3?HDž8HDž@HDžHI?D$H???H?? H?GH???H??(HDž0??ubA??~JA???ك??M?D?D?E?D?D?U?D+?E??A??E+?D?e?A?ę?????Hc?H??H???H?? ?D?e?3??}?H?? ?3?L?d$pM;g8?
H?E?H?}??E?A?-H???H?M??@???H?E8H?}0?E E3?H???H?M ??????H?EH?}?E?A?H?<H?M???????D$(2H?E?H?D$ L?M L?E??)???H?MP?u??H???f??H?MP?V??H?}r	H?M??M?H?EH?}?E?H?}8r	H?M ?-?H?E8H?}0?E H?}?r	H?M??
?H?E?H?}??E?A?GA9E?
H?EH?}?E?A?-H???H?M???>???H?E8H?}0?E E3?H???H?M ??>???H?E?H?}??E?A?H?	H?M??>????D$(3H?E?H?D$ L?M L?Eк)???H?MP?Z??H???K??H?MP?;??H?}?r	H?M??2?H?E?H?}??E?H?}8r	H?M ??H?E8H?}0?E H?}r	H?M???H?EH?}?E?A?GA9E?
H?EH?}?E?A?-H???H?M???=???H?E8H?}0?E E3?H???H?M ?=???H?E?H?}??E?A?H??H?M??=????D$(4H?E?H?D$ L?M L?Eк)???H?MP????H???0??H?MP? ??H?}?r	H?M???H?E?H?}??E?H?}8r	H?M ???H?E8H?}0?E H?}r	H?M??׽H?EH?}?E?A?M??????????D?A???%?????D?;??	H?EH?}?E?D?F)H?y?H?M???*L?D$(H??H???v???H?\$`H??P_????????????@WH??PH?D$ ????H?\$`H??H??H?D$(H?D$pH?D$@H?D$8?D$(A?
H?p?H?L$(?n???L?
??*L?D$(H??H???????H?\$`H??P_????????????@UVWATAUAVAWH??$????H??PH?E?????H??$?H???*H3?H??@M??I??L?E?L??L??L?M?3?H?I8?U
???A?E%????
H?E?3?H?]Ј]?D?@'H???H?M?????H?E(H?] ?]E3?H?j?H?M????H?EH?]??]?D?C&H???H?M??_????D$(?H?E?H?D$ L?ML?E?(???H?M@???H???
??H?M@????H?}r	H?M???H?EH?]??E?H?}(r	H?M?јH?E(H?] ?EH?}?r	H?M?豘H?E?H?]??E???I?E8H?E???????????A???ADɃ??U?H?G@H?E?H?GH?E?3ۋG??ÉE?H?OH?M?D?HDž@L??HDž ??????????Hc?H??H??(A?@??????Hc?H??H??0HDž8H?\$@H?\$HH?\$PI?}H?D$`H?|$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?|$`H+?H????????I????????H?T$PH;?ufL??L+?I??M;?vH?
??????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?-??H?L$HH?D$@A?H???H?H?L$xH?L$pH??tH?H?H?GH?A?H????????I????????H?T$PH;?uaL??L+?I??M;?vH?
????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@??,??H?L$HA?H?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}L?L$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
U??G??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?%,??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?+??H?L$HA?H?L$pH?L$xH??tL?	H?yH?L$HH??H?L$HI?}@A?L?l$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@??*??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
f??X??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?6*??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HI?H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?r)??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??M;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@??(??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?L?l$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
N??@??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?(??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?'??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HI?@L?l$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@??&??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
n??`??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?>&??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HH?}?H??H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?v%??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??M;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@??$??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HL?l$`H?}?H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
R??D??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?"$??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
»????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?#??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HL?l$`H?}?H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@??"??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
r??d??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?B"??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HL?l$`H?}?H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?!??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?{H?T$PH;?u[L??L+?I??M;?vH?
"????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?? ??H?L$HH?L$pH?L$xH??tL?)H?yH?L$HH??H?L$HL?l$`H?E?H?D$hH?D$`H;???H?D$`L?D$@L;???H?|$`I+?H?T$PH;?u]H??I+?H??I;?vH?
b??T??H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$@?5 ??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?5H;L$Pu?H?L$@?@$??H?L$HH?L$pH?L$xH??tL?)H?E?H?AH?D$HH?E?H?D$pH?E?H?]??E?I???E3?I??H?M???????E??D$8?D$0????H?D$@H?D$(H??H?D$ L??(L?E?H???*H?M??q
?H?|$@tH?L$@???H?L$@?ΈH?\$@H?\$HH?\$PI?~rI?谈I?FI?^A?H??@H3??c?H??$?H??PA_A^A]A\_^]?????????@USVWATH??$`???H??H?D$8????H?
?*H3?H???I??H??H?ً	?3?E3??u%?B?S9Cu;Wu?????'???H?D$XL?d$PD?d$@A?-H??H?L$@?????H?E?L?e??E?E3?H???H?M??????H?E?L?d$x?D$hA?nH?4?H?L$h?????D$(?H?D$@H?D$ L?M?L?D$h?)???H?M??b{?H???S{?H?M??C{?H?}?r
H?L$h?9?H?E?L?d$x?D$hH?}?r	H?M???H?E?L?e??E?H?|$Xr
H?L$@???H?D$XL?d$P?D$@D?A???D?C?SH????oL?\$@L?\$0H?D$XL?d$P?D$@A?H?)?H?L$@????L?L$@L??H??H???c???H???H3??D?H?ĠA\_^[]???????@UVWATAUAVAWH??$????H??`H?E?????H??$?H???*H3?H??PM??I??L?E?L??L??L?M?H???H?E?3?H?I8??	???A?E%????
H?E?3?H?]??]?D?@'H?ķH?M??????H?E8H?]0?] E3?H???H?M ????H?EH?]?]?D?C&H???H?M??????D$(?H?E?H?D$ L?M L?E??(???H?MP?Ny?H????y?H?MP?/y?H?}r	H?M??&?H?EH?]?E?H?}8r	H?M ??H?E8H?]0?E H?}?r	H?M???H?E?H?]??E??\A?G3?A9Eu;GuA?GA9Eu	;G?H?EH?]?]?A?-H???H?M?????H?E8H?]0?E E3?H?m?H?M ????H?E?H?]??E?A?bH??H?M??_????D$(?H?E?H?D$ L?M L?Eк)???H?MP?x?H???
x?H?MP??w?H?}?r	H?M???H?E?H?]??E?H?}8r	H?M ?уH?E8H?]0?E H?}r	H?M?豃H?EH?]?E?A?M???A?%?;?u?%?;??
H?EH?]?E?A?-H?a?H?M??x???H?E8H?]0?E E3?H?;?H?M ?T???H?E?H?]??E?A?7H???H?M??-????D$(?H?E?H?D$ L?M L?Eк)???H?MP??v?H????v?H?MP??v?H?}?r	H?M?迂H?E?H?]??E?H?}8r	H?M 蟂H?E8H?]0?E H?}r	H?M???H?EH?]?E?I?E8H?E?D?E??A??A???A??A?ʺA??D?A??D?]?H?G@H?E?H?GH?E?D?OA????ÉE?H?OH?M?D?HDž @H??(HDž0??????????Hc?H??H??8A?@??????Hc?H??H??@HDžHA??A?ED?C??P?H??$B?????????????????A?щU?H?\$@H?\$HH?\$PI?uH?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????I????????H?T$PH;?ufL??L+?I??M;?vH?
Y??K??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?)??H?L$HH?D$@A?H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????I????????H?T$PH;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?|??H?L$HA?H?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?uL?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ufL??L+?I??M;?vH?
??Ԟ?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
I??;??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@???H?L$HA?H?L$pH?L$xH??tL?H?qH?L$HH??H?L$HI??@L?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
???u??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?S??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??M;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?L?iH?L$HH??H?L$HI?wH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
&????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?f??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?wA?L?l$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??M;?vH?
̩????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$PH;?u[L??L+?I??M;?vH?
H??H??I??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@I????????H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PI????????H;?ukL??L+?I??M;?vH?
??w?I??H+?H??L;?v?H??H??I??H+?H;?sH???H?I;?IB?H?L$@?????H?L$HI????????A?H?L$pH?L$xH??tL?H?yH?L$HH??H?L$HI?~H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??M;?vH?
;??-v?I??H+?H??L;?v4H??H??I??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??M;?vH?
????u?I??H+?H??L;?v/H??H??I??H+?H;?sH???H?I;?IB?H?L$@?{???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?~H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH????????H;?u`L??L+?I??L;?vH?
ك??t?I??H+?H??L;?v4H??H??I??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH????????H;?u[L??L+?I??L;?vH?
?H???M>?H?M??=>?H?}?r
H?L$h?3JH?E?L?l$x?D$hH?}?r	H?M??JH?E?L?m??E?H?|$Xr
H?L$@??IH?D$XL?l$P?D$@D?A???D?C?SH????2D?A???D?C?SI???2H??t?C?O9Gu;Ku?3???H?E?L?l$x?D$hA?-H?c{H?L$h?y????H?E?L?m??E?E3?H?<{H?M??U????H?D$XL?l$P?D$@A?DH??H?L$@?*?????D$(?H?D$hH?D$ L?M?L?D$@?)???H?M???<?H????<?H?M???<?H?|$Xr
H?L$@?HH?D$XL?l$P?D$@H?}?r	H?M??HH?E?L?m??E?H?}?r
H?L$h?tHH?E?L?l$x?D$hH?D$@H?D$0H?D$XL?l$P?D$@A?H??H?L$@?P?????5H?D$@H?D$0H?D$XL?l$P?D$@A?H?ˏH?L$@?????H?D$@H?D$(???D$ M??L??H??H???????H???H3??HH?ĨA]A\_^[]????@UVWATAUAVAWH?l$?H??PH?E?????H??$?H?A?*H3?H?E@Mc?L??L??D?M?3?H?D$PH?D$XH?D$`?	?????"D?H???I??H??I?M3?H??H??H??McU@3?I??H??L??3?I??H??L??Mc]I??H??J?D?3?H???+???AɉM?+??}?A?M?ωM?3?I??H??L???E?3?I??H??A??A?ȋ?+щU?E?<8E??D+?E+?H?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?t??e?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?t???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?s??d?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
6s?(d?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
?r??c?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?q??b?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
Mq??b?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?p?va?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
?o??`?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
+o?`?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
?n??_?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?m??^?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
Em?7^?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pL?t$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?l?v]?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?X???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
?k??\?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XH?M?H?M?H??tH?L?qH?D$XE?EA??D?|$ D?M?H??~H?M?2^?E???H?H?E?H?E?H?EH?E?H?E?H?E?H?E?H?E?H?E?H?E??E?A?H?e?H?M??Ի???H?EH?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?0?*I?M8??
?H?|$PtH?L$P?#\H?L$P?O<H?D$PH?D$XH?D$`H?M@H3???<H??$?H??PA_A^A]A\_^]????????????????@UVWATAUAVAWH?l$?H??PH?E?????H??$?H???*H3?H?E@Ic?M??L??L??E3?L?|$PL?|$XL?|$`?????H?H?E?H?E?H?EH?E?H?E?H?E??????%????????????A?ș??D?XD?]?????A?"D?E??I??A??L??H??I??3?I?D$H??A+ÉE?IcD$@3?I???E?A?F?????D?+?A?????I??A??A??I??3?I?FH??A+ÉE?IcF@3?I??E?A?D$A?ÉE?D??D??H??|H?M??[H?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
?h?Y?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?]???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
?g??X?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
g?X?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
?f?W?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?]???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?e??V?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
2e?$V?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
hd?ZU?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?8???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
?c??T?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
c??S?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
yb?kS?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?I???H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XI?t$H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?a??R?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?{???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$`H;?u[L??L+?I??L;?vH?
a?R?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
W`?IQ?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?'???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
?_??P?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?^??O?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
k^?]O?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?;???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?vH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?]??N?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?q???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?}H?T$`H;?u[L??L+?I??L;?vH?
]?N?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pL?l$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u]H??I+?H??H;?vH?
Q\?CM?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?$???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?zH?T$`H;?uXH??I+?H??H;?vH?
?[??L?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tH?L?iH?D$XH?E?H?E?H?E?L?}??E?A?H??uH?M???????H?EH?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?]|*I?L$8?c
?H?|$PtH?L$P?GLH?L$P?s,L?|$PL?|$XL?|$`H?M@H3??*-H??$?H??PA_A^A]A\_^]????????????????@UVWATAUAVAWH?l$?H??pH?E?????H??$?H??}*H3?H?E`Mc?H?U?L??H?M?D?M?H???H?E?H?E?3?H?D$PH?D$XH?D$`D?E??A??B??A?"D?I??A??I??I??I?J3?H??H??H??Mcb@3?I??H??H??3?H??L??A??A???A?x?׸??D?McZMcR@C?6?P?H??$?????????????????Hc?I??3?I??L?E?I?pH?D?3?H???+???AɉM?+?u?A?H?ΉM?3?I??H??L???E?3?I??I??L??A??A??D+Ƀ??D?A?0A??3?I??I??+?A??+ωL$ E??H?nlH?M(??KA?L?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
?X?xI?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
?W??H?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P譿??H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
W?H?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
V?qG?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?P???H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
?U??F?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P艽??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
"U?F?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
[T?ME?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?,???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?S??D?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P薻??H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?R??C?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Ϻ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
nR?`C?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?e?I?t$H?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?Q??B?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?o???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
Q?B?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pL?D$PH;???H?T$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
LP?>A?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P? ???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?}H?T$`H;?u[H??I+?H??H;?vH?
?O??@?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P藷??H?L$XH?E?H?M?H?M?H??tH?H?AH?D$X?E???H?H?EH?EH?E H?E?H?EH?EH?E?H?E?H?E?H?E??E?I???E3?H?]?H??H?M?詞???H?E(H?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?ML?E?H?5p*I?L$8?#?	?H?|$PtH?L$P?@H?L$P?3 H?D$PH?D$XH?D$`H?{rH??	 H?CH?C?H?M`H3?? H??$?H??pA_A^A]A\_^]??H??UATAUAVAWH??????H???H?D$P????H?XH?pH?x H?Zq*H3?H???H??H?L$8H?I8?X	H??3?H?N8??	E3????!??????H?D$pL?t$hD?t$XE?F-H?:QH?L$X?P????H?E?L?u?D?u?E3?H?QH?M??,????H?E?L?u?D?u?E?F"H??hH?M???????D$(4H?D$XH?D$ L?M?L?E??(???H?M???H????H?M??H?}?r	H?M??H?E?L?u??E?H?}?r	H?M??xH?E?L?u??E?H?|$pr
H?L$X?VH?D$pL?t$h?D$XH???H?E?L?u?@?}?D?G-H?!PH?M??8????H?E?L?u?@?}?E3?H??OH?M??????H?D$pL?t$h@?|$XD?G
H?UgH?L$X??????D$(6H?E?H?D$ L?M?L?D$X?)???H?M??H????H?M??H?|$pr
H?L$X?zH?D$pL?t$h?D$XH?}?r	H?M??WH?E?L?u??E?H?}?r	H?M??7H?E?L?u??E?H???H?v8H?E?L?u??E?A?H?ffH?M??????Hc?H?\$@?H??H??????H@?H???L??E??H??L?úH???wi	H?D$0H?D$XH?D$HH?D$pL?t$hE??D?l$XI???E3?H?U?H?L$X荚???H?D$XH?D$ D??A?H?T$0H?L$8?*???L??3?I???OL??M??H?T$0H???h	E3?H?L$@H??|H?A??G,?Gt?I??L;?|?L;?}G???/?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?j???H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?=??.?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@襥??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
<=?..?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?
???H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u\H??I+?H??H;?vH?
s<?e-?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?G???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?u]H??I+?H??H;?vH?
?;??,?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$@蹣??H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?D$HH?E?H?D$pH?E?3?H?]??]?I???E3?I??H?M???????E??D$8?D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H?U?H?M???	?H9\$@tH?L$@?n,H?L$@?H?\$@H?\$HH?\$PI?|$r	I?$?zI?D$I?\$A?$H???H3??*
H?ĘA_A^A]A\_^[]???????@SUVWATAUH??H?D$h????H??]*H3?H??$?M??M??H??H??L?L$xH??$?H??$?H?D$@H?D$pH?D$XH?D$P?D$@I???E3?I??H?L$@?ω???H?\$0H?D$(H?|$ L?L$@M??H??H???????I?}r	I?M?I?EI?EA?EH??$?H3??2H?ĘA]A\_^][???@UVWATAUAVAWH??$????H??pH?E?????H??$?H??\*H3?H??`M??I??H?]?L??L??L???L?u?H???H?E?H???H?E?D?	A???H?yH?}?D?A?H?????
E?\$A?E3?D;?u$;Cu?A?E;?u;CuA;Ou
E;_?
H?EH?u?@?u?A?-H?r<H?M?艉???H?EPH?uH?E8E3?H?L<H?M8?e????H?E(H?u ?EA??H?EH?M?>?????D$(?H?E?H?D$ L?M8L?E?)???H?M`????H??????H?M`????H?}(r	H?M??	H?E(H?u ?EH?}Pr	H?M8?	H?EPH?uH?E8H?}r	H?M??	H?EH?u??E?A?$???A?E%?;?u?%?;??
H?E(H?u ?EA?-H??;H?M?V????H?EPH?uH?E8E3?H?;H?M8?2????H?EH?u??E?A?7H???H?M???????D$(?H?EH?D$ L?M8L?E?)???H?M`????H?????H?M`???H?}r	H?M??H?EH?u??E?H?}Pr	H?M8?}H?EPH?uH?E8H?}(r	H?M?]H?E(H?u ?EA???
H?E(H?u ?EA?-H?%:H?M?H??>H?~HE?H?EE3?L?u?D?u?3?H???H???H??L?A?H?M??/r???H?E?H?E?L?u?D?u?I???E3?H?U?H?M?H?E?L9Ft??p???H?\>H?D$0H?B*???p???H?A>H?D$0H??A*H?D$(H?E?H?D$ L??M??I??H???????H?}r	H?M??{?H?EL?u??E?H?MH3??1?H?İA^A]A\_^[]????????????????@USVWATAUAVH?l$?H??H?E?????H??C*H3?H?EI??M??L??H??3?H?I8?g	??u4?%???u(H??2H?
??g??H??H?????6E3?L?u?D?u?L?u?L?u?L?u?L?u?L?u?L?u?D?u?L9v??H?
?<H??<??HE?H?EL?u?D?u?3?H???H???H??L?A?H?M??wp???H?D$@H?D$XL?t$PD?t$@I???E3?H?U?H?L$@H?E?L9Fu3?/o???H?=H?D$(H?;@*H?D$ L?L$@M??I??H???????:??n???H??<H?D$0H?@*H?D$(H?D$@H?D$ L??M??I??H???h????H?}r	H?M???H?EL?u??E?H?M???
H?MH3??R?H??A^A]A\_^[]?@USVWATAUAVH?l$?H??H?E?????H?
B*H3?H?EI??M??L??H??3?H?I8?e	??u4?%???u(H??0H?
?
?e??H??H??
??
??H??;H?~;H?~HE?H?EE3?L?u?D?u?3?H???H???H??L?A?H?M???n???H?E?H?E?L?u?D?u?I???E3?H?U?H?M?H?E?L9Ft?m???H??;H?D$0H??>*??qm???H??;H?D$0H??>*H?D$(H?E?H?D$ L??M??I??H???^????H?}r	H?M???H?EL?u??E?H?MH3????H?İA^A]A\_^[]????????????????@USVWATAUAVH?l$?H??H?E?????H?z@*H3?H?EI??M??L??H??3?H?I8?,d	??u4?%???u(H?]/H?
F?)d??H??H?/?!?H?~??H?
?9H?v9??HE?H?EE3?L?u?D?u?3?H???H???H??L?A?H?M??:m???H?E?H?E?L?u?D?u?I???E3?H?U?H?M?H?E?L9Fu2??k???H?g:H?D$(H?=*H?D$ L?M?M??I??H???|????9??k???H?5:H?D$0H??<*H?D$(H?E?H?D$ L??M??I??H???2????H?}r	H?M??o?H?EL?u??E?H?MH3??%?H?İA^A]A\_^[]????@USVWATAUAVH?l$?H??H?E?????H??>*H3?H?EI??M??L??H??3?H?I8?b	??u4?%???u(H??-H?
?
?b??H??H??
??
??H?m8H?N8H?~HE?H?EE3?L?u?D?u?3?H???H???H??L?A?H?M??k???H?E?H?E?L?u?D?u?I???E3?H?U?H?M?H?E?L9Ft?\j???H?9H?D$0H??;*??Aj???H??8H?D$0H?];*H?D$(H?E?H?D$ L??M??I??H???.????H?}r	H?M????H?EL?u??E?H?MH3???H?İA^A]A\_^[]????????????????@UH?l$?H?? H?E????L?ҋ???ȃ??;H?H??8??D?????L?A??H?QPM???Ӟ???H?QPM???????H?QP?I8M???)?????H?QP?08M???P?????I???C?????3?H?D$ ?D$(H?D$0H?D$8H?D$@H?D$HH?D$PH?D$`?D$hH?QPL?L$ M???????H?L$ ?x3?H?D$p?D$xH?E?H?E?H?E?H?E?H?E?H?E??E?H?QPL?L$pM???!????H?L$p?93?H?E??E?H?E?H?E?H?E?H?E?H?E?H?E?EH?QPL?M?M???u????H?M??K?
H?? ]?f?a?r??????????G?H?T$SH??0H?D$(????H??3??D$ H??BH?BH?BH?B H?B(H?B0H?B@?BH?D$ ?&???H??H??0[??????????????@UVWATAUAVAWH??$????H??@H?E?????H??$?H?N;*H3?H??0M??L??L??L?E?3?H?I8??^	???A?%????
H?E?3?H?]??]?D?@'H?7H?M??Nh???H?EH?]?]E3?H?H?M?+h???H?E?H?]?]?D?C&H?( H?M??h????D$(H?E?H?D$ L?ML?Eغ(???H?M0????H?????H?M0???H?}?r	H?M???H?E?H?]??E?H?}r	H?M?y?H?EH?]?EH?}?r	H?M??Y?H?E?H?]??E??NA?G3?A9FuA?GA9F?H?E?H?]?]?A?-H?H?M??'g???H?EH?]?EE3?H??H?M?g???H?E?H?]??E?A?,H?-5H?M???f????D$(!H?E?H?D$ L?ML?E??)???H?M0???H?????H?M0?w??H?}?r	H?M??n?H?E?H?]??E?H?}r	H?M?N?H?EH?]?EH?}?r	H?M??.?H?E?H?]??E?I?F8H?E?A?????%???A???ADÉE????U?fo?fE0fo
?fM@fofUPfofE`fEpf??f??Hc?Hk?Hc?H?LcD?A?????????ƒ?ADӃ?ɸP?H??$?????????????????Hc?IcG@3?I?wH??3?H??A?H?#?A?A?F?D??A???E?HDž HDž HDž(????????Hc?H??H??I?FH?E??????????Hc?H??H??HDžH?\$@H?\$HH?\$PM?fH?D$`L?d$hH?T$`H?D$@H?L$HH;???H?T$`H;???L?d$`L+?H????????H????????H?T$PH;?ufL??L+?I??L;?vH?
????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?p{??H?L$HH?D$@A?I???L?H?L$xH?L$pH??tI?$H?I?D$H?A?H????????H????????H?T$PH;?uaL??L+?I??L;?vH?
????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@??z??H?L$HA?H?L$pH?L$xH??tH?L?aH?L$HH??H?L$HM?fL?\$`L?d$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?ufL??L+?I??L;?vH?
'??I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@??y??H?L$HH?D$@A?I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?uaL??L+?I??L;?vH?
??~?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?\y??H?L$HA?H?L$pH?L$xH??tL?L?aH?L$HH??H?L$HI??@L?\$`L?t$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?x??H?L$HH?D$@I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?uaL??L+?I??L;?vH?
1?#?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?x??H?L$HA?H?L$pH?L$xH??tL?L?qH?L$HH??H?L$HM?gH?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?u`L??L+?I??L;?vH?
g?Y?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$@?7w??H?L$HH?D$@I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?v??H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HA?L?L$`M?gL?d$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?ufL??L+?I??L;?vH?
????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@??u??H?L$HH?D$@A?I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?uaL??L+?I??L;?vH?
p
?b??I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?@u??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HL?L$`M?g@L?d$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?ufL??L+?I??L;?vH?
?????I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?zt??H?L$HH?D$@A?I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?uaL??L+?I??L;?vH?
???I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@??s??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HL?L$`L?e?L?d$hH?T$`H?D$@H;???H?T$`H;???L?d$`L+?H?T$PH;?ufL??L+?I??L;?vH?
I?;??I??H+?H??L;?v:H??H??H??H+?H;?sH???H?I;?IB?H?L$@?s??H?L$HH?D$@A?I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$PH;?uaL??L+?I??L;?vH?
?
????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$@?~r??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HL?L$`H?E?H?D$hH?D$`L?D$@H;???H?D$`L;???L?d$`M+?H?T$PH;?u]H??I+?H??H;?vH?
?	????H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$@?q??H?L$HL?D$@I???H?L$pH?L$xH??tK?H?K?DH?A?H?T$PH;?u^H??I+?H??H;?vH?
Y	?K??H??I+?H??H;?v2H??H??H+?H;?sH???H?H;?HB?H?L$@?,q??H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?D$HH?E?H?D$pH?E?H?]??E?I???E3?I??H?M??uX????E??D$8?E??D$0H?D$@H?D$(H??H?D$ L??L?E?H?6**H?M????	?H?|$@tH?L$@???H?L$@??H?\$@H?\$HH?\$PI?}r	I?M???I?EI?]A?EH??0H3???H??$?H??@A_A^A]A\_^]??????????????@UVWH??$???H???H?E?????H??$ H?6+*H3?H???H??H?ً3?%??S???J???A???8???/??
?&?????????H?E?H?u?@?u?D?F-H??
H?M??X???H?E?H?u?@?u?E3?H??
H?M???W???H?EH?u?@?u?A??H??&H?M???W????D$(GH?E?H?D$ L?M?L?E?)???H?M?z??H???k??H?M?[??H?}r	H?M??R?H?EH?u??E?H?}?r	H?M??2?H?E?H?u??E?H?}?r	H?M???H?E?H?u??E?H?t$@?t$HH?t$PH?t$XH?t$`H?t$hH?t$pH?u??u?H?GH9Cu??G9Gu7H?E?H?D$0H?E?H?u??E?A?H?{%H?M??V???H?T$@?LD?A???D?C?SH????
L?]?L?\$0H?E?H?u??E?A?	H?%H?M??jV???H??L?E?H???z????H?L$@?/?
H???H3????H??$ H???_^]??????????????H???X ?HUVWATAUAVAWH??????H??@H?E?????H?XH??(*H3?H??0M??L??L???D?	A???L?yD?AA?I??裿
E?]3?E9\$uE;^uA?EA9u
A;F?
H?E?H?}?@?}?A?-H?PH?M??gU???H?E H?}?EE3?H?*H?M?CU???H?E?H?}??E?A?bH??H?M??U????D$(XH?E?H?D$ L?ML?E?)???H?M0????H??????H?M0???H?}?r	H?M???H?E?H?}??E?H?} r	H?M??H?E H?}?EH?}?r	H?M??n?H?E?H?}??E?A?$???A?E%?;?uA?%?;??
H?E?H?}??E?A?-H?H?M??3T???H?E H?}?EE3?H??H?M?T???H?E?H?}??E?A?7H?iH?M???S????D$(YH?E?H?D$ L?ML?E??)???H?M0???H?????H?M0???H?}?r	H?M??z?H?E?H?}??E?H?} r	H?M?Z?H?E H?}?EH?}?r	H?M??:?H?E?H?}??E?I?D$8H?E?A?D??A??A???A??E?ӾA??DDփ??]?fo?fE0fo?	fU@fo'
fEPfo
*
fM`fUpfo(
f??f??Ic?Hk?Hc?H?LcL???A?"D?I??A??IcF@3?I??A?I?#?E?FA??A??AɍD??A???E?HDžHDžHDž???????Hc?H??H??IcFH?? HDž(A??D??EDٍ?P?H??$B?????????????????A?ЉU?A?D$?E?A?E?E?A?F?E??Z???E??Z???M??Z???E?H?|$PH?|$XH?|$`I?t$H?D$@H?t$HH?T$@H?D$PH?L$XH;???H?T$@H;???H?t$@H+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
o?a??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?@h??H?L$XH?D$PA?H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?g??H?L$XA?H?L$pH?L$xH??tH?H?qH?L$XH??H?L$XL?L$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P??f??H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
b??T??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3f??H?L$XA?H?L$pH?L$xH??tL?	H?E?H?AH?L$XH??H?L$XI?t$@L?L$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ie??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P??d??H?L$XA?H?L$pH?L$xH??tL?	H?qH?L$XH??H?L$XI?uH?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
=??/??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?d??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c??H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$X?H?t$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?b??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
W??I??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?(b??H?L$XH?L$pH?L$xH??tH?1H?E?H?AH?L$XH??H?L$XI?u@A?L?l$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?_a??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??`??H?L$XH?L$pH?L$xH??tL?)H?qH?D$X3?I?L$8???	H?T$@???"H?D$@H???H?D$HH?D$PH?L$XH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
(????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??_??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?g_??H?L$XH?L$pH?L$xH??tH?H???H?AH?L$XH??H?L$XH?D$@H???H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?^??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
3??%??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?^??H?L$XH?L$pH?L$xH??tH?H???H?AH?L$XH??H?L$XH?D$@H???H?D$HH?D$@L?D$PH;???H?D$@L;???H?t$@I+?H?T$`H;?u\H??I+?H??H;?vH?
b??T??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?6]??H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?AH?D$X??H?T$`H;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?\??H?L$XH?L$pH?L$xH??tH?H???H?AH?D$X?RL?l$@H?E?H?D$HH?L$P?,a??L?l$@H?E?H?D$HH?T$@H?L$P?a??L?l$@H?E?H?D$HH?T$@H?L$P??`??I?FH?D$@H?D$HH?T$@H?L$P??`??L?l$@H?E?H?D$HH?T$@H?L$P?`??L?l$@I?F@H?D$HH?T$@H?L$P?`??L?l$@L?|$HH?T$@H?L$P?~`??L?l$@H?E?H?D$HH?T$@H?L$P?a`??L?l$@H?E?H?D$HH?T$@H?L$P?D`??L?]?L?\$pH?E?3?H?]Ȉ]?D?CH??H?M???C????E??D$8?D$0????H?D$PH?D$(H??H?D$ L??L?E?H??*H?M??e?	?H9\$PtH?L$P?J?H?L$P?v?H?\$PH?\$XH?\$`H??0H3??*?H??$?H??@A_A^A]A\_^]????????????????@UVWATAUAVAWH??$????H??0H?E?????H??$?H??*H3?H?? M??L??L??D?	A??33???u ?B?IA9D$u;JuA??A???
H?E?H?}?@?}?A?-H???H?M??B???H?EH?}?E?E3?H?w?H?M??B???H?E?H?}??E?A?UH??H?M??iB????D$(?H?E?H?D$ L?M?L?Eк)???H?M ?#??H?????H?M ???H?}?r	H?M????H?E?H?}??E?H?}r	H?M????H?EH?}?E?H?}?r	H?M???H?E?H?}??E?E?$A???I?D$H?E?E?D$?I??蚫
I?D$8H?E?A?D??A??A???A??E?ӸA??DDЃ??]?fo/?fE fo??fU0fo??fE@fo
??fMPfU`fo??fEpf??Ic?Hk?Hc?H?LcL?M?~@??A?"D?I??A??Ic3?I??A?I?#?E?FA??A??AɍD??A???E?HDž?HDž?HDž???????Hc?H??H??IcFH??HDžA??A?EDٍ?P?H??$B?????????????????A?ЉU?H?|$@H?|$HH?|$PI?t$H?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?ueL??L+?I??L;?vH?
?????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@??V??H?L$HH?D$@A?H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
[??M??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?,V??H?L$HA?H?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?t$L?L$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?bU??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@??T??H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HI??@L?L$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
4??&??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?T??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?sS??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HI?uH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?R??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
J????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?uA?L?L$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@??=??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
???v??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?U=??H?L$HA?H?L$pH?L$xH??tL?	H?qH?L$HH??H?L$HL?L$`L?|$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@??L??J??L?úH????H?D$0fW??t$Pf(??t$XfD(??t$`fD(??t$h?D$8?D$ D?L$@D??H?T$0I????o??L??3?I????L??M??H?T$0H???O?E3?M??~nE?A??A???A??E?Kf?3?H?L$Pf?A??A??AD?;?}?C??X???H??I????M;?|??DL$h?DD$`?|$X?t$PI???m?H?L$0????Au?A}?EE?EMI??H???H3??
?L??$?I?[PA(s?A({?E(C?E(K?I??A_A^A]A\_^]???????????????@USVWATAUAVAWH??$????H??XH?D$P????H???)H3?H??@M??I??H??H?L$@H???H?I8輽L??E3?H???H?D$xL?d$pD?d$`D?@-H??H?L$`????H?E`L?eXD?eHE3?H?X?H?MH?q???H?E8L?e0D?e E?F
H???H?M ?L????D$(H?D$`H?D$ L?MHL?E ?)???H?Mp?x?H????w?H?Mp??w?H?}8r	H?M ?݃H?E8L?e0?E H?}`r	H?MH轃H?E`L?eX?EHH?|$xr
H?L$`蛃H?D$xL?d$p?D$`M?F?,?G?d-??uK?~|ED9f|?3?H?D$0D?d$8?D$<L?D$0H?T$`H???0???H??H???$????H?L$`?)g
?E3?E??A?QH???%l
H?FH?D$HH?D$`H?D$xH?D$p?D$`H?L$`H?D$0I?u?L??E3?H???H?D$hL?d$`D?d$PD?@-H??H?L$P?????H?EPL?eHD?e8E3?H?ڬH?M8??????H?E(L?e D?eE?E
H?7?H?M???????D$(H?D$PH?D$ L?M8L?E?)???H?M`?n?H???xn?H?M`?hn?H?}(r	H?M?_zH?E(L?e ?EH?}Pr	H?M8??zH?EPL?eH?E8H?|$hr
H?L$P?zH?D$hL?d$`?D$PM?F?$?F????uK?~|ED9F|?3?H?D$0D?D$8?D$<L?D$0H?T$PH??????H??H???????H?L$P?]
?E3?A?QH???b
H?FH?D$@H?D$PH?D$hH?D$`?D$PH?L$PH?D$0I?~u:A?H?4??o????H?D$PH?D$(D?l$ A?L?D$@I??I???p???8A?H????5????H?D$PH?D$(D?l$ A?L?D$@I??I???/???H?T$PH???"?????D$P?E?D?D$TD?E??D$X?E??D$\?E?H?D$`H?E?H?L$hH?M?H?D$pH?E?H?D$xH?E?H?E?H?E?H?E?H?E?H?E?H?E?H?UH?U?E3?L?mL?mH??tA?U?>lH?U?D?D$TA??H?E?H?H?
H?E?H?HH?E?H?H?D?m?H?T$PH?M??l?H?L$hH??t?????k??u
H?L$P??kL?m?L?l$xL?l$pL?l$`H?E?D?(L?l$hH?E?H?M?H;?t?kH?u?H??tC???E??~4H??A?????fn????f/?wf(??H??H??u?H??t[?ϖfWש?Ic?C?$D;?}=H?NA+ċ?ffffff???fn????f/?wf(??H??H??u?H?M?H??t?????j??u	H?M???jL?m?L?m?L?m?L?m?H?E?D?(L?m?H?EH?M?H;?t??jH??0H3??wH??HA_A^A]A\_^[]????????????@USVWATAUAVAWH??$????H??HH?D$H????H?D?)H3?H??0M??I??H??L??H???H?I8?n?L??E3?H???H?D$hL?d$`D?d$PD?@-H?1?H?L$P?G????H?EPL?eHD?e8E3?H?
?H?M8?#????H?E(L?e D?eE?E
H?g?H?M???????D$(H?D$PH?D$ L?M8L?E?)???H?M`?i?H???i?H?M`?i?H?}(r	H?M?uH?E(L?e ?EH?}Pr	H?M8?ouH?EPL?eH?E8H?|$hr
H?L$P?MuH?D$hL?d$`?D$PM?F?$?F????uK?~|ED9F|?3?H?D$0D?D$8?D$<L?D$0H?T$PH???????H??H????????H?L$P??X
?E3?A?QH????]
H?FH?D$@H?D$PH?D$hH?D$`?D$PH?L$PH?D$0I?~u:A?H?d??????H?D$PH?D$(D?l$ A?L?D$@I??I???k???8A?H???e????H?D$PH?D$(D?l$ A?L?D$@I??I???_|??H?T$PH???R?????D$P?E?D?D$TD?E??D$X?E??D$\?E?H?D$`H?E?H?L$hH?M?H?D$pH?E?H?D$xH?E?H?E?H?E?H?E?H?E?H?E?H?E?H?UH?U?E3?L?mL?mH??tA?U?ngH?U?D?D$TA??H?E?H?H?
H?E?H?HH?E?H?H?D?m?H?T$PH?M??7g?H?L$hH??t????g??u
H?L$P?	gL?m?L?l$xL?l$pL?l$`H?E?D?(L?l$hH?E?H?M?H;?t??fH?u?H??tC?G??E??~4H??A?????fn????f/?wf(??H??H??u?H??t[???fW??Ic?C?$D;?}=H?NA+ċ?ffffff???fn????f/?wf(??H??H??u?H?M?H??t????!f??u	H?M??
fL?m?L?m?L?m?L?m?H?E?D?(L?m?H?EH?M?H;?t??eH??0H3???rH??HA_A^A]A\_^[]????????????@USVWATAUAVAWH??$????H??HH?D$H????H?t?)H3?H??0M??I??H??L??H???H?I8螪L??E3?H???H?D$hL?d$`D?d$PD?@-H?a?H?L$P?w????H?EPL?eHD?e8E3?H?:?H?M8?S????H?E(L?e D?eE?E
H???H?M?.?????D$(H?D$PH?D$ L?M8L?E?)???H?M`??d?H????d?H?M`??d?H?}(r	H?M?pH?E(L?e ?EH?}Pr	H?M8?pH?EPL?eH?E8H?|$hr
H?L$P?}pH?D$hL?d$`?D$PM?F?$?F????uK?~|ED9F|?3?H?D$0D?D$8?D$<L?D$0H?T$PH???
???H??H???????H?L$P?T
?E3?A?QH???Y
H?FH?D$@H?D$PH?D$hH?D$`?D$PH?L$PH?D$0I?~u:A?H?????????H?D$PH?D$(D?l$ A?L?D$@I??I????f???8A?H?B??????H?D$PH?D$(D?l$ A?L?D$@I??I???w??H?T$PH????????D$P?E?D?D$TD?E??D$X?E??D$\?E?H?D$`H?E?H?L$hH?M?H?D$pH?E?H?D$xH?E?H?E?H?E?H?E?H?E?H?E?H?E?H?UH?U?E3?L?mL?mH??tA?U?bH?U?D?D$TA??H?E?H?H?
H?E?H?HH?E?H?H?D?m?H?T$PH?M??gb?H?L$hH??t????Nb??u
H?L$P?9bL?m?L?l$xL?l$pL?l$`H?E?D?(L?l$hH?E?H?M?H;?t?bH?u?H??t@?w??E??~1H??A????fn???f/?wf(??H??H??u?H??tK?2?fW:??Ic?C?$D;?}-H??A+??fn???f/?wf(??H??H??u?H?M?H??t????da??u	H?M??PaL?m?L?m?L?m?L?m?H?E?D?(L?m?H?EH?M?H;?t?5aH??0H3??nH??HA_A^A]A\_^[]???????????????@USVWATAUAVAWH??$????H??HH?D$H????H???)H3?H??0M??I??H??L??H???H?I8?ޥL??E3?H???H?D$hL?d$`D?d$PD?@-H???H?L$P?????H?EPL?eHD?e8E3?H?z?H?M8?????H?E(L?e D?eE?E
H?׵H?M?n?????D$(H?D$PH?D$ L?M8L?E?)???H?M`?'`?H???`?H?M`?`?H?}(r	H?M??kH?E(L?e ?EH?}Pr	H?M8??kH?EPL?eH?E8H?|$hr
H?L$P?kH?D$hL?d$`?D$PM?F?$?F????uK?~|ED9F|?3?H?D$0D?D$8?D$<L?D$0H?T$PH???O???H??H???C????H?L$P?HO
?E3?A?QH???GT
H?FH?D$@H?D$PH?D$hH?D$`?D$PH?L$PH?D$0I?~u:A?H?Լ?????H?D$PH?D$(D?l$ A?L?D$@I??I???)b???8A?H?????????H?D$PH?D$(D?l$ A?L?D$@I??I????r??H?T$PH?????????D$P?E?D?D$TD?E??D$X?E??D$\?E?H?D$`H?E?H?L$hH?M?H?D$pH?E?H?D$xH?E?H?E?H?E?H?E?H?E?H?E?H?E?H?UH?U?E3?L?mL?mH??tA?U??]H?U?D?D$TA??H?E?H?H?
H?E?H?HH?E?H?H?D?m?H?T$PH?M??]?H?L$hH??t????]??u
H?L$P?y]L?m?L?l$xL?l$pL?l$`H?E?D?(L?l$hH?E?H?M?H;?t?Z]H?u?H??tD????E??~5H??A??????Z?f/?w?Z??H??H??u?H??tL?n?fWv??Ic?C?$D;?}.H??A+????Z?f/?w?Z??H??H??u?H?M?H??t????\??u	H?M??\L?m?L?m?L?m?L?m?H?E?D?(L?m?H?EH?M?H;?t?p\H??0H3??MiH??HA_A^A]A\_^[]??????????@USVWATAUAVAWH??$????H??HH?D$H????H???)H3?H??0M??I??H??L??H???H?I8??L??E3?H???H?D$hL?d$`D?d$PD?@-H??H?L$P??????H?EPL?eHD?e8E3?H???H?M8??????H?E(L?e D?eE?E
H??H?M??????D$(H?D$PH?D$ L?M8L?E?)???H?M`?g[?H???X[?H?M`?H[?H?}(r	H?M??gH?E(L?e ?EH?}Pr	H?M8?gH?EPL?eH?E8H?|$hr
H?L$P??fH?D$hL?d$`?D$PM?F?$?E??A????uK?~|ED9F|?3?H?D$0D?D$8?D$<L?D$0H?T$PH??????H??H???????H?L$P?J
?E3?A?QH???O
H?FH?D$@H?D$PH?D$hH?D$`?D$PH?L$PH?D$0I?~u:A?H???P????H?D$PH?D$(D?l$ A?L?D$@I??I???j]???8A?H?÷?????H?D$PH?D$(D?l$ A?L?D$@I??I???n??H?T$PH????????D$P?E?D?D$TD?E??D$X?E??D$\?E?H?D$`H?E?H?L$hH?M?H?D$pH?E?H?D$xH?E?H?E?H?E?H?E?H?E?H?E?H?E?H?UH?U?E3?L?mL?mH??tA?U?YH?U?D?D$TA??H?E?H?H?
H?E?H?HH?E?H?H?D?m?H?T$PH?M???X?H?L$hH??t?????X??u
H?L$P?XL?m?L?l$xL?l$pL?l$`H?E?D?(L?l$hH?E?H?M?H;?t?XH?u?H??t=????E??~.H??A??f???f/?wf(??H??H??u?H??tK???fW???Ic?C?$D;?}-H??A+????f/?wf(??H??H??u?H?M?H??t?????W??u	H?M???WL?m?L?m?L?m?L?m?H?E?D?(L?m?H?EH?M?H;?t?WH??0H3??dH??HA_A^A]A\_^[]???@USVWATAUAVAWH??$8???H???H?D$`????H?D?)H3?H???L?L$PL?D$HL??L??H?L$@H??0H?D$XH??8???%???3ۃ?t	???H?E?H?]??]?A?-H??H?M??1????H?E?H?]??E?E3?H???H?M??
????H?E?H?\$x?D$hA?H??H?L$h???????D$(?H?E?H?D$ L?M?L?D$h?)???H?M??V?H???V?H?M??}V?H?}?r
H?L$h?sbH?E?H?\$x?D$hH?}?r	H?M??QbH?E?H?]??E?H?}?r	H?M??1bH?E?H?]??E?I?M8?*?H??H???H?E?H?\$x?D$hD?@-H??H?L$h?????H?E?H?]?@?u?E3?H?˓H?M???????H?E?H?]?@?u?D?F
H?(?H?M???????D$(?H?D$hH?D$ L?M?L?E??)???H?M??xU?H???iU?H?M??YU?H?}?r	H?M??PaH?E?H?]??E?H?}?r	H?M??0aH?E?H?]??E?H?}?r
H?L$h?aH?E?H?\$x?D$hH????D$0?D$4D?aM??L??H?T$8I??艬?i?E??~{A??f????A$?Z?f/?wH????.?zt?Z??A$fn?Z?f/?w&H????.?zt?Z?fW????-??D$0H??H??u?C??Ic?D;??~A+Nj?L?D$H????A?Z?f/?wH????.?zt?Z??Afn?Z?f/?w&H????.?zt?Z?fW????-??D$4H??H??u?H?L$@HcA@L?Q3?I??L??L?؋	????A?"D?I??A??3?I??I??H??3?I??I??L??L?L$PM??t'?D$0??x?A??A+?A?A+?A??
H???A?QA??H???L?L$XM??t?D$4??x?A??A+?A?A+??A?QA?H???g_H?L$8??Y??t#????H??L?
J?A??H????z?H???H3???^H???A_A^A]A\_^[]????????@USVWATAUAVAWH??$8???H???H?D$`????H???)H3?H???L?L$PL?D$HL??L??H?L$@H??0H?D$XH??8???%???3ۃ?t	???H?E?H?]??]?A?-H?z?H?M??????H?E?H?]??E?E3?H?T?H?M??m????H?E?H?\$x?D$hA?H?}?H?L$h?C?????D$(?H?E?H?D$ L?M?L?D$h?)???H?M???P?H????P?H?M???P?H?}?r
H?L$h??\H?E?H?\$x?D$hH?}?r	H?M??\H?E?H?]??E?H?}?r	H?M??\H?E?H?]??E?I?M8芕H??H???H?E?H?\$x?D$hD?@-H?R?H?L$h?h????H?E?H?]?@?u?E3?H?+?H?M??D????H?E?H?]?@?u?D?F
H???H?M???????D$(?H?D$hH?D$ L?M?L?E??)???H?M???O?H????O?H?M??O?H?}?r	H?M??[H?E?H?]??E?H?}?r	H?M??[H?E?H?]??E?H?}?r
H?L$h?o[H?E?H?\$x?D$hH????D$0?D$4D??D$ H?L$(??.
?H?M???.
?H?M???.
H??L??$0I?[I?{ I??]?????????????H??H?HUH?h?H??0H?D$x????H?XH?xI??H???D$ ??E??B?E??B?E?H?BH?E?H?BH?E?H?J H?M?H?B(H?E?H?B0H?E?H?B8H?E??B@?E??BD?EċBH?E?H??t??>?H??H?M????????E H?T$(H?M???_????D$(??D$,?C?D$0?CH?D$8H?CH?D$@H?CH?L$HH?K H?D$PH?C(H?D$XH?C0H?D$`H?C8?D$h?C@?D$l?CD?D$p?CHH??t
??r=?D$ H?L$(?-
?H?M??~-
?H?M??t-
H??L??$0I?[I?{ I??]?????????????H??H?HUH?h?H??0H?D$x????H?XH?xI??H???D$ ??E??B?E??B?E?H?BH?E?H?BH?E?H?J H?M?H?B(H?E?H?B0H?E?H?B8H?E??B@?E??BD?EċBH?E?H??t??<?H??H?M??ϭ????E H?T$(H?M??y^????D$(??D$,?C?D$0?CH?D$8H?CH?D$@H?CH?L$HH?K H?D$PH?C(H?D$XH?C0H?D$`H?C8?D$h?C@?D$l?CD?D$p?CHH??t
??<?D$ H?L$(?,
?H?M??,
?H?M??,
H??L??$0I?[I?{ I??]?????????????L??H??H?D$0????3?I?C??D$HI?C?I?C?I?C?I?C?I?C?I?C?A?C?I?C?I?C???????H?L$@?+
H?Ę????????H?A?	A?"D???3???I??A??I????H??UATAUAVAWH?h?H??0H?E?????H?XH?pH?x H??)H3?H?E(M??M??L??L??H???H?A8H?E??????????Ǹ??D??}????]?LcYD?]?D?QD?U???A?"D?E??I??A??3?I?D$I???E?A?????I??A??3?I?FI??E?D??A?™?????Hc?H?M?L?]H?EH?EH?EH?E 3?H?|$@H?|$HH?|$PA?$??????Ã?D??E?D$A?T$H???5/
H9}??
H??H?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
t??d?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
as?Sd?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?2???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?t$H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?r??c?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?j???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
r??b?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?uH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
Cq?5b?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?p??a?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?vH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?o??`?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
^o?P`?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?/???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?wH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?n??_?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?h???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
n??^?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HA?L?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?m?1^?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?l??]?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?x???H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?k??\?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
Fk?8\?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
}j?o[?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?N???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?i??Z?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u\H??I+?H??H;?vH?
i?Z?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?u]H??I+?H??H;?vH?
?h??Y?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$@?b???H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?D$HH?E?3?H?}?@?}?D?GH?J?H?M???????H?E?H?D$pH?E?H?}?@?}?I???E3?H?U?H?M?胷????E??D$8?E??D$0H?D$@H?D$(H?EH?D$ L?M?L?E?H?R?)H?M??	"	?H?}?r	H?M??&9H?E?H?}??E?H?|$@tH?L$@??XH?L$@??8H?|$@H?|$HH?|$PH?M(H3??9L??$0I?[8I?s@I?{HI??A_A^A]A\]????????????????H?A???????????̰?????????????̉H????????????̋?B???????????H?QH9????????H??H??H?????H??H??H?????H?AH+H???????H?QH9????????H??HH????????H??HH????????H?AH+H???????H;QsH9w??2?????????????????H??(H?
%f?W???????????????????????????????????????????H???????????????H???v7????????H?AH+H???????H?AH+H???????H?QH9????????H;QsH9w??2?????????????????H??(H?
ue?gV???????????????????????????????????????????H???????????????H????6????????H???????????????H??????????????H???????????????H??????????????H?H????????????H??????????????H?H????????????H??H??H??????H??H??H??????????????????????????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA??????????????H?AHHc?H?H??HA?????????????̋9u?B9Au??2??????????????H?H9HB?H?????H???????????????H???????????????H???????????????H??HH?D$ ????3?H??tUH????????H;?wH???45H??u8H?D$PH?T$PH?L$(?^V?H??bH?D$(H?
?'H?L$(??4?H??H???H??HH?D$ ????3?H??tUH????????H;?wH????4H??u8H?D$PH?T$PH?L$(??U?H??bH?D$(H???'H?L$(?4?H??H???H?H????????????H?H?I?H?AH??????????????????H?H????????????H?H????????????H?H+H????????H???????????????H??????????????H?H???????????H???????????????I;?tfff?D?JH??I;?u?H??D?	?????????????H?H????????????H?H????????????H???????????????H???????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H???????????????3????????????????D$???????????3????????????????D$???????????H??H?$????H?L$ H?L$0H??t???B?A?B?A?B?A?H???????????H???????????????H?????????????????????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H?H????????????H??????????????H??????????????H???????????????H???????????????H??H??H? ???????H??L??I??H??I?!?H????????????????D$???????????H?\$L?D$WH?? H??H??H;?t fDH??A?Є?uH?? H;?tL?D$@??H??H?\$0H?? _?????????H???????????????H???????????????H??????????????̰??????????????H???????????????H?H?I?H?AH??????????????????H???????????????H???????????????H???????????????3?????????????????????????????3???????????????3???????????????H+?H?gfffffffH??H??H??H???H?I???????????????H??H??H????̋D?D?ID?QD?Y??B?A?B?A?B?AD?D?JD?RD?Z????????????H???????????????H?H?I?H?AH??????????????????H;?t3fff??B?H??I??A??BA?@?BA?@?BA?@H;?u?I???????H????????????????D$??????????̋????????????H?Hc?H????????H??????A?????A??H???????????D$(?D?AD?IH???A?????????B/Av??2?????????????????H?QH?gfffffffH+H??H??H??H???H???????????????H?QH?gfffffffH+H??H??H??H???H?????????????????????????????H???????????????H???????????????H???6.????????H??(H?
?\?wM???????????????H?H????????????H?H????????????H?3333333???????????????????̋9HL?H??????̋9HL?H???????H??HH?D$ ????3?H??tYH?3333333H;?wH??H???-H??u8H?D$PH?T$PH?L$(??N?H?Z[H?D$(H?f?'H?L$(?Z-?H??H???????????????H???????????????H???????????????H???????????????H???????????????H????????????????D$????????????D$???????????H???????????????H??????????????H?PH???????????H?\$WH?? ??H???|
??tH???m,H??H?\$0H?? _??H???????????????H???????????????H?T$H??8H?D$ ????H??H?T$XH??tI??H???6?????H??8???????????????H??8H?D$ ????H?L$@H?L$PH??t???????H??8????????H?QH9Q???????H??????????????3?H?H?AH?AH??????????????????H??HH?D$ ????3?H??tXH????????H;?wH??H???q+H??u8H?D$XH?T$XH?L$(??L?H?;YH?D$(H?G?'H?L$(?;+?H??H????????????????H??????????????3?H?H?AH?AH??????????????????H??HH?D$ ????3?H??tXH????????H;?wH??H????*H??u8H?D$XH?T$XH?L$(??K?H??XH?D$(H???'H?L$(?*?H??H????????????????H?H????????????H??????????????H?H????????????H??H??H??????L?H????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H??H??H??????H??H??H??H???H?H9?????????H?H9?????????L?L$ SH??0H?D$ ????I???5
?H??H??0[?'
???????L?L$ SH??0H?D$ ????I???
?H??H??0[??
???????L?L$ SH??0H?D$ ????I????
?H??H??0[??
???????H?H????????????H?H?IcH?AH??????????????????H?H????????????H?H????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H?H+H????????H??????????????H?H???????????H???????????????H???????????????H?H????????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????2???????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H??H?QL??H??I? H?H?I?H?AH????????????????????????????????H+?H?gfffffffH??H??H??H???H???H??H??H????̋D?D?ID?QD?Y??B?A?B?A?B?AD?D?JD?RD?Z????????????H?H?I?H?AH??????????????????L?H?gfffffffL+I??H??H??H???H????????????????H?\$H?|$?AI??L??/BH??v5?D?
D?R?RA?KA??CA?C?CA?C?CA?CD?D?S?S?K?ACA/@v8A?A?A?PE?@D?O?A?C?GA?C?GA?C?GA?A?SE?CE?K?CA/Cv6?A?A?SE?CE?KA??CA?C?CA?C?CA?C??SD?CD?KH?\$H?|$????????????I??L??H;?t+DD?B?H??H??D??J?H?J?H?J?HI;?u???????????L??H?B?H?H+?H??L??M;?}Xf??AAI??H?/D?v?H?H?\$0H?l$8H??H?t$@H?? _??????????L?AL??H?gfffffffL+I??H??H??H???H?H?3333333H??H??H+?H;?s
3?I;?IB?H???H?I;?IB?H?????????????????????????H+?H?gfffffffH??H??H??H???H?I???????????????ATAUH??(I??M??L??H+?H??H??(??H??H?\$@H?l$HH?H?t$PH?|$ ??H?H??H??H??H??H??H?,L?H??????I??N?/H+?I??????I??I??H+?H+?M??H??????L??I??H??H?|$ H?t$PH?l$HH?\$@H??(A]A\?j???H??(A]A\?]????????????????H??L??H;???L?AL;???H?\$ H?t$(H?|$@E?X?AAA?A?xA?pD?\$?L$/?M??I??v7M;?t!?A?H???A?A?A?A?A?A?AI;?u?A?A?yA?qE?Y?/?wB?H??H???D?AD?ID?Q??C?A?C?A?C?A?D?CD?KD?SH??I;?r?I;?veL?U??AB?O/?wA/?wIA??O??W?D?G?D?O??G?A?BH???GA?B?GA?B?GA?
A?RE?BE?JH??I??L;?r?I;???I;??wH;?t0???WD?GD?O??F?G?F?G?F?G??VD?FD?NL??L??H??A?A?
A?RE?BE?JA?A?CH??H??A?BA?CA?BA?CA?BA?A?SE?CE?K????H??0????H?? ?????H???????H???????H?? ?????H??0?????H??I;?uuH??H;?t2??M?UD?ED?M?E?G?E?G?E?G?E??WD?GD?O?F???WD?GD?O??F?H???G?F?G?F?G??VD?FD?N?d????E??SD?CD?K??EH???C?E?C??E?C??M?UD?ED?M?)???H?\$@H?l$HI?>H?|$XI?vH?t$PI??H?? A^A]A\?E3??H???????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I??????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H??(L??L??L+?I??I??H?H+?H??L??H????H?\$0H?l$8H?t$@H?|$ H??L?d$H??L?l$H?|H?fff??s??k?D?c?D?k?H??H??I?ˉt$H??M??I;?}\?H??H??AD??A/D?vH??M?H??H?A??C??A?D?C?D?A?D?C?D?A?D?C?D?L??H?TI;?|?I;?u4I??H?M?A?D??C??A?D??C?D?A?D??C?D?A?D??C?D?M?J?I?A?H?H+?H??H??M;?}]?D$f?H??H?A/D?v@A??M?C??A?D?C?D?A?D?C?D?A?D?C?D?L??H?B?H?H+?H??H??M;?|?M?C?,?G?d?G?l?C?t?M???????L?l$L?d$H?|$ H?t$@H?l$8H?\$0H??(?H+?H?gfffffffH??H??H??H???H?I????????????????{??????????????H??8?B?L?L$ ?D$ ?B?D$$?B??D$(?B??D$,??B??A?B?A?B??A?B?H+?L?B?3?I???r???H??8??????????????H????	????????H??H?D$0?D$(H?D$ ?????H??H???????????????H??H?D$0?D$(H?D$ ?????H??H?H??(H??H+?H???H??~E3?E3?????H??(?????????????L?D$VWATH??0H?D$(????H?\$XM??I??H??H??L?D$ @H;?t"L??H??I???????H??PH?|$`H??PH?\$P??H??H?\$XH??0A\_^?????????H?l$H?|$ ATH+?H??I??H+?I?gfffffffI??I??H??L??I??I??H???L?I??H??I??L??I??I??H???L?M??M??tf?I??L??H?H??H??H??u?M;??OM???FH?\$O??K??I??H??H?t$L?ffffff?M?I??L;?LD?f??A??A??NA?@?FA?H?NA?@?FA?HH?NI?@H?FI?HH?NI?@H?FI?HH?N(I?@(H?F(I?H(H?N0I?@0H?F0I?H0H?N I?@ H?F I?H ?N@A?@@?F@A?H@H?N8I?@8H?F8I?H8?NDA?@D?FDA?HD?NHA?@H?FHA?HHH??I+?I??I??H??H??H??H???H?L;?}L??I??H+?L??I??L?M;?????I??I??PM???????H?t$H?\$H?l$ H?|$(A\?????????H??8?B?L?L$ ?D$ ?B?D$$?B??D$(?B??D$,??B??A?B?A?B??A?B?H+?L?B?3?I???2???H??8??????????????L?D$H?T$H?L$WH??0H?D$(????H?\$XI??I??H?\$ H?D$@H;D$Ht'L??H??H???9???H??PH?\$PH?D$@H??PH?D$@??H??H?\$XH??0_???H;?t+H?\$WH?? H??H??H?????	H??PH;?u?H?\$0H?? _????????????????L?D$H?T$H?L$WH??0H?D$(????H?\$XI??I??H?\$ H?D$@H;D$Ht'L??H??H???????H??PH?\$PH?D$@H??PH?D$@??H??H?\$XH??0_?????????????????@SH?? H?9H??t?(H??13?H?H?CH?CH?? [?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?]???H??0[????????H??H?D$0?D$(H?D$ ????H??H?H??8E3?H?D$ ?????H??8???????@WH??0L??H??L+?I??H???H??~|H?\$@H?Z?fff??I???L?L$ ?D$ ?CI???D$$?C3҉D$(?CH?ωD$,???G?C?G?C?G?C?????H??L??L+?I??I??H???H???H?\$@H??0_???H??H?D$0?D$ ?n???H??H??????????H;?t+H?\$WH?? H??H??H?????	H??PH;?u?H?\$0H?? _????????????????H??H?D$0?D$ ????H??H??????????@SH?? H?9H??t?3&H??a3?H?H?CH?CH?? [?ATH??@H?D$0????H?\$PH?t$`H?|$hH??H??H????????H;?vH?
v4?h%?H?AH+H??H;?soH???f???L??H?D$XD?D$XD?D$(H?D$ L?KL??H?SH??7????H?H?sH+?H??t?H???q%H??I?H?{H???I?H?sL?#H?\$PH?t$`H?|$hH??@A\???????????M;?tH?L$8?"`????D$(WH?D$`H?D$ L?M?L?D$8?)???H?M?????H??????H?M????H?|$Pr
H?L$8??H?D$PL?l$H?D$8H?}?r	H?M???H?E?L?m??E?H?|$xr
H?L$`?k?H?D$xL?l$p?D$`?[L??A???A?H??sz??L??A???A?H??_z??M??A?
??A?H??Kz??L?l$`D?l$hL?l$pL?l$xL?m?L?m?L?m?L?m?D?m???3?D$8?D$@?D$H?D$PL?D$`H?T$8H???=
?H?L$`??	H???H3??w?H??$?H???A]A\_^]?@SH?? 3?H??H?H?AH?A?u???H??H?? [?????????????H??H?D$0?D$ ????H??H??????????H??(L??L+?I???=???H??(?????????@SH?? H?:H??tH?????H????3?H?H?CH?CH?? [??????????????@SH?? 3?H??H?H?AH?A????H??H?? [?????????????H?\$H?l$VWATH??0H?l$pI??I??H??L??I;?t4H;?t/?CH?L$x/GvH???????H???H??????H??H;?u??D$xL?L$xH?L$PL??H?ӈD$ ????L?L$PL??L?L$x?D$xH??I?̈D$ ?u???H?\$XH?l$`I??H??0A\_^????????????????L?D$SUVH?? H?Y H??H??H;???L?d$HE3?H?|$@@H??A?Є?uZH??H?? H;?tNL9'tH???d?H???H??H??L?'L?gL?g?M?L?L?H?CH?GH?CH?GL?#L?cL?cH?? H;?tL?D$P?L?d$HH?|$@H??H?? ^][????????L?D$H?T$H?L$H??HH?D$8?????D$0?D$ L?L$`L?D$XH???????H??H????H?\$H?t$WH?? I??H??H??H;?tlH?l$03?H;?tNH9+tH?????H???H??H??H?+H?kH?k?j?L?L?H?GH?CH?GH?CH?/H?oH?oH?? H?? H;?u?H?l$0H?t$@H??H?\$8H?? _?????H?\$H?t$L?L$ WH?? I??H??H??I;?t6H??I??????H??H;?tL?L$H??H?D$HH?H??H?\$0H?t$8H?? _?H?\$0H?t$8L?	H??H?? _???H??H?D$0?D$ ????H??H??????????@VH?? H??H?IL?L;?tPD?L$0H?\$8H??H?l$@H?|$H边??H?~H??H??H;?tH???w?	H??PH;?u?H?|$HH?\$8H?nH?l$@H?? ^??????H??8?D$@L?JL?L??H???D$ I?R?????H??8????????H???W??????????@UVWH?l$?H??`H?D$ ????H??$?H??,)H3?H?EPI??H??H?y??H?z??H?T$0??I???H?T$0H?M????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?~=??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P膵??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?L??=?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
bL?T=?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?2???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?_H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u]H??I+?H??H;?vH?
?K??<?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?o???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?zH?T$`H;?uXH??I+?H??H;?vH?
K?<?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?D$XH?E?L?e??E?A?H?-~H?M??L????H?E?H?E?H?E?L?e??E?I???E3?H?U?H?M??????H?E H?D$@?D$8?????D$0????H?D$PH?D$(H?EH?D$ L?M?L?E?H??k(H?M????H?}?r	H?M??H?E?L?e??E??E3?H?|$PtH?L$P?I;H?L$P?uL?d$PL?d$XL?d$`H???H3??)L??$?I?[8I?s@I?{HI??A_A^A]A\]?????????H??UATAUAVAWH??8???H??H?E?????H?XH?pH?x H??l(H3?H???M??L??L??H?A8H?E?L?iA?E?????ƒ??H?H?E?H?E?H?EH?EH?EH?E3?H?D$PH?D$XH?D$`?E 3?D?@cH?M!?}E?A??H??X(?D$ D???N??H?szH?M ?a;H?}??I?_H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
*H?9?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?G?x8?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?F??7?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P蒮??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
4F?&7?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
nE?`6?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?D??5?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P責??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH???H??H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
D?5?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?C?z4?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Y???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pE3?L?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?B??3?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P蔪??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
6B?(3?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XH?D$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
tA?f2?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?D???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?@??1?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P趨??H?L$XH?M?H?M?H??tH?L?iH?L$XH??H?L$XI?_H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
 @?1?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
????0?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?b???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?>??/?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P蜦??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
>>?0/?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
x=?j.?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?H???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?<??-?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P躤??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?_H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u]H??I+?H??H;?vH?
$<?-?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?zH?T$`H;?uXH??I+?H??H;?vH?
?;??,?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P?m???H?L$XH?M?H?M?H??tH?H?YH?D$XH?E?L?e??E?A?H?%oH?M??ԋ???H?E?H?E?H?E?L?e??E?I???E3?H?U?H?M?藊???H?E H?D$@?D$8?????D$0????H?D$PH?D$(H?EH?D$ L?M?L?E?H?c\(H?M????H?}?r	H?M??/H?E?L?e??E??E3?H?|$PtH?L$P??+H?L$P??L?d$PL?d$XL?d$`H???H3??L??$?I?[8I?s@I?{HI??A_A^A]A\]?H??UATAUAVAWH?l$?H??`H?E?????H?XH?pH?x H?M](H3?H?EPI??M??L???L?r8?B??H?H?E8H?E@H?EHH?E H?E(H?E0?D$tH?EE3?L?}D?}?E?GH??mH?M??4????D?|$p???>H?{H?E?H?}?I????????I????????L?|$@L?|$HL?|$PH?U?H?D$@H?L$HH;???H?U?H;???H?]?H+?H?T$PH;?ujL??L+?I??M;??7I??H+?H??L;?vHH??H??I??H+?H;?sI???H?I;?IB?H?L$@? ??H?L$HH?D$@I????????I????????H???H?H?L$hH?L$`H??tH?H?H?CH?A?H?T$PH;?ueL??L+?I??M;???I??H+?H??L;?vCH??H??I??H+?H;?sI???H?I;?IB?H?L$@?%???H?L$HI????????I????????H?L$`H?L$hH??tH?H?yH?L$HH??H?L$HI?\$H?E?H?]?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?uVL??L+?I??M;???I??H+?H??L;?v4H??H??I??H+?H;?sI???H?I;?IB?H?L$@?W???H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?CH?A?uH?T$PH;?uQL??L+?I??M;??pI??H+?H??L;?v/H??H??I??H+?H;?sI???H?I;?IB?H?L$@?ў??H?L$HH?L$`H?L$hH??tH?H?YH?L$HH??H?L$HI?]H?D$xH?]?H?T$xH?D$@H;???H?T$xH;???H?\$xH+?H?T$PH;?ugL??L+?I??I????????M;???I??H+?H??L;?v;H??H??H????????H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?CH?A?H?T$PH;?ubL??L+?I??I????????M;??+I??H+?H??L;?v6H??H??H????????H+?H;?sI???H?I;?IB?H?L$@?i???H?L$HH?L$`H?L$hH??tH?H?YH?L$HH??H?L$HH?E?H?D$pH?E?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ugL??L+?I??I????????M;??nI??H+?H??L;?v;H??H??H????????H+?H;?sI???H?I;?IB?H?L$@螜??H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?CH?A?H?T$PH;?ubL??L+?I??I????????M;???I??H+?H??L;?v6H??H??H????????H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$`H?L$hH??tH?H?D$pH?AH?L$HH??H?L$HH?E?H?D$tH?E?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ugL??L+?I??I????????M;?? I??H+?H??L;?v;H??H??H????????H+?H;?sI???H?I;?IB?H?L$@?4???H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?CH?A?H?T$PH;?ubL??L+?I??I????????M;???I??H+?H??L;?v6H??H??H????????H+?H;?sI???H?I;?IB?H?L$@蚚??H?L$HH?L$`H?L$hH??tH?H?D$tH?AH?D$HH?E?H?D$`H?E?L?}??E?I???E3?H?U?H?M???????D$8?????D$0????H?D$@H?D$(H?E H?D$ L?M8L?E?H??S(I???h??H?|$@tH?L$@?L#H?L$@?xL?|$@L?|$HL?|$P?D$p???D$p;????^???H?
?1??"?H?
?1??"?H?
?1??"?H?
?1?u"?H?
u1?g"?H?
g1?Y"?H?
Y1?K"?H?
K1?="?H?
=1?/"?H?
/1?!"?H?}r	H?M??H?EL?}?E?H?MPH3??lL??$`I?[0I?s@I?{HI??A_A^A]A\]????????????H?\$H?l$H?t$WH?? I??I??H??H??I;?tH??H???0	??H??H;?u?H??H?H?\$0H?l$8H??H?t$@H?? _????????@SH?? D?L$03?H??H?H?AH?A?_/??H??H?? [???????H?T$H??8H?D$ ????H??H?T$XH??t3?H?
H?JH?JI??H????
????H??8??H;?tTH?\$WH?? H?t$0H??H??3?@H93tH???:!H??hH?3H?sH?sH?? H;?u?H?t$0H?\$8H?? _???????L?L$ H?L$VWATH??PH?D$(????H??$?I??H??H??H?L$ E3?H??t_L?d$0L?d$8L?d$@L?D$0H??H???????H?|$0tH?L$0?? H?L$0??L?d$0L?d$8L?d$@H??H?\$xH?? H?|$p?H??$?H??PA\_^????????L?L$ L?D$VWATH??0H?D$(????H?\$XM??I??H??H??L?D$ H;?t"L??H??I???l???H?? H?|$`H?? H?\$P??H??H?\$XH??0A\_^????????L??WH??H?D$0????I?[I?kI?sI??H??H??3?I?C??D$HI?C?I?C?I?C?I?C?I?C?I?C?A?C?I?[?I9@IE?3???
?O??@+??$??D$(H??$?H?D$ L??L??H??H????-???a???/??u+??$??D$(H??$?H?D$ L??L??H??H???6=???*??$??D$(H??$?H?D$ L??L??H??H???L???H?L$@? ?L??$?I?[I?kI?s I??_????????L??WH??H?D$@????I?[I?sA)s?(?H??H??3?I?C??D$XI?C?I?C?I?C?I?C?I?C?I?C?A?C?I?[?I9AIE?3????O??@H??$??D$8H??$?H?D$0H??$?H?D$(H??$?H?D$ L??(?H??H???"[??????I??uE??$??D$8H??$?H?D$0H??$?H?D$(H??$?H?D$ L??(?H??H???^m???D??$??D$8H??$?H?D$0H??$?H?D$(H??$?H?D$ L??(?H??H??????H?L$P??L??$?I?[I?sA(s?I??_?????H??8?A??@?D$`?D$ ????H??8?=??D$`?D$ 
辢??H??8?褳??H??8????????????????H?\$H?l$H?t$WH??0H??3?I??I??H???I?K??@%?D$hL??L?ƉD$(H?D$`H??H??H?D$ ?????T???)??u%?D$hL??L?ƉD$(H?D$`H??H??H?D$ ?
????#?D$hL??L?ƉD$(H?D$`H??H??H?D$ ?h???H?\$@H?l$HH?t$PH??0_????H??8?D$`?D$ ????H??8???????????L??WH??H?D$0????I?[I?sA??3?I?C??D$HI?C?I?C?I?C?I?C?I?C?I?C?A?C?M?C?I9AME???u&??$??D$(H??$?I?C?L??$??????W?A??$?H??$??\$ L?σ?@?1????=????????????\$ L??L??$?H??$?????????H?L$@??L??$?I?[I?sI??_???????????????@USVWATAUAVH??$p???H??H?D$0????H??L(H3?H???I??I??H??L??L???H?z??I?x???????%???E3???u?????!H?D$xL?t$pD?t$`A?:H?YVH?L$`??y???H?D$PL?t$H?D$8E3?H??,H?L$8?y???H?E?L?u??E?A?/H??WH?M??y????D$(9H?D$`H?D$ L?L$8L?E??)???H?M??@?
?H???1?
?H?M??!?
?H?}?r	H?M???
H?E?L?u??E?H?|$Pr
H?L$8???
H?D$PL?t$H?D$8H?|$xr
H?L$`???
H?D$xL?t$p?D$`?C9Gu?3???!H?E?L?u??E?A?:H?$UH?M??x???H?D$PL?t$H?D$8E3?H?c+H?L$8?{x???H?D$xL?t$p?D$`A?8H?"]H?L$`?Px????D$(:H?E?H?D$ L?L$8L?D$`?)???H?M???
?H?????
?H?M????
?H?|$xr
H?L$`???
H?D$xL?t$p?D$`H?|$Pr
H?L$8??
H?D$PL?t$H?D$8H?}?r	H?M???
H?E?L?u??E?L??A??SA?H?裒??M??A??SA?H?莒??E?]D?\$(L?d$ L??L???H??H??????H???H3????
H?ĐA^A]A\_^[]???????????@UH?l$?H???H?E?????H??$?I??3?H?E?E?H?E?H?EH?EH?EH?EH?E/?E7H?E??E?H?E?H?E?H?E?H?E?H?E?H?E߉E?H?EH?D$(H?E?H?D$ L?M??.???L??H?U?H?M??n???H?M??t??H?M??j?H??$?H???]??????????@UVWATAUAVAWH??$ ???H???H?D$P????H??$ H??H(H3?H???M??I??H??H?L$HL??@H??HH?D$@H?z?wI?x?l?
????%???3???u?????H?E?H?u?@?u?A?:H?6RH?M??u???H?E?H?u??E?E3?H?x(H?M??u???H?D$pH?t$h?D$XA?/H??SH?L$X?fu????D$(?H?E?H?D$ L?M?L?D$X?)???H?M??
?H????
?H?M??
?H?|$pr
H?L$X???
H?D$pH?t$h?D$XH?}?r	H?M????
H?E?H?u??E?H?}?r	H?M???
H?E?H?u??E??3??u?C9G?H?D$pH?t$h?D$XA?:H?QH?L$X?t???H?E?H?u??E?E3?H?F'H?M??_t???H?E?H?u??E?A?8H??YH?M??8t????D$(?H?D$XH?D$ L?M?L?E??)???H?M???
?H?????
?H?M???
?H?}?r	H?M????
H?E?H?u??E?H?}?r	H?M???
H?E?H?u??E?H?|$pr
H?L$X??
H?D$pH?t$h?D$X?sD?wD??PM??A??u"E?D$
??A?L$??~???M??E?D$??A?L$??3A?A?ԋ??]???M??A?A?ԋ??J???L?L$@A?A?֋??5???3?H?E??E?H?E?H?E?H?E?H?E?H?E?H?E?E??qG?D$X?D$`?D$h?D$pL?E?H?T$XI???Q	?H?M???L?T$HE?D?\$8H?D$@H?D$0L?|$(L?l$ L??XE??H??H??????H???H3??1?
H??$ H???A_A^A]A\_^]???????@UVWATAUAVAWH??$ ???H???H?D$P????H??$ H??D(H3?H???M??I??H??H?L$HL??@L??HH?z?	I?x??D?zA?X?
????%???3҃?u?????#H?E?H?U??U?A?:H?$NH?M??q???H?E?H?E??E?E3?H?b$H?M??{q???H?D$pH?D$h?D$XA?/H??OH?L$X?Lq????D$(?H?E?H?D$ L?M?L?D$X?)???H?M??
?H?????
?H?M???
?H?|$pr
H?L$X???
H?D$p3?H?T$h?T$XH?}?rH?M???
3?H?E?H?U??E?H?}?rH?M???
3?H?E?H?U??E??3??u?G9F?$H?D$pH?T$h?D$XA?:H??LH?L$X?dp???H?E?H?E??E?E3?H?##H?M??H?M??W_???H?E?H?]??E?A?:H??FH?M??0_????D$( H?D$hH?D$ L?M?L?E??)???H?M????
?H?????
?H?M????
?H?}?r	H?M????
H?E?H?]??E?H?}?r	H?M???
H?E?H?]??E?H?}?r
H?L$h??
H?E?H?\$x?D$hH?F@??HI?D$@9Hu9?H?E?H?\$x?D$hA?:H??:H?L$h?L^???H?E?H?]??E?E3?H?H?M??(^???H?E?H?]??E?A?"H?rEH?M??^????D$(!H?D$hH?D$ L?M?L?E??)???H?M???
?H????
?H?M???
?H?}?r	H?M???
H?E?H?]??E?H?}?r	H?M??r?
H?E?H?]??E?H?}?r
H?L$h?Q?
H?E?H?\$x?D$h????tA?$????H?E?H?\$x?D$hA?:H??9H?L$h? ]???H?E?H?]??E?E3?H??H?M???\???H?E?H?]??E?A?2H?DH?M???\????D$("H?D$hH?D$ L?M?L?E??)???H?M???
?H????
?H?M??o?
?H?}?r	H?M??f?
H?E?H?]??E?H?}?r	H?M??F?
H?E?H?]??E?H?}?r
H?L$h?%?
H?E?H?\$x?D$h?%???uD?n?D?nD?l$4???t?~?|$8M?OM?H?T$PI??????Ic?I???????H?vM?d$D??E????DH?\$hH?\$pH?\$xH?T$hI???????H?|$htH?L$h?H?H?L$h?t?
H?\$hH?\$pH?\$xI?_H???Hc?H??????????D??f??>??????A$D?t$@?|$D?D$H?D$LH?CH?L$@H;?sZH?H?T$@H;?wMH?|$@H+?H;Cu
?H???????H???H;H?KH?L$PH?L$XH??t???G?A?G?A?G?A?:H;Cu
?H???}???H?KH?L$XH?L$PH??tD?1?y?A?D$L?AH?CH??I??I??? ????|$8D?l$4?|$0t?H?CH9u6I?_I9t-H?{?tH?K????H?K??"?
3?H?C?H?C?H?C?I?G?A??E;???P???H???H3????
H??$H???A_A^A]A\_^]???????@UVWATAUAVAWH??$P???H??H?D$H????H??$?H?],(H3?H???M??I??H??H??H?y???AA???HcIHcCH??? I?Ʌ?~H?S@L??f?HcH??H??I??u?H???zH??o?G??HcOHcGH???&I?Ʌ?~H?W@L???HcH??H??I??u?H???*H?~??F??LcNHcFL???&??~"H?N@H??fff?HcL??H??H??u?M?????%?E3???H?E?L?m?D?l$xE?E:H?5H?L$x?~X???H?E?L?m?D?m?E3?H?AH?M??ZX???H?D$hL?l$`D?l$PE?EH??@H?L$P?1X????D$(zH?D$xH?D$ L?M?L?D$P?)???H?M????
?H?????
?H?M????
?H?|$hr
H?L$P??
H?D$hL?l$`?D$PH?}?r	H?M???
H?E?L?m??E?H?}?r
H?L$x?{?
H?E?L?m??D$x?%???u?C9G?H?D$hL?l$`?D$PA?:H??3H?L$P?JW???H?E?L?m??E?E3?H?
H?M??&W???H?E?L?m??D$xA?9H??H?L$x??V????D$({H?D$PH?D$ L?M?L?D$x?)???H?M???
?H????
?H?M???
?H?}?r
H?L$x??
H?E?L?m??D$xH?}?r	H?M??k?
H?E?L?m??E?H?|$hr
H?L$P?I?
H?D$hL?l$`?D$P?%???
u?C9F?H?D$hL?l$`?D$PA?:H??2H?L$P?V???H?E?L?m??E?E3?H??H?M???U???H?E?L?m??D$xA?=H?>H?L$x??U????D$(|H?D$PH?D$ L?M?L?D$x?)???H?M???
?H???r?
?H?M??b?
?H?}?r
H?L$x?X?
H?E?L?m??D$xH?}?r	H?M??7?
H?E?L?m??E?H?|$hr
H?L$P??
H?D$hL?l$`?D$PLccD?d$0M?OM?H?T$8I???????I??I???????H?[H?H?vE??E???@L?l$PL?l$XL?l$`H?T$PI???$????H?|$PtH?L$P?X?H?L$P??
L?l$PL?l$XL?l$`M?o?I?M?????A?????t'D?t$8?D$L+?L+?D?t$XA??D$\??D$`?AD?D$dH?T$XH?O?????H??H??u?H?W?H?O?L??L+?I??????H?|$@E3?L?L$PL?D$0H?T$8A??I??H??H?|$@L?l$h?????H???H3???
H???A_A^A]A\_^[]???????????????@USVWATH?l$?H??`H?D$ ????H?-(H3?H?EPA??I??H??H?y??H?z??H?T$0?|3???H?T$0H?M??.???H?L$HH??t?????
??u
H?L$0?ݷ
E3?L?d$`L?d$XL?d$PL?d$@H?D$pD? L?d$HH?E?H?L$xH;?t踷
H?T$0H???3???H?T$0H?M??H.???H?L$HH??t????}?
??u
H?L$0?h?
L?d$`L?d$XL?d$PL?d$@H?D$pD? L?d$HH?E?H?L$xH;?t?F?
D??L??H?U?H?M??????H?M?H??t?????
??u	H?M???
L?e?L?e?L?e?L?e?H?E?D? L?e?H?E?H?M?H;?t??
?H?MH??t????Ƕ
??u	H?M?賶
L?e L?eL?eL?eH?E0D? L?eH?E@H?M8H;?t蘶
H?MPH3??x?
H??`A\_^[]???????????@UH?l$?H??@H?E0????H??$PI??3?H?E??E?H?E?H?E?H?E?H?E?H?E?H?EЉE?H?D$@?D$HH?D$PH?D$XH?D$`H?D$hH?D$pH?E??E?H?E??E?H?E?H?E?H?EH?EH?EH?E ?E(H?ExH?D$8?Ep?D$0H?E?H?D$(H?D$@H?D$ L?M?????D???L??H?T$@H?M??+????H?M?豥?H?L$@覥?H?M?蜥H??$PH??@]????????????@USVWATH??$0???H???H?D$0????H?(H3?H???I??I??H??H?y?~H?z?sI?x?hH?T$@?\0???H?T$@H?M`?+???H?L$XH??t????Ҵ
??u
H?L$@轴
E3?L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t蚴
H?T$@H????/???H?T$@H?M?*+???H?L$XH??t????_?
??u
H?L$@?J?
L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t?*?
H?T$@H???y/???H?T$@H?M??*???H?L$XH??t?????
??u
H?L$@?ڳ
L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t躳
?? ?D$ L??L?E?H?UH?M`??????H?M?H??t????}?
??u	H?M??i?
L?e?L?e?L?e?L?e?H?E?D? L?e?H?E?H?M?H;?t?N?
?H?MH??t????0?
??u	H?M??
L?e0L?e(L?e L?eH?E@D? L?eH?EPH?MHH;?t??
?H?MxH??t?????
??u	H?M`?ϲ
L???L???L???L?epH???D? L?exH???H???H;?t袲
H???H3???
H???A\_^[]??D?L$ L?D$H?T$H?L$USVWATAUAVAWH??$X???H??HDž?????Ic?M??L??H??3?D??t$@????H?uЉu?H?u?H?u?H?u?H?u?H?uH?u?uH?u ?u(H?u0H?u8H?u@H?uHH?uPH?u`?uhL??L?E H?U??@???H??@??HH??PH??XH??`H??hH??pH??????H??????H??H??H??H??H?? H??0??8H??????H???H???H???H???H???H??????H?E H?D$0H???H?D$(H???H?D$ L??@L?E?I??H??????@?t$ M??L???H???H??@?`????H????Ӡ?H????Ơ?H??@蹠?H?M 诠?H?M?襠?UH9r?KH?AH9A?=H?u?H?u?H?u?H?t$HH?t$PH?t$X??Hc?H?L$H?
???IcVI??????H?}?I?_I??H;?tL?}?I??H??????H?? H;?u?L??H??H?\$xL???I?JI+JH?gfffffffH??H??H??H??H???H?H?Mp??H??H?U???D??fffff?H??H?H;Hu13?H?} ?}(H?}0H?}8H?}@H?}HH?}PH?}`?}hH?M A?????EЋD?EԋD?E?H?DH?E?H?DH?E?L?D L?E?H?D(H?E?H?D0H?EH?D8H?E?D@?E?DD?E?DH?EM??t?I????
H?U?L???H?M?A??3?D?l$@I?BL??D$0H?L$(???D$ L?M?I??I???9????A??tA???D?l$@H?M?谞?A??tA???D?l$@H?M 藞?|$pA?~?,H?E?H???L??H?}?L?l$H?H?U?I?M?4L?u?I?DI?H;?t?YH??H;?u?L?l$HH?L$PL;?IE?H?L$PI?|I?H?T$hI?^M?>L;???H;????AG/B??H;?saL;?w\L??M+?H;L$Xu?H?L$H豴??H?L$PL?l$HH?T$hI???M?H?L$hH?M?H??tA??A?F?AA?F?AA?F?A?DH;L$Xu?H?L$H?[???H?L$PH?T$hH?M?H?L$hH??t???B?A?B?A?B?AH?L$PH??H?L$PH??H?T$h??L;?scM;?w^M??M+?H;L$Xu?H?L$H????H?L$PL?l$HH?T$hI???M?H?M?H???H??tA??A?F?AA?F?AA?F?A?JH;L$Xu?H?L$H蓳??H?L$PH?T$hH???H?M?H??tA??A?G?AA?G?AA?G?AH?L$PH??H?L$PI??L;?t
L?l$H?N???L?u?@?t$ L?L$HL??I??H?Mx衵??D?d$ L?MxL??H?T$hH???脵??M?^I?I;?t/I??M;?t#???A?B?A?B?A?BH??H??I;?u?I?VH?L$PL?l$HI+?H??H?M?H?E?H???H;M?HC?H?H??I?L;?tf?I??I??蕾??I??L;?u?L?l$HD?L$pA??D?L$pL?E?I?? L?E?L???E;NH?\$xL???????D?l$@H??H?\$xH?U?H??PH?U?H;]pL????w???3???tTI?I?H;?t1H????~????uH?? H;?u??H;?tL??~??H??H??????H??M?OL??H???I???????H?|$HtH?L$H???H?L$H蹶
H?t$HH?t$PH?t$XH?}?tNH?M??c?H?}?H?]?H;?t/H?;tH???G?H??u?
H?3H?sH?sH?? H;?u?H?]?H???U?
H?u?H?u?H?u?H?ĨA_A^A]A\_^[]????????@USVWATH??$0???H???H?D$0????H??(H3?H???I??I??H??H?y?~H?z?sI?x?hH?T$@?%???H?T$@H?M`?M ???H?L$XH??t???肩
??u
H?L$@?m?
E3?L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t?J?
H?T$@H???$???H?T$@H?M?????H?L$XH??t?????
??u
H?L$@???
L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t?ڨ
H?T$@H???)$???H?T$@H?M??j???H?L$XH??t???蟨
??u
H?L$@芨
L?d$pL?d$hL?d$`L?d$PH?E?D? L?d$XH?E?H?M?H;?t?j?
?? ?D$ L??L?E?H?UH?M`??????H?M?H??t????-?
??u	H?M???
L?e?L?e?L?e?L?e?H?E?D? L?e?H?E?H?M?H;?t???
?H?MH??t?????
??u	H?M?̧
L?e0L?e(L?e L?eH?E@D? L?eH?EPH?MHH;?t豧
?H?MxH??t???蓧
??u	H?M`??
L???L???L???L?epH???D? L?exH???H???H;?t?R?
H???H3??/?
H???A\_^[]??@UH?l$?H??@H?E0????H??$PI??3?H?E??E?H?E?H?E?H?EH?EH?EH?E ?E(H?E??E?H?E?H?E?H?E?H?E?H?E?H?EЉE?H?D$@?D$HH?D$PH?D$XH?D$`H?D$hH?D$pH?E??E?H?ExH?D$8?Ep?D$0H?D$@H?D$(H?E?H?D$ L?M??P???D???D?\$ L??L?D$@H?U?H?M??>????H?L$@?c??H?M??Y??H?M??O?H??$PH??@]???????????????@USVWATAUH??$????H??8H?D$0????H??(H3?H?? I??I??H??L???H?y?pH?z?eI?x?ZI?y?OH?T$@?? ???H?T$@H????6???H?L$XH??t????k?
??u
H?L$@?V?
E3?L?l$pL?l$hL?l$`L?l$PH?E?D?(L?l$XH?E?H?M?H;?t?3?
H?T$@H??? ???H?T$@H?M?????H?L$XH??t??????
??u
H?L$@??
L?l$pL?l$hL?l$`L?l$PH?E?D?(L?l$XH?E?H?M?H;?t?ä
H?T$@H??? ???H?T$@H?M`?S???H?L$XH??t???舤
??u
H?L$@?s?
L?l$pL?l$hL?l$`L?l$PH?E?D?(L?l$XH?E?H?M?H;?t?S?
H?T$@H??????H?T$@H?M??????H?L$XH??t?????
??u
H?L$@??
L?l$pL?l$hL?l$`L?l$PH?E?D?(L?l$XH?E?H?M?H;?t??
????D$(L?d$ L?M?L?E`H?UH?????????H?M?H??t???蝣
??u	H?M?艣
L?m?L?m?L?m?L?m?H?E?D?(L?m?H?E?H?M?H;?t?n?
?H?MxH??t????P?
??u	H?M`???I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?"??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?!??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?? ??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
a??S??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?1 ??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?e??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
6??(??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?s??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HM?nH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
״?ɥ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
H??:??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HM?fH?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
???s??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?R??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HI?^H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
+????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$PH;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?t??H?L$HH?L$pH?L$xH??tH?H?YH?D$HH?E?H??H?D$`H?D$hH?T$`H?L$@????H?D$`H???H?D$hH?T$`H?L$@????Mc]L??Ic$H??HDž HDž( HDž0HDž8H?E?H?D$pH?E3?H?]??]?I???E3?H?? H?M??3????D$8?????D$0????H?D$@H?D$(H??(H?D$ L??L?E?H?
?'I???j?H9\$@tH?L$@???H?L$@?Á
H?\$@H?\$HH?\$PH??8rH?? 螁
HDž8H??0ƅ H?M??~e?H???H??t????Au
??uH????*u
H???H???H???H???H???H???H??H??H;?t??t
H??@H3??Ձ
H??$?H??PA_A^A]A\_^]???????????@UVWATAUAVAWH??$????H??PH?E?????H??$?H?n?'H3?H??@I??I??H??L???L???L?e?I?@@E3?xu?8uA?%????H?EL?m?D?m?A?2H?)?H?M??`????H?E(L?m ?EE3?H?#?H?M??H?\$0H?t$8H?? _??????????????̋9HB?H???????3?H?H?AH??????H??(H?	H??t
H???H??(??????H??H????H??UH??H??H?E?????H?XH?xH??H????E??A?E??A?E?H?AH?E?H?AH?E?H?I H?M?H?G(H?E?H?G0H?E?H?G8H?E?G@?E??GD?E?GH?E?H??t???>
?H??H??????L?]?I;?tnH?M?H??t
??>
H????.L?]?L?[8?E???E??C?E??CH?E?H?CH?E?H?CH?E?H?C(H?E?H?C0?E??C@?E?CD?E??CHH?E?H?C H?M??~.L??$?I?[I?{I??]??????????@SH?? H??H?IH??t(????>
??uH?H??t
H???H?K?
>
E3?L?[L?H?? [???????@SH?? H??H?IH??t(?????=
??uH?H??t
H???H?K?=
E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H???m=
H?KH??t(????\=
??uH?H??t
H???H?K?H=
3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????H?L$WATAUAVAWH??0H?D$ ????H?\$hH?l$pH?t$xH????,H?KP??,H?????,H?????,H??@??,H?????,H????,H??0???H??PH??t/????p<
??u"H??HH??t
H???H??P?U<
E3?L??PL??HH??@H??t.????$<
??u!H??8H??t	H?A?W?H??@?
<
L??@L??8H????,?H?????+?H??@??+?H?????+?H?????+?H?KP??+?H??H?\$hH?l$pH?t$xH??0A_A^A]A\_?+?????????M??D?‹?I?????@UVWATAUH?l$?H??0H?D$X????H??$xH?$?'H3?H?E E??H??H??L??A???N?q???L?OPA???N?]???E3?A??u/L???E?E??N?????L???E?E??N?*????%E???H?E?H?EH?EH?EL?mL?mL?m?H?E??BL?m?L?m?L?m?L?m?L?m?L?m?H?D$hH?E?H?E?H?E?L?m?L?m?L?l$hH?D$`?BL?m?L?m?L?m?L?l$pL?l$xL?m?H??8uv?D$0D?d$(D?l$ 3?D?JD?BH?L$@???H??H??8?o????H?L$HH??t+?????9
??uH?L$@H??t
H???H?L$H??9
L?l$HL?l$@H??Hux?D$0D?d$(?D$ E3?3?E?AH?L$@?m??H??H??H??????H?L$HH??t+????r9
??uH?L$@H??t
H???H?L$H?[9
L?l$HL?l$@H?L$xH??t????39
??u
H?L$`?9
L?m?L?m?L?m?L?l$pH?E?D?(L?l$xH?E?H?M?H;?t?9
?H?M?H??t?????8
??u	H?M???8
L?m?L?m?L?m?L?m?H?ED?(L?m?H?EH?MH;?t?8
L??@????N?L	A??????D?FD????%???
uW???|ND9??|EL?l$@D?D$H?D$LL?D$@H?T$`H????P????H??H????@????H?L$`?E(??D?J	H????>-D?FD????%???
uW???|ND9??|EL?l$@D?D$H?D$LL?D$@H?T$`H?????????H??H???輩???H?L$`??'??D?J	H????,D?l$TD?l$PH??0H??t????ZQH?L$PH?L$ L?L$T? D?B?H???>
H??0?L$P??t!??H??L?
JuA?fH?7??z?H?M H3???C
H??$xH??0A]A\_^]????????H?L$SH??0H?D$ ????H??3?H??AH?AH?AH?A H?A(H?A0H?A@?AHH?AP?AXH?A`H?AhH?ApH?AxH???H??????H??????H???H???H???H???H???H??????H??????H??H??H??H??H?? H??0??8H??@??HH??PH??XH??`H??hH??pH??????H??????H???H???H???H???H???H??????H??????H???H???H??H??H??H?? ??(H??0H??8H??@H??HH??P??????H??H??0[??????????@USVWATH??$`???H??H?D$8????H?ڒ'H3?H???I??H??H??H?L$@?????H?KPH???????E3?L???D???L???L???L???L???L???L???D???L???D???L??L??L??L??L?? L??0D??8L??@D??HL??PL??XL??`L??hL??pL???D???L???D???L???L???L???L???L???L???D???L???D???L???L???L??L??L??L?? D??(L??0L??8L??@L??HL??P?%???u ?%???u?F?O9Gu	;N?H?E?L?e??D$pA?,H?
H?D$`L?d$X?D$HH?}?r	H?M??v>
H?E?L?e??E?H?}?r
H?L$p?U>
H?E?L?e??D$p?W?O?L$0?T$4A???H?T$0H???????H??H???H3???>
H?ĠA\_^[]???????@UVWATAUAVAWH?l$?H?? H?E?????H??$hH???'H3?H?EM??L??H??D?M?L?y8H?E?H?E??E?A?H???H?M?诼???H?D$@H?D$HH?D$PH?^H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????I????????H?T$PH;?u_L??L+?I??M;?vH?
_k?Q\?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?0???H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????I????????H?T$PH;?uZL??L+?I??M;?vH?
?j??[?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?i??Z?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
ci?UZ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?4???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?h??Y?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?m???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?

h??X?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
Fg?8X?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??M;?vH?
?f??W?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?e??V?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??M;?vH?
Te?FV?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?%???H?L$HH?L$pH?L$xH??tH?H???H?AH?L$HH??H?L$HH?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?d?xU?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?W???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
?c??T?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?^@H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
0c?"T?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
?b??S?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?r???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?a??R?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
Ka?=R?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]@H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
?`?vQ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?U???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
?_??P?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
._? P?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
?^??O?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?p???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^@H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??I;?vH?
?]??N?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$PH;?uWH??I+?H??I;?vH?
M]??N?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?!???H?L$HH?L$pH?L$xH??tH?H?YH?D$HHc??H?E?HcE?H?EH?EH?E?H?E?H?E?H?E?H?D$pH?E?3?H?]??]?I???E3?H?U?H?M??;?????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H??~'I?????H9\$@tH?L$@??MH?L$@??-
H?\$@H?\$HH?\$PH?}?r	H?M??-
H?E?H?]??E?H?MH3??h.
H??$hH?? A_A^A]A\_^]??????????????H??UATAUAVAWH?h?H??@H?E?????H?XH?pH?x H??~'H3?H?E0M??L?M?M??L??L??????E?H?A8H?E?H?E?H?E??E?A?H?>?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?L??=?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P萴??H?L$XH?M?H?M?H??tH?H?yH?L$XH??H?L$XI?H?D$pH?|$xH?D$pL?D$PH;???H?D$pL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?K??<?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?γ??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
qK?c<?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?E???H?L$XH?M?H?M?H??tH?H?yH?D$XI?G@H?D$pH?D$xH?T$pH?L$P?ѷ??H?]?L?[H?D$pL?\$xH?T$pH?L$P謷??L?[@H?D$pL?\$xH?T$pH?L$P苷??M?]H?D$pL?\$xH?T$pH?L$P?j???M?]@H?D$pL?\$xH?T$pH?L$P?I???Lc??L?]Hc??H?E H?E(H?EH?EH?EH??H??M?}?HE?H?E?H?E?H?E?3?H?}?@?}?I???E3?H?U?H?M?蟙???H?\$@?D$8?????D$0????H?D$PH?D$(H?EH?D$ L?ML?E?H??k'H?M????H9|$PtH?L$P?;H?L$P?/
H?|$PH?|$XH?|$`H?}?r	H?M??
H?E?H?}??E?H?M0H3???
L??$@I?[8I?s@I?{HI??A_A^A]A\]??????@UVWATAUAVAWH?l$?H??0H?E?????H??$xH?al'H3?H?E(M??L??L??D?M?D???H?A8H?E?H?E?H?E??E?A?
H??H?M??s????H?D$PH?D$XH?D$`I?\$H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
"H?9?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
~G?p8?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?O???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?F??7?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P芮??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
,F?7?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
gE?Y6?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?8???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?D??5?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P諬??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
D?5?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
?C?w4?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?V???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?B??3?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P芪??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
)B?3?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
\A?N2?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?-???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?@??1?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P蠨??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$@H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
	@??0?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ڧ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
|??n0?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?M???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?>??/?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P舦??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
*>?/?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]@H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
e=?W.?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?6???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?<??-?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P詤??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
<?-?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?;?x,?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^@H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?:??+?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P蕢??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
8:?*+?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?D$XHc??H?EHcE?H?EH?E H?E?H?EH?EH?wzH?6=E??HE?H?E?H?E?H?E?3?H?}?@?}?I???E3?H?U?H?M??????H?\$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?ML?E?H?S['H?M????H9|$PtH?L$P?w*H?L$P?

H?|$PH?|$XH?|$`H?}?r	H?M??

H?E?H?}??E?H?M(H3??:
H??$xH??0A_A^A]A\_^]????????????????H??UATAUAVAWH?h?H?? H?E?????H?XH?pH?x H??['H3?H?EM??M??L??L??H?A8H?E?H?D$@H?D$HH?D$PH?yH?D$`H?|$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?|$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
?7??(?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@蕟??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?GH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
7?(?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
W6?I'?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?(???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?5??&?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@虝??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
5??%?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Ҝ??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
r4?d%?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?C???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?~H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?3??$?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?|???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
3?$?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HH?D$`H?EpH?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
U2?G#?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?&???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uZL??L+?I??L;?vH?
?1??"?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@蔙??H?L$HH?L$pH?L$xH??tH?H?EpH?AH?L$HH??H?L$HH?D$`H?ExH?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?0??!?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?ɘ??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uZL??L+?I??L;?vH?
f0?X!?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?7???H?L$HH?L$pH?L$xH??tH?H?ExH?AH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?/?? ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?i???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uZL??L+?I??L;?vH?
/???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?ז??H?L$HH?L$pH?L$xH??tH?H???H?AH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
5.?'?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uZL??L+?I??L;?vH?
?-???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?t???H?L$HH?L$pH?L$xH??tH?H???H?AH?L$HH??H?L$HI?|$H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?,???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@襔??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
E,?7?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?|$@H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
}+?o?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?N???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?*???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@迒??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u_L??L+?I??L;?vH?
'*??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?)???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?i???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}@H?D$`H?|$hH?D$`L?D$@H;???H?D$`L;???H?|$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?(???H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@襐??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$PH;?uWH??I+?H??H;?vH?
F(?8?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?yH?D$HI?GH?D$`H?D$hH?T$`H?L$@褔??M?_@H?D$`L?\$hH?T$`H?L$@胔??M?^H?D$`L?\$hH?T$`H?L$@?b???M?^@H?D$`L?\$hH?T$`H?L$@?A???Lc]xL?]?HcEpH?EH?EH?E?3?H?]Ȉ]?D?CH??hH?M???w???H?E?H?E?H?E?H?E?H?D$pH?E?H?]??]?I???E3?H?U?H?M??v????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H??H'H?M????H?}?r	H?M??0?H?E?H?]??E?H?|$@tH?L$@??H?L$@??H?\$@H?\$HH?\$PH?MH3???L??$ I?[8I?s@I?{HI??A_A^A]A\]??????????L?D$UVWATAUAVAWH?l$?H?? H?E?????H??$hH?MI'H3?H?EH??L??D?M?L?q8H?E?E3?L?}?D?}?E?GH?JgH?M??qv???L?|$@L?|$HL?|$PI?]H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????I????????H?T$PH;?u`L??L+?I??M;?vH?
-%??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????I????????H?T$PH;?u[L??L+?I??M;?vH?
?$?x?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?V???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?_H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??M;?vH?
?#???I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@莋??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??M;?vH?
.#? ?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`H?EpH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??M;?vH?
f"?X?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?6???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??M;?vH?
?!???I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@裉??H?L$HH?L$pH?L$xH??tH?H?EpH?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??M;?vH?
!???I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?׈??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??M;?vH?
t ?f?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?D???H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??M;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?u???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??M;?vH?
??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H???H?AH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??M;?vH?
C?5?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??M;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@胅??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]@H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??I;?vH?
???
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@辄??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?|H?T$PH;?uXH??I+?H??I;?vH?
_?Q
?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?2???H?L$HH?L$pH?L$xH??tH?H?YH?D$HHc??H?E?HcE?H?EH?EH?E?H?E?H?E?H?E?H?D$pH?E?L?}??E?I???E3?H?U?H?M??Mk????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H??='I??????H?|$@tH?L$@??H?L$@???L?|$@L?|$HL?|$PH?}?r	H?M????H?E?L?}??E?H?MH3??y?H??$hH?? A_A^A]A\_^]???????????????@USVWATAUAVAWH??$8???H???H?EP????H?>'H3?H???M??H??H??L?M??)?E3?L?|$@L?|$8D?|$0H?M?H?L$(H?D$ E3?E?GH?U?H?????t#??觉H??L?
?A?eH??Y??L?w8H?EpL?}hD?}XA?H??[H?MX??j???L?|$PL?|$XL?|$`HDž??HDž?HDž?D?}??}??9?E???L?oH?EL?m H?????????;H?M?]L???H?E?L?u?D?u?E3?H? ?H?M??9L???H?E?L?u?D?u?E?FH??=H?M??L????D$(?H?EH?D$ L?M?L?E??)???H?Mp????H?????H?Mp???H?}?r	H?M???H?E?L?u??E?H?}?r	H?M???H?E?L?u??E?H?}0r	H?M?f?H?E0L?u(?E???fD/?vfA(?fD(?f(?E3?D?F?VI???9?L?uD?u L?u(L?u0L?u8L?u@L?uHL?uXD?u`fW??u??u??u??u?L?EH?U?I???)?H?M?ӯD?^?F?E?D?]????D??H?U?I??? ???L?u?D?u?L?u?L?u?L?u?L?u?L?u?L?uD?u?u??u??u??u?L?E?H?U?I??$@?3)?H?M??Y?A??$D?+???A??$HL?u??M??E?L?E?H?T$PI??$@?e?????ue?F?D$ D?NM??$?I??$?H???????M?L$P????D$8?F?D$0?F?D$(H?D$PH?D$ M??I??$?I??$??K????tI??$8L?u?H?E?????H?L?M?M??H???PI??$HL?u?H?E?????H?L?M?M?D$PH???PD???D?\$(?F?D$ D?NL?D$PI?T$PI???u????Z??AZ?I??I????????H?L$P?&?H??@H3????L??$?A(s?A({?E(C?I??A^A]A\_^[]???H??USVWATAUAVH??X???H??pH?D$0????)p?)x?D)@?H?x'H3?H??0M??M??H??H??%?E3???u ?%???u?B?I9Fu	;J?
H?E L?uD?uA?,H?N7H?M?mH???H?E?L?u??E?E3?H?0?H?M??IH???H?E?L?u??E?A?HH?:H?M??"H????D$(?H?EH?D$ L?M?L?E??)???H?M`?ܼ?H???ͼ?H?M`轼?H?}?r	H?M???H?E?L?u??E?H?}?r	H?M???H?E?L?u??E?H?} r	H?M?t?H?E L?u?E????D??fA/?vf(?fA(?fD(?E3?D?F?VI???>?L?uD?uL?uL?u L?u(L?u0L?u8L?uHD?uPfW??u??u??u??u?L?EH?U?I???%?H?M?ثH??I???-??H??I?L$P?-??D?^?F?E?D?]?A???H?U?I??????L?u?D?u?L?u?L?u?L?u?L?u?L?u?L?u?D?u?u??u??u??u?L?E?H?U?I??$@?%%?H?M??K?A??$D?+???A??$HL?u??M??E?L?E?H?T$@I??$@?a???????D$(?F?D$ D?NL?D$@I?T$PI???????AZ??Z?I??I???????H?L$@?ΪH??0H3???L??$pA(s?A({?E(C?I??A^A]A\_^[]???????????L??WH???H?D$@????I?[I?sA)s?A){?f(?f(?H??H??D?A?AA?CE?C??$D??I?SH?L$P?%??????$?D$0?\$(?t$ f(?L??H?T$PH???J????H?L$P??|??L??$?I?[I?s A(s?A({?I??_?H??WH???H?D$@????H?XH?p)p?f(?I??H??H??L??H??H?L$P?c??????$??D$0??$??D$(?t$ L??L?D$PH??H???~????H?L$P?3|??L??$?I?[I?sA(s?I??_??????????D?D$UVWATAUAVAWH?l$?H??@H?E?????H??$?H??'H3?H?E0L??L??3?H?\$PH?\$XH?\$`D?A????%??????D??E?A??H??6H?M????M?~A?L?D$pL?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?wZ??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?AH?L$XH??3??H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P??Y??H?L$XA?H?M?H?M?H??tL?L?yH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
-????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??X??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uaL??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?jX??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?^L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
C??5??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W??H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XI?]L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
???r??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?QV??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U??H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
*????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??T??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?eT??H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?S??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
:??,??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?S??H?L$XA?H?M?H?M?H??tL?H???H?AH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
l??^??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?=R??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Q??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P??P??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?eP??H?L$XH?M?H?M?H??tH?H?YH?D$XIcH?E?Ic$H?E?H?E?H?E?H?E?H?E?H?E?H?E?H?E?3?H?]??]?D?CH?W+H?M??8???H?E?H?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?j	'I?N8???H9\$PtH?L$P???H?L$P??H?\$PH?\$XH?\$`H?M0H3??ɹH??$?H??@A_A^A]A\_^]???????????????H??UATAUAVAWH?h?H??0H?E?????H?XH?pH?x H?^
'H3?H?E(L??L??3?H?\$PH?\$XH?\$`D?A??H?Z*H?M????M?~H?D$pL?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
T??F??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%N??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?AH?L$XH??3??H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?uM??H?L$XH?M?H?M?H??tH?L?yH?L$XH??H?L$XM?fH?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?L??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
R??D??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?"L??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???~??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?]K??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??J??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
:??,??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?J??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?~I??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?H??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
[??M??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?,H??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
??????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?jG??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?

?????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P??F??H?L$XH?M?H?M?H??tH?H?YH?D$XIcH?E?Ic$H?E?H?E?H?E?H?E?H?E?H?E?H?E?H?E?3?H?]??]?D?CH?"H?M??/???H?E?H?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H???&I?N8?}??H9\$PtH?L$P?b?H?L$P莯H?\$PH?\$XH?\$`H?M(H3??E?L??$0I?[8I?s@I?{HI??A_A^A]A\]?????D?D$UVWATAUAVAWH?l$?H??@H?E?????H??$?H??'H3?H?E0L??L??3?H?\$PH?\$XH?\$`D?A????%??????D??E?A??H?? H?M????M?~A?L?D$pL?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?D??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?AH?L$XH??3??H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P??C??H?L$XA?H?M?H?M?H??tL?L?yH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
=??/??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?C??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uaL??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?zB??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?^L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?A??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
S??E??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?$A??H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XI?]L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?a@??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
:??,??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?u>??H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?=??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
J???H?M?????H?E?H?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?q?&I?O8?h?H9\$PtH?L$P???H?L$P??H?\$PH?\$XH?\$`H?M(H3??ЉH??$?H??0A_A^A]A\_^]??????D?D$UVWATAUAVAWH?l$?H??@H?E?????H??$?H?m?&H3?H?E0L??L??3?H?\$PH?\$XH?\$`D?A????%??????D??E?A??H?N?H?M??t?M?~A?L?D$pL?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
F??8??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?AH?L$XH??3??H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?a??H?L$XA?H?M?H?M?H??tL?L?yH?L$XH??H?L$XM?fL?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
ʹ????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uaL??L+?I??L;?vH?
:??,??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?
??H?L$XA?H?M?H?M?H??tL?L?aH?L$XH??H?L$XI?^L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
v??h??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?G??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??գ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XI?]L?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
 ????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?^??H?L$XA?H?M?H?M?H??tL?H?YH?L$XH??H?L$XL?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
ʰ????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
4??&??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XA?H?M?H?M?H??tL?H?E?H?AH?L$XH??H?L$XL?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
j??\??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?;??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
ڮ?̟?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XA?H?M?H?M?H??tL?H???H?AH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??q??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?P??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
??????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
1??#??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P???H?L$XH?M?H?M?H??tH?H?YH?D$XIcH?E?Ic$H?E?H?E?H?E?H?E?H?E?H?E?H?E?H?E?3?H?]??]?D?C	H??H?M??6????H?E?H?D$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?M?L?E?H?
?&I?N8?[?H9\$PtH?L$P???H?L$P?|H?\$PH?\$XH?\$`H?M0H3??i}H??$?H??@A_A^A]A\_^]???????????????@UVWATAUAVAWH??$p???H??
H?D$8????H??$?
H???&H3?H???	E??L??H?L$0D?qD?y?9????????Ƹ??D?3ۃ??/???&???H?E?H?]??]?D?@(H???H?M???????H?E?H?\$x?\$hE3?H???H?L$h??????H?D$XH?\$P?\$@D?C4H?B?H?L$@??????D$(?H?E?H?D$ L?L$hL?D$@?)???H???Mo?H???>o?H???+o?H?|$Xr
H?L$@? {H?D$XH?\$P?D$@H?}?r
H?L$h??zH?E?H?\$x?D$hH?}?r	H?M???zH?E?H?]??E?A?D$???Y?8H?L?
????A??EA????DI?????-???$H?D$XH?\$P?D$@A?,H?e?H?L$@?????H?E?H?\$x?D$hE3?H?D?H?L$h?\????H?E?H?]??E?A?H???H?M??5?????D$(?H?D$@H?D$ L?L$hL?E??)???H????m?H????m?H????m?H?}?r	H?M??yH?E?H?]??E?H?}?r
H?L$h?yH?E?H?\$x?D$hH?|$Xr
H?L$@?zyH?D$XH?\$P?D$@A??tA??
?u???D??E??A??I???RbD??I??H?L$0????????OH?EHH?]@?E0A?,H???H?M0?????HDž(H?? ƅE3?H?تH????????HDž?H???ƅ?A?H???H?????????D$(?H?E0H?D$ L??L????)???H????ll?H???]l?H????Jl?H???rH????;xHDž?H???ƅ?H??(rH???xHDž(H?? ƅH?}Hr	H?M0??wH?EHH?]@?E0A??	?Ã?D?L?E??A??I????`I??H?L$0?۾???	???v???mHDžxH??pƅ`A?,H?f?H??`?????HDž?H???ƅ?E3?H?vHDžxH??pƅ`??D?OE??A??I???"_A?A??RDD?I??H?L$0?????????v???mHDž8H??0ƅ A?,H???H?? ??????HDžH???ƅ?E3?H???H????????HDž?H???ƅ?A?H???H????k?????D$(?H?? H?D$ L???L????)???H??@?i?H???
i?H??@??h?H???rH?????tHDž?H???ƅ?H??rH????tHDžH???ƅ?H??8rH?? ?tHDž8H??0ƅ ??D?OE??A??I???n]A?A??TDD?I??H?L$0?c????%???OH?E?H?]??E?A?,H??H?M??/????HDž?H???ƅpE3?H??H??p??????HDžPH??Hƅ8A?H?P?H??8???????D$(?H?E?H?D$ L??pL??8?)???H????}g?H???ng?H????[g?H??PrH??8?LsHDžPH??Hƅ8H???rH??p?sHDž?H???ƅpH?}?r	H?M???rH?E?H?]??E?A??%?}?ȃ??????u?VUUUA?????ЍRD;?u???OH?E?H?]??E?A?,H???H?M??????HDž?H???ƅ?E3?H?f?H????|????HDž?H???ƅ?A?9H???H????I?????D$(?H?E?H?D$ L???L????)???H??p??e?H????e?H??p??e?H???rH?????qHDž?H???ƅ?H???rH????qHDž?H???ƅ?H?}?r	H?M??qqH?E?H?]??E?A??_tA??^A?uA?A??_tA??[?u??C?6?VUUU?????Ѓ?F?L??E??I???#ZD??I??H?L$0?????????:???1HDž?H???ƅ?A?,H???H?????????H?EpH?]h?EXE3?H???H?MX?????H?E H?]?EA?H? ?H?M??????D$(?H???H?D$ L?MXL?E?)???H???Cd?H???4d?H???!d?H?} r	H?M?pH?E H?]?EH?}pr	H?MX??oH?EpH?]h?EXH???rH?????oHDž?H???ƅ???D?OE??A??I???XA?A??$DD?I??H?L$0?????mHDž?H???ƅ?A?,H?X?H????t????HDž`H??XƅHE3?H?.?H??H?D????HDžH??ƅ?A?)H?%?H?????????D$(H???H?D$ L??HL????2???H????b?H???b?H????b?H??rH????nHDžH??ƅ?H??`rH??H?_nHDž`H??XƅHH???rH????0nHDž?H???ƅ?H???	H3???nH??$?
H?Đ
A_A^A]A\_^]?18?9?A?D*;?<?>JC??????????????????@UVWATAUAVAWH??$????H??@H?E?????H??$?H??&H3?H??0L??L??%?3ۃ??H?E?H?]??]?D?C0H?j?H?M??	????H?E H?]?]E3?H?͞H?M??????H?E?H?]Ȉ]?D?CH??H?M????????D$(?H?E?H?D$ L?ML?E??)???H?M0?|`?H???m`?H?M0?]`?H?}?r	H?M??TlH?E?H?]??E?H?} r	H?M?4lH?E H?]?EH?}?r	H?M??lH?E?H?]??E?E?A???M?nM?fE?$A?UI????TI?F8H?E?H?E?H?]??E?A?	H??H?M???????H?\$@H?\$HH?\$PI?^H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?c??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
??މ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?_H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
%????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?g???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
Ӗ?Ň?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
D??6??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
???s??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?R???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
+????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?m???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?_H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
Ւ?ǃ?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$PH;?uWH??I+?H??H;?vH?
J???VL?i???H?A???SI???H???H??(?H???H??(?H???H??(?H?o?H??(?H?K?H??(?H?'?H??(?H???H??(?H???H??(?H???H??(?H??H??(?H?S?H??(?H?7?H??(?H??H??(?H???H??(?H???H??(?H???H??(?H?c?H??(?H???H??(?H??H??(?H???H??(?H???H??(?H???H??(?H?{?H??(?H?G?H??(?H?#?H??(?H???H??(?H???H??(?H???H??(?H???H??(?H?_?H??(?H?;?H??(?H??H??(?H???H??(?H???H??(?H???H??(?H??H??(?H?[?H??(?H?/?H??(?H??H??(?H???H??(?H???H??(?H??H??(?H?[?H??(?H?7?H??(?H??H??(?H???H??(?H???H??(?H???H??(?D??H???H?
?&??H?ܱ&H??(??R?R?R?R?R?R?R?RzRnRbRVRJR>R2R&RRRR?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q~QrQfQZQNQ?R?R?R?R?R?R?R?R?R?R?R?R?R?R?RBQ6Q*QQQQ?P?P?P?P?P?P?P?P????????@USVWATAUAVH??$p???H??H?D$0????H?V?&H3?H???I??E??L??L???
~?????'????RH??H???H??HE?H???H?
)|?????H??H???????H??H?W??????H??I???????H??H?5??????H??H??????H??H??????H??I??????H??H???????H??A????{H?
?{?3}?8H?D$x3?H?\$p?\$`3?H???I???H??L?A?I??H?L$`?????H?D$PH?\$H?\$83?H???H???H??L?A?H??H?L$8?y????H?E?H?]??]?3?H???I???H??L?A?I??H?M??K????D?t$(H?D$`H?D$ L?L$8L?E??'???H?M??Q?H????P?H?M???P?H?}?r	H?M???\H?E?H?]??E?H?|$Pr
H?L$8?\H?D$PH?\$H?D$8H?|$xr
H?L$`?\H?D$xH?\$p?D$`H???H3??G]H?ĐA^A]A\_^[]????????????????????@UH??$p???H??H?D$0????H??$?H??&H3?H???H?D$x3?H?\$p?\$`D?C*H???H?L$`?????H?D$PH?\$H?\$8E3?H?ՍH?L$8??????H?E?H?]??]?D?CH?2?H?M????????D$(7H?D$`H?D$ L?L$8L?E??+???H?M??O?H???rO?H?M??bO?H?}?r	H?M??Y[H?E?H?]??E?H?|$Pr
H?L$8?7[H?D$PH?\$H?D$8H?|$xr
H?L$`?[H?D$xH?\$p?D$`H???H3???[H??$?H?Đ]?̍D?D?™A???????fT??????????H?AHHc?L?Ic?L??I??HA???????@SH?? H??H?H??t???NH?C?H??H?? [?H?AH??H?? [??H??????????????H??????????????@SH?? H??H?H??t??cNH?C?H??H?? [?H?AH??H?? [???f.z/u-?Af.Bz!u?Af.Bzu?Af.Bzu2?ð?????@SH?? H??H?H??t???MH?C?H??H?? [?H?AH??H?? [??H??????????????H??????????????@SH?? H??H?H??t??MH?C?H??H?? [?H?AH??H?? [??H??????????????H??????????????H??(H?IH??t
???LH??(?????H??(H?IH??t
??LH??(?????H??(H?IH??t
??LH??(?????H???????????????H?H?I?H?AH??????????????????H???????????????H?H?I?H?AH??????????????????H???????????????H???????????????H??(H?	H??t
H???H??(??????H??(H?	H??t
H???H??(??????H??(H?	H??t
H???H??(?????̋?????????????@SH??`H??H??H?L$0)t$Pf(??KH?T$0A???H??fW?f(??l$ ?KH??(t$PH??`[?????H?A??QD?AH?H??D?I????????H?!?H???????@SH?? H??H??H???t?WH??H?? [???????????H?\$VH?? ??H????t=D?A?L?
?????H?|$0?JX@??t	H?K??WH?C?H?|$0H?\$8H?? ^?H???H???t?VH??H?\$8H?? ^??????????????H?y??QD?AH?H??D?I????????H?Y?H???????@SH?? H?C?H??H???t?1VH??H?? [???????????H?\$VH?? ??H????t=D?A?L?
?????H?|$0?jW@??t	H?K???VH?C?H?|$0H?\$8H?? ^?H???H???t?UH??H?\$8H?? ^??????????????H???H???????@SH?? H???H??H???t?qUH??H?? [???????????H?\$VH?? ??H????t=D?A?L?
????? H?|$0?V@??t	H?K??VH?C?H?|$0H?\$8H?? ^?H? ?H???t??TH??H?\$8H?? ^??????????????H?I?H?H?????3?H?H?????????̋??B?AH????̋??B?AH?????3?H?H?????????̋??B?AH?????H?L$SH??0H?D$ ????H??H?K?H??QD?A?D$h?AH???H?H??I???\????H?D$`H?ChH??H??0[??????????L??WH??H?D$0????I?[I?sI??H??H??I?C?I?CH?QI?K??????D?FD?D$(?N?L$ D?NL??H??H???VhL??$?I?[I?s I??_?H?L$SH??0H?D$ ????H??H???7?H?q?H?H??0[?H?L$SH??0H?D$ ????H??H?c?H??QD?A?D$h?AH?3?H?H??I???\????H?D$`H?ChH??H??0[??????????L??WH??H?D$0????I?[I?sI??H??H??I?C?I?CH?QI?K??????D?FD?D$(?N?L$ D?NL??H??H???VhL??$?I?[I?s I??_?H?L$SH??0H?D$ ????H??H???6?H???H?H??0[?@SH?? H?H??H?H?JH?KH??t
??2FH??H?? [??@SH?? H?H??H?H?JH?KH??t
??FH??H?? [??@SH?? H?H??H?H?JH?KH??t
???EH??H?? [??H?H?H?BH?AH?????????????????H?H?H?BH?AH?????????????????H?H?I?H?AH??????????????????H?H?I?H?AH??????????????????@SH?? H??H?IH??t(????.E??uH?H??t
H???H?K?EE3?L?[L?H?? [???????@SH?? H??H?IH??t(?????D??uH?H??t
H???H?K??DE3?L?[L?H?? [???????@SH?? H??H?IH??t(????D??uH?H??t
H???H?K?zDE3?L?[L?H?? [???????H???H???A?B?AA??AA?@?AA??AH???????H?L$H??H?$????H?P?H???A?B?AA??AA?@?AD?IH???H?H?D$@H?A H??H?????????????????@SH??0?AM??L?ډD$@?AL?A?D$D?AH??L?L$@I??I?ˉD$ ?S H??0[?????H?L$H??H?$????H???H?H???H?L$SH??0H?D$ ????H??H???H???t?dOH??H??0[??????????????H?L$SH??0H?D$ ????H??H?K?H???A?B?AA??AA?@?A?AH??H?H?? I???????H?D$`H?Cp?CxH??H??0[?????@SH??0?AM??L?ډD$@?AL?I?D$D?AxL?A ?D$(H?D$@H??I??I??H?D$ ?SpH??0[???????????H?L$SH??0H?D$ ????H??H?? ?q2?H???H?H??0[?H?L$WH??0H?D$ ????H?\$H??H??H?? ?:2?H?J?H???tH??? NH??H?\$HH??0_?????H?L$SH??0H?D$ ????H??H??H???A?B?AA??AA?@?A?D$h?AH?b?H?H?? I???۲???H?D$`H?CpH??H??0[?????????@SH??0?AM??L?ډD$@?AL?I?D$D?AL?A ?D$(H?D$@H??I??I??H?D$ ?SpH??0[????????????H?L$SH??0H?D$ ????H??H?? ?11?H?A?H?H??0[?H?L$WH??0H?D$ ????H?\$H??H??H?? ??0?H?
?H???tH????LH??H?\$HH??0_?????H?L$WH??0H?D$ ????H?\$H??H??H???0?H???H???tH???LH??H?\$HH??0_?????H?L$WH??0H?D$ ????H?\$H??H??H???Z0?H?R?H???tH???@LH??H?\$HH??0_?????@SH?? H??H?IH??t(????????uH?H??t
H???H?K???E3?L?[L?H?? [???????@SH?? H??H?IH??t(???????uH?H??t
H???H?K??E3?L?[L?H?? [???????@SH?? H??H?IH??t(????N???uH?H??t
H???H?K?:?E3?L?[L?H?? [???????H?H?I?H?AH??????????????????H?H?I?H?AH??????????????????@SH?? H??H?APE??L?AA???L?A@H?AH3?H?HH?CHH?A??KH?K0H?K(H?K H?KH?KH?K8H??B?
?B?L$4L?D$0?H?ˉD$0?v>H??H?? [????@USVWATAUH?l$?H??8H?D$8????H??&H3?H?E E??H??H??M??t?????t??u???M??tA?H?A@??PH?E?H?EH?EH?EE3?L?mL?mL?m?H?E??BL?m?L?m?L?m?L?m?L?m?L?m?E??A????L$0?T$4L?D$0A?UH?M??=?H?U?H?L$@??=fn????fW??D$ E??H?T$@H???=A?E??H?T$`H?M??}=?D8??tC?L$l????E??E??Lc؅?~.A+???Lc?H?T$pB??B??B??B??A??I??M;?}?L$l??H?T$`H???5V?H?L$xH??t?????<??u
H?L$`??<L?m?L?m?L?m?L?l$pH?E?D?(L?l$xH?E?H?M?H;?t?<?H?M?H??t????<??u	H?M??v<L?m?L?m?L?m?L?m?H?ED?(L?m?H?EH?MH;?t?[<H?M H3??;IH??8A]A\_^[]????????????H?L$SH??0H?D$ ????H??H???H?H???H?H?H?AH?JH?KH??t???;?H??H??0[??????????????̋9u?B9Au?B9Au?B9Au??2?????????????̋??B?A?B?A?B?AH?????????H?L$SH??0H?D$ ????H??H?IH??t)????Q;??uH?KH??t
H???H?K?<;3?H?CH?CH???H?H??0[???????????????H?T$H?L$UVWH??0H?D$(????H?\$hH??H??3?l$ ?M?
GH??H?D$`H??t3H?Y?H?H??H?H?H?GH?KH?OH??t	?U?:??H??H?>H??t???:H?F??H?n?D$ H?KH??t(????W:??uH?H??t
H???H?K?C:H?kH?+H??H?\$hH??0_^]?????????H?L$WH??0H?D$ ????H?\$HA??H??H???H?H???H?H?H?AH?JH?KH??t???9?H??H??{3?H?C ?C(H?C0H?C8H?C@H?CHH?CPH?C`?ChH??H?\$HH??0_?L??L?ɋ	?Ѹ??????ƒ?DЃ??P??????????H????$??????A?y@Lc?u3?I?A?ADA?BA?AHA??IcA@3?I?q3?A?@Hc?IcA@I?IH+?I??A?A?ADA?BA?AHA????????D?D$?T$SUVWATAUAVAW?9H??Lcn@?Nj???A?P?E??????Ã?D??DD҃??B????????I??%?A????A??????D?Lc?E??u3?E3??AL?F3?I??I??I??M??Hc?H??I??L+ʍ???????I?????????Hc?3?H??L??D?ND?^D?^HH?D$P?D$`??+L$PD?\$L?\$H?L$PH?L$`HI?D?A??D?DL$XA+ljD$XH?L$X?D$PH?D$PD?L$`HI?A??D??D$h+??NA?A??VA+ĉT$PA??A??E;?H?D$L?N@H?L$`HM?H?L$PD?H?D$HE+?;?HM?D?N?A+?Hc??NI??H;FtA??t?????H?Ɖ>A_A^A]A\_^][???????????????H?L$SH??0H?D$ ????H??H?? ?1'?H?KH??t)?????6??uH?KH??t
H???H?K??63?H?CH?CH?]?H?H??0[?????H?L$WH??0H?D$ ????H?\$HI??H??H?+?H?H?Q?H?H?H?AH?JH?KH??t??h6?H?H?CH?OH?K H??t??I6?3?H?C(H?C0H?C8?C@H?CHH?CPH?CXH?C`H?ChH?Cx???H??????H???H???H???H???H???H??????H??????H???H???H???H??H??H???? H??(??0H??8H??@H??HH??PH??XH??h??pH?CH?K?P?A?C(?S,H?CH?K?P?A?C0?S4H??H?\$HH??0_?????H?L$WH??0H?D$ ????H?\$HH??H??(?)%?H????%?H????%?H?K8?%?H?K H??t)?????4??uH?KH??t
H???H?K ?43?H?{ H?{H?KH??t'????4??uH?KH??tH??W?H?K?|4H?{H?{H???H?H?\$HH??0_????????????H?L$WH??0H?D$(????H?\$HH?t$PI??H??H???D$ ?x?H@H?D$XH??tL??H??H???@????H?H??t??K4H?C??H?C?D$ H??H?\$HH?t$PH??0_???????????????H?H?I?H?AH??????????????????H?H?I?H?AH??????????????????H????????H?H?AH?AH?AH??????H?L$WH??0H?D$ ????H?\$H??H??H?IH??t)????3??uH?KH??t
H???H?K?33?H?CH?CH???H?@??tH????>H??H?\$HH??0_??H?\$WH?? ??H????????tH????>H??H?\$0H?? _??H?\$WH?? ??H???\?????tH???>H??H?\$0H?? _??@UH??$p???H??H?D$0????H??$?H?'?&H3?H????9}????????x;??H?D$x3?H?\$p?\$`D?C0H???H?L$`?;????H?D$PH?\$H?\$8E3?H??oH?L$8?????H?E?H?]??]?D?CH?)?H?M???????D$(WH?D$`H?D$ L?L$8L?E??)???H?M??1?H???1?H?M??1?H?}?r	H?M??=H?E?H?]??E?H?|$Pr
H?L$8?^=H?D$PH?\$H?D$8H?|$xr
H?L$`?9=H?D$xH?\$p?D$`H???H3???=H??$?H?Đ]?????????H?\$WH?? H???H???Y????WH?KH?\$0H?? _?C??????H??UATAUH??X???H??H?D$0????H?XH?pH?x H?^?&H3?H???I??M??H??H??E3?D9)u"D9iu?y?u?y?uA?IA?L?+?C?K?B??~?
??~
?t	???!H?D$xL?l$pD?l$`A?0H???H?L$`?:????H?D$PL?l$H?D$8E3?H??mH?L$8?????H?E?L?m??E?A?\H?t?H?M???????D$(gH?D$`H?D$ L?L$8L?E??)???H?M??/?H???/?H?M??/?H?}?r	H?M??{;H?E?L?m??E?H?|$Pr
H?L$8?Y;H?D$PL?l$H?D$8H?|$xr
H?L$`?4;H?D$xL?l$p?D$`A?$???uA9L$?9???;?u?G??A9D$?!H?E?L?m??E?A?0H?J?H?M??????H?D$PL?l$H?D$8E3?H??lH?L$8?ɹ???H?D$xL?l$p?D$`A?eH???H?L$`螹????D$(hH?E?H?D$ L?L$8L?D$`?)???H?M??V.?H???G.?H?M??7.?H?|$xr
H?L$`?,:H?D$xL?l$p?D$`H?|$Pr
H?L$8?:H?D$PL?l$H?D$8H?}?r	H?M???9H?E?L?m??E??;|?{|?9C?F9C?!H?E?L?m??E?A?0H??H?M?貸???H?D$PL?l$H?D$8E3?H?rkH?L$8芸???H?D$xL?l$p?D$`A?XH??H?L$`?_?????D$(iH?E?H?D$ L?L$8L?D$`?)???H?M??-?H???-?H?M???,?H?|$xr
H?L$`??8H?D$xL?l$p?D$`H?|$Pr
H?L$8??8H?D$PL?l$H?D$8H?}?r	H?M??8H?E?L?m??E?H???H3??X9L??$?I?[(I?s0I?{8I??A]A\]????????????L??WH???H?D$ ????I?[I?kI?s I??I??H??H??D?R?BA?CE?SH?QL?BH??M?KH???=???L??H??$?H????????L??H?T$0H????????H?MH?L?D$0H??$??P?H?L$0???H??$??L??$?I?[I?k I?s(I??_????????????????@WATAWH??PL?L$03?M??L??H?D$8????H?|$0????A??D$p??H?\$xH??$?H??$?L?l$HI?_ ?WL?t$@A?$D??A??A???A??A??DD?A?|$@uD??D???YMcT$@M?L$3҃?F??????I??I???A??A???L??P?H??A??????3?A??Hc?Mc?I??L+?I??I??L??A?L$HA?t$E?D$DA?l$A+?E+?+?E??A?ՉL$ I??D+??f???H??I???A??E??A+D$HE+D$DA???A??????D?I??D?ϋӉD$ ?+???E+l$DE+t$H??I?_ F?D-D?D??H??D?t$ ????L?L$03?M??H??I??H?D$8????H?|$0?????T$p??A;W?T$p?W?????L?t$@L?l$HH??$?H??$?H?\$xH??PA_A\_?H??WATAUH??H?D$ ????H?XH?hH?p I??I??H??L??D?RD?BD?@D?PD?
A??A???A???A??DD?F???????A,B?T?H??8?IM?E0I?U(L??$?H???Q???L??H?T$(H???????H??I????????H?L$(??L??H?T$(H????????H??I????ƚ???H?L$(??I?MH?M?E8I????PI?MH?M???I?U8L??$?I?[(I?k0I?s8I??A]A\_H?`????@UVWATAUAVAWH??$????H?? H?E?????H??$xH??&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H?:?H?MH??????????t4??t'??t??t
??u8H????"H?޶?H?Ŷ?H????H???H??p??TH??pH?D$0D?|$(??H?D$ D??@???D??H??H????GTI?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H???H?M??e????H?EL?uD?u?E3?H?(dH?M??A????H?E8L?u0D?u E?FH??uH?M ??????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp??%?H????%?H?Mp?%?H?}8r	H?M ?1H?E8L?u0?E H?}r	H?M??1H?EL?u?E?H?}?r	H?M??n1H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H???H?M ?D????H?EH?E?E?E3?H?cH?M??????H?E?H?E??E?A?H???H?M???????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?$?H???$?H?Mp?$?H?}?r	H?M??0H?E?H?E??E?H?}r	H?M??_0H?EH?E?E?H?}8r	H?M ?;0H?E8H?E0?E A?M??????????D?A?$??%?????D?;??#H?E8H?E0?E D?B,H?D?H?M ?????H?EH?E?E?E3?H??aH?M??î???H?E?H?E??E?A?&H??H?M?蘮????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?R#?H???C#?H?Mp?3#?H?}?r	H?M??*/H?E?H?E??E?H?}r	H?M??/H?EH?E?E?H?}8r	H?M ??.H?E8H?E0?E ?D;??
H?E83?H?}0@?} D?G0H??H?M 辭???H?EH?}@?}?E3?H??`H?M?蚭???H?E?H?}?@?}?D?GH?ְH?M??u?????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?/"?H??? "?H?Mp?"?H?}?r	H?M??.H?E?H?}??E?H?}r	H?M???-H?EH?}?E?H?}8r	H?M ??-H?E8H?}0?E ?3?A?MD??A??A???A??A??A??A?AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A??ED?IcE@3?I?uL??L??F??????A??A???A??A??A??Ic?3?I??H??E?D?U?A?$????????ƒ??DЃ??H???ˀ????????????????Hc?3?I?D$H??E??A+E???E?H?|$PH?|$XH?|$`I?uH?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?Z??K?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?e???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?Y??J?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
+Y?J?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?X??I?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?o???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?W??H?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P謿??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
NW?@H?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!L?qH?L$XH??H?L$XL?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?V??G?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?b???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
V??F?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ս??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uHL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
GU?9F?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?T??E?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P苼??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uDL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?S??D?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?λ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
pS?bD?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?A???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?R??C?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P臺??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
*R?C?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P莾??L?d$pH?E?H?D$xH?T$pH?L$P?q???L?d$pH?E?H?D$xH?T$pH?L$P?T???L?d$pH?E?H?D$xH?T$pH?L$P?7???H?]?L?[H?D$pL?\$xH?T$pH?L$P????L?]?L?]?H?E?3?H?}?@?}?I???E3?H?UHH?M?贠???A?E??H???H?L$@?D$8D?|$0H?D$PH?D$(H??@H?D$ L??XL?E?H??r&H?M??&?H9|$PtH?L$P?BH?L$P?7"H?|$PH?|$XH?|$`H?}`r	H?MH?"H?E`H?}X?EHH???H??H3???"H??$xH?? A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H?? H?E?????H??$xH?^s&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H???H?MH?1?????????t4??t'??t??t
??u8H?G??"H?.??H???H????H?ۣH??p??AH??pH?D$0D?|$(??H?D$ D??@???D??H?d?H?????AI?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H??H?M?赞???H?EL?uD?u?E3?H?xQH?M?葞???H?E8L?u0D?u E?FH??bH?M ?l?????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp?&?H????H?Mp??H?}8r	H?M ??H?E8L?u0?E H?}r	H?M???H?EL?u?E?H?}?r	H?M??H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H??H?M 蔝???H?EH?E?E?E3?H?SPH?M??l????H?E?H?E??E?A?H??H?M??A?????D$(?H?E H?D$ L?M?L?Eк)???H?Mp???H?????H?Mp???H?}?r	H?M???H?E?H?E??E?H?}r	H?M??H?EH?E?E?H?}8r	H?M ?H?E8H?E0?E A?M??????????D?A?$??%?????D?;??#H?E8H?E0?E D?B,H???H?M ?;????H?EH?E?E?E3?H??NH?M??????H?E?H?E??E?A?&H?i?H?M???????D$(?H?E H?D$ L?M?L?Eк)???H?Mp??H????H?Mp??H?}?r	H?M??zH?E?H?E??E?H?}r	H?M??VH?EH?E?E?H?}8r	H?M ?2H?E8H?E0?E ?D;??
H?E83?H?}0@?} D?G0H?g?H?M ?????H?EH?}@?}?E3?H??MH?M??????H?E?H?}?@?}?D?GH?&?H?M??Ś????D$(?H?E H?D$ L?M?L?Eк)???H?Mp??H???p?H?Mp?`?H?}?r	H?M??WH?E?H?}??E?H?}r	H?M??7H?EH?}?E?H?}8r	H?M ?H?E8H?}0?E ?3?A?MD??A??A???A??A??A??A?AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A??ED?IcE@3?I?uL??L??F??????A??A???A??A??A??Ic?3?I??H??E?D?U?A?$????????ƒ??DЃ??H???ˀ????????????????Hc?3?I?D$H??E??A+E???E?H?|$PH?|$XH?|$`I?uH?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?G??8?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P赯??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
@G?28?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
{F?m7?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?L???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?E??6?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P迭??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
+E?6?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?D??5?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?o???H?L$XH?M?H?M?H??tL?!L?qH?L$XH??H?L$XL?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?C??4?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P貫??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
TC?F4?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uHL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?B??3?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?h???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
B??2?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?۩??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uDL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
MA??2?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?@??1?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P葨??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
@??0?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?ק??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
z??l0?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?N???H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?ޫ??L?d$pH?E?H?D$xH?T$pH?L$P?????L?d$pH?E?H?D$xH?T$pH?L$P褫??L?d$pH?E?H?D$xH?T$pH?L$P臫??H?]?L?[H?D$pL?\$xH?T$pH?L$P?b???L?]?L?]?H?E?3?H?}?@?}?I???E3?H?UHH?M??????A?E??H???H?L$@?D$8D?|$0H?D$PH?D$(H??@H?D$ L??XL?E?H?`&H?M??v??H9|$PtH?L$P?[/H?L$P?H?|$PH?|$XH?|$`H?}`r	H?MH?hH?E`H?}X?EHH???R?H??H3??H??$xH?? A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H?? H?E?????H??$xH??`&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H?ڑH?MH聍????????t4??t'??t??t
??u8H????"H?~??H?e??H?D??H?+?H??p?&/H??pH?D$0D?|$(??H?D$ D??@???D??H???H?????.I?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H?^?H?M??????H?EL?uD?u?E3?H??>H?M??????H?E8L?u0D?u E?FH?=PH?M 輋????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp?v?H???g?H?Mp?W?H?}8r	H?M ?NH?E8L?u0?E H?}r	H?M??.H?EL?u?E?H?}?r	H?M??H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H?=?H?M ?????H?EH?E?E?E3?H??=H?M?輊???H?E?H?E??E?A?H?:?H?M?葊????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?K??H???3?0$?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
{2?m#?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?L???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?1??"?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P这??H?L$XH?M?H?M?H??tL?!L?qH?L$XH??H?L$XL?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
11?#"?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?0??!?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?u???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uHL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?/?? ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P踗??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
Z/?L ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?+???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uDL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?.???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
.??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
S-?E?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?'???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
?,???H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P螔??H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?.???L?d$pH?E?H?D$xH?T$pH?L$P????L?d$pH?E?H?D$xH?T$pH?L$P?????L?d$pH?E?H?D$xH?T$pH?L$P?ט??H?]?L?[H?D$pL?\$xH?T$pH?L$P貘??L?]?L?]?H?E?3?H?}?@?}?I???E3?H?UHH?M??T{???A?E??H???H?L$@?D$8D?|$0H?D$PH?D$(H??@H?D$ L??XL?E?H?WM&H?M?????H9|$PtH?L$P??H?L$P???H?|$PH?|$XH?|$`H?}`r	H?MH??H?E`H?}X?EHH????H??H3??c?H??$xH?? A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H?? H?E?????H??$xH??M&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H?*H?MH??z????????t4??t'??t??t
??u8H??~?"H??~?H??~?H??~?H?{~H??p?vH??pH?D$0D?|$(??H?D$ D??@???D??H?~H????7I?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H??zH?M??Uy???H?EL?uD?u?E3?H?,H?M??1y???H?E8L?u0D?u E?FH??=H?M ?y????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp????H?????H?Mp???H?}8r	H?M ??H?E8L?u0?E H?}r	H?M??~?H?EL?u?E?H?}?r	H?M??^?H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H??yH?M ?4x???H?EH?E?E?E3?H??*H?M??x???H?E?H?E??E?A?H??{H?M???w????D$(?H?E H?D$ L?M?L?Eк)???H?Mp???H?????H?Mp?|??H?}?r	H?M??s?H?E?H?E??E?H?}r	H?M??O?H?EH?E?E?H?}8r	H?M ?+?H?E8H?E0?E A?M??????????D?A?$??%?????D?;??#H?E8H?E0?E D?B,H?4xH?M ??v???H?EH?E?E?E3?H??)H?M??v???H?E?H?E??E?A?&H?	zH?M??v????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?B??H???3??H?Mp?#??H?}?r	H?M???H?E?H?E??E?H?}r	H?M????H?EH?E?E?H?}8r	H?M ???H?E8H?E0?E ?D;??
H?E83?H?}0@?} D?G0H?wH?M ?u???H?EH?}@?}?E3?H?q(H?M??u???H?E?H?}?@?}?D?GH??xH?M??eu????D$(?H?E H?D$ L?M?L?Eк)???H?Mp???H?????H?Mp???H?}?r	H?M????H?E?H?}??E?H?}r	H?M????H?EH?}?E?H?}8r	H?M ??H?E8H?}0?E ?3?A?MD??A??A???A??A??A??A?AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A??ED?IcE@3?I?uL??L??F??????A??A???A??A??A??Ic?3?I??H??E?D?U?A?$????????ƒ??DЃ??H???ˀ????????????????Hc?3?I?D$H??E??A+E???E?H?|$PH?|$XH?|$`I?uH?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?"?v?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?!???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P豉??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
!?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
? ???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?_???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P蜇??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
>?0?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!L?qH?L$XH??H?L$XL?d$pH?u?H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??s?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?R???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Ņ??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uHL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
7?)?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?{???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uDL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P较??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
`?R?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?1???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?w???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?~???L?d$pH?E?H?D$xH?T$pH?L$P?a???L?d$pH?E?H?D$xH?T$pH?L$P?D???L?d$pH?E?H?D$xH?T$pH?L$P?'???H?]?L?[H?D$pL?\$xH?T$pH?L$P????L?]?L?]?H?E?3?H?}?@?}?I???E3?H?UHH?M??h???A?E??H???H?L$@?D$8D?|$0H?D$PH?D$(H??@H?D$ L??XL?E?H??:&H?M????H9|$PtH?L$P??	H?L$P?'?H?|$PH?|$XH?|$`H?}`r	H?MH??H?E`H?}X?EHH?????H??H3???H??$xH?? A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H?? H?E?????H??$xH?N;&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H?zlH?MH?!h????????t4??t'??t??t
??u8H?7l?"H?l?H?l?H??k?H??kH??p??	H??pH?D$0D?|$(??H?D$ D??@???D??H?TkH?????	I?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H??gH?M??f???H?EL?uD?u?E3?H?hH?M??f???H?E8L?u0D?u E?FH??*H?M ?\f????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp???H?????H?Mp????H?}8r	H?M ???H?E8L?u0?E H?}r	H?M????H?EL?u?E?H?}?r	H?M???H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H??fH?M ?e???H?EH?E?E?E3?H?CH?M??\e???H?E?H?E??E?A?H??hH?M??1e????D$(?H?E H?D$ L?M?L?Eк)???H?Mp????H??????H?Mp????H?}?r	H?M????H?E?H?E??E?H?}r	H?M???H?EH?E?E?H?}8r	H?M ?{?H?E8H?E0?E A?M??????????D?A?$??%?????D?;??#H?E8H?E0?E D?B,H??eH?M ?+d???H?EH?E?E?E3?H??H?M??d???H?E?H?E??E?A?&H?YgH?M???c????D$(?H?E H?D$ L?M?L?Eк)???H?Mp???H?????H?Mp?s??H?}?r	H?M??j?H?E?H?E??E?H?}r	H?M??F?H?EH?E?E?H?}8r	H?M ?"?H?E8H?E0?E ?D;??
H?E83?H?}0@?} D?G0H?WdH?M ??b???H?EH?}@?}?E3?H??H?M???b???H?E?H?}?@?}?D?GH?fH?M??b????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?o??H???`??H?Mp?P??H?}?r	H?M??G?H?E?H?}??E?H?}r	H?M??'?H?EH?}?E?H?}8r	H?M ??H?E8H?}0?E ?3?A?MD??A??A???A??A??A??A?AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A??ED?IcE@3?I?uL??L??F??????A??A???A??A??A??Ic?3?I??H??E?D?U?A?$????????ƒ??DЃ??H???ˀ????????????????Hc?3?I?D$H??E??A+E???E?H?|$PH?|$XH?|$`I?uH?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
0?"?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
k?]??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?o??H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P??s??L?d$pH?E?H?D$xH?T$pH?L$P?s??L?d$pH?E?H?D$xH?T$pH?L$P?s??L?d$pH?E?H?D$xH?T$pH?L$P?ws??H?]?L?[H?D$pL?\$xH?T$pH?L$P?Rs??L?]?L?]?H?E?3?H?}?@?}?I???E3?H?UHH?M???U???A?E??H???H?L$@?D$8D?|$0H?D$PH?D$(H??@H?D$ L??XL?E?H??'&H?M??f??H9|$PtH?L$P?K?H?L$P?w?H?|$PH?|$XH?|$`H?}`r	H?MH?X?H?E`H?}X?EHH???B?H??H3???H??$xH?? A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H?? H?E?????H??$xH??(&H3?H??A??I??H?E?L??L??H?E?L?q8L?u?D?9A??A???A?ǸA??DD?HDž@HDžHHDžPH?E`H?EX?EHD?@H??YH?MH?qU????????t4??t'??t??t
??u8H??Y?"H?nY?H?UY?H?4Y?H?YH??p??H??pH?D$0D?|$(??H?D$ D??@???D??H??XH??????I?t$H?u?HcH??HH?D?3?H??H??H??`3?H??PH??H??H??H??hA?EuNA????t4??t
??t,??u\?9A?D$???+???Hc?L??@J?D?3?I??I???-A?D$??????????H??@IcD$H?D?3?H??H??H??XM;t$8?H?E?E3?L?u?D?u?E?F0H?NUH?M???S???H?EL?uD?u?E3?H??H?M???S???H?E8L?u0D?u E?FH?-H?M ?S????D$(?H?E?H?D$ L?M?L?E ?)???H?Mp?f??H???W??H?Mp?G??H?}8r	H?M ?>?H?E8L?u0?E H?}r	H?M???H?EL?u?E?H?}?r	H?M????H?E?L?u??E?M?t$A?A9E?%H?E8H?E0?E A?0H?-TH?M ??R???H?EH?E?E?E3?H??H?M??R???H?E?H?E??E?A?H?*VH?M??R????D$(?H?E H?D$ L?M?L?Eк)???H?Mp?;??H???,??H?Mp???H?}?r	H?M???H?E?H?E??E?H?}r	H?M????H?EH?E?E?H?}8r	H?M ???H?E8H?E0?E A?M??????????D?A?$??%?????D?;??#H?E8H?E0?E D?B,H??RH?M ?{Q???H?EH?E?E?E3?H?:H?M??SQ???H?E?H?E??E?A?&H??TH?M??(Q????D$(?H?E H?D$ L?M?L?Eк)???H?Mp????H??????H?Mp????H?}?r	H?M???H?E?H?E??E?H?}r	H?M???H?EH?E?E?H?}8r	H?M ?r?H?E8H?E0?E ?D;??
H?E83?H?}0@?} D?G0H??QH?M ?NP???H?EH?}@?}?E3?H?H?M??*P???H?E?H?}?@?}?D?GH?fSH?M??P????D$(?H?E H?D$ L?M?L?Eк)???H?Mp???H?????H?Mp???H?}?r	H?M???H?E?H?}??E?H?}r	H?M??w?H?EH?}?E?H?}8r	H?M ?W?H?E8H?}0?E ?3?A?MD??A??A???A??A??A??A?AD???ɻP?D??I??A??????????%???A????Hc?3?I?EH??E?A??ED?IcE@3?I?uL??L??F??????A??A???A??A??A??Ic?3?I??H??E?D?U?A?$????????ƒ??DЃ??H???ˀ????????????????Hc?3?I?D$H??E??A+E???E?H?|$PH?|$XH?|$`I?uH?D$pH?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
$????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??d??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
???r??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Qd??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
.?? ??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??b??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
k??]??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?E(H?] ?EE3?H?e?H?M?~>???H?E?H?]??E?A?H?BH?M??W>????D$("H?E?H?D$ L?ML?E??)???H?M`???H?????H?M`???H?}?r	H?M???H?E?H?]??E?H?}(r	H?M?ɾH?E(H?] ?EH?}r	H?M?詾H?EH?]??E?A???????????D?A?$??%?????D?;??H?EH?]??E?D?B,H??>H?M??b=???H?E(H?] ?EE3?H?%?H?M?>=???H?E?H?]??E?A?&H??@H?M??=????D$(#H?E?H?D$ L?ML?E??)???H?M`?ѱ?H???±?H?M`貱?H?}?r	H?M?詽H?E?H?]??E?H?}(r	H?M艽H?E(H?] ?EH?}r	H?M??i?H?EH?]??E??D?;??
H?EH?]??E?A?0H??=H?M??I??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?M??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?L??H?L$XH?M?H?M?H??tL?!L?yH?L$XH??H?L$XI?~HL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??K??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
u??g??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?FK??H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XI?~DL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?J??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
+????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??I??H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
n??`??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?BI??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P?OM??H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?M??L?d$pH?E?H?D$xH?T$pH?L$P?rM??H?]?L?[H?D$pL?\$xH?T$pH?L$P?MM??L?]?L?]?H?E?3?H?}?@?}?I???E3?H?U8H?M???/???H???H?D$@?D$8?????D$0????H?D$PH?D$(H??0H?D$ L??HL?E?H??&H?M??a??H9|$PtH?L$P?F?H?L$P?r?H?|$PH?|$XH?|$`H?}Pr	H?M8?S?H?EPH?}H?E8H???=?H???H3????H??$?H?ĐA_A^A]A\_^]?r??????????@UVWATAUAVAWH??$p???H??H?E?????H??$?H?n&H3?H???A??I??H?E?L??L??H?E?L?i8L?m????????ø??D?HDž0HDž8HDž@H?EPH?EH?E8D?@H??5H?M8?G/????????t4??t'??t??t
??u8H?]3?"H?D3?H?+3?H?
3?H??2H??`???M?|$IcL??8J?D?3?I??I??H??P3?H??@H??H??H??H??XA?$L?????????M??????tq????IcD$H??0H?D?3?H??H??H??HH??4H?D$HH??4H?D$@H?s4H?D$8H??`H?D$0?\$(D?L$ D???A?D$???+???Hc?L??0J?D?3?I??I??H??HH?4H?D$HH??3H?D$@H??3H?D$8H??`H?D$0?D$(?(IcD$H??0H?D?3?H??H??H??HH??3H?D$HH?IH?D$@H?e3H?D$8H??`H?D$0?D$(D?L$ D????IcD$L??0J?D?3?I??I??H??H??????????Hc?H?"?????T???@H???H??2H?D$HH??H?D$@H??2?;H??2H?D$HH??2H?D$@H??2?H??2?H??2L?T$HH?D$@H?D$8H??`H?D$0?\$(D?L$ E??D??H??1H????f?3?M;l$8?H?E?H?]Ј]?D?C0H??-H?M??>,???H?E(H?] ?]E3?H??H?M?,???H?EH?]??]?D?CH?x?H?M???+????D$(!H?E?H?D$ L?ML?E?)???H?M`豠?H??袠?H?M`蒠?H?}r	H?M?艬H?EH?]??E?H?}(r	H?M?i?H?E(H?] ?EH?}?r	H?M??I?H?E?H?]??E?M?l$A?EA9F?
H?EH?]??E?A?0H?{,H?M??"+???H?E(H?] ?EE3?H???H?M??*???H?E?H?]??E?A?H??.H?M???*????D$("H?E?H?D$ L?ML?E??)???H?M`葟?H??肟?H?M`?r??H?}?r	H?M??i?H?E?H?]??E?H?}(r	H?M?I?H?E(H?] ?EH?}r	H?M??)?H?EH?]??E?A???????????D?A?$??%?????D?;??H?EH?]??E?D?B,H?;+H?M???)???H?E(H?] ?EE3?H???H?M?)???H?E?H?]??E?A?&H?-H?M??)????D$(#H?E?H?D$ L?ML?E??)???H?M`?Q??H???B??H?M`?2??H?}?r	H?M??)?H?E?H?]??E?H?}(r	H?M?	?H?E(H?] ?EH?}r	H?M???H?EH?]??E??D?;??
H?EH?]??E?A?0H?"*H?M???(???H?E(H?] ?EE3?H???H?M?(???H?E?H?]??E?A?H??+H?M??~(????D$($H?E?H?D$ L?ML?E??)???H?M`?8??H???)??H?M`???H?}?r	H?M???H?E?H?]??E?H?}(r	H?M??H?E(H?] ?EH?}r	H?M??ШH?EH?]??E?A?????????ƒ?A?ADӃ??A?P?A??H??$?????????????????Hc?3?I?FH??E?A?$D??A??A???A??A??A??ADÃ??I??A??????????%???A????Lc?3?I?D$I???E?A??ED?B????????%?????Hc?IcD$@3?H??E?H?\$PH?\$XH?\$`I?~H?D$pH?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?|$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?=??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
'????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?E?H?]??E?A?&H??H?M??????D$(#H?E?H?D$ L?ML?E??)???H?M`?ъ?H???Š?H?M`貊?H?}?r	H?M?詖H?E?H?]??E?H?}(r	H?M艖H?E(H?] ?EH?}r	H?M??i?H?EH?]??E??D?;??
H?EH?]??E?A?0H??H?M??I???H?E(H?] ?EE3?H??H?M?%???H?E?H?]??E?A?H?_H?M???????D$($H?E?H?D$ L?ML?E??)???H?M`踉?H??詉?H?M`虉?H?}?r	H?M?萕H?E?H?]??E?H?}(r	H?M?p?H?E(H?] ?EH?}r	H?M??P?H?EH?]??E?A?????????ƒ?A?ADӃ??A?P?A??H??$?????????????????Hc?3?I?FH??E?A?$D??A??A???A??A??A??ADÃ??I??A??????????%???A????Lc?3?I?D$I???E?A??ED?B????????%?????Hc?IcD$@3?H??E?H?\$PH?\$XH?\$`I?~H?D$pH?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?|$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
K??=??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?*??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?x)??H?L$XH?M?H?M?H??tH?H?yH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???Ա?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?(??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$`H;?uZL??L+?I??L;?vH?
U??G??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?&(??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c'??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??&??H?L$XH?M?H?M?H??tL?!L?iH?L$XH??H?L$XL?d$pL?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
L??>??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?&??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%??H?L$XH?M?H?M?H??tL?!L?yH?L$XH??H?L$XI?~HL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??$??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
u??g??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?F$??H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XI?~DL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?#??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
+????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??"??H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
n??`??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?B"??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P?O&??H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P?&??L?d$pH?E?H?D$xH?T$pH?L$P?r&??H?]?L?[H?D$pL?\$xH?T$pH?L$P?M&??L?]?L?]?H?E?3?H?}?@?}?I???E3?H?U8H?M??????H???H?D$@?D$8?????D$0????H?D$PH?D$(H??0H?D$ L??HL?E?H???%H?M??ai?H9|$PtH?L$P?F?H?L$P?r?H?|$PH?|$XH?|$`H?}Pr	H?M8?S?H?EPH?}H?E8H???=nH???H3????H??$?H?ĐA_A^A]A\_^]?r?????@UVWATAUAVAWH??$p???H??H?E?????H??$?H?n?%H3?H???A??I??H?E?L??L??H?E?L?i8L?m????????ø??D?HDž0HDž8HDž@H?EPH?EH?E8D?@H??H?M8?G????????t4??t'??t??t
??u8H?]?"H?D?H?+?H?
?H??H??`??M?|$IcL??8J?D?3?I??I??H??P3?H??@H??H??H??H??XA?$L?????????M??????tq????IcD$H??0H?D?3?H??H??H??HH??
H?D$HH??
H?D$@H?s
H?D$8H??`H?D$0?\$(D?L$ D???A?D$???+???Hc?L??0J?D?3?I??I??H??HH?
H?D$HH??H?D$@H??H?D$8H??`H?D$0?D$(?(IcD$H??0H?D?3?H??H??H??HH??H?D$HH?I?H?D$@H?eH?D$8H??`H?D$0?D$(D?L$ D????IcD$L??0J?D?3?I??I??H??H??????????Hc?H?"?????T<???@<H???H??H?D$HH???H?D$@H???;H??H?D$HH??H?D$@H???H???H??L?T$HH?D$@H?D$8H??`H?D$0?\$(D?L$ E??D??H??
H????f?3?M;l$8?H?E?H?]Ј]?D?C0H??H?M??>???H?E(H?] ?]E3?H??H?M????H?EH?]??]?D?CH?x?H?M???????D$(!H?E?H?D$ L?ML?E?)???H?M`?y?H???y?H?M`?y?H?}r	H?M?艅H?EH?]??E?H?}(r	H?M?i?H?E(H?] ?EH?}?r	H?M??I?H?E?H?]??E?M?l$A?EA9F?
H?EH?]??E?A?0H?{H?M??"???H?E(H?] ?EE3?H??H?M?????H?E?H?]??E?A?H??H?M???????D$("H?E?H?D$ L?ML?E??)???H?M`?x?H???x?H?M`?rx?H?}?r	H?M??i?H?E?H?]??E?H?}(r	H?M?I?H?E(H?] ?EH?}r	H?M??)?H?EH?]??E?A???????????D?A?$??%?????D?;??H?EH?]??E?D?B,H?;H?M??????H?E(H?] ?EE3?H???H?M????H?E?H?]??E?A?&H?H?M??????D$(#H?E?H?D$ L?ML?E??)???H?M`?Qw?H???Bw?H?M`?2w?H?}?r	H?M??)?H?E?H?]??E?H?}(r	H?M?	?H?E(H?] ?EH?}r	H?M???H?EH?]??E??D?;??
H?EH?]??E?A?0H?"H?M??????H?E(H?] ?EE3?H???H?M????H?E?H?]??E?A?H??H?M??~????D$($H?E?H?D$ L?ML?E??)???H?M`?8v?H???)v?H?M`?v?H?}?r	H?M???H?E?H?]??E?H?}(r	H?M???H?E(H?] ?EH?}r	H?M??ЁH?EH?]??E?A?????????ƒ?A?ADӃ??A?P?A??H??$?????????????????Hc?3?I?FH??E?A?$D??A??A???A??A??A??ADÃ??I??A??????????%???A????Lc?3?I?D$I???E?A??ED?B????????%?????Hc?IcD$@3?H??E?H?\$PH?\$XH?\$`I?~H?D$pH?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?|$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
ˮ????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
'????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?yH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
b??T??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$`H;?uZL??L+?I??L;?vH?
լ?ǝ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???w??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?V??H?L$XH?M?H?M?H??tL?!L?iH?L$XH??H?L$XL?d$pL?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
̪????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???1??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?M?H?M?H??tL?!L?yH?L$XH??H?L$XI?~HL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???t??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?S??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XI?~DL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
8??*??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?	??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?|??H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P????H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P???L?d$pH?E?H?D$xH?T$pH?L$P????H?]?L?[H?D$pL?\$xH?T$pH?L$P????L?]?L?]?H?E?3?H?}?@?}?I???E3?H?U8H?M??o????H???H?D$@?D$8?????D$0????H?D$PH?D$(H??0H?D$ L??HL?E?H?j?%H?M???U?H9|$PtH?L$P?ƖH?L$P??vH?|$PH?|$XH?|$`H?}Pr	H?M8??vH?EPH?}H?E8H???ZH???H3??~wH??$?H?ĐA_A^A]A\_^]??+4,,=,?,??@UVWATAUAVAWH??$p???H??H?E?????H??$?H???%H3?H???A??I??H?E?L??L??H?E?L?i8L?m????????ø??D?HDž0HDž8HDž@H?EPH?EH?E8D?@H?0?H?M8???????????t4??t'??t??t
??u8H????"H????H????H????H?q?H??`?l?M?|$IcL??8J?D?3?I??I??H??P3?H??@H??H??H??H??XA?$L?	???????M??????tq????IcD$H??0H?D?3?H??H??H??HH??H?D$HH??H?D$@H???H?D$8H??`H?D$0?\$(D?L$ D???A?D$???+???Hc?L??0J?D?3?I??I??H??HH???H?D$HH?s?H?D$@H?_?H?D$8H??`H?D$0?D$(?(IcD$H??0H?D?3?H??H??H??HH??H?D$HH???H?D$@H???H?D$8H??`H?D$0?D$(D?L$ D????IcD$L??0J?D?3?I??I??H??H??????????Hc?H????????O????OH???H?W?H?D$HH??H?D$@H?O??;H??H?D$HH?
?H?D$@H?r??H?%??H?`?L?T$HH?D$@H?D$8H??`H?D$0?\$(D?L$ E??D??H?K?H?????3?M;l$8?H?E?H?]Ј]?D?C0H??H?M??????H?E(H?] ?]E3?H???H?M?????H?EH?]??]?D?CH???H?M??w?????D$(!H?E?H?D$ L?ML?E?)???H?M`?1f?H???"f?H?M`?f?H?}r	H?M??	rH?EH?]??E?H?}(r	H?M??qH?E(H?] ?EH?}?r	H?M???qH?E?H?]??E?M?l$A?EA9F?
H?EH?]??E?A?0H???H?M??????H?E(H?] ?EE3?H?e?H?M?~????H?E?H?]??E?A?H??H?M??W?????D$("H?E?H?D$ L?ML?E??)???H?M`?e?H???e?H?M`??d?H?}?r	H?M???pH?E?H?]??E?H?}(r	H?M??pH?E(H?] ?EH?}r	H?M??pH?EH?]??E?A???????????D?A?$??%?????D?;??H?EH?]??E?D?B,H???H?M??b????H?E(H?] ?EE3?H?%?H?M?>????H?E?H?]??E?A?&H???H?M???????D$(#H?E?H?D$ L?ML?E??)???H?M`??c?H????c?H?M`?c?H?}?r	H?M??oH?E?H?]??E?H?}(r	H?M?oH?E(H?] ?EH?}r	H?M??ioH?EH?]??E??D?;??
H?EH?]??E?A?0H???H?M??I????H?E(H?] ?EE3?H??H?M?%????H?E?H?]??E?A?H?_?H?M????????D$($H?E?H?D$ L?ML?E??)???H?M`?b?H???b?H?M`?b?H?}?r	H?M??nH?E?H?]??E?H?}(r	H?M?pnH?E(H?] ?EH?}r	H?M??PnH?EH?]??E?A?????????ƒ?A?ADӃ??A?P?A??H??$?????????????????Hc?3?I?FH??E?A?$D??A??A???A??A??A??ADÃ??I??A??????????%???A????Lc?3?I?D$I???E?A??ED?B????????%?????Hc?IcD$@3?H??E?H?\$PH?\$XH?\$`I?~H?D$pH?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?|$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
K??=??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?x??H?L$XH?M?H?M?H??tH?H?yH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??Ԋ?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$`H;?uZL??L+?I??L;?vH?
U??G??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?&??H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tL?!L?iH?L$XH??H?L$XL?d$pL?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
L??>??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!L?yH?L$XH??H?L$XI?~HL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
u??g??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?F???H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XI?~DL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
+????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
n??`??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?B???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P?O???H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P????L?d$pH?E?H?D$xH?T$pH?L$P?r???H?]?L?[H?D$pL?\$xH?T$pH?L$P?M???L?]?L?]?H?E?3?H?}?@?}?I???E3?H?U8H?M???????H???H?D$@?D$8?????D$0????H?D$PH?D$(H??0H?D$ L??HL?E?H??%H?M??aB?H9|$PtH?L$P?F?H?L$P?rcH?|$PH?|$XH?|$`H?}Pr	H?M8?ScH?EPH?}H?E8H???=GH???H3???cH??$?H?ĐA_A^A]A\_^]?r???????@??@UVWATAUAVAWH??$p???H??H?E?????H??$?H?n?%H3?H???A??I??H?E?L??L??H?E?L?i8L?m????????ø??D?HDž0HDž8HDž@H?EPH?EH?E8D?@H???H?M8?G?????????t4??t'??t??t
??u8H?]??"H?D??H?+??H?
??H???H??`??M?|$IcL??8J?D?3?I??I??H??P3?H??@H??H??H??H??XA?$L?????????M??????tq????IcD$H??0H?D?3?H??H??H??HH???H?D$HH???H?D$@H?s?H?D$8H??`H?D$0?\$(D?L$ D???A?D$???+???Hc?L??0J?D?3?I??I??H??HH??H?D$HH???H?D$@H???H?D$8H??`H?D$0?D$(?(IcD$H??0H?D?3?H??H??H??HH???H?D$HH?I?H?D$@H?e?H?D$8H??`H?D$0?D$(D?L$ D????IcD$L??0J?D?3?I??I??H??H??????????Hc?H?"?????Tc???@cH???H???H?D$HH???H?D$@H????;H???H?D$HH???H?D$@H????H????H???L?T$HH?D$@H?D$8H??`H?D$0?\$(D?L$ E??D??H???H????f?3?M;l$8?H?E?H?]Ј]?D?C0H???H?M??>????H?E(H?] ?]E3?H??H?M?????H?EH?]??]?D?CH?x?H?M????????D$(!H?E?H?D$ L?ML?E?)???H?M`?R?H???R?H?M`?R?H?}r	H?M??^H?EH?]??E?H?}(r	H?M?i^H?E(H?] ?EH?}?r	H?M??I^H?E?H?]??E?M?l$A?EA9F?
H?EH?]??E?A?0H?{?H?M??"????H?E(H?] ?EE3?H??H?M??????H?E?H?]??E?A?H???H?M????????D$("H?E?H?D$ L?ML?E??)???H?M`?Q?H???Q?H?M`?rQ?H?}?r	H?M??i]H?E?H?]??E?H?}(r	H?M?I]H?E(H?] ?EH?}r	H?M??)]H?EH?]??E?A???????????D?A?$??%?????D?;??H?EH?]??E?D?B,H?;?H?M???????H?E(H?] ?EE3?H???H?M?????H?E?H?]??E?A?&H??H?M???????D$(#H?E?H?D$ L?ML?E??)???H?M`?QP?H???BP?H?M`?2P?H?}?r	H?M??)\H?E?H?]??E?H?}(r	H?M?	\H?E(H?] ?EH?}r	H?M???[H?EH?]??E??D?;??
H?EH?]??E?A?0H?"?H?M???????H?E(H?] ?EE3?H???H?M?????H?E?H?]??E?A?H???H?M??~?????D$($H?E?H?D$ L?ML?E??)???H?M`?8O?H???)O?H?M`?O?H?}?r	H?M??[H?E?H?]??E?H?}(r	H?M??ZH?E(H?] ?EH?}r	H?M???ZH?EH?]??E?A?????????ƒ?A?ADӃ??A?P?A??H??$?????????????????Hc?3?I?FH??E?A?$D??A??A???A??A??A??ADÃ??I??A??????????%???A????Lc?3?I?D$I???E?A??ED?B????????%?????Hc?IcD$@3?H??E?H?\$PH?\$XH?\$`I?~H?D$pH?|$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?|$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
ˇ??x?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
'??x?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?yH?L$XH??H?L$XI??H?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
b??Tw?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$`H;?uZL??L+?I??L;?vH?
Յ??v?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?d$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??v?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???wu?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?V???H?L$XH?M?H?M?H??tL?!L?iH?L$XH??H?L$XL?d$pL?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
̃??t?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
???1t?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tL?!L?yH?L$XH??H?L$XI?~HL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???ts?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?S???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????r?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XI?~DL?d$pH?|$xH?T$pH?D$PH;???H?T$pH;???H?|$pH+?H?T$`H;?u_L??L+?I??L;?vH?
8??*r?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?	???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?GH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????q?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?|???H?L$XH?M?H?M?H??tL?!H?yH?L$XH??H?L$XL?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?|$pI+?H?T$`H;?u\H??I+?H??H;?vH?
???p?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P?????H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH?E?H?D$xH?T$pH?L$P????L?d$pH?E?H?D$xH?T$pH?L$P?????H?]?L?[H?D$pL?\$xH?T$pH?L$P?????L?]?L?]?H?E?3?H?}?@?}?I???E3?H?U8H?M??o????H???H?D$@?D$8?????D$0????H?D$PH?D$(H??0H?D$ L??HL?E?H?j?%H?M???.?H9|$PtH?L$P??oH?L$P??OH?|$PH?|$XH?|$`H?}Pr	H?M8??OH?EPH?}H?E8H???3H???H3??~PH??$?H?ĐA_A^A]A\_^]??R4SS=S?S??H??UATAUAVAWH??????H??@H?E?????H?XH?pH?x H??%H3?H??0L?M?L?E?L??L??H???H?E?????E?H?B83?L?-?H9A8?H?E?H?]؈]?D?C0H?=?H?M???????H?EH?]?]?E3?I??H?M???????H?E0H?](?]D?CH?j?H?M??????D$(?H?E?H?D$ L?M?L?E?)???H?Mp?[B?H???LB?H?Mp??????????D?΃?ED̃???A?"D?E??I??A??3?I?FI??Ic?3?H??L???E?E?A?????????D?Ã?A?ED?A??B??I??A??3?I?GI??Ic?3?H??E???AD??A?P?A??H??$?????????????????Hc?IcF@3?H??L?????D?C?I??A?ɀ????????????????Hc?IcG@3?H??E?A???A???U??E?I?F8H?E?H?EX3?H?]P?]@HDž@HDžHHDžPM?fIc$H??H???H??XIcFH??H???H??`HDžhH?M@A???WD?CH?I??????A?$????????Hc?L??@J?D	?3?I??I??H??XH?M?HcAL??HJ?T?HcJ?L??H??M??I??L;??9H?E0H?](?]D?C0H???H?M?y????H?EH?]?]?E3?I??H?M??Z????H?E?H?]؈]?D?CuH??H?M??6?????D$(?H?EH?D$ L?M?L?EȺ)???H?Mp??<?H????<?H?Mp??<?H?}?r	H?M???HH?E?H?]??E?H?}r	H?M??HH?EH?]?E??2A?H?l?????H?E?LcXL??HK?T?HcH??@H?D?H??L??M?L;??	H?E0H?](?EA?0H???H?M?F????H?EH?]?E?E3?I??H?M??&????H?E?H?]??E?A?qH?X?H?M????????D$(?H?EH?D$ L?M?L?EȺ)???H?Mp?;?H???;?H?Mp?;?H?}?r	H?M??GH?E?H?]??E?H?}r	H?M??qGH?EH?]?E?H?}0r	H?M?QG?EH?](H?E0A?%?????H?H?Y??????u????uH???H?f?H??p?h?TH?-?H??p?h?;H???H??p??g?"H???H??p??g?	H?E0H?](?EA?0H??H?M?????H?EH?]?E?E3?I??H?M??????H?E?H?]??E?A?H?%?H?M??d?????D$(H?EH?D$ L?M?L?EȺ.???H?Mp?:?H???:?H?Mp??9?H?}?r	H?M???EH?E?H?]??E?H?}r	H?M???EH?EH?]?E?H?}0r	H?M?EH?E0H?](?EH?i??}?LE?L?l$8H??pH?D$0??H?D$(??@?D$ H?E?D?HD?H???H????mfH?\$`H?\$hH?\$pI?^H?D$PH?\$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?\$PH+?H????????H????????H?T$pH;?u_L??L+?I??L;?vH?
2s?$d?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$pH;?uZL??L+?I??L;?vH?
?r??c?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`?_???H?L$hH?M?H?M?H??tH?H?YH?L$hH??H?L$hI??H?D$PL?|$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?u_L??L+?I??L;?vH?
?q??b?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$pH;?uZL??L+?I??L;?vH?
?????????D?΃?ED̃???A?"D?E??I??A??3?I?FI??Ic?3?H??L???E?E?A?????????D?Ã?A?ED?A??B??I??A??3?I?GI??Ic?3?H??E???AD??A?P?A??H??$?????????????????Hc?IcF@3?H??L?????D?C?I??A?ɀ????????????????Hc?IcG@3?H??E?A???A???U??E?I?F8H?E?H?EX3?H?]P?]@HDž@HDžHHDžPM?fIc$H??H???H??XIcFH??H???H??`HDžhH?M@A???WD?CH????\???A?$????????Hc?L??@J?D	?3?I??I??H??XH?M?HcAL??HJ?T?HcJ?L??H??M??I??L;??9H?E0H?](?]D?C0H?2?H?M?ٵ???H?EH?]?]?E3?I??H?M?躵???H?E?H?]؈]?D?CuH?o?H?M?薵????D$(FH?EH?D$ L?M?L?EȺ)???H?Mp?P*?H???A*?H?Mp?1*?H?}?r	H?M??(6H?E?H?]??E?H?}r	H?M??6H?EH?]?E??2A?H?̽????H?E?LcXL??HK?T?HcH??@H?D?H??L??M?L;??	H?E0H?](?EA?0H???H?M覴???H?EH?]?E?E3?I??H?M?膴???H?E?H?]??E?A?qH???H?M??_?????D$(KH?EH?D$ L?M?L?EȺ)???H?Mp?)?H???
)?H?Mp??(?H?}?r	H?M???4H?E?H?]??E?H?}r	H?M???4H?EH?]?E?H?}0r	H?M?4?EH?](H?E0A?%?????H?H????????????p?H???H?F?H??p?yU?TH?
?H??p?`U?;H?̽H??p?GU?"H???H??p?.U?	H?E0H?](?EA?0H?d?H?M?????H?EH?]?E?E3?I??H?M??????H?E?H?]??E?A?H???H?M??IJ????D$(aH?EH?D$ L?M?L?EȺ.???H?Mp?~'?H???o'?H?Mp?_'?H?}?r	H?M??V3H?E?H?]??E?H?}r	H?M??63H?EH?]?E?H?}0r	H?M?3H?E0H?](?EH?ɹ?}?LE?L?l$8H??pH?D$0??H?D$(??@?D$ H?E?D?HD?H??H?????SH?\$`H?\$hH?\$pI?^H?D$PH?\$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?\$PH+?H????????H????????H?T$pH;?u_L??L+?I??L;?vH?
?`??Q?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?c???H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$pH;?uZL??L+?I??L;?vH?
?_??P?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hH?M?H?M?H??tH?H?YH?L$hH??H?L$hI??H?D$PL?|$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?u_L??L+?I??L;?vH?
)_?P?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$pH;?uZL??L+?I??L;?vH?
?^??O?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`?m???H?L$hH?M?H?M?H??tH?L?yH?L$hH??H?L$hA?L?l$PH?E?H?D$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?u_L??L+?I??L;?vH?
?]??N?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$pH;?uZL??L+?I??L;?vH?
H]?:N?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hH?M?H?M?H??tL?)H?E?H?AH?L$hH??H?L$hL?l$PH?E?H?D$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?u_L??L+?I??L;?vH?
?\?yM?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?X???H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$pH;?uZL??L+?I??L;?vH?
?[??L?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`?????H?L$hH?M?H?M?H??tL?)H?E?H?AH?L$hH??H?L$hL?l$PL?d$XH?D$PH;???H?D$PL?D$`L;???H?\$PI+?H?T$pH;?u\H??I+?H??H;?vH?
=[?/L?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$`????H?L$hL?D$`H???H?M?H?M?H??tJ?H?J?DH?A?/H;L$pu?H?L$`????H?L$hH?M?H?M?H??tL?)L?aH?D$hL?l$PI?FH?D$XH?T$PH?L$`?b???L?l$PH?E?H?D$XH?T$PH?L$`?E???L?l$PH?E?H?D$XH?T$PH?L$`?(???L?]?I??H?D$PL?\$XH?T$PH?L$`????M?^HL?l$PL?\$XH?T$PH?L$`?????M?^DL?l$PL?\$XH?T$PH?L$`?????L?l$PH?E?H?D$XH?T$PH?L$`????L?]?L?]?H?E?H?E??E?I???E3?H?U@H?M??L????H???H?D$@?D$8?????D$0????H?D$`H?D$(H??@H?D$ L??XL?E?H??{%H?M??	?H?|$`tH?L$`??JH?L$`??*H?D$`H?D$hH?D$pH?}Xr	H?M@?*H?EXH?EP?E@H??0H3??R+L??$@I?[8I?s@I?{HI??A_A^A]A\]Ð[~?~t~?~?~??????????????@UVWATAUAVAWH??$????H??H?E?????H??$XH??{%H3?H??I??E??Lc?H??H?M?H??xH?]?E3?D?l$0???A???	H?EL?mD?mE?E0H??H?M諨???H?E?L?m?D?m?E3?H?n[H?M?臨???H?E?L?m?D?m?E?E'H?#?H?M??b?????D$(?H?EH?D$ L?M?L?Eغ)???H?M0??H???
?H?M0???H?}?r	H?M???(H?E?L?m??E?H?}?r	H?M???(H?E?L?m??E?H?}r	H?M?(H?EL?m?EE???5A???+A???!A???A???
H?E?L?m??E?A?0H?ȨH?M??o????H?E?L?m??E?E3?H?2ZH?M??K????H?EL?m?EA?qH?m?H?M?$?????D$(?H?E?H?D$ L?M?L?E?)???H?M0???H?????H?M0??H?}r	H?M?'H?EL?m?EH?}?r	H?M??'H?E?L?m??E?H?}?r	H?M??v'H?E?L?m??E?L?l$@D?l$HL?l$PL?l$XL?l$`L?l$hL?l$pL?m?D?m??D$ E3?E3?H?T$@H??????L??pA?UH??????L?{A?UI???r?????O?O??~H?G3??ۀ8E?H??H??u﹀??&H??H?E?H????A??H?????K??H?L?%??M?$?H???H?A?E?GA?E?GH?E???GA??G3??GH?z?H??D$@?G ?D$D?G$?D$H?G(H?D$PH?G0H?D$XH?G8H?D$`H?G@H?D$hH?GHH?D$pH?GPH?D$xH?GX?E??G`?E??Gd?E??GhH?O@H??t????L?gp?Gx3??H????t?GxH?>H??t??H?F??H?F?D$0H?L$@?	H??H??H3??q&H??$XH??A_A^A]A\_^]???????@USVWATAUAVH??$@???H???H?D$`????H?w%H3?H???I??E??D??H??H?L$XE3?D?t$@??(???H?E?L?u?D?u?E?F0H?z?H?M??!????H?E?L?t$xD?t$hE3?H??VH?L$h??????H?E?L?u?D?u?E?FH??H?M??գ????D$(?H?E?H?D$ L?L$hL?E??)???H?M???H????H?M??o?H?}?r	H?M??f$H?E?L?u??E?H?}?r
H?L$h?E$H?E?L?t$x?D$hH?}?r	H?M??#$H?E?L?u??E?H?C@??@?D$H?L$LH?? ??D$P?A?D$TH?D$PH?D$(H?D$HH?D$ L??E??A??H?L$0??????p??#H??H?D$HH??tnH??H?H?@?H?H?D$0H?CH?D$8H?CH?L$8H??t??O?H???H??sL?s D?s(L?s0L?s8L?s@L?sHL?sPL?s`D?sh?I??H?H??t??lH?G??L?w?D$@H?L$8H??t)???????uH?L$0H??tL???A?H?L$8??L?t$8L?t$0H??H???H3??#H???A^A]A\_^[]??????@USVWATAUAVAWH??$x???H??H?D$X????H?Dt%H3?H??pI??L?D$8L??L$@L??????3?9?uFH????
??f.?z-u+?@f.?z u?@f.?zu?@f.?z?H?EH?u@?u?A?0H?a?H?M??????H?E0H?u(?EE3?H??SH?M?????H?D$xH?t$p?D$`A?H??H?L$`蹠????D$(?H?E?H?D$ L?ML?D$`?????H????o?H???`?H????M?H?|$xr
H?L$`?B!H?D$xH?t$p?D$`H?}0r	H?M?!H?E0H?u(?EH?}r	H?M??? H?EH?u?E?H?E?H?E?H?E?H?E?H?u?H?u?H?u?H?E??BH?u?H?u?H?u?H?u?H?u?H?u?H?{tH?C@??@?D$0?L$4??D$0?D$4H?D$0D?0D?xA??I???????A??I?L$??????????C?C????E?MA???E?EA?UH?L$8?B	H?{??H?D$0?????D??D$`?D$dL?L$0L?D$`3?H?M@??H??H?M???????H?MXH??t??????u	H?M@?3?H?]pH?]hH?]`H?]PH????H?]XH???H???H;?t?}A?<$A?|$???????H??H?L$`?H?L$`??K?K;?????A?L$??A?$A?$A?L$?D$`?L$dA?O???A?A?F???AƉD$0?L$4L?L$`L?D$03?H?M@??H??H?M??Ɋ???H?MXH??t??????u	H?M@?3?H?]pH?]hH?]`H?]PH????H?]XH???H???H;?t???H??H?M??_???3?E?EA????|$(L?d$ L?M??T$@H?L$H??????H?D$`H?D$h????H?L$HH?L?L$`L?D$8I???P?H?L$PH??t+??????uH?L$HH??t
H???H?L$P??H?\$PH?\$HH?M?H??t???????u	H?M??H?]?H?]?H?]?H?]?H?EЉH?]??IH?T$8I?????H?M?H??t????z??u	H?M??f3?H?M?H?M?H?M?H?M?H?EЉH?M?H?E?H?M?H;?t?JH??pH3??'H?ĈA_A^A]A\_^[]????H??HE?X?E?XE??~&M?PH?\$@3ېA8??E?I??I??u?H?\$@??tI?@?A??D$`A?AM?ȉD$dH??$?L??H?D$8?D$xH?щD$0?D$p3ɉD$(H?D$`H?D$ ?	???H??H?????H??HA??D$hA?AM?ȉD$lH??$?L??H?D$8?D$xH?щD$0?D$p??D$(H?D$hH?D$ ????H??H???????????????@UVWATAUAVAWH??$???H??H?E?????H??$PH??m%H3?H???M??L??L??3?H?\$P?\$XH?\$`H?\$hH?\$pH?\$xH?]?H?]??]?A????Ic?H??h?????ЛH???L??`A??D$@A?A?D$DH??xH?D$0??p?D$(??h?D$ L?L$@M??I??I???8????<H??`??D$@?A?D$DH??xH?D$0??p?D$(??h?D$ L?L$@M??I??I???|?????L??`A?$?D$@A?D$?D$DH??xH?t$0??p?|$(??h?\$ L?L$@M??H?T$PI??????E?$A?D$D?\$@?D$DH?t$8?|$0?\$(H?D$@H?D$ M??M??H?T$P???????`L??`A?$A?D$?L$@?D$DH??xH?t$8??p?|$0??h?\$(H?D$@H?D$ L?D$PI?׹????E?$D?\$@A?D$?D$DH?t$0?|$(?\$ L?L$@M??I??H?L$P???????L??`A?$?D$@A?D$?D$DH??xH?t$0??p?|$(??h?\$ L?L$@M??H?T$PI???}???E?$D?\$@A?D$?D$DH?t$0?|$(?\$ L?L$@M??I??I???????M??H?T$PI???+?????L??`A?$?D$@A?D$?D$DH??xH?t$0??p?|$(??h?\$ L?L$@M??I??I???????E?$A?D$D?\$@?D$DH?t$8?|$0?\$(H?D$@H?D$ M??L?D$PI?ֹ?=???M??H?T$PI???????L??`A?$?D$@A?D$?D$DH??xH?t$0??p?|$(??h?\$ L?L$@M??I??I???????E?$D?\$@A?D$?D$DH?t$0?|$(?\$ L?L$@M??H?T$PI??????M??I??H?L$P??????
H?EH?]?E?A?0H???H?M??>????H?E?H?]??E?E3?H?JH?M??????H?E?H?]??E?A?H???H?M???????D$(6H?E?H?D$ L?M?L?Eк????H?M ??H????H?M ??H?}?r	H?M??H?E?H?]??E?H?}?r	H?M??eH?E?H?]??E?H?}r	H?M??EH?EH?]?E?H?L$P?-?H???H3???H??$PH??A_A^A]A\_^]??]???9?ƘZ???????@UVWATAUAVAWH??$???H??H?E?????H??$PH?nh%H3?H???M??L?E?L??L??L??`H?B83?H9A8?H?E?H?]?]?D?C0H?֖H?M??}????H?EH?]?]E3?H?AHH?M?Z????H?E@H?]8?](D?CH???H?M(?6?????D$(UH?E?H?D$ L?ML?E(?)???H?????	?H????	?H?????	?H?}@r	H?M(??H?E@H?]8?E(H?}r	H?M?H?EH?]?EH?}?r	H?M??H?E?H?]??E?A?EA9D$uA?EA9D$?H?E@H?]8?E(A?0H???H?M(?T????H?EH?]?EE3?H?GH?M?0????H?E?H?]??E?A?0H???H?M??	?????D$(WH?E(H?D$ L?ML?Eغ)???H??????H????H?????H?}?r	H?M??H?E?H?]??E?H?}r	H?M?uH?EH?]?EH?}@r	H?M(?UH?E@H?]8?E(A?$??????????D?A?E??%?????D?;??H?E@H?]8?E(D?B,H?f?H?M(?
????H?EH?]?EE3?H??EH?M?????H?E?H?]??E?A?(H?#?H?M??’????D$(XH?E(H?D$ L?ML?Eغ)???H????y?H???j?H????W?H?}?r	H?M??NH?E?H?]??E?H?}r	H?M?.H?EH?]?EH?}@r	H?M(?H?E@H?]8?E(??h?H?E@H?]8?E(A?0H?F?H?M(?????H?EH?]?EE3?H??DH?M?ɑ???H?E?H?]??E?A?H???H?M?袑????D$(YH?E(H?D$ L?ML?Eغ)???H????Y?H???J?H????7?H?}?r	H?M??.H?E?H?]??E?H?}r	H?M?H?EH?]?EH?}@r	H?M(??H?E@H?]8?E(A?F??~A???~
?t	???H?E@H?]8?E(A?0H??H?M(辐???H?EH?]?EE3?H??CH?M蚐???H?E?H?]??E?A?\H???H?M??s?????D$(ZH?E(H?D$ L?ML?Eغ)???H????*?H????H?????H?}?r	H?M???H?E?H?]??E?H?}r	H?M??H?EH?]?EH?}@r	H?M(?H?E@H?]8?E(A????u
A9O?,A???;?uA?F??A9G?H?E@H?]8?E(A?0H?ِH?M(耏???H?EH?]?EE3?H?CBH?M?\????H?E?H?]??E?A?eH?N?H?M??5?????D$([H?E(H?D$ L?ML?Eغ)???H??????H?????H??????H?}?r	H?M???H?E?H?]??E?H?}r	H?M?H?EH?]?EH?}@r	H?M(?H?E@H?]8?E(I?D$8H?E?A?4$????????ǃ??D??}????u?H?EhH?]`?EPD?@H???H?MP?A????A?$D??A??A???A??A???DD?IcD$@3?I?t$L??L?؃?ɻP?D??I??A??F??????A??A???A??A??A??Ic?3?I??H??H?E?L?]?A?MD??A??A???A??A??A?ED?IcE@3?I?uL??L?Ѓ??H???ˀ?F??????A??A???A??A??Ic?3?I??H??L??H?E?L?U?fo@?f??f??fo8?f??fo
8?f??f??fo0?f??fo
0?f??Hc?Hk?Hc?H?D?D?dA?H?D#?EMD?M?A?EB?D??A??Lc?HDžPHDžXHDž`A?????????Hc?H??H??hL??pHDžxH?D$`H?D$hH?D$pI?\$H?D$PH?\$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?\$PH+?H????????H????????H?T$pH;?ueL??L+?I??L;?vH?
&;?,?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$`?????H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$pH;?u`L??L+?I??L;?vH?
|:?n+?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$`?M???H?L$hA?H?M?H?M?H??tH?H?YH?L$hH??H?L$hL?\$PI?\$H?\$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?ueL??L+?I??L;?vH?
?9??*?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$`腡??H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$pH;?u`L??L+?I??L;?vH?
!9?*?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?L$hA?H?M?H?M?H??tL?H?YH?L$hH??H?L$hL?\$PH?E?H?D$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?ueL??L+?I??L;?vH?
^8?P)?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$`?/???H?L$hH?D$`A?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$pH;?u`L??L+?I??L;?vH?
?7??(?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$`號??H?L$hA?H?M?H?M?H??tL?H?E?H?AH?L$hH??H?L$hL?\$PH?E?H?D$XH?T$PH?D$`H;???H?T$PH;???H?\$PH+?H?T$pH;?u_L??L+?I??L;?vH?
7??'?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?Ҟ??H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$pH;?u`L??L+?I??L;?vH?
q6?c'?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$`?B???H?L$hA?H?M?H?M?H??tL?H?E?H?AH?L$hH??H?L$hI?]H?D$PH?\$XH?D$PH;???H?D$PL?D$`L;???H?\$PI+?H?T$pH;?u\H??I+?H??H;?vH?
?5??&?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$`?z???H?L$hL?D$`H???H?M?H?M?H??tJ?H?J?DH?A?3H;L$pu?H?L$`臡??H?L$hH?M?H?M?H??tH?H?YH?D$h?H?\$PI?EH?D$XH?T$PH?L$`?¡??H?\$PH?E?H?D$XH?T$PH?L$`襡??H?\$PH?E?H?D$XH?T$PH?L$`舡??L?]?I??H?D$PL?\$XH?T$PH?L$`?c???H?\$PI?D$H?D$XH?T$PH?L$`?E???M?\$H?\$PL?\$XH?T$PH?L$`?'???H?\$PH?E?H?D$XH?T$PH?L$`?
???M?\$HH?\$PL?\$XH?T$PH?L$`????M?\$DH?\$PL?\$XH?T$PH?L$`?Π??ƅ?3?D?C_H????wE?_D?\$ E?E?H?O?H????j&L?]?L?]?H?E?3?H?]?]?I???E3?H?UPH?M??5????H???H?D$@?E??D$8?E??D$0H?D$`H?D$(H??PH?D$ L??hL?E?H?"U%H?M????H9\$`tH?L$`??$H?L$`?H?\$`H?\$hH?\$pH?}hr	H?MP?H?EhH?]`?EPH???H3??NH??$PH??A_A^A]A\_^]????@UVWATAUAVAWH??$???H??H?E?????H??$HH??U%H3?H???I????H??H?M?L??hE3?D?|$0??t??t??t??t
??t??u	D;??
H?EL?}D?}?A?0H?6?H?M??݂???H?E?L?}??E?E3?H??5H?M?蹂???H?E?L?}??E?A??H?[?H?M?蒂????D$(?H?E?H?D$ L?M?L?E??)???H?M ?L?
?H???=?
?H?M ?-?
?H?}?r	H?M??$H?E?L?}??E?H?}?r	H?M??H?E?L?}??E?H?}r	H?M???H?EL?}?E?L?|$@D?|$HL?|$PL?|$XL?|$`L?|$hL?|$pL?}?D?}??D$ L?M?A?H?T$@H??????L??`A?$I???????A?T$I?M??????x?tH??H?E?H??????H?????H??H??H?N}H?A?$?GA?D$?GA?E?GA?E?G??p?GH??H??D$@?G ?D$D?G$?D$H?G(H?D$PH?G0H?D$XH?G8H?D$`H?G@H?D$hH?GHH?D$pH?GPH?D$xH?GX?E??G`?E??Gd?E??GhH?O@H??t??k?
?H?_p?I??H?>H??t???
H?F??L?~?D$0H?L$@?U?H??H???H3??H??$HH??A_A^A]A\_^]?????????L??I?KSH??pH?D$H????H???D$@I?A@D??@A?C E?S$L??$?A?A?C(A?BA?C,??$??D$0I?C(I?C?I?C I?C?I?K??S????H?D$`H??$?H?D$PH?D$`H?L$XH?L$hH??t??Z?
?H?T$`H???D????D$@H?L$XH??t+????2?
??uH?L$PH??t
H???H?L$X??
H?D$XH?D$PH??H??p[?????????????@WH??`H?D$0????H?\$pH?t$xI??H??H??E??yD?A?????%?A??E??D?A?QH?????D?A?????????$??D$(H??$?H?D$ L??H?L$8?j????3?H?t$HH?D$P????H?L$8H?L?L$HL??H???P?H?L$@H??t)????(?
??uH?L$8H??tH??V?H?L$@??
H?t$@H?t$8H?\$pH?t$xH??`_??????@USVWATAUAVAWH??$????H??(H?E?????H??P%H3?H??I??I??L??L??A?A?@fn?[??E?H?B8E3?H9A8?	H?E?L?u?D?u?E?F0H??~H?M??}???H?EL?uD?u?E3?H?i0H?M??}???H?E?L?u?D?u?E?FH?&?H?M??]}????D$(?H?E?H?D$ L?M?L?Eк)???H?MP??
?H????
?H?MP???
?H?}?r	H?M????
H?E?L?u??E?H?}r	H?M????
H?EL?u?E?H?}?r	H?M???
H?E?L?u??E?A?D$A9EuA?D$A9E?
H?E?L?u??E?A?0H??}H?M??|???H?EL?u?E?E3?H?D/H?M??]|???H?E?L?u??E?A?0H?DžH?M??6|????D$(?H?E?H?D$ L?M?L?E??)???H?MP???
?H?????
?H?MP???
?H?}?r	H?M????
H?E?L?u??E?H?}r	H?M???
H?EL?u?E?H?}?r	H?M???
H?E?L?u??E?I?E8H?E?H?E8L?u0?E A?H???H?M ?l{?????????`???O???>??t???XH?r??H?E?L?u??E?A?0H?h|H?M??{???H?EL?u?E?E3?H??-H?M???z???H?E?L?u??E?A?H??H?M???z????D$(H?E?H?D$ L?M?L?E??.???H?MP?~?
?H???o?
?H?MP?_?
?H?}?r	H?M??V?
H?E?L?u??E?H?}r	H?M??6?
H?EL?u?E?H?}?r	H?M???
H?E?L?u??E?H?}8r	H?M ???
L?u0??H? ~?H??}?H??}H??P??H??PH?D$0?C?D$(??D$ D?OD?H???H??p?????H??H+?M?t$@Ic3?I?t$??IcD$H?DH??3?H??H??H??tH??H??M?|$A????+???Hc?E3?tH??H?? H??(HDž0HDž8HDž@HDžHL?L$PL?L$XL?L$`I?]H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?ucL??L+?I??L;?vH?
?'???I??H+?H??L;?v7H??H??H??H+?H;?sI???H?I;?IB?H?L$P謏??H?L$XH?D$PE3?H???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?u^L??L+?I??L;?vH?
4'?&?I??H+?H??L;?v2H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XE3?H?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
j&?\?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?:???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?%???I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P謍??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
%??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
?$?x?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?W???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?]@H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?#???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P莋??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
0#?"?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]DH?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
k"?]?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?%H?M??%??H9\$PtH?L$P?
H?L$P?6?
H?\$PH?\$XH?\$`H?}8r	H?M ??
H?]0?E H?E8H??H3????
H??(A_A^A]A\_^[]???????@UVWATAUAVAWH??$????H??H?E?????H??$XH?n?%H3?H??I??I??L??L??A?A?@fn?[??E?H?B83?H9A8?	H?E?H?u?@?u?D?F0H??mH?M??pl???H?EH?u@?u?E3?H?3H?M??Ll???H?E?H?u?@?u?D?FH??uH?M??'l????D$(9H?E?H?D$ L?M?L?EȺ)???H?M@???
?H?????
?H?M@???
?H?}?r	H?M???
H?E?H?u??E?H?}r	H?M???
H?EH?u?E?H?}?r	H?M??y?
H?E?H?u??E?M?uA?A9D$uA?EA9D$?
H?E?H?u??E?A?0H??lH?M??Hk???H?EH?u?E?E3?H?H?M??$k???H?E?H?u??E?A?0H??tH?M???j????D$(;H?E?H?D$ L?M?L?E??)???H?M@??
?H????
?H?M@??
?H?}?r	H?M???
H?E?H?u??E?H?}r	H?M??o?
H?EH?u?E?H?}?r	H?M??O?
H?E?H?u??E?M?|$8H?E0H?u(?EA?H??yH?M?6j?????p???`???O???>??t???XH???t???XH?]??H?E?H?u??E?A?0H?ZH?M??X???H?EH?u?E?E3?H?|H?M??X???H?E?H?u??E?A?H??gH?M??nX????D$(?H?E?H?D$ L?M?L?E??.???H?M@?(?
?H????
?H?M@?	?
?H?}?r	H?M???
H?E?H?u??E?H?}r	H?M????
H?EH?u?E?H?}?r	H?M????
H?E?H?u??E?H?}0r	H?M??
H?u(?H??[?H??[?H??[H??@???
H??@H?D$0?K?L$(??L$ D?OD?H?TfH??`?W?
??+????Hc?A?L+?IcD$3?I??H??H??tH??H??IcD$H??H??H??tH??H??H??HDž HDž(HDž0HDž8H?t$PH?t$XH?t$`I?\$H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
????
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?qm??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
????
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??l??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
7?)?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
????
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?{k??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
U?G?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?&j??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?\$@H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??}?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?\i??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
????
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??h??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$DH?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
8?*?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?	h??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?|g??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$HH?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?f??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
X?
?J?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?)f??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ce??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??d??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]@H?D$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
@?
?2?
?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?d??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?yH?T$`H;?uWH??I+?H??H;?vH?
??
???
?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?c??H?L$XH?M?H?M?H??tH?H?YH?D$XI?EH?D$pH?D$xH?T$pH?L$P?h??H?D$pL?t$xH?T$pH?L$P??g??M?]H?D$pL?\$xH?T$pH?L$P??g??L?]?L?]?H?E?3?H?]??]?I???E3?H?UH?M??|J???H??`H?D$@?D$8?????D$0????H?D$PH?D$(H??(H?D$ L??L?E?H?_%I?????H9\$PtH?L$P???
H?L$P??
H?\$PH?\$XH?\$`H?}0r	H?M???
H?](?EH?E0H??H3???
H??$XH??A_A^A]A\_^]??????????@UVWATAUAVAWH??$????H??H?E?????H??$XH?.%H3?H??I??I??L??L??A?A?@fn?[??E?H?B83?H9A8?	H?E?H?u?@?u?D?F0H??KH?M??0J???H?EH?u@?u?E3?H???
H?M??J???H?E?H?u?@?u?D?FH??SH?M???I????D$(?H?E?H?D$ L?M?L?EȺ)???H?M@衾
?H??蒾
?H?M@肾
?H?}?r	H?M??y?
H?E?H?u??E?H?}r	H?M??Y?
H?EH?u?E?H?}?r	H?M??9?
H?E?H?u??E?M?uA?A9D$uA?EA9D$?
H?E?H?u??E?A?0H?aJH?M??I???H?EH?u?E?E3?H???
H?M???H???H?E?H?u??E?A?0H?NRH?M??H????D$(?H?E?H?D$ L?M?L?E??)???H?M@?w?
?H???h?
?H?M@?X?
?H?}?r	H?M??O?
H?E?H?u??E?H?}r	H?M??/?
H?EH?u?E?H?}?r	H?M???
H?E?H?u??E?M?|$8H?E0H?u(?EA?H??WH?M??G?????p???`???O???>??t???XH??K??H?E?H?u??E?A?0H??HH?M??G???H?EH?u?E?E3?H?\?
H?M??uG???H?E?H?u??E?A?H?oVH?M??NG????D$(?H?E?H?D$ L?M?L?E??.???H?M@??
?H?????
?H?M@??
?H?}?r	H?M????
H?E?H?u??E?H?}r	H?M????
H?EH?u?E?H?}?r	H?M???
H?E?H?u??E?H?}0r	H?M??
H?u(?H??J?H??J?H?pJH??@?k?
H??@H?D$0?K?L$(??L$ D?OD?H?4UH??`?7?
??+????Hc?A?L+?IcD$3?I??H??H??tH??H??IcD$H??H??H??tH??H??H??HDž HDž(HDž0HDž8H?t$PH?t$XH?t$`I?\$H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
??
?r?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Q\??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?
?	?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??Z??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??
?|?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[Z??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Y??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
5?
?'?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Y??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?\$@H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
k?
?]?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????5???,H?E?H?E??E?A?0H??/H?M??j.???H?E?H?E??E?E3?H?)?
H?M??B.???H?E?H?D$x?D$hA?H?^:H?L$h?.????D$(zH?E?H?D$ L?M?L?D$h?????H?M??͢
?H??辢
?H?M?订
?H?}?r
H?L$h褮
H?E?H?D$x?D$hH?}?r	H?M??~?
H?E?H?E??E?H?}?r	H?M??Z?
H?E?H?E??E???yA?<$??A?$??%???D??E?D$A?T$H???(?D?A???A?$????\$8??@?D$0L?|$(L?t$ M??H?L$@?K????3?H?\$PH?D$X????H?L$@H?L?L$PL??I???P?H?L$HH??t)????y?
??uH?L$@H??tH??S?H?L$H?d?
H?\$HH?\$@H???H3??7?
H???A_A^A]A\_^[]????@USVWATAUH?l$?H??xH?D$X????H???$H3?H?E`A??A????L??H?L$PE3?D?l$@H?EH?E@H?EPH?EHL?mXL?mPL?mH?E?BL?m0L?m(L?m L?mL?mL?m8H?E?H?E?H?E?H?E?L?m?L?m?L?m?H?E??BL?m?L?m?L?m?L?m?L?m?L?m?H?U?H?M?賠
H?UH?L$`襠
?D$0D?l$(????D$ D???D??H?U?H?L$`???
H?D$D????????D$8fW??D$0H?D$DH?D$(H?E?H?D$ L?MD?Ƌ?I???y????D$@H?M?H??t????ȟ
??u	H?M?负
L?m?L?m?L?m?L?m?H?E?D?(L?m?H?E?H?M?H;?t號
?H?MH??t????{?
??u	H?M?g?
L?m0L?m(L?m L?mH?M@D?)L?mH?EPH?MHH;?t?L?
I??H?M`H3??)?
H??xA]A\_^[]??????????@USVWATAUH?l$?H??xH?D$h????)?$`H???$H3?H?EPA??E??H??H??H?E?H?E0H?E@H?E8E3?L?mHL?m@L?m?H?E??BL?m L?mL?mL?mL?mL?m(H?E?H?E?H?E?H?E?L?m?L?m?L?m?H?E??BL?m?L?m?L?m?L?m?L?m?L?m?H?U?H?L$p裞
H?U?H?L$H蕞
?D$0D?l$(????D$ D???D??H?T$pH?L$H??
???f.51?
ztAH?L$H??uH?U????
H?M??
H?U??0?
H?M?fW??l$ f(?A???H?T$H?
?
H?D$@????????D$8????D$0H?D$@H?D$(H?E?H?D$ L?M?E??H??H???????H?M?H??t????d?
??u	H?M??P?
L?m?L?m?L?m?L?m?H?E?D?(L?m?H?E?H?M?H;?t?5?
?H?MH??t?????
??u	H?M???
L?m L?mL?mL?mH?E0D?(L?mH?E@H?M8H;?t??
H?MPH3??ȩ
(?$`H??xA]A\_^[]?@USVWATAUH?l$?H??xH?D$h????)?$`H?s?$H3?H?EPA??E??H??H??H?E?H?E0H?E@H?E8E3?L?mHL?m@L?m?H?E??BL?m L?mL?mL?mL?mL?m(H?E?H?E?H?E?H?E?L?m?L?m?L?m?H?E??BL?m?L?m?L?m?L?m?L?m?L?m?H?U?H?L$p?C?
H?U?H?L$H?5?
?D$0D?l$(?D$ ????D???D??H?T$pH?L$H艞
???f.5??
ztAH?L$H??uH?U???
H?M??
H?U??қ
H?M?fW??l$ f(?A???H?T$H講
H?D$@????????D$8????D$0H?D$@H?D$(H?E?H?D$ L?M?E??H??H???@????H?M?H??t?????
??u	H?M???
L?m?L?m?L?m?L?m?H?E?D?(L?m?H?E?H?M?H;?t?ך
?H?MH??t???蹚
??u	H?M?襚
L?m L?mL?mL?mH?E0D?(L?mH?E@H?M8H;?t芚
H?MPH3??j?
(?$`H??xA]A\_^[]???H??UVWATAUH??????H??H?D$8????H?X )p?H??$H3?H???A??E??L??H??3?H?I8????.?%????H?E?3?H?]??]?D?@*H?k&H?M??%???H?E?H?\$x?\$hE3?H???
H?L$h??$???H?D$XH?\$P?\$@D?C&H???
H?L$@??$????D$(?H?E?H?D$ L?L$hL?D$@?(???H?M ?|?
?H???m?
?H?M ?]?
?H?|$Xr
H?L$@?R?
H?D$XH?\$P?D$@H?}?r
H?L$h?.?
H?E?H?\$x?D$hH?}?r	H?M???
H?E?H?]??E??m3ۃ?? ???H?D$XH?\$P?\$@D?C0H?8%H?L$@??#???H?E?H?\$x?\$hE3?H???
H?L$h?#???H?E?H?]??]?D?CH??6H?M??#????D$(?H?D$@H?D$ L?L$hL?E??)???H?M ?L?
?H???=?
?H?M ?-?
?H?}?r	H?M??$?
H?E?H?]??E?H?}?r
H?L$h??
H?E?H?\$x?D$hH?|$Xr
H?L$@?ߣ
H?D$XH?\$P?D$@H?Ã???H??H?
?5H???E??B?E??E??E?H?E?H?]?H?E?H?]?H?]?H?]?H?M?H?MH?MH?MH?]H?]?E?@?BH?EH?EH??$H?E?H?E???`f.5??
zt.H?U?H?L$@?Q?
fW??l$ f(?A???H?T$@H?M??+?
H?D$0?????D$(H?D$0H?D$ L?M?E??I??H???Ȣ???H?M?H??t???螖
??u	H?M?芖
H?]?H?]?H?]?H?]?H?E?H?]?H?EH?MH;?t?p?
H???H3??M?
H??$X(?$H??A]A\_^]???????????????H??USVWATAUH??????H??(H?D$h????)p?)x?D)@?H???$H3?H???f(?I??D??H??H?L$`?\$P?D???DD$@E3?D?l$L?????|$HfW?fA/?rfD(??\$@??4???
E9(7f/?v1A?Ņ?????fn?????Y??Y??X?fW????-???A?E9h:fD/?v3A?Ņ?????fn?????AY??Y??X?fW????-???A?@A???~2%?}?ȃ??????uA?@??~%?}?ȃ???????H?E?L?m?D?m?A?0H?O!H?M??????H?E8L?m0?E E3?H???
H?M ?????H?EL?m?E?A?TH?$3H?M??????D$(?H?E?H?D$ L?M L?E??)???H???b?
?H???S?
?H???@?
?H?}r	H?M??7?
H?EL?m?E?H?}8r	H?M ??
H?E8L?m0?E H?}?r	H?M????
H?E?L?m??E??t$Xf/?H?D$XwH?D$P?8?t$PfA/?H?D$PwH?D$@?D?D$@H?D$@H?L$H??HM?D?f(׋H?MP??
L??$(A(s?A({?E(C?I??A]A\_^[]????????????H??USVWATAUH??????H???H?D$P????)p?)x?H???$H3?H???f(?M??H??H????0A?8uA?xu
???+?BHE3?9Bu?BD9Bu??8?8??8???)???? ???H?E?L?m?D?m?A?0H??H?M?????H?E?L?m??E?E3?H?W?
H?M??p???H?D$pL?l$h?D$XA?H??'H?L$X?E????D$(!H?E?H?D$ L?M?L?D$X?????H?M????
?H????
?H?M??ߏ
?H?|$pr
H?L$X?ԛ
H?D$pL?l$h?D$XH?}?r	H?M?豛
H?E?L?m??E?H?}?r	H?M?葛
H?E?L?m??E?D?A???D?F?VH???z???t?~u	A?D$?~uA?$A?$?D$0A?D$?D$4?????\$(?|$ f(?L?D$0H?L$@??????L?l$0H?D$8????H?L$@H?L?L$0L??H???P?H?L$HH??t+???賎
??uH?L$@H??t
H???H?L$H蜎
L?l$HL?l$@H???H3??o?
(?$?(?$?H???A]A\_^[]????????????????@UH??$p???H??H?D$0????H??$?H??$H3?H???H?D$x3?H?\$p?\$`D?C+H?~-H?L$`?4???H?D$PH?\$H?\$8E3?H???
H?L$8?
???H?E?H?]??]?D?CH?-H?M???????D$(5H?D$`H?D$ L?L$8L?E??+???H?M?衍
?H??蒍
?H?M?肍
?H?}?r	H?M??y?
H?E?H?]??E?H?|$Pr
H?L$8?W?
H?D$PH?\$H?D$8H?|$xr
H?L$`?2?
H?D$xH?\$p?D$`H???H3???
H??$?H?Đ]??H??HH????????H?AH+H???????H?QH9????????H?H???????????H??HH????????H?QH9????????H?AH+H???????H;QsH9w??2?????????????????H??(H?
??
???
???????????????????????????????????????????H???????????????H????
??????????????????????H???????????????H???????????????H??????????????H?AH+H???????H???????????????H??馗
????????H?AH+H???????H??(H?
??
?׶
???????????????H?H????????????H??HH????H????????????????????????????H??H??H??????H?H????????????H??H??H????????????????????H?AHHc?L?Ic?L??I??HA??????̋9u?B9Au??2?????????????̋A???????????H??????????????H???????????????H??HH?D$ ????3?H??tUH????????H;?wH???d?
H??u8H?D$PH?T$PH?L$(???
?H?.?
H?D$(H?:$#H?L$(?.?
?H??H???H??HH?D$ ????3?H??tUH????????H;?wH?????
H??u8H?D$PH?T$PH?L$(??
?H???
H?D$(H??##H?L$(辕
?H??H???H???????????????H???????????????HcH?I?H?AH??????????????????3????????????????D$???????????H???????????????H???????????????3????????????????D$???????????3?H?H?AH??????H???????????????H??????????????H?H??????????̋?I?H?AH????H???????????????H???????????????H???????????????H???????????????H???????????????H?A????????????@SH?? H??H?H??膈
H??H?? [????H?	?x?
????????H?H9u
H?BH9Au??2??????????H?H9u
H?BH9Au2?ð?????????3???????????????3??????????????̰????????????????????????????H???????????????H????????????????D$???????????H???????????????HcA??~
H??H?AHH?D???3??????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????@SH?? H?9H??t3H??t.H?AH??HAH?IH;KrH9K wH+?A?H?KH????
H??H?? [??????@SH?? H?9H??t(H?AH)AH?IH;KsH?A?H???H??H?C识
H??H?? [?@SH?? H?9H??t)H?IHKH?CH;C rH+?A??H??H?C?n?
H??H?? [????????????????H?RH9Q???????H?\$WH??PL?RL?ZL?J H?BI??L?H??L?T$(L?\$8L?D$ L?L$@M??tJH??tEI??H??H?I;?rL;?w1H+?H?L$ A?H??H?D$0?م
L?L$@L?\$8H?D$0L?T$(L?D$ H?CL?L?SH??L?[L?K H?\$`H??P_??????????H?\$WH??PH?:L?RL?ZH?BM??L?B I??H??H?|$ L?D$@L?T$(L?\$8H??tJM??tEI??I??H?I;?rL;?w1H+?H?L$ A?I??H?D$0?&?
L?D$@L?\$8H?D$0L?T$(H?|$ H?CH?;L?SH??L?[L?C H?\$`H??P_???????@SH?? 3?H??H??AH?AH?AH?A H?A(H?A0H?A@?AH??~
E??~?fyH??H?? [??????????????@SH?? H???R?H??H?? [??????????H?	?????????̅?t=H?\$H?t$WH?? I??A??H???-??L??D??H??H???1??H?\$0H?t$8H?? _?????????????????????????????H???????????????H???????????????H??醏
???????̋??B?AH?????3?H?H?????????̋??B?AH??????D$?????????????????????????H???$L???$H?L$fnD$fW?H?T$L?Z???fnD$?-?fW?Z???Hc?I???-?fnD$fW?M?Z???Lc??-?fnD$fW?Z?Hc????C?I???-?Hc?I?/?v??3??H??????????????3?H?H?AH?AH??????????????????H??HH?D$ ????3?H??tYH????????H;?wH???@?
H??u8H?D$XH?T$XH?L$(?j?
?H?
?
H?D$(H?#H?L$(?
?
?H??H???????????????3?H?H?AH?AH??????????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H????????????H??HH????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H9?????????H??H??H??????H?H????????????H??H??H??????H??HH?D$ ????3?H??tXH????????H;?wH??H??豌
H??u8H?D$XH?T$XH?L$(?ۭ
?H?{?
H?D$(H??#H?L$(?{?
?H??H????????????????H?H9?????????HcH?H?BH?AH????????????????̋Lc?L?????uGH?A@?8t>?xuH?AHH?I??HAËIA???????H?D+?I?IHH?Mc?H??J??IA?H?AJ???̋?I?H?AH????H?T$H??H?$????H?T$8H??tA??A?@?B?H?????H;?t%fff??H??I??A?@??A?A?@?H;?u?I?????H??H?$????H?L$ H?L$0H??t???B?A?H???????3?H?H?AH??????H??????????????H?H???????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????2???????????????H?\$WH?? H??H?	???????tH???Z?
H??H?\$0H?? _???????????????H?T$H??H?$????H?T$8H??tA??A?@?B?H???????????????????@SH?? H?9H??t(H?AH)AH?IH;KsH?A?H???H??H?C?~
H??H?? [?@SH?? H?9H??t)H?IHKH?CH;C rH+?A??H??H?C??}
H??H?? [????????????????L?H?L?H?????@SH?? H?HcBH??3?L?ʅ?~L??H?BHN?T???L??L?SH?KH?KH?K ????tXL?ZL?[?B??HcRIcAH???/???~&I?I@L??fffffff?HcH??H??I??u?L??M?L?S E3?3?H???}
H??H?? [????????????????3?H?H?AH?AH????????????????????????????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????H?J??H??H?
???L?H????????????H?H?H?????????H?AH?H????????H?H9?????????I??H??LL????I??H??LL????L?H????????????H?H9????????̋?I?H?AH????H?T$H??H?$????H?T$8H??tA??A?@?B?H?????I??L??L??H;?t/L??L??L+?L+?fDA?K?TI???B?
H???
M;?u????H?L$SH??0H?D$ ????H??H?IH??t?????z
??uH???z
3?H?K0H?K(H?K H?KH?C@?H?KH?KHH?CPH;?t?z
H??0[?????????H??H?$????H?T$(H?T$8H??tA??A?@?B?H?????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A H?????????@SH?? H??????H??H?? [??????????@SH?? H?H??tH??Z?H?????
H?? [?????????????H?T$H??H?$????H?T$8H??tA??A?@?B?H???????????????????@SH?? L?L?IH?AL?Q H??L?H?QL?KH?CL?S H?SM??t!I?H?AI;?rH+?A??H?A?y
H??H?? [???H?\$WH??PH?:L?RL?ZH?BM??L?B I??H??H?|$ L?D$@L?T$(L?\$8H??tJM??tEI??I??H?I;?rL;?w1H+?H?L$ A?I??H?D$0?y
L?D$@L?\$8H?D$0L?T$(H?|$ H?CH?;L?SH??L?[L?C H?\$`H??P_???????L?BH?QI?H?H?
I?????????????H?\$H?l$H?t$WH?? H??H?QH??H?KH?I??H?	I???Յ?tL?GH?SI?H?H?
I?H?SH?NH?H?	?Յ?tL?CH?VI?H?H?
I?H?WH?KH?H?	?Յ?tL?GH?SI?H?H?
I?H?\$0H?l$8H?t$@H?? _????H?H?H?BH?AH?BH?AH?BH?AH?B H?A I?H?A(I?@H?A0I?@H?A8I?@H?A@I?@ H?AHH??????????????????H?\$H?l$H?|$ ATH?? L??H??I??I??I??I???$???????H?t$0?H?;t(H?CH)CH?KH;KsH?A?H???H??H?C?8w
H??H?st(H?GH)GH?OH;OsH?A?H???H??H?G?w
H?OH?H??H?I????????u?H?t$0H?H?\$8H?EH?GH?EH?GH?EH?GH?EH?G H?|$HH?E H??H?l$@H?? A\???3?H?H?AH?AH????????????????????????????????@SH?? H?9H??t?ӡ
H???
3?H?H?CH?CH?? [?3??	H?AH?AH?AH?????????????H?AH9tH???H?A???????????????H?\$WH??PL?RL?ZL?J H?BI??L?H??L?T$(L?\$8L?D$ L?L$@M??tJH??tEI??H??H?I;?rL;?w1H+?H?L$ A?H??H?D$0?u
L?L$@L?\$8H?D$0L?T$(L?D$ H?CL?L?SH??L?[L?K H?\$`H??P_??????????H??H?$????H?T$(H?T$8H??tA??A?@?B?H?????@SH?? H???b???H??H?? [??????????@SH?? H??H?IH??t8????nt
??u+H?|$0H?;H??tH????H???r?
H?K?Ot
H?|$0E3?L?[L?H?? [???????@WH??@H?D$(????H?\$`H?t$h)t$0I??H??H??W?fDH??t/?t$ ?t$$L?D$ H??H???/???H??H?\$XH??H?|$P??H?\$`H?t$h(t$0H??@_????????@VWATH??@H?D$ ????H?\$pI??H??H??E3?H??t-L?d$(L?d$0L?D$(H??H???????H??H?\$hH??H?|$`??H?\$pH??@A\_^????????????????????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???J???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????@UATAUAVAWH?l$?H??L??L??H??I??M??M???%s
H??(??H??$?I??I??H??$?H??$???r
I?MH??H?M?I?MH?H?M?I?M??H?M?I?MH?H?M?I?M H??H?<H?M?H?MI??L??H??????H?M?L??I??H??????H?M?M??H??L???????I?FM?H?E?I?FH?MH?E?I?FL??H?E?I?F I??H?E?L?]??????H?M?L??I??H??????H?U?M??L??H???k???I?D$M?$H?E?I?D$H?MH?E?I?D$L??H?E?I?D$ I??H?E?L?]??`???H?M?L??I??H???N???H??L?E?M??H??????I?FM?H?E?I?FH?MH?E?I?FL??H?E?I?F I??H?E?L?]?????H?M?L??I??H???t???H?U?M??L??H??????H??$?H??$?H??$?H?ĠA_A^A]A\]?I?$L?E?H?U?H?E?I?D$H?MH?E?I?D$M??H?E?I?D$H?E?I?D$ H?E?I?H?E?I?FH?E?I?FH?E?I?FH?E?I?F H?E?I?EH?EI?EH?EI?EH?EI?EH?EI?E H?E'?????H?ĠA_A^A]A\]??????????H?H?H?BH?AH?BH?AH?BH?AH?B H?A I?H?A(I?@H?A0I?@H?A8I?@H?A@I?@ H?AHH??????????????????L??SH??I?H??I?C?I?AI?C?I?AI?C?I?AI?C?I?A M?K?I?C?I?H?D$0I?@I?C?I?@I?C?I?@I?C?I?@ L?D$0I?C?H?I?C?H?BI?C?H?BI?C?H?BI?C?H?B I?S?I?C?A?C?D$ ?????H??H?İ[??????L??UATAUH??H??I?[L??I?sH?B?M?{?M??H?M??H??H+?H??H??M;??fM?s?L?u@I?{f?H?H?SH?CL?KL?C H?M?H?U?H?E?L?M?L?E?H??t4H??t/H??H?H?E?I;?rL;?wH+?H?M?A?H??H?E???n
H?E?I?UH?A?օ???H?H?KH?{L?CH?S H?E?H?M?H?}?L?E?H?U?H??t4H??t/H??H?H?}?I;?rH;?wH+?H?M?A?H??H?}??hn
H?}?H?H?SL?KL?C H?KH?E?H?U?L?M?L?E?H??t0M??t+I??H?I;?rL;?wH+?A?I??H?M?H?M??n
H?M?H?L??H?H?F?H?H+?H??H??M;??????H??$?L?t$xH?H?SL?KL?C H?KL?|$pH??$?H??$?H?E?H?U?L?M?L?E?H??tDM??t?I??H?I;?rL;?w.H+?A?I??H?M?H?M??um
H?E?I?UH?H?ĀA]A\]?I?UH?H?ĀA]A\]????@SH?? H?9H??t???
H???x
3?H?H?CH?CH?? [?@SH?? H??H??H???L???H??H?? [????@SH?? H??H?IH??t8????^l
??u+H?|$0H?;H??tH????H???bx
H?K??l
H?|$0E3?L?[L?H?? [???????H??H?D$0?D$(H?D$ ?????H??H?H??H?D$0?D$(H?D$ ?5???H??H???????????????H??H?D$0?D$(H?D$ ????H??H?H?\$H?T$H?L$UVWATAUAVAWH?l$?H??@I??I??M????k
H???L?1H?YL?iL?a H?yH?H+?L?t$HH?\$PH??L?l$`L?d$hH??M??tNH??tIH??H??H?I;?rL;?w5H+?H?L$HA?H?|$X?k
L?d$hL?l$`H?|$XH?\$PL?t$HH???H?A?I??H?E?H?AL?t$HH?E?H?AH?\$PH?E?H?AH?|$XH?EH?A H?ML?l$`L?d$hH?E????H?T$HH?M?L??L??????L?t$ H?\$(H?|$0L?l$8L?d$@L?t$HH?\$PL??L?l$`L?d$hM??tFL?M;?rM;?w8L+?H?L$H?L?D$XA??j
H?|$0L?d$hL?l$`L?D$XH?\$PL?t$HL?e?L???L?t$pH?\$xL?E?L?m?I9|$?T?H?D$ H?L$(L?L$8H?T$@H?D$HH?L$PL??H?|$XL?L$`H?T$hH??t4H??L?9L?D$XM;?rI;?wL+?H?L$HH???L?D$XA???i
L?D$XH?I??օ???H?D$ L?D$0H?L$(L?T$8L?L$@I??H?T$XH?D$HH?L$PL?T$`L?L$hH??t9H??J?H?T$XI;?rL;?w#H+?H?L$HA?H?T$XH????ti
L?D$0H?T$XH?I??օ?uLH?|$ H?|$0t2H?L$(H+?H?|$0H;|$8sH?H?L$ A?H???H?|$0?$i
H?|$0I9|$??????H?|$0L?E?M;GsrH?I??օ?u]H?U?H?L$0H?H?	?օ?uHH?|$pL?E?t/H?D$xL?L?E?L;E?rL+?H?L$p?L?E?A??h
L?E?H?|$0M;Gr??	H?|$0L?E?H?D$pI??H??H?E?H?D$xH?M?H?E?H?E?H?]?H?E?H?E?H?E?H?D$ H?E?H?D$(H?E?H?D$8H?E?H?D$@H?E??I;O??fDH?H??օ?ucH?T$0H?M?H?H?	?օ???H?|$pH?E?H?]?H??t+H?L$xH?H?E?H;E?rH+?H?L$pA??H?E???g
H?H?H?H?H?}?H?M?t-H?E?H?H?M?H;M?rH+?A??H?M?H?M??g
H?M?H?|$0I;Os?I???H?|$0H?M?H?]?L?E?I9\$??fffff?H?E?H?U?L?E?H?M?H?D$HH?T$PH?\$XL?D$`H?L$hH??t3H??H?H?\$XI;?rH;?wH+?H?L$HA?H???H?\$X??f
H?\$XH?H??օ??*H?E?H?M?H?U?L?M?L?E?H?D$HH?L$PH?T$XL?L$`L?D$hH??t3H??H?H?T$XI;?rL;?wH+?H?L$HA?H?T$XH????uf
H?T$XH?L$0H?H?	??H?]?????H?E?H?M?L?E?H?U?H?D$HH?L$PH?\$XL?D$`H?T$hH??t3H??H?H?\$XI;?rH;?wH+?H?L$HA?H???H?\$X??e
H?\$XH?|$ H?T$0t2H?D$(H+?H?T$0H;T$8sH?H?L$ A?H?T$0H????e
H?T$0H?H?H?
H?H?}?H?]?t,H?U?H+?H?]?H;]?sH?H?M?A?H???H?]??xe
H?]?H?|$0I9\$s
????H?|$0H?M?L?E?I?$H9U??0I;\$uI?H9E?u
I;O??H9U??I;\$?H?E?H9D$puL;?tI?H?H?I?H?|$0L?E?H?M?H?|$pt4H?D$xL?L?E?L;E?r"L+?H?L$p?L?E?A??d
H?|$0H?M?H?}?L??t.H?E?H?H?M?H;M?rH+?A??H?M?H?M??d
H?|$0H?|$ H??t.H?L$(H?H?|$0H;|$@rH+?H?L$ A??H?|$0?Cd
I?$H?H?I?$H?|$0L?E?H?M?H?]?L????????I?H9E??
I;O?H?|$ t:H?L$(H+?H?|$0H;|$8s&H?H?L$ A?H???H?|$0??c
H?|$0L?E?H?]?H?}?t5H?U?H+?H?]?H;]?s$H?H?M?A?H???H?]??c
H?|$0L?E?H?]?H?D$ H9E?uH;?tH?H?H?H?H?|$0L?E?H?|$pt3H?D$xL+?L?E?L;E?s!L?H?L$pH???L?E?A??,c
H?|$0L?E?I?H?H?I?H?|$0L?E?H?M?H?]??????H?}?t0H?U?H+?H?]?H;]?sH?H?M?A?H???H?]???b
H?M?H?]?H?}?H??t)H?E?H?H?M?H;M?rH+?A??H?M?H?M??b
H?H?H?H?H?|$0L?E?H?M?H?]??????H???H?D$ H??$?H?H?D$(H?yH?AH?D$8H?AH?D$@H?A H?D$pL?A8H?A(H?D$xH?A0H?E?H?A@H?E?H?AHH??H??@A_A^A]A\_^]??????????????@UATAUAVH?l$?H??(L?	M??L??L??L;
uH?BH9A??I?FH?IH??$XI?^H??$ ?}PH?D$pI?F L?L$XH?L$`H?\$hH??$`H?D$xM??t8H?H?\$hH;\$xr)H+?H?L$XA??H?\$h?Pa
H?\$hH?L$`L?L$XM;Mu
I;]??H?D$pI?VH?L$8H?D$HH?D$xL?L$0H?D$PH?\$@H?H?H??A?ԅ???H?t$0H?D$@L?\$8H??t8I?H?D$@H;D$Pr)I+?H?L$0A??H?D$@?`
H?D$@L?\$8H?t$0I?I?VM?FM?NM?V H?E?H?D$HH?M?H?U?H?E?H?D$PL?E?H?E?H?D$XL?M?H?E?H?D$`L?M?H?E?H?D$hL?E?H?E?H?D$pH?U?H?E?H?D$xH?M?H?u?L?]?L?U?H?E?@?|$ ?x???M?^I?H?\$hH?L$`L?L$X????L?D$0H?T$8H?L$@L?L$HH?D$PL?E?H?U?H?M?L?M?H?E?M??t'H+?H?M?I;?sH?A?H???H?M?H?M??_
H?M?H?H??A?ԅ?t>H?E?H?H?D$@H?L?E?H?U?H?M?L?M?H?E?L?D$0H?T$8H?L$@L?L$HH?D$P?H?D$@H?H?\$hH?L$`L?L$X?????H??$`H??$XH??$ H??(A^A]A\]???????H?\$L?L$ UVWATAUAVAWH??H??L?}`H?|M??M??L??H??H?U@I;???H?H?SH?sL?CH?K L?o?H?E?H?U?H?u?L?E?H?M?H??t7M??t2I??H??H?H?u?I;?rH;?wH+?H?M?A?I??H?u??r^
H?u?H?H?SH?KL?KL?C H?E?H?U?H?M?L?M?L?E?H??t4H??t/H??H?H?M?I;?rL;?wH+?A?H??H?M?H?M??^
H?M?H?H?	A??H?KH?sL?CH?S ??H?IE?H?M?H?u?L?E?H?U?H?E?H??t4H??t/H??H?H?u?I;?rH;?wH+?H?M?A?H??H?u??]
H?u?H?H?SL?KL?C H?KH?E?H?U?L?M?L?E?H??t0M??t+I??H?I;?rL;?wH+?A?I??H?M?H?M??K]
H?M?H?L??H?|?H?I;??[???L?mXI;???H?H?SH?{L?CH?K I?v?H?E?H?U?H?}?L?E?H?M?H??t7H??t2H??H??H?H?}?I;?rH;?wH+?H?M?A?H??H?}???\
H?}?H?H?SL?KL?C H?KH?E?H?U?L?M?L?E?H??t0M??t+I??H?I;?rL;?wH+?A?I??H?M?H?M??h\
H?M?H?L??H?H?L?E@H?M?H?E?H?CM??H?E?H?CI??H?E?H?CL?|$ H?E?H?C H?E?????H??$?H?ĀA_A^A]A\_^]????????????@SH??`H?AM?@L??H?H??I??I?H?H?D$0H?AH?D$8H?AH?D$@H?AH?D$HH?A I??H?D$P?[
H?L$0L??H??$?L??3?H?D$ ?p???H??`[?????????????????????????@SH?? H?9H??t?Æ
H???f
3?H?H?CH?CH?? [?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?]???H??0[????????L??H??xH?E3?I?C?H?BI?C?H?BI?C?H?BI?C?H?B I?S?I?C?H?I?C?H?AI?C?H?AI?C?H?AI?C?H?A I?K?I?C?????H??x???????H?\$H?l$H?t$WH??`H??H??H??H??I???jZ
H??H?H+?H??H??H?????H?H?WH?GL?OL?G H??H?L$8H?T$@H?D$HL?L$PL?D$XH??t8H??t3H??H?H?D$HI;?rL;?wH+?H?L$8A?H??H?D$H??Y
H?D$HH?L?L$0H?L$8H?D$0H?L??H?D$8H?GH??H?D$@H?GH?l$ H?D$HH?GH?D$PH?G H?D$X?v???H???=???H?\$pH?l$xH??$?H??`_??????H?\$H?t$H?|$ UH?l$?H???H?L?RL?JL?ZH??H?R I??H??H?E?H?U?L?U?L?M?L?]?H??t/I??M?L?M?M;?rI;?wM+?H?M?A?H???L?M???X
L?M?I?H?MA?H?EgH?H??H?E?H?CH?E?H?CH?E?H?CH?E?H?C H?E?? ???H?M/A?H??H??????H?M?L?CH?I?H?M?H?U?H?M?H?M?H?M?H?M?H?M?H?M?H?M?H?M?H?M?H???[X
L?MgH?M?3?L??H?t$ ?"???L??$?I?[I?s I?{(I??]??????????@SH?? H?9H??t?s?
H??c
3?H?H?CH?CH?? [?ATH??@H?D$0????H?\$PH?t$`H?|$hH??H??H????????H;?vH?
??
???
?H?AH+H??H;?smH???????L??H?D$XD?D$XD?D$(H?D$ L?KL??H?SH??????H?H?sH+?H??H??t??b
H?????
M??L?[I??H?CL?#H?\$PH?t$`H?|$hH??@A\?????????????M;?t,L?YM??M;?tA?I??I??A?B?A?A?A?B?M;?u?L?QH??L??????????H??(L?L?AI????????M+?I??I??H+?I;?sH?
??
???
?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?x???H?I;?IB??i???H??(?????@WH??0H?D$ ????H?\$PH??H??H?AH;?sFH?	H;?w>H+?H??H;Cu
?H???;???H?H?KH?L$@H?L$HH??t????D??A?0H;Cu
?H??????H?KH?L$@H?L$HH??t
???G?AH?CH?\$PH??0_????????H??H?L?IL??I;?tBM??M;?t6H?$M??H??L+?I+?DA?J?LI???B?H???M;?u?H?$I?RH?????????H?\$H?t$WH??H??H??H??H??I???U
H??~vH?S L?KH?H?OL?GL?SL?[H?T$PH?WL?L$8L?O H?D$0H?H?T$hH?L$`L?D$pL?L$xH?T$0H?L$XE3?L??L?T$@L?\$HH?D$XH?D$ ????L??$?I?[I?sI??_??????????H?\$WH?? H?9??H??t??
H???_
3?H?H?CH?C@??tH????_
H??H?\$0H?? _?????H?\$WH??pH?L?JL?RL?ZH?R H??I??L?AH?T$@H?QL?L$(L?K H?D$ H?H?IH?L$`H?T$PL?D$XL?L$hH?L$HH?T$ E3?L??L?T$0L?\$8H?D$H?C???H??$?H??p_??????H?\$WH??0L?IL?H??M??H??M+?I??L;?vVM??M;???I??M;?t2M??M??M+?M+?f??I?LH??A?B?I???I;?u?L?CH?\$HH??0_???H??I????????I+?I??H+?I;?sH?
??
??}
?H?SL?I+?H??L;?v$H??H??L+?L;?s3??H?I;?H??IB??????H?KH??L?KH??E3?H+H??H+??D$@?D$(H?D$ ?????L?[I??H+H??H+?I??H?CH?\$HH??0_?????????@WH??0H?D$ ????H?\$PH??H??H?AH;?sFH?	H;?w>H+?H??H;Cu
?H???K???H?H?KH?L$@H?L$HH??t????D??A?0H;Cu
?H??????H?KH?L$@H?L$HH??t
???G?AH?CH?\$PH??0_????????H;?trH?\$WH?? H?9H??H??H?t$0t??|
H?? ]
3?H??H??H?3H?sH?s??z
L?L?H?GH?CH?GH?CH?\$8H?7H?wH?wH?t$0H?? _?????????@SH?? 3?H??H?H?AH?A?e???H??H?? [?????????????@UATAUH??pH??L??H??H??M????P
H????H??$?H??$?H??$?H?MH?UL?EL?M H?EM?$M?\$I?\$I?|$I?t$ H?L$(H?T$0L?D$8L?L$@H?T$ H?L$HE3?M??H?D$ L?T$HL?\$PH?\$XH?|$`H?t$h?????H?}t(H?EH)EH?MH;MsH?A?H???H??H?E?P
I??H???P
H???I???H??$?H??$?H??$?H??pA]A\]????????@SH?? H?9H??t?3{
H??a[
3?H?H?CH?CH?? [?H?\$WH??PH??HcRI??I???????H??iHcO3?H?T$@H?T$8?T$0H??D?BH?WH?\$(H?L$ H?E3??yV
??t#??????L?
?
H?>?
H??A?]????H?\$`H??P_??????@SH?? 3?H??H?H?AH?A?e???H??H?? [?????????????H?\$WH??0L?IL?H??M??H??M+?I??L;?vXH??I?I;???I??M;???M??L??L+?M+?f?H?I?LH??H?J?H??H?I;?u?H?_H?\$HH??0_???H??I????????I+?I??H+?I;?sH?
J?
?X
3?H?H?CH?CH?? [??????????????H??UWATAUAVH?h?H?? H?E?????H?XH?pH???$H3?H?EL??H??D?D$x?,bL??LcD$xL?E?H?EH?EH?E?H?E?H?E?E3?L?t$@L?t$HL?t$PH?E?L?u?D?u?E?FH?{?
H?M??????H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
a?
?Sv
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?1???H?L$HH?D$@H???H?H?M?H?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
??
??u
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?M?H??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?
??t
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?M?H??tH?H?H?CH?A?~H?T$PH;?u[L??L+?I??L;?vH?
d?
?Vt
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?4???H?L$HH?L$pH?M?H??tH?H?YH?L$HH??H?L$HH?D$`H?D$xH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??
??s
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?l???H?L$HH?D$@H???H?H?L$pH?M?H??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
?
??r
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?L$pH?M?H??tH?H?D$xH?AH?L$HH??H?L$HH?D$`L?t$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
B?
?4r
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?M?H??tJ?H?J?DH?A?{H?T$PH;?uXH??I+?H??H;?vH?
??
??q
?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@????H?L$HH?L$pH?M?H??tH?L?qH?D$HH?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M????????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H?F?$I???^:A?H?a?
H?M?????L?\$HL9\$@t	I??L?\$HH?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M??F?????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H???$I????9?H?}?r	H?M???P
H?E?L?u??E?H?|$@tH?L$@??p
H?L$@?P
L?t$@L?t$HL?t$PH?MH3??rQ
L??$ I?[0I?s8I??A^A]A\_]????????L$UVWATAUAVAWH??$????H??PH?E????H??$?H?	?$H3?H??HM??M??L??3?H?]?H?]?H?]??sZH?E?H?\$PH?\$XH?\$`HDžH?????D?CH?E?
H????????A?$????A?"D?I??A??3?I?D$I???E?H?]??]?H?]?H?]?H?]?H?]?H?]?H?]??]??D?KD??H?M??8?fW??E?E ?E?EH?]0?]8H?]@H?]HH?]PH?]XH?]`H?]p?]xL?E0H?UH?M??	??H?M0?/3H?EL?uH?UH?D$PH?L$XH;???H?UH;???H?]H+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
$}
?n
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$xH?L$pH??tH?H?H?CH?AH?L$XH??3??H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
s|
?em
?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?C???H?L$XH?L$pH?L$xH??tH?L?qH?L$XH??H?L$XM?|$H?EL?}H?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
?{
??l
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
 {
?l
?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?L?yH?L$XH??H?L$XI?]H?EH?]H?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
]z
?Ok
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?.???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?y
??j
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?YH?L$XH??H?L$XH?EH?E?H?EH?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
y
??i
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
zx
?li
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?K???H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?EH???H?EH?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
?w
??h
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
w
?h
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H???H?AH?L$XH??H?L$XM?nH?EL?mH?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
Vv
?Hg
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?'???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?u
??f
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?L?iH?L$XH??H?L$XM?fH?EL?eH?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
u
??e
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$`H;?uZL??L+?I??L;?vH?
vt
?he
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?G???H?L$XH?L$pH?L$xH??tH?L?aH?L$XH??H?L$XH?EH???H?EH?UH?D$PH;???H?UH;???H?]H+?H?T$`H;?u_L??L+?I??L;?vH?
?s
??d
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
s
?d
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H???H?AH?L$XH??H?L$XH?EH?E?H?EH?EL?D$PH;???H?EL;???H?]I+?H?T$`H;?u\H??I+?H??H;?vH?
Vr
?Hc
?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?*???H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$`H;?uWH??I+?H??H;?vH?
?q
??b
?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?E?H?AH?D$XIc$H??0IcEH??8HDž@HDžHDž HDž(H??t
H???
I??HD?H?EH?D$pH?E 3?H?}@?}I???E3?H???H?M?????H?\$@?D$8?????D$0????H?D$PH?D$(H??H?D$ L??0L?EH??$H?M??!H???H?M??e????????E0D???D?E4????E8????EA
H?D$(H?J?"H?L$(?>
?H??H???H??HH?D$ ????3?H??tUH????????H;?wH???
H??u8H?D$PH?T$PH?L$(?.4
?H??@
H?D$(H?ڠ"H?L$(??
?H??H????D$????????????D$?????????????????????????H?\$WH?? H+?I??H??H??H??H??L????3
H?;H?\$0H?? _?????????????????????H???????????????H???????????????H???????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H??H?$????H?L$ H?L$0H??t???H?????????????H??H?$????H?L$ H?L$0H??tH?H??H???????????A??A?@?BA?@?BA?@?BH?????H?\$ WH?? ??H?l$0H?t$8L?d$@A??Ic?Lc?H?????8?2
I??H??PH???L?H(H??IcH??H+?H??H+?H??@H?????'L??H?Ⱥ?]H??PH?Hc?H????L??H?Ⱥ?]]H??PH?A??L?d$@H?l$0tC???3ƨt7H??PH?I??
??t#??????L?
OB
H??
H??A???|???Hc\$P@??H?t$8tH???s??H???c?L??H????\H??PH?\$HH?AH?? _??????????????@SH?? ??H????H??PH?	?+
??t#???`???L?
?A
H?Z?
H??A?}?԰??H??PH?I??

??t#???)???L?
pA
H?#?
H??A?~蝰??H??PH?I?

??t#??????L?
9A
H??
H??A??f???H??PH?I?

??t#??軬??L?
A
H???
H??A???/??????t$H???H?I(?P
L???I?C(?H??PH?I0?"

??t#???W???L?
?@
H?Q?
H??A???˯??H??PH?I(??	
??t#??? ???L?
g@
H??
H??A??蔯??H??PH?I ?	
??t#??????L?
0@
H??
H??A???]???H??P??-
HǃPƃH?? [?????????3?H?H?AH?AH??????????????????H?H????????????3?H?H?AH?AH??????????????????H?H????????????H??HH????L?H????????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H??H??H??????H??HH?D$ ????3?H??tXH????????H;?wH??H????
H??u8H?D$XH?T$XH?L$(?.
?H??:
H?D$(H?ǚ"H?L$(?
?H??H????????????????H?H9????????̋D?AD?ID?Q?D?BD?JH??D?RË??B?AH????̋?D$?A?D$H?D$H?H??????????@SH?? H??H?IH??t??????	??uH???}
H?K???	E3?L?[L?H?? [?H?T$H??H?$????H?T$8H??tA???H????????????H?T$H??H?$????H?T$8H??tA???H????????????H;?tfff?A?H???A?H;?u??????????????????@SH?? H+?I??H??L??H??I+?H???q,
H??H?? [?H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H?H9?????????L?H????????????H??????????????L?AL??H?gfffffffL+I??H??H??H???H?H????????H??H??H+?H;?s
3?I;?IB?H???H?I;?IB?H???????????H??H??HH????H??HH?D$ ????3?H??tYH????????H;?wH??H???0

H??u8H?D$XH?T$XH?L$(?Z+
?H??7
H?D$(H??"H?L$(??	
?H??H???????????????H???????????????H?H????????????H???????????????@SH?? H+?I??H??H??H??H??L????*
H?H?? [?H;?t8H????A?H??I??A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I??????????????????H??tfff?A?H??H?ʉA?u??????????????????@SH?? H+?I??H??H??H??H??L???*
H?H?? [?H??????????????H?H???????????H;?t8H????A?H??I??A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I??????????????????H;?t:fff??H??I??A?@?A?A?@??A?A?@?A?A?@??A?A?@?H;?u?I????????????????????????????????????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H?T$H??H?$????H?T$8H??t#A??A?@?BA?@?BA?@?BA?@?B?H????????????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????H???????????????H??HH?D$ ????3?H??tYH?????????H;?wH????
H??u8H?D$XH?T$XH?L$(??'
?H??4
H?D$(H???"H?L$(?
?H??H???????????????H???????????????H??HH?D$ ????3?H??tYH?????????H;?wH???@
H??u8H?D$XH?T$XH?L$(?j'
?H?
4
H?D$(H??"H?L$(?

?H??H???????????????H??????????????H??HH?D$ ????3?H??tYH????????H;?wH???
H??u8H?D$XH?T$XH?L$(??&
?H?z3
H?D$(H???"H?L$(?z
?H??H???????????????L?H????????????H?H9???????????????????????H?\$WH?? H+?I??H??H??H??H??L???-&
H?;H?\$0H?? _?????????????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H??H?$????H?T$(H?T$8H??tA???H????????????H??H?$????H?T$(H?T$8H??tI?H??H???????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????H?J??H??H?
???I??H??LL????L?AH?????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????L?AH?????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H9?????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????@SH?? L+?I??I??J??L????#
H?H?? [???????H??H;?t8I+?DB?I??A?H?B?L?A?H?B?L?A?H?B?L?A?H?J?H;?u?I???????????????H??tfff?A?H??H?ʉA?u??????????????????@SH?? L+?I??I??J??L????"
H?H?? [???????H?H9?????????H?O??J??H??H?
???????????????H??H;?t8I+?DB?I??A?H?B?L?A?H?B?L?A?H?B?L?A?H?J?H;?u?I???????????????H?\$L?L$ M??I??I;?tPL?B?A?@?A?P?E?E?PA?A?SE?KE?SL?\$ I??I??I?@?L?\$ H;?u?L?H??H?\$?H?\$L?	H??????????????????M??L??H;?t9DA?I??I??A?A?E?B?E?A?A?J?A?I?A?J?A?I?A?J?A?I?L;?u?I?????????????????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???J???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^????????????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H?T$H??H?$????H?T$8H??t#A??A?@?BA?@?BA?@?BA?@?B?H????????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???z???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????3?H?H?AH?AH??????????????????3?H?H?AH?AH????????????????????????????????@SH?? H?9H??t?c
H???	3?H?H?CH?CH?? [?H?H9???????????????????????H??H?$????H?T$(H?T$8H??tA???H????????????H??H?$????H?T$(H?T$8H??tI?H??H???????????I??L??M??tDA?I??H??A?B?u?J??????????????ATH??0H?D$ ????H?\$@H?t$PH?|$XH??H??H?????????H;?vH?
?+
??
?H?AH+H??H;?s]H??????L??H?D$HL?CH?L+?I???H????
?H?H?sH+?H??H??t?H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _??????????????????M????H??H?PWATAUAVAWH??PH?D$H????H?XH?p M??I??H??L?aL?I??I+?H??I?????????I??H+?H;?sH?
(
??
?L?9H?^I+?H??I;???H??H??L+?L;?sE3?A???H?E3?I;?IB?H?NH???n???L??H??$?L??$?L+>I??J??H??H?L$(H?T$0H??tA??H??H????A??D?l$ H?L??$?L+?I???I???5
A??D?l$ L?FH??$?L+?I???I??I???
?H?H?FH+?H??H?H??t??	H???w
M??L?^I??H?FL?&?0I??H+?H??H;???A?L+?I??N??H????
?H?VH??H+?$?H??H??H+?H?L$8H?T$@@H??t?H??H?L$8H??H?T$@??H??HFH?NH+?H??$?H;???f??H??H;?u??E?6L?,?I??I+?I??H+?H??H??L??H??I????
H?H?FH??$?H+?H??L??M+?I????
L??$?K?DL;?tf?E?3I??H??$?I?LL;?u?L?\$PI?[0I?sHI??A_A^A]A\_??????????????H??(L?L?AI?????????M+?I??I??H+?I;?sH?
r%
?d
?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(????H?I;?IB??????H??(?????H??H?D$0?D$(H?D$ ?5???H??H?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ????H??0[????????????????????????????????????H??H?D$0?D$(H?D$ ?e???H??H?H??H?D$0?D$(H?D$ ????H??H?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?m???H??0[??????????????????????D?D$VH?? L?	H??H?QL??H??M+?I??I;?vI+?L?L$@L???j???H?? ^?sCH?\$0I??H;?t0H??H?|$8H??H+?H??H?H?T$xH?? ??x1B?;?)E??u??x ?A;??o;?x?A?A;??\D?\$ E??E??H???
H??0??
H?EX3?H?}P@?}@D?G+H?}?
H?M@??e???H?E0H?}(@?}E3?H??
H?M?e???HDž?H?}x@?}h3?H???H??0?H??L?A?H??0H?Mh?~e????D$(JH?E@H?D$ L?ML?Eh?????H??`?5?	?H???&?	?H??`??	?H???r	H?Mh??	HDž?H?Ex?EhH?}0r	H?M???	H?E0H?E(?EH?}Xr	H?M@??	H?EXH?EP?E@D?T$4H?T$8A??H??A??D?\$@??????L$0???L$0I??@A;?????H?t$`L?e??|$XA??D?T$4I??0F;&D?\$@?z???D?t$PL?}?A??D?\$@H?? H?t$`E;_??????t$HE3?A?G?xA?DN??H?L$pD?1H?L$h?Hc??y?	H??H?D$X3?H?H?GH?GH?GH?G H?G(H?G0H?G8A?O?H?W@McOI??L?Mc?I??M??G?wD?oA?݉\$0A9G?$M??L?l$`H??H?T$H?D?}
?5@_
?=(?
?M?G L?D$@C??B??CD?A\??B?L?
?B?KcH??H??L?L?L$xE??D?l$4????3?H?L$8E3??O?tL?L?D$pOcL5D?L$PF?N?dI?D$@J?D3?E????A?AH?H??H?D$h3?E3?I??H??L?L?e?f?J?DI?<O?d5A?????H????	K?D5???OA??T$P???A?A?@?C?
???A+??A?D??E?E?H???A+?A?A?H?A?fAnEZ??Y??Z??A$??uD??fAn?????!fn?[??Y?fAn?[??Y??Z??X???I??I??I??I??H?M?H?D$pH?U?L?M??6???L?l$`?^?fAW??Z?H?E??@0D?d$LA??D?d$LI??@L?l$`L?D$xI??L?D$xL?]?I?CH?M?H?D;"L?L$XH?]?L?T$hA??z???D?D$4A??D?D$4I??0L?L$XH?? H?M?E;?#????D$0???D$0I??@L?]?I?? L?T$h;C?????H?? H3???	L??$?I?[8I?s@I?{HA(s?A({?E(C?E(K?E(S?I??A_A^A]A\]???????H??UATAUAVAWH??x???H??`H?E?????H?XH?pH?x H?*$H3?H??XH??H?L$`H??t?%??=PB?NHDž8HDž0ƅ A?+H??r
H?? ?W???H?EH?E?E?E3?H??	
H?M???V???H?E8H?E0?E A?H??x
H?M ?V?????????????H??D??D$(jH?? H?D$ L?M?L?E H?MP?e?	?H???V?	?H?MP?F?	?H?}8r	H?M ?=?	H?E8H?E0?E H?}r	H?M???	H?EH?E?E?H??8rH?? ???	HDž8HDž0ƅ H?{(uL?D$4H?T$0H???;???H?S(L?B@L?D$@H???H?C?K?K?C?C???????B0???B ?B$?B(?J,3??D$49C?iE3?L?\$P?\#
??w
E3?D?L$0E9?3?H?L$pE3?L?T$Hffff?E3?D?|$8I?@H?D9:??E3?L?D$hE3?L?L$X?H?C I?LJ?DM?,H?BI?H?]?E3?E3?H?? I?UH?? L??L+?@A?<
t*???B?A?B?A?B?AA??I??H??H??I??|?E3?Mc?L?e?I???;L?S4M?](H?KH??H??L??H?? H??$H??(H?U?H??0H?U?H??,H?U?H??4H?U?H??8H?T$xH??@H?U?H??<H?U?H??DH?U?H??HH?U?H??PH?U?H??LH?U?H??TH?E?I?|$?H??H??L?4?L?u?L?u?L?e?A??D?D?D?A?}uf(??f(ˉA?D?A??D?IfAnC?Z??Y??Z??AB?A?A?L?E?E?L?M?E?	A?}uf(??f(ˉAD?A?QD?IfAnZ??Y??Z??AH?D$x?H?U??
L?E?E?L?M?E?	A?}uf(??f(ˉAD?A?Q D?I$fAnCZ??Y??Z??ABH?E؋H?Uȋ
L?E?E?L?M?E?	A?}uf(??f(ˉA(D?A,?Q0D?I4fAnC(Z??Y??Z??ABI??I??PH??@H???????L?e?H?]?L?u?D?|$8M;???J?T?0K?D?M?D?I??H?H?L?H??H??H?? H??$M+?D?9D?1D?\??A?}uf(??f(?D?I?D?Y?D??YfAnZ??Y??Z??
H??H??I??I??u?A??D?|$8L?L$XI??@L?L$XL?D$hI??L?D$hH?D$@H?@H?L$pH?D;:L?T$HH?\$`L?\$P?]???L?D$@D?L$0A??D?L$0I??0L?T$HH?? H?L$pE;?????D$4???D$4I??@L?D$@I?? L?\$P;C?????H??XH3???	L??$`I?[8I?s@I?{HI??A_A^A]A\]????????????@SH?? H?9H??t?s?H???	3?H?H?CH?CH?? [?@SH?? H?9H??t?C?H??q?	3?H?H?CH?CH?? [?H??(L?L?AI????????M+?I??I??H+?I;?sH?
??????L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?????H?I;?IB??????H??(?????H??(L?L?AI????????M+?I??I??H+?I;?sH?
????L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?8???H?I;?IB??)???H??(?????H??UH??h???H??H?D$0????H?XH?xH??!$H3?H???H??H?H???)?z,?H?D$x3?H?|$p@?|$`D?GLH??q
H?L$`?	O???H?D$PH?|$H@?|$8E3?H??
H?L$8??N???H?E?H?}?@?}?D?G'H?eq
H?M??N????D$(?
H?D$`H?D$ L?L$8L?E??)???H?M??t?	?H???e?	?H?M??U?	?H?}?r	H?M??L?	H?E?H?}??E?H?|$Pr
H?L$8?*?	H?D$PH?|$H?D$8H?|$xr
H?L$`??	H?D$xH?|$p?D$`H??H???H3???	L??$?I?[I?{ I??]??????????????H?\$H?t$WH??0L?IH??H??H?	H?gfffffffM??L+?H??I??L??I??I??H???L?L;?vfH??H??I;???I??M;?t9fffffff??H??H???B?A??B??A?B?A??B??A??B?I;?u?H?WH?\$HH?t$PH??0_???H??H??I+?????L?_H??I??L?OH+H??I??L??H??I??M??I???M?D?D$@D?D$(E3?I+?H?D$ ?T???L?_I??H??H+H??H??H??H???H?H+?H??I??H?OH?\$HH?t$PH??0_????????@WH??0H?D$ ????H?\$PH??H??H?AH;?sAH?	H;?w9H+?H??H;Cu
?H???????H?H?KH?L$@H?L$HH??tH??H??,H;Cu
?H??????H?KH?L$@H?L$HH??tH?H?H?CH?\$PH??0_?@WH??0H?D$ ????H?\$PH??H??H?AH;?sPH?	H;?wHH+?H;Cu
?H??????H???H;H?KH?L$@H?L$HH??t???G?A?G?A?G?A???9???,??9????????A\?fT
?B
??j
f/?vM;??uED;??u?????A?}??-?D???;???E?f?fEn??E??@fA(??Y?fW????-?A;???f(??Y?fW????-??D$XfW????-ȉL$\;??|8;??|0H?? H?T$X??????Z????H??@H????????AY?f(??Y?fW????-?;??Y???H??HH+?@H??D??L?d$x???3A?L?d$xH?? H????Y???????A??fn????fW????D-?D?????????fn????fW????-??D$pH???H?T$pD;?HM?fn1[????H??HH???H;?s]H??@H???H;?wJH???H+?H??H;?PuA??H??@?????H??@H??HH?L$`H?L$XH??t????4H;?PuI??H??@????H??HH???H?D$`H??t?0H??HMc?L?t$PM??I??L??????H??M?ź?IH??PH?A J?????H??L?ú?!H??PH?A(??A??Hc?H????H??L?ú??
H??PH?A0I????L??H?D$X3?E?????S
?T$`L?pL?l$PL???D???@H?? H??H?L$PH??@fn?Z??L$pf/?H?D$pwH?D$`fW???D-?A??+D$PB?D ??A??Lc?H?? A??+ы???D??A??Lc?M?K?D?3?I??L??M?GK?D?3?I??A??A??E?E?^?A??D?E?V?A??Z??AFH??I??I;??8???L?|$XL???L?d$x3?D;??t`??t7H??PH?I?S?	??t#???]??H??L?
??A?EH?yZ
??`????H??M?ź?gH??PH?AH??PH?|$@H?|$8?|$0L?|$(L?l$ E3?E?AH?RH?M???	??t#???]??H??L?
R?A?LH??Y
?`??I????D???L??$@I?[XA(s?A({?E(C?E(K?E(S?E([?I??A_A^A]A\_^]??????????@UVWATAUAVAWH?l$?H??H?E?????H??$?H??$H3?H?EM??I??L??H??3????	H?E?E3?H??tA?L$?ϲ	H?E???L?e?L?MǺ`3?D?B????	L?耿??H?L?KL+?I??M????L?eA?܉]A??L?eM??f??2D?bD?RD?ZA??A?ʋ???;?~/?u?D?e?D?U?D?]?H?E?H?EH?E?H?EI?B???M?}?]I??H??M;?r?E3?H?UI???T?	?I??L?H?CI+?H??H??tlI??ff?E?D9A?T9A?L9A?9?E??M??U?D?E?H?E?H?EH?E?H?EI????MH?UI????	H??H??L?H?CI+?H??H;?r?L?e?L?e?L?e?I??H?M??????H??H?H??uA????I(Hc?H??H?M??G???H?H??tH??tD?e??E?????L?E?H?U??h?	H?M?H+M?H?gfffffffH??H??H??H???H?I??????M?L?M?L?U?M;?t7I??I??A?A?A?I?A?E?AA?C?A?K?A?E?CI??I??I?A?I;?u?H?}?tH?M??'?H?M??T?	L?e?L?e?L?e?H?M?H??t?????	??uH?M?蟰	H?M???	L?e?L?e?H?MH3??޼	H??$?H?ĐA_A^A]A\_^]????H??USVWATAUAVAWH??h???H??XHDž0????)p?)x?D)@?D)?x???D)?h???H?d
$H3?H???fD(?I??H??L???L???E3?L??L??L??L???L???L???L??(L??0L??8D?uxD??????D??A??A??D?mhH???H?? ??t	D9??u?B????B???A?????M??tA?$%??=PB?tHDžHL??@ƅ0A?+H?hU
H??0??9???HDž?L???ƅ?E3?H?~?H????9???HDž?L???ƅ?A?H?]^
H????a9????????M??AD??D$(?H??0H?D$ L???L???H?????	?H?????	?H?????	?H???rH????׹	HDž?L???ƅ?H???rH???訹	HDž?L???ƅ?H??HrH??0?y?	HDžHL??@ƅ0H???gHDžHL??@@??0D?F+H??S
H??0?I8???HDž?L???@???E3?H??H????8???HDž?L???@???D?FH??\
H?????7????D$(?H??0H?D$ L???L???A??H???蘬	?H??艬	?H????v?	?H???rH????g?	HDž?L???ƅ?H???rH????8?	HDž?L???ƅ?H??HrH??0?	?	HDžHL??@ƅ0??mHDžHL??@ƅ0A?+H?{R
H??0??6???HDž?L???ƅ?E3?H???H????6???HDž?L???ƅ?A?H?8[
H????t6????D$(?H??0H?D$ L???L????.???H????"?	?H????	?H?????	?H???rH?????	HDž?L???ƅ?H???rH????¶	HDž?L???ƅ?H??HrH??0蓶	HDžHL??@ƅ0?D{
fE/??mHDžHL??@ƅ0A?+H??P
H??0?V5???HDž?L???ƅ?E3?H??H????&5???HDž?L???ƅ?A?H??Y
H?????4????D$(?H??0H?D$ L???L????-???H???衩	?H??蒩	?H?????	?H???rH????p?	HDž?L???ƅ?H???rH????A?	HDž?L???ƅ?H??HrH??0??	HDžHL??@ƅ0E??t???I?|$(uL???H?UxI???X???L?κ`3?D?B??W?	H??????????????L?u?D?u?L?u?L?u?L?u?L?u?L?uL?uD?uE3?E?AH?U?H???G??L?]?I;?tnH?M?H??t
??-?	H???M?L?]L?_8?EЉ?EԉG?E؉GH?E?H?GH?E?H?GH?E?H?G(H?EH?G0?E?G@?E?GD?E?GHH?E?H?G H?M???E??t??????9G|???9G?mHDžHL??@ƅ0A?+H?aN
H??0?2???HDž?L???ƅ?E3?H?w?H????2???HDž?L???ƅ?A?H??V
H????Z2????D$(?H??0H?D$ L???L????????H?????	?H?????	?H?????	?H???rH????ײ	HDž?L???ƅ?H???rH???訲	HDž?L???ƅ?H??HrH??0?y?	HDžHL??@ƅ0譼H????H?Ep??I?\$??H?]HE??D?uPL?u?L?u?L?u?L???L???L???fA(?fDn??E??fW??A??D-?H??H?? fn????fW????D-?fnG???fW????-????D$pfnG???fW????D-?A??D?D$t+???A??+??ʅ???I????????I?????????D?mLH????????????D;???wD;???jD;????D;????E?H?T$pH?E?H?M?H;???H?T$pH;???H?t$pH+?H??H?U?H;?ugL??L+?I??I????????M;???I??H+?H??L;?v;H??H??I??H+?H;?sI???H?I;?IB?H?M?胿??H?M?H?E?I?????????H?L$PH?M?H??tH??H??xH?U?H;?uYL??L+?I??L;??PI??H+?H??L;?v7H??H??I??H+?H;?sI???H?I;?IB?H?M?????H?M?I?????????H?L$PH?M?H??tH?D$pH?H?E??Z??|$hH?T$hH???H???H;???H?T$hH;???H?t$hH+?H??H???H;?ufL??L+?I??I?????????M;???I??H+?H??L;?v:H??H??I??H+?H;?sI???H?I;?IB?H???艱??H???H???H?L$PH?M?H??t????}H???H;?u_L??L+?I??I?????????M;??I??H+?H??L;?v3H??H??I??H+?H;?sI???H?I;?IB?H???????H???H?L$PH?M?H??t?9I?????????H????AY?fA(??Y?fW????D-?fAn?????Y?fW????D-?fnO????^?fW????-????D$pfnO????^?fW????D-?A??D?D$t+???A??A+??ʅ?~=????H?
u??g??H?
g??Y??H?
Y??K??H?
K??=??D?G?WL??PD??XL??`L??hL??pL??xL???L???D?????~E??~E3?H??P薖?D?GA??A?\$L??0D??8L??@L??HL??PL??XL??`L??pD??x??~E??~A???H??0?-??D?GA??L???D???L???L???L???L???L???L???D?????~E??~A???H????ɕ?L?t$PL?t$XL?u?L?u?H???H??0H??@H??8L??HL??@L???HDž??BL?? L??L??L??L??L??(H??XH???H???H???L???L???L??XHDžP?BL???L??xL??pL??`L??hL???L?u?D?u?L?u?L?u?L?u?L?u?L?uL?uD?uL???D???L???L???L???L???L???L???D???L???D???L???L???L??L??L??L?? D??(HDž?HDž?HDž?H??h??L???I??H?@H??H???H???H???HDž?H??3?I??H?EHH?]?L?e?I+?H???\$dHc?H?????H?E?E?????|D?t$PL?u?M??H?pfW??K?&H?D$pH???fAnt
Z?H?? ?MP?L$T?T$p?T$X?D$\?H?D?b?D?e??M?L?E?H???H??P?D??H??H?E?H;?toH?K H??t
???	H?M???L?[8L?]??EЋC?EԋC?E?H?CH?E?H?CH?E?H?C(H?E?H?C0H?E?C@?E?CD?E?CH?EH?C H?E?H???裍L?D$PH???H??0?{C??H??H???H;???H?K H??t
??=?	H????Y?L?[8L????????C????C???H?CH???H?CH???H?C(H???H?C0H????C@????CD????CH???H?C H???H????֌L?D$PH??8H????B??H??H???H;???H?K H??t
??p?	H???茌L?[8L???????C????C???H?CH???H?CH???H?C(H??H?C0H???C@?? ?CD??$?CH??(H?C H??H??8?	?D???H???D+XA??D???D+@A??A????A??F?Ic?H???H?D?3?H??L??Ic?L???J?D?3?I??A??A??D?D?N????????Z??F?\$t?C?D?d$h?D$l?D$(?|$ f(?L?D$hH?U?H??虁L???H???H?M??B?]PA??I??I??H??D;|$d}	L?e?????L???M?d$(I?|$@Ic$H??H??H?t8Hc??H?HH??Hc]xH+?H??@H??LcmHM??I??I?????L??L??@I??fA(?H???????Mc$I???H??h?U?H?E`Ic$H??3?H?T$@H?T$8?T$0H?|$(H?L$ E3?D?BH??H?Mp?ء	??t#???D??H??L?
E?A?DH??@
?uG??Hc?H??L?úH??h???H?E@3?H?L$@H?L$8?L$0H?t$(H?\$ E3?D?AH??H?]pH???b?	??t#???C??H??L?
??A?IH?|@
??F??M?ƺH??h?k?H?E LcD$dI???H??h?M?H?EXHcL$dH??3?H?T$@H?T$8?T$0H?U?H?T$(H?L$ E3?E?AH??H???̠	??t#????B??H??L?
9?A?MH???
?iF??E3?D?M,A?$?E4D?M(H??@H???E0?E8???G@?E?A?D$ ???A?D$$???A?D$(???A?D$,???A?D$???A?D$???A?D$???A?D$????AD$0?D$`L???L???L???H?D$xH?E`H?E?H?T$xH???H???H;???H?T$xH;???H?|$xH+?H????????H????????H???H;?uiL??L+?I??L;?vH?
a??S??I??H+?H??L;?v=H??H??H??H+?H;?sI???H?I;?IB?H????/:??H???H???E3?H???H?H?L$PH?M?H??tH?H?H?GH?A?H????????H????????H???H;?ubL??L+?I??L;?vH?
??????I??H+?H??L;?v6H??H??H??H+?H;?sI???H?I;?IB?H????~9??H???E3?H?L$PH?M?H??tH?H?E`H?AH???H??H???H?D$xH?EXH?E?H?T$xH???H;???H?T$xH;???H?|$xH+?H???H;?ufL??L+?I??L;?vH?
??????I??H+?H??L;?v:H??H??H??H+?H;?sI???H?I;?IB?H????8??H???H???H???H?H?L$PH?M?H??tH?H?H?GH?A?H???H;?u_L??L+?I??L;?vH?
=??/??I??H+?H??L;?v3H??H??H??H+?H;?sI???H?I;?IB?H????8??H???H?L$PH?M?H??tH?H?EXH?AH???H??H???H?D$xH?E@H?E?H?T$xH???H;???H?T$xH;???H?|$xH+?H???H;?ueL??L+?I??L;?vH?
g??Y??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H????67??H???H???H???H?H?L$PH?M?H??tH?H?H?GH?A?H???H;?u^L??L+?I??L;?vH?
??????I??H+?H??L;?v2H??H??H??H+?H;?s3??H?I;?IB?H????6??H???H?L$PH?M?H??tH?H?E@H?AH???H??H???H?D$xH??HH?E?H?T$xH???H;???H?T$xH;???H?|$xH+?H???H;?ueL??L+?I??L;?vH?
?????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?????5??H???H???H???H?H?L$PH?M?H??tH?H?H?GH?A?H???H;?u^L??L+?I??L;?vH?
]??O??I??H+?H??L;?v2H??H??H??H+?H;?s3??H?I;?IB?H????,5??H???H?L$PH?M?H??tH?H??HH?AH???H??H???H?D$xH???H?E?H?D$xL???H;???H?D$xL;???H?|$xI+?H???H;?ubH??I+?H??H;?vH?
???t??H??I+?H??H;?v6H??H??H+?H;?s3??H?H;?HB?H????T4??H???L???H???H?L$PH?M?H??tJ?H?J?DH?A?H???H;?u[H??I+?H??H;?vH?
???߼?H??I+?H??H;?v/H??H??H+?H;?s3??H?H;?HB?H????3??H???H?L$PH?M?H??tH?H???H?AH???H?D$PH?E H?D$XH?T$PH????=8??H?D$PH?E0H?D$XH?T$PH????8??H?D$PH?D$dH?D$XH?T$PH?????7??H?D$PH?E,H?D$XH?T$PH?????7??H?D$PH?E8H?D$XH?T$PH????7??H?D$PH?E4H?D$XH?T$PH????7??H?D$PH?E(H?D$XH?T$PH????j7??H?D$PH?E?H?D$XH?T$PH????G7??H?D$PH???H?D$XH?T$PH????!7??H?D$PH???H?D$XH?T$PH?????6??H?D$PH?D$`H?D$XH?T$PH?????6??H? ?
H?5?
A?|$HE?H???H?D$PHDž?E3?L???D???E?D$H??>
H????_???H?t$@?D$8?????D$0????H???H?D$(H???H?D$ L???L???H?\?#H??h??yM??M??H?U H??h?:?M??~AI?_?D?C?E??t*??K??C?D$P?L$TD?D$X?T$\H?T$PH???????H??I??u?H?M??b?I???Y?H?M`??	??t#???8??H??L?
a?A?H?5
?;??H?MX踕	??t#????7??H??L?
1?A??H??4
?a;??H?M@舕	??t#???7??H??L?
?A??H??4
?1;??H?M ?X?	??t$???7??H??L?
??A??H?~4
?;???H???tH????q?H???蛙	L???L???L???H????|}?H????o}?H?M??e}?H??hH??t????(?	??uH??P??	L???L??xL??pL??`H???D? L??hH???H???H;?t?ތ	?H??H??t???轌	??uH???覌	L?? L??L??L??H??0D? L??H??@H??8H;?t?s?	?H????|?H??0?u|?H??P?h|?H???tH?????H????B?	L???L???L???H?}?tH?M???H?M???	L?e?L?e?L?e??H?]?L?u?D?u?L?u?L?u?L?u?L?u?L?uL?uD?uL??PD??XL??`L??hL??pL??xL???L???D???L??PH?U?H????L???L???L???L???L???L???I???ؾ??M?l$(IcEH??J?D(HH???fA(?fn????fW????-ȋG??
?u?;???fDn??E??fff?fA(??Y?fW????-ȋG??
;???f(??Y?fW????-??E?fW????-ȉM?;??|3;??|+H?U?H????'????Z??l$`H?T$`H?????????AY?f(??Y?fW????-ȋG??
;??U???H???H+??H???D$h?????D$hH???H?????????????fn????fW????D-?D?D$`??????fn????fW????-??E?H?L$`H?U?D;?HM?fn[??D$`H?T$`H????+????D$hHc?H??H??H?????L??H?E?H???|?L??H?D$xH???f?L??H?E?HDž?HDž?HDž?H?M?M?L???I??H?@H??H???H???H???HDž?H??3?I??H??H?D$PIcUHc??L?QI??HcMxI+?H??@H???L$dLc?I???H?M?~?H?E`HcL$dH??3?H?T$@H?T$8?T$0H???H?T$(H?L$ E3?E?AH??H?upH?????	??t#???2??H??L?
c?A??H?/
?5???D$d?D$hLc?I???H?M???H?E 3ɉM4A?E?E,??9L$h??5?&
?uxH???H???????M?fM+??=;5
L?u??H???H?1H???fn8Z????f/?H???wH?ExfW???D-?fAnM ????Y??X??,?fAnE$????Y??X??D,?fAnM,????Y??X??D,?fAnE(????Y??X??,?A?D$?E?L$?A?A?$B?
A?D$A??fn????fA(??^??Z??A>?E?+?B?D??A??Lc?H?? ?U?+?B?D??A??Lc?L???K?D?3?I??L??L???K?D?3?I??A??A??E?G?\'?A??D?G?T'?3?C?'?Z??CD'???D$d?E??D$`H??0H??8H??@HDž?H?E`H???H???H??0?-??HDžH?E H??H??H??0?^-??HDž H?D$`H??(H?? H??0?4-??Lc?K??HDžH??H??H??0?-??HDž?H?E?H???H???H??0??,??Lc\$dL???HDž?HDž?HDž?HDž?ƅ?A?H??4
H????g????D$8?????D$0????H??0H?D$(H?D$ L???L???H?t?#H?M??y?H??0tH??0???H??0?ݐ	3?H??0H??8H??@??H??H??I??;\$h?????L?t$xL?}?L?e?H?|$PH?upH?E?H???E(?M0?E8McEI???H?M?/?H?E@IcMH??3?H?T$@H?T$8?T$0I?U@H?T$(H?L$ E3?E?AH??H??诋	??t#????-??H??L?
?A??H??*
?L1??Hc?H??H??L?úH?M??H?D$pLcD$hI???H?M??H?EXHcL$hH??3?H?T$@H?T$8?T$0L?|$(H?L$ E3?D?BH??H????	??t#???A-??H??L?
??A??H?2*
?0??LcD$hI???H?M??H?EPHcL$hH??3?H?T$@H?T$8?T$0L?t$(H?L$ E3?D?BH??H??衊	??t#????,??H??L?
?A??H??)
?>0??LcD$hI???H?M??H?EHHcL$hH??3?H?T$@H?T$8?T$0L?d$(H?L$ E3?D?BH??H???*?	??t#???S,??H??L?
??A??H?D)
??/??3?H?E?H?E?H?E?HDž?H?E@H???H???H?M??)??HDž?H?EXH???H???H?M??m)??HDž?H?E H???H???H?M??G)??HDž?H?E?H???H???H?M??!)??HDž?H??hH???H???H?M???(??HDž?H?D$pH???H???H?M???(??HDž?H?E?H???H???H?M??(??HDž?H?E?H???H???H?M??(??HDž?H?E(H???H???H?M??_(??HDž?H?D$hH???H???H?M??8(??HDž?H?E4H???H???H?M??(??HDž?H?E8H???H???H?M???'??HDž?H?E,H???H???H?M???'??HDž?H?E0H???H???H?M??'??HDž?H?EPH???H???H?M??z'??HDž?H?EHH???H???H?M??T'??HDž?H?D$dH???H???H?M??-'??H?v/
H?5W/
A?}HE?H???H?D$PHDž?E3?L???D???E?E#H??.
H????
???H?t$@?D$8?????D$0????H?E?H?D$(H???H?D$ L???L???H???#H?M?jL???L?\$HL?l$@L?l$8D?l$0H?\$(L?l$ A?E??H?T$pL?mpI??蝆	H??H??~MH?XD?C?E??t4??K??C?????D??????H???H??????H??H??u?I?????I?????I???w?E3?L?d$(L?d$ E3?L??H?T$pI????	H?M@??	??t#???(??H??L?
_?A?H?%
?+??H?MX超	??t#????'??H??L?
/?A?H??$
?_+??H?M`膅	??t#???'??H??L?
??A?H??$
?/+??H?M ?V?	??t#???'??H??L?
ϻA?H?|$
??*??H?L$p?%?	??t#???Z'??H??L?
??A?H?K$
??*??H?MP???	??t#???*'??H??L?
n?A?H?$
?*??H?MH?ń	??t$????&??H??L?
>?A?H??#
?n*???H?}?tH?M???H?M???	L?e?L?e?L?e?H???tH??????H?????	L???L???L???H???tH??????H???誈	L???L???L???H??P?l?H?M??lH???H?K(??|	L?c(H??H+?H??H????????H??L??I;?tCH???H??H??fffff??A??B??A??B????A?BH??H??H?A?I;?uً???]h??u*??u&H???H+??H??E3?H??(??????D$`H?D$`H?????HM???*
D?H??(H?????	????L???L???M+?I??M????HDž?A?܉??A??HDž?I??I??L??(A?s?E?c?E?E?KA??A?ȋ???;?~B?t$PD?d$TD?D$XD?L$\H?D$PH???H?D$XH???A?D??????????H??I??I;?r?E3?H???H??H???6{	?L???I??H???I+?H??H??H????I??ff?E?DA?TA?LA??D$P?L$T?T$XD?D$\H?D$PH???H?D$XH???H??(?????H???H???z	H??H??H???L???I+?H??H;?r?H??(tH??(???H??(?υ	L??(L??0L??8H???tH????m?H???藅	L???L???L???H??tH???5?H???_?	L??L??L??H??H???H3??
?	L??$XA(s?A({?E(C?E(K?E(S?I??A_A^A]A\_^[]??????????H??UVWATAUAVAWH??x???H??PH?E?????H?X )p?)x?H???#H3?H?? f(?E????L??L???????H???3?H??t?%??=PB?H?EH?]?]A?+H?
H?M?z???H?E@H?]8?E(E3?H?=?H?M(?V???H?E?H?]??E?A?H?((
H?M??/?????????????H??D??D$(H?EH?D$ L?M(L?E?H?MP??w	?H????w	?H?MP?w	?H?}?r	H?M?趃	H?E?H?]??E?H?}@r	H?M(薃	H?E@H?]8?E(H?}r	H?M?v?	H?EH?]?E?=h?f/??
H?E@H?]8?E(A?+H??
H?M(?P???H?E?H?]??E?E3?H??H?M??,???H?EH?]?EA?H??&
H?M?????D$(H?E(H?D$ L?M?L?E?-???H?MP?v	?H???v	?H?MP?v	?H?}r	H?M藂	H?EH?]?EH?}?r	H?M??w?	H?E?H?]??E?H?}@r	H?M(?W?	H?E@H?]8?E(D;??|;???
H?E@H?]8?E(A?+H??
H?M(?.???H?E?H?]??E?E3?H??H?M??
???H?EH?]?EA?H?t%
H?M??????D$(H?E(H?D$ L?M?L?E?????H?MP?u	?H???u	?H?MP?~u	?H?}r	H?M?u?	H?EH?]?EH?}?r	H?M??U?	H?E?H?]??E?H?}@r	H?M(?5?	H?E@H?]8?E(?Ӊ\$PD?É\$hH9V(uL?D$hH?T$PH??肒???T$PD?D$h???t	???u
???D??????????$A??t???????D$ D??I???\o??L???L?\$8H???H?D$0L?l$(?t$ D??E?ċ?I???y????A?A???E???A??????A?????A?????A?????A???r?H???J?L??H??????H?^(H?{@HcH??L?d:M???I??f(??Ý??HcH??I??P3?H?\$@H?\$8?\$0H?|$(H?D$ E3?D?CH?I???%{	??t#???N??H??L?
??A?KH??
?? ??Ic?H??I??PH?\$@H?\$8?\$0L?d$(H?D$ E3?E?AH?RI????z	???:??????H??L?
*?A?OH??
?Z ???萦??H?F(H?D$pH?H@H?M?HcH??H?LIc?H??I??PE3?L?D$@L?D$8D?D$0H?L$(H?D$ E3?E?AH?RI???.z	??t#???W??H??L?
??A?\H?H
????Ic??H??H???o?H?D$hH???\?L??E3?A??E???H?|$h?	H?D$x?5?
I????????I??@fBn?Z?H?L$pfnA ????Y??X??,?fnI$????Y??X??D,?fnA,????Y??X??D,?fnI(????Y??X??,?I??Hɉ?D?L?A??D?B?
?D?A??fn????f(??^??Z??CD???A???D$P?Z??D$hL?U?L?U?L?U?I??PH??H?]?H?T$xH?E?H?M?H;???H?T$xH;???H?\$xH+?H?U?H;?ujL??L+?I??I????????M;??0I??H+?H??L;?v>H??H??I??H+?H;?sI???H?I;?IB?H?M??<??H?M?H?E?E3?I????????H???H?H?L$`H?L$XH??tH?H?H?CH?A?H?U?H;?ufL??L+?I??I????????M;???I??H+?H??L;?v:H??H??I??H+?H;?sI???H?I;?IB?H?M????H?M?E3?I????????H?L$XH?L$`H??tH?H?YH?M?H??H?M?I??PH??0H?E?H?]?H?U?H?E?H;???H?U?H;???H?]?H+?H?U?H;?u]L??L+?I??I????????M;???I??H+?H??L;?v1H??H??I??H+?H;?sI???H?I;?IB?H?M?????H?M?H?E?H???H?H?L$XH?L$`H??tH?H?H?CH?A?|H?U?H;?uYL??L+?I??I????????M;??aI??H+?H??L;?v-H??H??I??H+?H;?sI???H?I;?IB?H?M??C??H?M?H?L$XH?L$`H??tH?H?YH?M?H??H?M?H?E?H?D$hH?E?H?U?H?E?H;???H?U?H;???H?]?H+?H?U?H;?ucL??L+?I??I????????M;???I??H+?H??L;?v7H??H??H????????H+?H;?s3??H?I;?IB?H?M????H?M?H?E?H???H?H?L$XH?L$`H??tH?H?H?CH?A?H?U?H;?u_L??L+?I??I????????M;??*I??H+?H??L;?v3H??H??H????????H+?H;?s3??H?I;?IB?H?M?????H?M?H?L$XH?L$`H??tH?H?D$hH?AH?M?H??H?M?Hc?I?\?H?E?H?]?H?U?H?E?H;???H?U?H;???H?]?H+?H?U?H;?ucL??L+?I??I????????M;??lI??H+?H??L;?v7H??H??H????????H+?H;?s3??H?I;?IB?H?M????H?M?H?E?H???H?H?L$XH?L$`H??tH?H?H?CH?A?H?U?H;?u_L??L+?I??I????????M;???I??H+?H??L;?v3H??H??H????????H+?H;?s3??H?I;?IB?H?M????H?M?H?L$XH?L$`H??tH?H?YH?M?H??H?M?H?E?H?D$PH?E?H?U?H?E?H;???H?U?H;???H?]?H+?H?U?H;?ucL??L+?I??I????????M;??/I??H+?H??L;?v7H??H??H????????H+?H;?s3??H?I;?IB?H?M???
??H?M?H?E?H???H?H?L$XH?L$`H??tH?H?H?CH?A?H?U?H;?u_L??L+?I??I????????M;???I??H+?H??L;?v3H??H??H????????H+?H;?s3??H?I;?IB?H?M??0
??H?M?H?L$XH?L$`H??tH?H?D$PH?AH?E?Ic?H?E(H?E0H?E8H?EH?D$XH?E3?H?]?]D?CH??
H?M?o????虀H???D$8?????D$0????H?E?H?D$(H?\$ L?M(L?EH???#??^?H9]?tH?M??˕H?M???u	E3?L?U?L?U?L?U???I??A;????????H?
-????H?
????H?
????H?
?????H?
?????H?
??ٔ?H?
٣?˔?H?
ˣ????H?
??????H?
??????H?D$pHcH??I??PL?T$@L?T$8D?T$0H?M?H?L$(H?D$ E3?E?AH?I???p	??t#?????H??L?
?A?{H??
???Ic??H??I??P3?H?\$@H?\$8?\$0H?|$(H?D$ E3?D?CH?R I???p	??t#???E??H??L?
??A?|H?6
???Ic??H??I??PH?\$@H?\$8?\$0L?l$(H?D$ E3?E?AH?R(I???o	??t#??????H??L?
%?A?}H??
?U??H????I???ۓAƆH?? H3??t	L??$PI?[XA(s?A({?I??A_A^A]A\_^]????????H??UVWATAUAVAWH??????H??@HDž?????H?X )p?H?J?#H3?H?? f(?L???H??H??HDž?HDž?HDž?}H???Q?L???I??H?@H??H??H???H??HDžH??3?I??H??H????Q?	?L$p?T$tH????Q?	?M??U?H?L$pH?L$@H?E?H?D$8H???H?D$0?\$(D???D?l$ f(?D?G?WH??????E3?L?e?L?e?L?e?L?e?L?e?L?e?L?e?L?eL?eL???L?|$`??kHDž?L???D???E?D$+H??
H????M????HDžL??D??E3?H??H???????HDž?L???D??xE?D$H??
H??x???????D$(uH???H?D$ L??L??x?.???H?? ?e	?H???e	?H?? ?we	?H???rH??x?hq	HDž?L???ƅxH??rH???9q	HDžL??ƅH???rH????
q	HDž?L???ƅ????%??????L???D???L???L???L???L???L???L???D???E3?E?AH???H?????L???I;???H???H??t
??;d	H???[TL???L?_8????????G????GH???H?GH???H?GH???H?G(H???H?G0????G@????GD????GHH???H?G H?????S?#zH?????L??Lc?L?d$hA????E3?E??L?U?L?U?L?T$PL?T$XH???H??H??H??L??L??L???HDž??BL???L???L???L???L???L???H??hH???H???H???L???L???L??hHDž`?BL???L???L???L??pL??xL???L??D??L??L??L?? L??(L??0L??@D??HL?UpD?UxL???L???L???L???L???L???D???L?U D?U(L?U0L?U8L?U@L?UHL?UPL?U`D?UhE??D9????D?U?L?T$PL??`E??fW?H?? I?DH???H??H?? D?u??E??M??P??U??A??T$X?D$\L?D$PH???I?????H??H??H;???H?K H??t
??xa	H???QL?[8L??8????C???C??H?CH??H?CH??H?C(H??(H?C0H??0?C@??@?CD??D?CH??HH?C H?? H????QL?E?H??(H???????H??H?EpH;???H?K H??t
??`	H?Mp??PL?[8L?????Ep?C?Et?C?ExH?CH???H?CH???H?C(H???H?C0H????C@????CD????CH???H?C H???H??(?TPL?E?H???H???-??H??H?E H;?toH?K H??t
???_	H?M ?PL?[8L?]X??E ?C?E$?C?E(H?CH?E0H?CH?E8H?C(H?EHH?C0H?EP?C@?E`?CD?Ed?CH?EhH?C H?E@H????OD?]?D?]?????C??E??D$(?t$ f(?L?E?H??H???EL?E H?UpH???i?D?A??I??D;??L??`??H?Mp??>?H????>?H??xH??t????N	??uH??`?N	L???L???L???L??pH???D?(L??xH???H???H;?t?NN	?H???H??t????-N	??uH????N	L???L???L???L???H??D?(L???H??H??H;?????M	??L??H???H????I?_(H???H???D$pE3?D?l$|?D$xD?m???E?L??xL???L???H??PHDž?H???H???H??x????L??PI??HDž?L???H???H??x????L??PI??0HDž?L???H???H??x?S???L???HDž?L???H???H??x?'???L??HDž?L???H???H??x?????L??PI??HDž?L???H???H??x?????L???HDž?L???H???H??x????L???HDž?L???H???H??x?s???HDž?H?D$pH???H???H??x?I???L???HDž?L???H???H??x????HDž?H?E?H???H???H??x?????HDž?H?D$xH???H???H??x?????HDž?H?E?H???H???H??x????HDž?H?D$|H???H???H??x?w???L??PI?? HDž?L???H???H??x?G???L??PI??(HDž?L???H???H??x????L??HDž?L???H???H??x?????H?4?H?=?D9kHE?H???H?D$`HDž?L???D???E?E#H?}?H????y????H?|$@?D$8?????D$0????H??xH?D$(H???H?D$ L??L???H?~?#H?????4M??I??H??PL?l$HL?l$@L?l$8D?l$0L?\$(L?l$ A?E??H?RI???WQ	H??M??~GH?XD?C?E??t1??K??C􉅠???D??????H???H?M?賈??H??I??u?H??PL?l$(L?l$ E3?L??H?RI????P	?H??xtH??x?uH??x?1U	L??xL???L???H?U?H+U?H??H?M??????H?M?L?E?I;?t3H?U?H??H???A??B??A??B????A?BH??H??H?A?I;?uً????u"8?uH?U?H+U?H??E3?H?M???^???3?D$pH?D$pH?????HM????D?H?U?H?M???N	L?M?L?E?H???H???c????H?}?tH?M??	tH?M??6T	L?m?L?mL?mH?}?tH?M???sH?M??T	L?m?L?m?L?m?H?}?tH?M???sH?M???S	L?m?L?m?L?m?H?? H3??T	H??$?(?$0H??@A_A^A]A\_^]??????????????̍D?D?™A????????A(f/
s?AAfn?????Y??????????????V	???????????+?A??A???????̃?s?Ã?s?Ã?s?Ã?s?Ã?s?Ã? s? Ã?@s?@Á??s??Á?s?Á?s?ú???;?B????????????̋D$(?
?#???
ɥ#?ӥ#D?ȥ#A?ɉ
??#D?
??#???#?ȉ
??#???#??????????H?H???????????H?AH+H???????H?H???????????H?AH+H???????H?H???????????H;QsH9w??2?????????????????????????????????????????????H???????????????H;QsH9w??2?????????????????????????????????????????????H???????????????H?AH+H???????H??(H?
???p???????????????H???????????????H???&Q	????????H?AH+H???????H??(H?
e?Wp???????????????H???????????????H????P	????????H??????????????H??????????????H?H????????????H?H????????????H??HH????H??HH???????????????????????????????̋9u?B9Au??2?????????????̋??B?AA??AA?@?AH????????fnH??????fnJ????I???H???????????????H???????????????H???????????????H??HH?D$ ????3?H??tUH????????H;?wH???O	H??u8H?D$PH?T$PH?L$(??p?H?n}H?D$(H?z?!H?L$(?nO	?H??H???H??HH?D$ ????3?H??tUH????????H;?wH???4O	H??u8H?D$PH?T$PH?L$(?^p?H??|H?D$(H?
?!H?L$(??N	?H??H???H?QH9????????H??????????????̋??????????????????????????????	?QH??????H???????????????3????????????????D$???????????H???????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H????????????????D$???????????H?\$WH?? H+?I??H??H??H??H??L???
oH?;H?\$0H?? _?????????????????????H??H?$????H?L$ H?L$0H??tH?H??H???????????H??tfff?I?H??H??H?A?u?????????????????H??tfff?A?H??H?ʉA?u??????????????????H???????????????3???????????????@SH?? H+?I??H??H??H??H??L???nH?H?? [???????????????H+?H??I??????H???????????????H???????????????H???????????????H???????????????H?H+H?????????D$???????????@SH?? H+?I??H??H??H??H??L???amH?H?? [?3???????????????H+?H??I??????H??H??????D$???????????3???????????????H+?H??I??????H??H?????????H???????????????H???????????????H??????????????̉L$?T$H?D$???H?AHHc?H?H??HA??????????????H?H????????????H?H??????????????????????????H?\$WH?? H+?I??H??H??H??H??L???-lH?;H?\$0H?? _??????̋A??yD???A??y?I A????H????H?\$?E?L??A+H??A?IA™A???A?CA+@?????CH??H?\$????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H????????????H?H????????????H??HH????H??HH?D$ ????3?H??tYH????????H;?wH???PI	H??u8H?D$XH?T$XH?L$(?zj?H?wH?D$(H?&?!H?L$(?I	?H??H???????????????H??HH?D$ ????3?H??tYH????????H;?wH????H	H??u8H?D$XH?T$XH?L$(??i?H??vH?D$(H???!H?L$(?H	?H??H???????????????H??HH????H?H9?????????H?H9????????̋?D$?A?D$H?D$H?H??????????f(??YRH???Y?Q????????fW??fW??I?-???-??BH?????????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H?\$WH?? H+?I??H??H??H??H??L????hH?;H?\$0H?? _?????????????????????H?T$H??H?$????H?T$8H??tA??A?@?B?H?????H??H?$????H?T$(H?T$8H??tI?H??H???????????H??(H??tH??L??3???G	H??(?????H??(H??tH??L??3??G	H??(?????H;?t%fff??H??I??A?@??A?A?@?H;?u?I?????@SH?? H+?I??H??H??H??H??L????gH?H?? [???????????????H+?H??I??????@SH?? H+?I??H??H??H??H??L???AgH?H?? [?H+?H??H????????H??H?????H+?H??H????????H??H?????????H?H+H???????̋???????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H??????̋D?D?QD?ID?A??B?A?B?A?B?AD?D?RD?JD?B????????????@SH?? H?AI??H;?sH?
?s?ad?H+?H?|$0H;?HB?H?yrH?	H?|$PL??H;?LB?H?I???yG	Hcȅ?uH;?sH?|$0?????H?? [?3?H;????ȋ?H?|$0H?? [???????????H?H?H?????????H?AH?H????????L?H????????????H?H9?????????H?\$WH?? H+?I??H??H??H??H??L???]eH?;H?\$0H?? _???????H?\$D?ID?Y?D?AD?QA+?D+AA??A????C??A??D??A?ÙA???yD???A??y?I A????Hc?H?\$H?H???H?\$H?|$D?I?APD?Y?ALD?AD?QHc??D+AA+?A??A????C??A??D??A?ÙA???yD???A??y?I A????Hc?Hc?H??H??tH;?tH?BH;?t
2?H?\$H?|$?H?\$H?|$???????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????H?H?H?????????H?AH?H????????H?J??H??H?
???L?H????????????L?H??????????????????????????H?J??H??H?
???H?H9?????????H?H9?????????H??UH?h?H???H?E?????H?XH?pH?x H???#H3?H?EGH??H???@?B?AH?QH?GH+H????A3?H?qH?qH?q H?q(H?q8H?Q@H?APH?AHH?pH?AHH?0H?GH9?#E??u>H?IHH?AH?KHH?L?L?C L?CHcH?KHH?J?H?K(H?K0??H??H?M??g5	L?H?GI+?H???E??B?E??E??E?L?]?H?u?L?]H?uH?uH?uH?M?H?M'H?M7H?M/H?u?H?u7?E?@?BH?E7H?E?H?I??H?MH?MH?U?H?M??Q5	?H?M?H??t????y4	??u	H?M??e4	H?uH?uH?uH?u?H?E'?0H?u?H?E7H?M/H;?t?K4	H??H?MGH3??(A	L??$?I?[I?s I?{(I??]????????????????H?T$H??H?$????H?T$8H??tA??A?@?B?H?????H??(H??tH??L??3???@	H??(?????H??H?$????H?T$(H?T$8H??tI?H??H???????????H??(H??tH??L??3??@	H??(?????I??L??L??H;?t/L??L??L+?L+?fDA?K?TI???B?
H???
M;?u????@SH?? L+?I??I??J??L???g`H?H?? [?????????????????????@SH?? L+?I??I??J??L???'`H?H?? [???????H+?H??I?????̋???????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H??????̋D?D?QD?ID?A??B?A?B?A?B?AD?D?RD?JD?B????????????@WH??0L??H???H??M?B3?L???3?H??H??H?L$ I???????H??0_???????????H?H9?????????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L????^L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????@SH?? H?9H??t?#]H??Q=	3?H?H?CH?CH?? [?ATH??0H?D$ ????H?\$@H?t$PH?|$XH??H??H????????H;?vH?
fk?X\?H?AH+H??H;?s]H???????L??H?D$HL?CH?L+?I???H????]?H?H?sH+?H??H??t?<	H???m\M??L?[I??H?CL?#H?\$@H?t$PH?|$XH??0A\???????????????????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H+?H??I??????H?\$VL??M??H??L+?L+?I??I??I??M??I??M??tDI??L??H?H??H??H??u?M;?}kM??~fH?|$N??N??f?K?I??H;?HD?f???H??H+щH??H???L;?}I??
I??H+?H??I;?u?I??I??M???H?|$H?\$^???????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???3???H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????H?l$H?t$ WAUH??M??H??H+?L+?M??H??I??I??H??H??tH??H??H?H??H??H??u?I;???H????H?\$L??H??I??H??L?d$ L?M?M??M;?LD?A?E?$E?D$A?T$A?L$A?$A?BA?D$A?BA?D$A?BA?D$I??E?
I+?E?BA?RH??A?JM??H;?}L??
L??L+?I??L?M;?u?H??I??H???u???L?d$ H?\$H?l$(H?t$0A]_????????????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L????ZL?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????@SH?? H?9H??t??XH??9	3?H?H?CH?CH?? [?H??(L?L?AI????????M+?I??I??H+?I;?sH?
"g?X?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?H???H?I;?IB??9???H??(???????????????????H??H?D$0?D$(H?D$ ?????H??H?H??8E3?H?D$ ?;???H??8???????H??H?D$0?D$ ?????H??H??????????H??8E3?H?D$ ?+???H??8???????H?\$VH?? L?	H??H?QL??H??M+?I??L;?vHI??H;???H??H?|$0H??H+?H??H??L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?X???H?I;?IB??I???H??(?????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?~???H??H??????????@WH??0H?D$ ????H?\$PH??H??H?AH;?sFH?	H;?w>H+?H??H;Cu
?H???????H?H?KH?L$@H?L$HH??t????D??A?0H;Cu
?H???????H?KH?L$@H?L$HH??t
???G?AH?CH?\$PH??0_????????H?L$H??HH?D$8?????D$0?D$ M??L??H??????H??H??L?D$H?T$H??8L?	L?QM;?tTM;?tKI??I+?fff?B?
I??A?A?B?D
?A?A?B?D
?A?A?B?D
?A?A?J?
I;?u?L?D$PH?T$HL?I?D$HM??L??H??D$ ????H??8???????@SH?? D?L$03?H??H?H?AH?A????H??H?? [???????H??(D?L$H?1???H??(?????????????@UVWH?l$?H?? H?D$H????H??$PH??n#H3?H?EI??H??H??H??P?????u???u?J?B??????H???A?
D?B?R?H???A?D?G?W??C??{D??D?[A?Ù?{?K ??A??Lc?D?S?KD?O??+CG?????E+?C?
?A??D??D??A??H??H?D?J?;D??ND?G??+CG?????D+C??A????H???E3?D??A?Q?3?H?\$(H?\$0H?\$8D?L$ L?R?H?K?H?L$(??????D$P@?B?D$TH?D$0H??H?L$(H+?H???T$X?D$\H?\$`H?\$hH?\$pH?\$xH?]?L?D$XL?E?L?E?L?E?H?]?H?]?H;?t*H?E?H?E?H?L$pH?L$`Hc?H??H?L$xH?M?A?E??H?U?H?L$P?'	?H??H?
^n#?)(?H?M?H??t?????	??u	H?M??	H?]?H?]?H?]?H?]?H?E??H?]?H?EH?M?H;?t?	?H?L$hH??t????	??u
H?L$P?m	H?]?H?\$xH?\$pH?\$`H?E??H?\$hH?E?H?M?H;?t?O	?H?|$(tH?L$(?:H?L$(?K	H?\$(H?\$0H?\$8H?MH3??	H??$PH?? _^]????????????????H?L$SH??0H?D$(????H??3??D$ H?H?AH?AD?L$@L???H?????????D$ H??H??0[???????????????H?L$SH??0H?D$(????H??3??D$ H?H?AH?AD?L$@L??&
H????0?????D$ H??H??0[???????????????@USVWATAUAVAWH?l$?H??HH?E?????)?$0H??j#H3?H?E E??E??????Z#L??3?H?D$@H?D$HH?D$P???.5?&
z	H??&
tH?u&
H?E?H?E??E?3?H???H???H??L?A?H?M??ʗ???????D????ȉE?C?D%?A?????E?L???I?L$H???M?L???A?M?M?(??Y
?%
?Y???%
?^??E??E?H?E?`H?E?H?E????????Hc?H?IH??H?EH?EH?E?[???D???/?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@警??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?uZH??H+?H??H;?vH?
J>?
??????M?葱???E????M?Hc?H?M?H?]Hc?H?M?? |=~ L?
?
A?H?~?H?
?
?ʥ??H?D$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?2?|#?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?Z???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
?1??"?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?ə??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
/1?!"?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
?0??!?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?n???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?/?? ?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P褗??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
C/?5 ?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH???H??H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
r.?d?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?B???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?-???I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P贕??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
-?
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
?,?|?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?Z???H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XHc]?H??H?\$pL?t$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u]H??I+?H??H;?vH?
?+???H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P萓??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?vH?T$`H;?uXH??I+?H??H;?vH?
3+?%?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P????H?L$XH?M?H?M?H??tH?L?qH?D$XH?E?H?E?L?u??E?I???E3?H?U?H?M?H?E?D8?O#tN?Rz???H?B

H?D$@?D$8?????D$0????H?D$PH?D$(H?EH?D$ L?M?L?E?H?+M#I??????A?z????D$8?????D$0????H?D$PH?D$(H?EH?D$ L?M?L?E?H??L#I?????H?}?r	H?M???H?E?L?u??E?H?|$PtH?L$P?MH?L$P?y?L?t$PL?t$XL?t$`H?M(H3??0?H??0A^A]A\_^[]???????????????@UVWATAUAVAWH?l$?H??@H?E?????H??$?H??L#H3?H?E8E??E???U?D???IH?E?3?H?t$PH?t$XH?t$`H?E?H?u?@?u???M#A??H?M?A+???A???H??D?FH??	
?y??H?D$pL??M#L?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?(?w?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?V???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?ubL??L+?I??L;?vH?
?'???I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P豏??H?L$XL?]L#H?M?H?M?H??tH?L?AH?L$XH??H?L$XH?D$pH?5#L#H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
'??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?EH?T$`H;?uZL??L+?I??L;?vH?
?&?s?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?R???H?L$XH?M?H?M?H??tH?H?q??A?H??
??v??H?D$pH?5?J#H?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?%???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?h???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?$???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Č??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?59I#H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
+$??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?_H?T$`H;?uZL??L+?I??L;?vH?
?#???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l???H?L$XH?M?H?M?H??tH?H?q??A?H??
??s??H?D$pH?5?G#H?t$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?"???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P肊??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?

"???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?މ??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XH?D$pH?5SF#H?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
E!?7?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
? ???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P艈??H?L$XH?M?H?M?H??tH?H?qL?\$XI??L?\$XD???A???A???E?D???A?™A???E?A??+E??????A??D?ȉE?A??A+????A??Lc?A?D
?A???E?E??Ic?H?ML?EH?EIc?H?E H?E(H?E0H?D$pH?5?D#H?t$xH?L$pH?D$PI;???H?L$pH;???H?t$pH+?H?T$`L;?u_I??H+?H??H;?vH?
i?[?H??H+?H??H;?v3L??I??H??I+?H;?s3??I?H;?HB?H?L$P?:???L?\$XH?D$PH???H?L?]?L?]?M??tH?I?H?FI?C?|H?T$`L;?uZI??H+?H??H;?vH?
????H??H+?H??H;?v.L??I??H??I+?H;?s3??I?H;?HB?H?L$P譆??L?\$XL?]?L?]?M??tI?I?sH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
??y?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?X???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P菄??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
.? 
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
e?W?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?6???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P覂??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?݁??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
|?n
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?M???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH???H??H?D$pH?t$xH?D$pH;???H?D$pL?D$PL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
???	?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P耀??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P荄??H?L$XH?M?H?M?H??tH?H?qH?D$XH???H??H?D$pH?D$xH?T$pH?L$P?„??H?D$pH???H?D$xH?T$pH?L$P螄??H?D$pH???H?D$xH?T$pH?L$P?z???L???I??H?D$pL?\$xH?T$pH?L$P?R???H?E?H?E?3?I???E3?H?U?H?M?H?E?H?]??]?D8'<#tO??f???H???H?D$@?D$8?????D$0????H?D$PH?D$(H?E H?D$ L?ML?E?H??9#H?M??d??B?f????D$8?????D$0????H?D$PH?D$(H?E H?D$ L?ML?E?H??9#H?M??!??H?}?r	H?M??>?H?E?H?]??E?H?|$PtH?L$P??H?L$P??H?\$PH?\$XH?\$`H?M8H3????H??$?H??@A_A^A]A\_^]??????????????H??UWATAUAVH?h?H?? H?E?????H?XH?p H?c9#H3?H?EE??A?؋??????L??H?E?E3?L?u?D?u?E?FH???H?M??f???L?t$@L?t$HL?t$PD?ExA???A???E?D?UpA?™???E?A??+Nj????A??D??A??+????A??Lc?A?D?A???E?L???I?L$H???M?A??Ic?H?ML?EH?EH?E?H?E?H?E?H?D$`H?5?9#H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?}|??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
???I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??{??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
>?0?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?{??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?{z??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?5?6#H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?y??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
L?>?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?y??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?5?5#H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??s?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?Qx??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??w??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
)??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??v??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?fv??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?u??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
7
?)??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?u??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
k?]??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?;t??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?s??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH???H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??r??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
u
?g??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?Er??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?t$H?D$`H?t$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u]H??I+?H??H;?vH?
?	????H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@?q??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?|H?T$PH;?uXH??I+?H??H;?vH?
 	???H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@??p??H?L$HH?L$pH?L$xH??tH?H?qH?D$HH?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M??AX????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?ML?E?H?&+#I??????H?|$@tH?L$@???H?L$@???L?t$@L?t$HL?t$PH?}?r	H?M???H?E?L?u??E?H?MH3??m?L??$ I?[@I?sHI??A^A]A\_]??H??UWATAUAVH?h?H?? H?E?????H?XH?p H?+#H3?H?EE??A?؋?????L??H?E?E3?L?u?D?u?E?FH???H?M??3X???L?t$@L?t$HL?t$PD?ExA???A???E?D?UpA?™???E?A??+Nj????A??D??A??+????A??Lc?A?D?A???E?L???I?L$H???M?A??Ic?H?ML?EH?EH?E?H?E?H?E?H?D$`H?5?+#H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
]?O??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?-n??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?m??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?l??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
[?M??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?+l??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?5?(#H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??~??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?\k??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??j??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?5S'#H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
1?#??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?j??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?qi??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?5?%#H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?h??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
F?8??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?h??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
~??p??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?Ng??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?f??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??e??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
???~??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?\e??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?d??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
-????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??c??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH???H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u`L??L+?I??L;?vH?
Z??L??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?*c??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?b??H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HI?t$H?D$`H?t$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u]H??I+?H??H;?vH?
?????H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@??a??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?|H?T$PH;?uXH??I+?H??H;?vH?
u??g??H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?Ha??H?L$HH?L$pH?L$xH??tH?H?qH?D$HH?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M??H????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?ML?E?H?{#I?????H?|$@tH?L$@???H?L$@?+?L?t$@L?t$HL?t$PH?}?r	H?M???H?E?L?u??E?H?MH3????L??$ I?[@I?sHI??A^A]A\_]????????\$ UVWATAUAVAWH?l$?H??0H?E?????H??$?H?\#H3?H?E(M???M??U????L??H?E?3?H?]??]?D?CH?P?H?M??H???H?\$@H?\$HH?\$PH?EH?EH?E HcE?H?E?HcE?H?EH?E8???D$pA?D$?E?L???I?EH???E?L???I?FH??E?H?D$`H?E?H?D$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?^??H?L$HH?D$@H???H?H?M?H?L$xH??tH?H?H?CH?AH?L$HH??3??H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
%????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@??]??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
Z??L??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?+]??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?\??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??[??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
m??_??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?>[??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?tZ??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??Y??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
H??:??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Y??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?X??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?W??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
^??P??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?/W??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?iV??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??U??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
D??6??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?U??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?T??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?S??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
\??N??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?-S??H?L$HH?L$xH?M?H??tH?H???H?AH?L$HH??H?L$HH?D$`H?D$pH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?_R??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??Q??H?L$HH?L$xH?M?H??tH?H?D$pH?AH?L$HH??H?L$HH?D$`H?]#H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
/??!??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?Q??H?L$HL?D$@H???H?L$xH?M?H??tJ?H?J?DH?A?zH?T$PH;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?yP??H?L$HH?L$xH?M?H??tH?H?YH?D$HH?E?H?D$xH?E?3?H?]??]?I???E3?H?U?H?M???7????D$8?????D$0????H?D$@H?D$(H?EH?D$ L?M?L?E?H??
#I???L??H9\$@tH?L$@?1?H?L$@?]?H?\$@H?\$HH?\$PH?}?r	H?M??>?H?E?H?]??E?H?M(H3????H??$?H??0A_A^A]A\_^]???????????\$ UVWATAUAVAWH?l$?H??0H?E?????H??$?H??
#H3?H?E(M???M??U???L??H?E?3?H?]??]?D?CH???H?M??7???H?\$@H?\$HH?\$PH?EH?EH?E HcE?H?E?HcE?H?EH?E8???D$pI?D$H???E?L???I?EH???E?L???I?FH??E?H?D$`H?E?H?D$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
?????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??M??H?L$HH?D$@H???H?H?M?H?L$xH??tH?H?H?CH?AH?L$HH??3??H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
Q??C??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?!M??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
???x??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?WL??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@??K??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
*????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??J??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?jJ??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?I??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
>??0??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?I??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
t??f??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?EH??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?G??H?L$HH?L$xH?M?H??tH?H?E?H?AH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??
??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??F??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
???|??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?[F??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?E??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
6??(??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?E??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
p??b??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?AD??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?C??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HH?D$`H???H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??B??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
???z??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?YB??H?L$HH?L$xH?M?H??tH?H???H?AH?L$HH??H?L$HH?D$`H?D$pH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?A??H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
)????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??@??H?L$HH?L$xH?M?H??tH?H?D$pH?AH?L$HH??H?L$HH?D$`H???"H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
[??M??H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?/@??H?L$HL?D$@H???H?L$xH?M?H??tJ?H?J?DH?A?zH?T$PH;?uWH??I+?H??H;?vH?
??????H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HH?L$xH?M?H??tH?H?YH?D$HH?E?H?D$xH?E?3?H?]??]?I???E3?H?U?H?M???&????D$8?????D$0????H?D$@H?D$(H?EH?D$ L?M?L?E?H???"I???x??H9\$@tH?L$@?]?H?L$@艨H?\$@H?\$HH?\$PH?}?r	H?M??j?H?E?H?]??E?H?M(H3?? ?H??$?H??0A_A^A]A\_^]??????@USVWATAUH??$X???H??H?D$@????H???"H3?H???M??I??H??H?ً%??$???H?E?E3?L?m?D?l$pE?E*H??YH?L$p??&???H?D$`L?l$XD?l$HE3?H???H?L$H?&???H?E?L?m?D?m?E?E.H???H?M??&????D$(SH?D$pH?D$ L?L$HL?E??)???H?M??>??H???/??H?M????H?}?r	H?M???H?E?L?m??E?H?|$`r
H?L$H???H?D$`L?l$X?D$HH?}?r
H?L$p?ЦH?E?L?m??D$pfnC ????^8??Z؋%?t-??uN?C8?D$0L?d$(H?t$ L?Nj??????x????&?C8?D$0L?d$(H?t$ L?Nj?????????H???H3???H?ĨA]A\_^[]??H?\$H?l$H?t$WH??PH???H???H??L??L????????o(f/-{Rs?GGfn?????Y-[RD???D?G?W?ZŋO H??"H??HH?\$HH?D$@???H?t$8H?l$0?D$(?D$ ??????Zo0???D????l$0D?G?W?O H?\$(?D$ ?O???H?\$`H?l$hH?t$pH??P_???????????@USWATAUAVAWH??$@???H???H?D$X????H???"H3?H???M??M??H??L??A???y3???uA?@??y???H?E?H?}?@?}?A?*H??VH?M???#???H?E?H?}??E?E3?H???H?M??#???H?D$xH?|$p?D$`A?ZH???H?L$`?#????D$(tH?E?H?D$ L?M?L?D$`?)???H?M??F??H???7??H?M??'??H?|$xr
H?L$`??H?D$xH?|$p?D$`H?}?r	H?M????H?E?H?}??E?H?}?r	H?M??٣H?E?H?}??E?A??D$PA?F?D$TL?D$PH??I???|???H??I???q???A?E?A?}D??E?MA???A?}A?M ??A??Lc?E?EA?MA?]??A+E??????A?EA+?A??A??D??E?A?NE???A???+???????E+MC?
?A??E??D????A???I????D?? E???kA???H?D$x3?H?\$p?\$`D?C*H??TH?L$`??!???H?E?H?]??]?E3?H???H?M???!???H?E?H?]??]?D?CH?t?H?M??!????D$(?H?D$`H?D$ L?M?L?E??S?H?M??^??H???O??H?M?????H?}?r	H?M??6?H?E?H?]??E?H?}?r	H?M???H?E?H?]??E?H?|$xr
H?L$`???H?D$xH?\$p?D$`?I??HL?|$HH?D$@A????D$8A????D$0A??D$(A?F?D$ E?ME?EA?UA?M?????KI??HL?|$HH?D$@A????D$8A????D$0A??D$(A?F?D$ E?ME?EA?UA?M?v???H???H3???H???A_A^A]A\_[]?????H??UVWATAUAVAWH??????H??H?E?????H?X )p?H???"H3?H???f(?I??H??L??L??`?E3?%?????H?E?L?e?D?e?E?D$*H??RH?M?????H?EL?e?D?e?E3?H?t?H?M?????H?E?L?e?D?e?E?D$.H??H?M??g????D$(?H?E?H?D$ L?M?L?E??)???H?M?!??H?????H?M???H?}?r	H?M????H?E?L?e??E?H?}r	H?M??ٟH?EL?e??E?H?}?r	H?M?蹟H?E?L?e??E?H??h?8u
?x?
H?E?L?e??E?A?*H?`QH?M?????H?EL?e??E?E3?H?R?H?M??k???H?E?L?e??E?A?H?ŰH?M??D????D$(?H?E?H?D$ L?M?L?E??)???H?M????H?????H?M?ߒ?H?}?r	H?M??֞H?E?L?e??E?H?}r	H?M?趞H?EL?e??E?H?}?r	H?M?薞H?E?L?e??E?L?NL?M;?t=I??M;?t1M??M+?M??M+???A?I?LB??I??H??I;?u?L?FI?`?A???uA9FuA?GA?A?GA?F?'?A???uA?F?A????
H?E?L?e??E?A?*H??OH?M??????H?EL?e??E?E3?H???H?M??????H?E?L?e??E?A?ZH???H?M??????D$(?H?E?H?D$ L?M?L?E??)???H?M?b??H???S??H?M?C??H?}?r	H?M??:?H?E?L?e??E?H?}r	H?M???H?EL?e??E?H?}?r	H?M????H?E?L?e??E?A??D$pA?F?D$tL?D$pH??I?????H??I??????I????Z?I?GHI??HH?|$`?D$X?AG@?D$PH?D$HH?L$@A????D$8A????D$0A??D$(A?F?D$ E?OE?GA?A?O????I???H???C?M???E?A?NE???A???A+G????D??E+C??A??D??D??D?T$xE????fff?A?ęA??A????A??+?A?}??A?~??A??\$p?|$tH?FH?L$pH;?sSH?H?T$pH;?wFH?\$pH+?H??H;Fu?H????{??D?T$xH?H?NH?M?H?M?H??t?ډ?D??A?.H;Fu?H???{??D?T$xH?FH?E?H?E?H??t??xH?FA??I??E;??-???H???H3??ޛH??$X(?$?H??A_A^A]A\_^]????????????H??UVWATAUAVAWH??(???H??H?E????H?X )p?)x?D)@?D)H?H?_?"H3?H??PfD(?M??L?E?H??H?U?L??L??L?e?E3?%?????H?EHL?}@D?}0E?G*H?(LH?M0?W???H?E L?}D?}E3?H??H?M?3???H?EpL?}hD?}XE?G.H???H?MX?????D$(?H?E0H?D$ L?ML?EX?)???H????ō?H??趍?H???裍?H?}pr	H?MX蚙H?EpL?}h?EXH?} r	H?M?z?H?E L?}?EH?}Hr	H?M0?Z?H?EHL?}@?E0???DC?fA/??H?EpL?}h?EXA?*H??JH?MX?*???H?E L?}?EE3?H???H?M????H?EHL?}@?E0A?
H???H?M0??????D$(?H?EXH?D$ L?ML?E0?)???H???薌?H??臌?H????t??H?}Hr	H?M0?k?H?EHL?}@?E0H?} r	H?M?K?H?E L?}?EH?}pr	H?MX?+?H?EpL?}h?EXL?|$@L?|$HL?|$PfA(??t$0A??D?}?E9~<??I????????I????????H?L$Hf?H?T$0H?D$@H;???H?T$0H;???H?\$0H+?H??H?T$PH;?ujL??L+?I??M;??\I??H+?H??L;?vHH??H??I??H+?H;?sI???H?I;?IB?H?L$@?
Z??H?L$HH?D$@I????????I????????H?M?H?M?H??tH??H??H?T$PH;?ueL??L+?I??M;???I??H+?H??L;?vCH??H??I??H+?H;?sI???H?I;?IB?H?L$@?Y??H?L$HI????????I????????H?M?H?M?H??t?1H?L$HH??H?L$HfnN????^?fW????-?A;|\fnN????^?fW????-?A;F|=fD/?s6?Y??t$0?lj}?A;~<}!?Z???H?
???u??H?
u??g???D$0H?D$0H?M???HM?HcH?L$@?	^??L?|$`L?|$hL?|$pL?}?L?}?L?}?A?$??uA9D$uA?FA?$A?FA?D$?.?A?~??uA?D$?A?~???H?EpL?}h?EXA?*H?YGH?MX????H?E L?}?EE3?H?K?H?M?d???H?EHL?}@?E0A?ZH?6?H?M0?=????D$(?H?EXH?D$ L?ML?E0?)???H??????H?????H????҈?H?}Hr	H?M0?ɔH?EHL?}@?E0H?} r	H?M詔H?E L?}?EH?}pr	H?MX艔H?EpL?}h?EXA?$?D$0A?D$?D$4L?D$0H??I???*w??D?A???I??8D?F?VH???J}H?D$HH?L$@H+?H??H???ufW?ffff??B4?fnN????^?fW????-?fnN????^?fW????-?A???A???;Nu;;Fu6H????D$0?C?D$4A?$?E?A?D$?E?H?D$0H?D$(H?E?H???Z?MЉE??D$(?|$ f(?L?E?H??H???mH??D?D?]ȋ@?E?A?$?E?A?D$?E?H?E?H?D$(H?E?H??H?D$ fA(?L?E?I???????fAnN????Y?fW????D-?fAn????Y?fW????D-?3?H?E?H?M?H+?H??L?L$hH????D?m?D?eċD???M??E?fn????H?E?H?? fn?????Y??Y?fW????-?fW????-??}??]?H?M?H?D$`I;???H?M?H;???H?]?H+?H?T$pL;?ufI??H+?H??I????????I;??YH??H+?H??H;?v:L??I??H????????I+?H;?s3??I?H;?HB?H?L$`觡??L?L$hH?D$`H???H?L?M?L?M?M??t?A??CA?A?CA?A?CA?A?H?T$pL;?uaI??H+?H??I????????I;???H??H+?H??H;?v5L??I??H????????I+?H;?s3??I?H;?HB?H?L$`????L?L$hL?M?L?M?M??tA?9A?YE?iE?aL?L$hI??L?L$hH??H?E?H?M?H+?H??H;??[?H?M??4[?H?M???kH??$?H?Ā]?U????????@SH?? H?AH?AH???????H??H?? [???????H?L$WH??0H?D$(????H?\$HH?l$PH?t$XI??H??H??3??D$ H?AH?A??D$ H???H???H??H??I?PH?H?{H;?w,H9St&A?H???	?????tH?{H?{rH??H???83?H???H???H??L?A?H??H???????I???E3?H??H??????H??H?\$HH?l$PH?t$XH??0_????????H??UVWATAUAVAWH??X???H??pH?E?????H?X)p?)x?H???"H3?H??@f(?f(?L??H??H?M?L?rA?3?9Au?B9A?
H?E?H?}?@?}?A?.H???H?M??????H?E0H?}(?EE3?H?P?H?M?i????H?E?H?}??E?A?0H???H?M??B?????D$(|H?E?H?D$ L?ML?EȺ)???H?M@??h?H????h?H?M@??h?H?}?r	H?M???tH?E?H?}??E?H?}0r	H?M?tH?E0H?}(?EH?}?r	H?M??tH?E?H?}??E?H?C8H?E?fW????-??*????fP?*ȈL$pfW????-??D$qH?EH?}?E?A?	H?J?H?M??I????M?g@A?$???}?Ƀ????A??D??????Hc???tH??H???M?oIcEH??(H??0HDž8HDžHDžHDž H?|$@H?|$HH?|$PH??H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
???~??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?]	??H?L$HH?D$@H???H?H?M?H?L$xH??tH?H?H?CH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
??ّ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HI?_H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
!????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?}H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?d??H?L$HH?L$xH?M?H??tH?H?YH?L$HH??H?L$HL?E?I?X@A?L?L$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uiL??L+?I??L;?vH?
Ǟ????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?D$@A?L?E?H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?udL??L+?I??L;?vH?
,????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?L?E?H?L$xH?M?H??tL?	H?YH?L$HH??H?L$HI?XL?L$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
d??V??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?5??H?L$HH?D$@A?H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
М??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HA?H?L$xH?M?H??tL?	H?YH?L$HH??H?L$HL?L$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
|??n??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?M??H?L$HA?H?L$xH?M?H??tL?	L?aH?L$HH??H?L$HL?L$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?D$@A?H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
(????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$xH?M?H??tL?	L?iH?L$HH??H?L$HL?L$`L?t$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
h??Z??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?9??H?L$HH?D$@A?H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
Ԙ?Ɖ?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HA?H?L$xH?M?H??tL?	L?qH?L$HH??H?L$HI?_L?L$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
???t??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?S???H?L$HA?H?L$xH?M?H??tL?	H?YH?L$HH??H?L$HH?D$`H?D$pH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
(????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$xH?M?H??tH?H?D$pH?AH?L$HH??H?L$HH?D$`H?D$qH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
\??N??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?-???H?L$HH?D$@H???H?H?L$xH?M?H??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
˔????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$xH?M?H??tH?H?D$qH?AH?L$HH??H?L$HA?L?d$`H???H?D$hH?D$`H;???H?D$`L?D$@L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?????H?L$HL?D$@H???H?L$xH?M?H??tJ?H?J?DH?A?7H;L$Pu?H?L$@?????H?L$HH?L$xH?M?H??tL?!H???H?AH?D$HH?E?H?D$xH?E?3?H?]??]?I???E3?H?U?H?M???????H?M????????ƒ?ADԋ???D$8?T$0H?D$@H?D$(H??H?D$ L??(L?E?H?`?"H?M???M?H9\$@tH?L$@?$?H?L$@?PdH?\$@H?\$HH?\$PH?}r	H?M??1dH?EH?]?E?H??@H3???dL??$pI?[PA(s?A({?I??A_A^A]A\_^]????????????????H??UVWATAUAVAWH??H???H??H?E?????H?X)p?)x?H?i?"H3?H??Pf(?f(?H??L??L?rA?3?9Au?B9A?H?E?H?]??]?A?.H?sxH?M??r????H?E8H?]0?E E3?H?5?H?M ?N????H?E?H?]??E?A?0H???H?M??'?????D$(?H?E?H?D$ L?M L?Eк)???H?MP??V?H????V?H?MP??V?H?}?r	H?M??bH?E?H?]??E?H?}8r	H?M ?bH?E8H?]0?E H?}?r	H?M??ybH?E?H?]??E?I?G8H?E??Z??E??Z??M??G@???E?H?GH???E?A?G@???E?I?GH???E?H?EH?]?E?A?	H?#xH?M??"?????M???A??D??????Hc???tH??H???L?oIcEH?? H??(HDž0HDž8HDž@HDžHH?\$@H?\$HH?\$PI?_H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????I????????H?T$PH;?u_L??L+?I??M;?vH?
v??h??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?G???H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????I????????H?T$PH;?uZL??L+?I??M;?vH?
Ў???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?_H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
	???~?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
z??l~?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?K???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$H?H?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
????}?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
#??}?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
`??R|?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?1???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
ъ??{?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
??{?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
??qz?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?P???H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
????y?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?zH?T$PH;?uZL??L+?I??M;?vH?
1??#y?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?9L?iH?L$HH??H?L$HH?|$`L?t$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
v??hx?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?G???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?zH?T$PH;?uZL??L+?I??M;?vH?
???w?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?9L?qH?L$HH??H?L$HH?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
(??w?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
????v?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?j???H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
ք??u?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
G??9u?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
???vt?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?U???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
????s?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?9H?E?H?AH?L$HH??H?L$HH?|$`H???H?D$hH?D$`H;???H?D$`L?D$@L;???H?\$`I+?H?T$PH;?u\H??I+?H??I;?vH?
/??!s?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?8H;L$Pu?H?L$@????H?L$HH?L$pH?L$xH??tH?9H???H?AH?D$HH?E?H?D$pH?E?3?H?]??]?I???E3?H?U?H?M??????A???????ƒ?D?A????D$8?T$0H?D$@H?D$(H??8H?D$ L?? L?E?H???"H?M??t;?H9\$@tH?L$@?YrH?L$@?RH?\$@H?\$HH?\$PH?}r	H?M??fRH?EH?]?E?H??PH3??SL??$?I?[PA(s?A({?I??A_A^A]A\_^]?????H??USVWATH??(???H??H?D$0????)p?)x?H???"H3?H???f(?f(?L??H??3?%??#???H?D$xH?\$p?\$`D?C.H??fH?L$`?????H?D$PH?\$H?\$8E3?H?{?H?L$8?????H?E?H?]??]?D?C/H?@fH?M??o?????D$(?H?D$`H?D$ L?L$8L?E??)???H?M??'E?H???E?H?M??E?H?}?r	H?M???PH?E?H?]??E?H?|$Pr
H?L$8??PH?D$PH?\$H?D$8H?|$xr
H?L$`?PH?D$xH?\$p?D$`?????E???<???3???*???!H?E?H?]??E?A?.H?peH?M??o????H?D$PH?\$H?D$8E3?H?/?H?L$8?G????H?D$xH?\$p?D$`A??H??fH?L$`??????D$(?H?E?H?D$ L?L$8L?D$`?)???H?M???C?H????C?H?M??C?H?|$xr
H?L$`?OH?D$xH?\$p?D$`H?|$Pr
H?L$8?OH?D$PH?\$H?D$8H?}?r	H?M??bOH?E?H?]??E?D?A???D?F?VI???K8D?A???A????H??e?|$ f(?f(?I??H????f(?H???H3???O(?$?(?$?H?İA\_^[]??????????????@USVWATAUAVAWH??$????H??hH?E?????H?e?"H3?H??PI??M??L??L??H?A8H?E?E3틝????%?????????H?E?L?m?D?m?E?E.H?XcH?M??W????H?EL?mD?m?E3?H??H?M??3????H?E?L?m?D?m?A??H??fH?M???????D$(?H?E?H?D$ L?M?L?EȺ)???H?M@??A?H???A?H?M@?A?H?}?r	H?M??MH?E?L?m??E?H?}r	H?M??~MH?EL?m?E?H?}?r	H?M??^MH?E?L?m??E?A?$%???uH??2??
uH??"??u?%????
H?E?L?m??E?A?.H?
bH?M??????H?EL?m?E?E3?H??~H?M???????H?E?L?m??E?A??H??dH?M????????D$(?H?E?H?D$ L?M?L?E??)???H?M@?{@?H???l@?H?M@?\@?H?}?r	H?M??SLH?E?L?m??E?H?}r	H?M??3LH?EL?m?E?H?}?r	H?M??LH?E?L?m??E?H?wH?u?H?>?%A?D$?O9GuA;L$?
H?E?L?m??E?A?.H??`H?M???????H?EL?m?E?E3?H??}H?M??????H?E?L?m??E?A?(H?ccH?M???????D$(?H?E?H?D$ L?M?L?E??)???H?M@?D??H???5??H?M@?%??H?}?r	H?M??KH?E?L?m??E?H?}r	H?M???JH?EL?m?E?H?}?r	H?M???JH?E?L?m??E?I?T$A?D$A?OA9Gu;
?*H?E?H?E??E?A?.H??_H?M??????H?EH?E?E?E3?H?g|H?M??????H?E?H?E??E?A?H?bH?M??U?????D$(?H?E?H?D$ L?M?L?E??)???H?M@?>?H???>?H?M@??=?H?}?r	H?M???IH?E?H?E??E?H?}r	H?M???IH?EH?E?E?H?}?r	H?M??IH?E?H?E??E?I?T$E?A???E?D$?I???2H?E0H?E(?EA?$%?A???
uGH?>uA??u?????E??H??`?????9????M??H??`?~??u8H?>u2??u???utM??H?e`?Y??ud9??u\M??H?5`?A??uK?%???u???u???u1H??_???u$9??uH??_A?H?M????A?IcO?M?A?%?uA?G@???u-??u(A?G@??%?}?ȃ?????D??????HcȉE?H??3?I??H??tH?HH??I?Lc3?I??I??H??tL?@I??H??8L??@HDžHL?? L??(HDž0L????AZE???AZM???AZE???AZM??H?D$PH?D$XH?D$`A?$??%???????	I?H?D$@H?|$HH?T$@H?D$PH?L$XH;???H?T$@H;???H?|$@H+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
Bu?4f?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$xH?L$pH??tH?H?H?GH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?t??e?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?m???H?L$XH?L$pH?L$xH??tH?H?yH?L$XH??H?L$XI?~H?D$@H?|$HH?T$@H?D$PH;???H?T$@H;???H?|$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?s??d?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$`H;?uZL??L+?I??L;?vH?
Fs?8d?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?yH?L$XH??H?L$XI?|$H?D$@H?|$HH?T$@H?D$PH;???H?T$@H;???H?|$@H+?H?T$`H;?u_L??L+?I??L;?vH?
~r?pc?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?O???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?q??b?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?yH?L$XH??H?L$XI?@H?D$@H?|$HH?T$@H?D$PH;???H?T$@H;???H?|$@H+?H?T$`H;?u_L??L+?I??L;?vH?
(q?b?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?p??a?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j???H?L$XH?L$pH?L$xH??tH?H?yH?L$XH??H?L$XI?~@H?D$@H?|$HH?T$@H?D$PH;???H?T$@H;???H?|$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?o??`?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?GH?A?~H?T$`H;?uZL??L+?I??L;?vH?
Co?5`?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?yH?L$XH??H?L$XI?|$@H?D$@H?|$HH?D$@L?D$PH;???H?D$@L;???H?|$@I+?H?T$`H;?u\H??I+?H??H;?vH?
{n?m_?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?O???H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$`H;?uWH??I+?H??H;?vH?
?m??^?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?yH?D$XI?GH?D$@H?D$HH?T$@H?L$P?N???M?^H?D$@L?\$HH?T$@H?L$P?-???M?\$H?D$@L?\$HH?T$@H?L$P????M?^H?D$@L?\$HH?T$@H?L$P?????M?^H?D$@L?\$HH?T$@H?L$P?????H?D$@I?_H?\$HH?T$@H?L$P????H?D$@I?H?|$HH?T$@H?L$P????H?D$@I?D$H?D$HH?T$@H?L$P?e???H?D$@I?D$H?D$HH?T$@H?L$P?C???H?D$@H?E?H?D$HH?T$@H?L$P?"???3?I?N8?g?H?T$@H?L$P??tH?D$@ L?l$H?????H?u??$H?D$@H??H?D$H?????H?u??I?_A?$??%??????EI?GH?D$@H?D$HH?T$@H?L$P????M?^H?D$@L?\$HH?T$@H?L$P?s???M?\$H?D$@L?\$HH?T$@H?L$P?Q???H?D$@H?t$HH?T$@H?L$P?4???M?_@?H?t$@L?\$HH?T$@H?L$P????M?^@H?t$@L?\$HH?T$@H?L$P?????M?\$@H?t$@L?\$HH?T$@H?L$P?????M?_H?t$@L?\$HH?T$@H?L$P????M?^H?t$@L?\$HH?T$@H?L$P????M?\$H?t$@L?\$HH?T$@H?L$P????M?^H?t$@L?\$HH?T$@H?L$P?b???M?^H?t$@L?\$HH?T$@H?L$P?E???H?t$@H?\$HH?T$@H?L$P?,???H?t$@H?|$HH?T$@H?L$P????H?t$@I?D$H?D$HH?T$@H?L$P?????H?t$@I?D$H?D$HH?T$@H?L$P?????H?t$@H?E?H?D$HH?T$@H?L$P????3?I?N8???H?T$@H?L$P??tH?D$@ L?l$H?????!H?D$@H??H?D$H?r?????H?E?H?D$pH?E?3?H?]??]?I???E3?H?UH?M??
????A???????ƒ?D?A????D$8?T$0H?D$PH?D$(H?? H?D$ L??8L?E?H???"H?M??y#?H9\$PtH?L$P?^ZH?L$P?:H?\$PH?\$XH?\$`H?}0r	H?M?k:H?E0H?](?EH??PH3??;H??hA_A^A]A\_^[]???????????H??UVWATAUAVAWH??H???H??H?E?????H?X)p?)x?H???"H3?H??Pf(?f(?H??L??D?A??A???A?????%???E3?D;??	H?E?L?m?D?m?E?E.H??NH?M?贸???H?E@L?m8D?m(E3?H?wkH?M(萸???H?EL?mD?mE?E"H??RH?M?k?????D$(TH?E?H?D$ L?M(L?E?)???H?MP?%-?H???-?H?MP?-?H?}r	H?M??8H?EL?m?EH?}@r	H?M(??8H?E@L?m8?E(H?}?r	H?M??8H?E?L?m??E?M?|$8???f(??^??Z??E??^??Z??E??M??U?E?$E??A??A???A??E??A?A??ED?A??B???"D?D??I??A??3?I?D$I??Ic?3?H??E?A??ED?C??P???H??$B?????????????????Hc?IcD$@3?H??E?D?E??A??A???A??E??A??ED?A??B??H???3?H?FH??Ic?3?H??E?A??A??DD?C?	H???ˀ?B???????????????Hc?HcF@3?H??E?H?E?L?m??E??????u	H??P???uH??PA?H?M??E???L?nA?$?u>?N@???}?Ƀ????A?E?D??????Hc?3?H??A?I??H??u$H???McMI??3?I??A?I??H??uE??uH?HH??L?vMcM??3?I??I??H??uE??uL?HI??H??8L??@HDžHL?? L??(HDž0H?D$PH?D$XH?D$`H?D$@H?T$@???H??H?t$HH?D$PH?L$XH;???H?T$@H;???H?t$@H+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
%d?U?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
c?qT?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?P???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?t$H?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?b??S?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
(b?S?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XA?L?L$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
_a?QR?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?0???H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?`??Q?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?	H?E?H?AH?L$XH??H?L$XL?L$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
?_??P?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
f_?XP?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?7???H?L$XA?H?L$pH?L$xH??tL?	H?E?H?AH?L$XH??H?L$XL?L$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
?^??O?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n???H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
^??N?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XA?H?L$pH?L$xH??tL?	H?E?H?AH?L$XH??H?L$XL?L$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
<]?.N?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?
???H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?\??M?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?u???H?L$XA?H?L$pH?L$xH??tL?	H?E?H?AH?L$XH??H?L$XI?t$L?L$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
?[??L?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
B[?4L?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?	H?qH?L$XH??H?L$XI?t$L?L$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
|Z?nK?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?M???H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?Y??J?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?	H?qH?L$XH??H?L$XL?L$@L?l$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ueL??L+?I??L;?vH?
#Y?J?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?X?}I?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?\???H?L$XA?H?L$pH?L$xH??tL?	L?iH?L$XH??H?L$XL?L$@L?t$HH?D$@L?D$PH;???H?D$@L;???H?t$@I+?H?T$`H;?u\H??I+?H??H;?vH?
?W??H?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P螿??H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?}H?T$`H;?u]H??I+?H??H;?vH?
?W?1H?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?	L?qH?D$X3?I?L$8??H?T$@H?L$P??tBH?D$@H?E?H?D$H????H?D$@H?E?H?D$HH?T$@H?L$P?j?????[??!H?FH?D$HH?L$P?C???M?\$H?D$@L?\$HH?T$@H?L$P?!???H?|$@H?E?H?D$HH?T$@H?L$P????H?|$@H?E?H?D$HH?T$@H?L$P?????H?|$@H?E?H?D$HH?T$@H?L$P?????H?|$@H?E?H?D$HH?T$@H?L$P????M?\$H?|$@L?\$HH?T$@H?L$P????M?\$H?|$@L?\$HH?T$@H?L$P?q???H?|$@L?l$HH?T$@H?L$P?X???H?|$@L?t$HH?T$@H?L$P?????H?T$@H?L$PH?E?H?|$@H?D$H?"???H?E?H?|$@H?D$HH?T$@H?L$P????H?E?H?D$pH?E?3?H?]??]?I???E3?H?U?H?M?觤???A?$??????ƒ?D?A?$???D$8?T$0H?D$PH?D$(H?? H?D$ L??8L?E?H?*w"I????H9\$PtH?L$P??EH?L$P?#&H?\$PH?\$XH?\$`H?}?r	H?M??&H?E?H?]??E?H??PH3??&L??$?I?[PA(s?A({?I??A_A^A]A\_^]???H??USVWATAUH?????H???H?D$0????)p?)x?D)@?H?Jw"H3?H???fD(?I??L??H???? ?E3?%??L???C???:???1???(???H?D$xL?l$pD?l$`E?E.H?':H?L$`?%????H?D$PL?l$HD?l$8E3?H??VH?L$8??????H?E?L?m?D?m?A??H?_?H?M??֣????D$(?H?D$`H?D$ L?L$8L?E??)???H?M???H????H?M??o?H?}?r	H?M??f$H?E?L?m??E?H?|$Pr
H?L$8?D$H?D$PL?l$H?D$8H?|$xr
H?L$`?$H?D$xL?l$p?D$`??(???)???!H?E?L?m??E?A?.H??8H?M??????H?D$PL?l$H?D$8E3?H??UH?L$8?ɢ???H?D$xL?l$p?D$`A??H??=H?L$`螢????D$(?H?E?H?D$ L?L$8L?D$`?)???H?M??V?H???G?H?M??7?H?|$xr
H?L$`?,#H?D$xL?l$p?D$`H?|$Pr
H?L$8?#H?D$PL?l$H?D$8H?}?r	H?M???"H?E?L?m??E??G?G???!H?E?L?m??E?A?.H??7H?M???????H?D$PL?l$H?D$8E3?H??TH?L$8虡???H?D$xL?l$p?D$`A?H??<H?L$`?n?????D$(?H?E?H?D$ L?L$8L?D$`?)???H?M??&?H????H?M???H?|$xr
H?L$`??!H?D$xL?l$p?D$`H?|$Pr
H?L$8??!H?D$PL?l$H?D$8H?}?r	H?M??!H?E?L?m??E??fW????J9K?2fD/?v
f/??!H?E?L?m??E?A?.H?y6H?M??x????H?D$PL?l$H?D$8E3?H?8SH?L$8?P????H?D$xL?l$p?D$`A?(H?';H?L$`?%?????D$(?H?E?H?D$ L?L$8L?D$`?)???H?M????H?????H?M???H?|$xr
H?L$`? H?D$xL?l$p?D$`H?|$Pr
H?L$8? H?D$PL?l$H?D$8H?}?r	H?M??k H?E?L?m??E????u	9K?ffD/??[f/??QfnG????AY??,?;?ufnG????Y??,?9C?!H?E?L?m??E?A?.H?5H?M??????H?D$PL?l$H?D$8E3?H??QH?L$8?۞???H?D$xL?l$p?D$`A?H??9H?L$`谞????D$(?H?E?H?D$ L?L$8L?D$`?/???H?M??h?H???Y?H?M??I?H?|$xr
H?L$`?>H?D$xL?l$p?D$`H?|$Pr
H?L$8?H?D$PL?l$H?D$8H?}?r	H?M???H?E?L?m??E????u?9Cu:fnO????Y?fW????-?fnO????AY?fW????-???K?.fDn??E??fnG????D^?fn{???fnG????^?D?A???D??SI???m???,???#H?E?L?m??E?A?.H?G3H?M??F????H?D$PL?l$H?D$8E3?H?PH?L$8?????H?D$xL?l$p?D$`A?"H??7H?L$`??????D$(?H?E?H?D$ L?L$8L?D$`?.???H?M???H????H?M???H?|$xr
H?L$`?H?D$xL?l$p?D$`H?|$Pr
H?L$8?\H?D$PL?l$H?D$8H?}?r	H?M??9H?E?L?m??E???t$ f(?fA(?I??H???????H???H3???L??$?A(s?A({?E(C?I??A]A\_^[]????????????????@UVWH??$`???H??H?E?????H??$?H?fn"H3?H???A?؉]?H??H??H?M?A??%?}?ȃ????3҃?u;??H?E(H?U ?UA?.H?h1H?M?g????H?E?H?E??E?E3?H?&NH?M???????H?EH?E??E?A?H??7H?M???????D$(?H?EH?D$ L?M?L?E?)???H??????H????H?????H?}r	H?M??H?E3?H?U??U?H?}?rH?M??3?H?E?H?U??E?H?}(rH?M?]3?H?E(H?U ?E???)?? H?EH?U??E?A?.H?60H?M??5????H?E?H?E??E?E3?H??LH?M??
????H?E(H?E ?EA?H??6H?M??????D$(?H?E?H?D$ L?M?L?E?)???H?????H????H????w?H?}(r	H?M?nH?E(3?H?U ?UH?}?rH?M??M3?H?E?H?U??E?H?}rH?M??+3?H?EH?U??E?H?NH?M??G9?G9F? H?EH?U??E?A?.H??.H?M???????H?E?H?E??E?E3?H??KH?M??Ҙ???H?E(H?E ?EA?,H?@5H?M觘????D$(?H?E?H?D$ L?M?L?E?)???H????^
?H???O
?H????<
?H?}(r	H?M?3H?E(3?H?U ?UH?}?rH?M??3?H?E?H?U??E?H?}rH?M???3?H?EH?U??E?H?GH?D$xH?NH?M?H?H9uTH?E?UH?U H?U(H?U0H?U8H?U@H?EP?UXH?UH????D??H??H?M?????H?M?x???D??A??A???A??E?øA??DD??????"D?D??I??A??3?H?FI??Ic?3?H??E??D??A??A???A??E??A???DD?????H???3?H?GH??Ic?3?H??E?A???DDًF@?A??H?3?I??E?A??DDɋG@?A??H?3?H??E?H?F8H?E?H?ExH?Ep?E`D?AH?&3H?M`蝖???H?D$@H?D$HH?D$PH?D$`H?u?H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
ME??6?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?M?H?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
?D??5?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?y???H?L$HH?L$pH?M?H??tH?H?qH?L$HH??H?L$HH?D$`H?t$xH?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?C??4?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@貫??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
RC?D4?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?#???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HA?L?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?B?{3?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Z???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?A??2?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?©??H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
(A?2?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?@??1?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?a???H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`L?E?L?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
????0?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@蘧??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?udL??L+?I??L;?vH?
/??!0?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?L?E?H?L$pH?L$xH??tL?	L?AH?L$HH??H?L$HL?E?I??L?E?L?L$`L?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
^>?P/?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?/???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?udL??L+?I??L;?vH?
?=??.?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@藥??H?L$HA?L?E?H?L$pH?L$xH??tL?	L?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?<??-?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Τ??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
e<?W-?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?6???H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?L$HH??H?L$HL?L$`H?E?H?D$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?;??,?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?p???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?u]H??I+?H??H;?vH?
;?,?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?	H?E?H?AH?D$HH?E???????ƒ??H?H??`H?E???????ƒ??H?H??hHDžpHDžxHDž?HDž??E?3ۃ???H?E(H?] ?]D?@
H?M'H?M?Ԋ???H?E?H?D$pH?E?H?]Ј]?I???E3?H?UH?M?藉???H?M????????ƒ??DЋ???D$8?T$0H?D$@H?D$(H??xH?D$ L??`L?E?H?\"H?M??????????H?E(H?] ?]D?@H??&H?M?????H?E?H?D$pH?E?H?]??E?I???E3?H?UH?M??܈???H?U??
??????????Dȋ???D$8?L$0H?D$@H?D$(H??xH?D$ L??`L?E?H?J["H?M??A??H?}(r	H?M?^
H?E(H?] ?E?H?EH?]??]?A?.H?GH?M??F????H?E?H?]??E?E3?H?	<H?M??"????H?E(H?] ?EA?H?D%H?M???????D$(?H?E?H?D$ L?M?L?E?.???H??????H?????H??????H?}(r	H?M?	H?E(H?] ?EH?}?r	H?M??g	H?E?H?]??E?H?}r	H?M??G	H?EH?]??E?H?|$@tH?L$@??(H?L$@?	H?\$@H?\$HH?\$PH?}xr	H?M`??H?ExH?]p?E`H???H3??	H??$?H?Ġ_^]????????????@USVWATAUAVAWH??$???H???H?E?????H?UZ"H3?H???
A??E??L??L??H?M?D?E?E3???hE??x??xD9?`|???H?E8L?u0D?u A?.H?OH?M ?N????H?E?L?u??E?E3?H?:H?M??*????H?E?L?u??E?A?2H??&H?M???????D$(H?E H?D$ L?M?L?Eغ)???H??????H?????H??????H?}?r	H?M??H?E?L?u??E?H?}?r	H?M??oH?E?L?u??E?H?}8r	H?M ?OH?E8L?u0?E D?U?M?}A?EH??pA9uA?EDA9E?2@???(??? ???H?E?L?u??E?A?.H??H?M???????H?E?L?u??E?E3?H??8H?M??ׅ???H?E8L?u0?E A?H???H?M 谅????D$(H?E?H?D$ L?M?L?E ?????H????g??H???X??H????E??H?}8r	H?M ?<H?E8L?u0?E H?}?r	H?M??H?E?L?u??E?H?}?r	H?M???H?E?L?u??E?D?U?????t	???:A?D$;?`|;?|A?D$A;?|;??H?E?L?u??E?A?.H??H?M?谄???H?E?L?u??E?E3?H?s7H?M?茄???H?E8L?u0?E A?VH??#H?M ?e?????D$(H?E?H?D$ L?M?L?E ?)???H??????H???
??H???????H?}8r	H?M ??H?E8L?u0?E H?}?r	H?M???H?E?L?u??E?H?}?r	H?M??H?E?L?u??E?D?U????:A?D$;?`~;?~A?D$A;?~;??H?E?L?u??E?A?.H?nH?M??m????H?E?L?u??E?E3?H?06H?M??I????H?E8L?u0?E A?RH?"H?M ?"?????D$(H?E?H?D$ L?M?L?E ?)???H???????H??????H??????H?}8r	H?M ?H?E8L?u0?E H?}?r	H?M??H?E?L?u??E?H?}?r	H?M??nH?E?L?u??E?D?U?I?D$H?EHI?L$H?M?E?$A???D?D?`DNjA??I???3?A?$?????????D?ϸ??DDȃ???A?"D?E??I??A??3?I?D$I??Ic?3?H??E?E?ME??A??A???A??E??A???DD?A??B??I??A??3?I?EI??Ic?3?H??E???A?AD??A?P?A??H??$?????????????????Hc?IcD$@3?H??E?A??ED?C?	I??A?Ȁ?B???????????????Hc?IcE@3?H??E?D?u??E??E??E?D?U?H???H?E?H???H?E?H??H?E?H??H?E?H??H?E?I??f?9t??t	H??H??r?H???
H?EhL?u`?EPD?C)H??H?MP蓀???H?E?L?u??E?E3?H?V3H?M??o????H?E8L?u0?E D?CH???H?M ?J?????D$('H?EPH?D$ L?M?L?E ?S?H??????H??????H???????H?}8r	H?M ??H?E8L?u0?E H?}?r	H?M??H?E?L?u??E?H?}hr	H?MP?H?EhL?u`?EPHDž?L???ƅ?A?H?\H????x???HDž?
HDž?
HDž?
IcH??H???H??p
M?uIcH??H???H??x
HDž?
H?D$PH?D$XH?D$`I??H?E?L?e?H?U?H?D$PH?L$XH;???H?U?H;???L?e?L+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?-???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P誕??H?L$XH?D$PI???L?H?L$xH?L$pH??tI?$H?I?D$H?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
1-?#?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?L?aH?L$XH??H?L$XM?eH?E?L?e?H?U?H?D$PH;???H?U?H;???L?e?L+?H?T$`H;?u_L??L+?I??L;?vH?
o,?a?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?@???H?L$XH?D$PI???L?H?L$pH?L$xH??tI?$H?I?D$H?A?~H?T$`H;?uZL??L+?I??L;?vH?
?+???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P诓??H?L$XH?L$pH?L$xH??tH?L?aH?L$XH??H?L$XA?L?E?L?}?H?U?H?D$PH;???H?U?H;???L?e?L+?H?T$`H;?ueL??L+?I??L;?vH?
+??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?I???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$`H;?u`L??L+?I??L;?vH?
?*?v?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U???H?L$XA?H?L$pH?L$xH??tL?L?yH?L$XH??H?L$XL?E?L?u?H?U?H?D$PH;???H?U?H;???L?e?L+?H?T$`H;?u_L??L+?I??L;?vH?
?)???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P虑??H?L$XH?D$PI???L?H?L$pH?L$xH??tI?$H?I?D$H?A?H?T$`H;?u`L??L+?I??L;?vH?
4)?&?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?L?qH?L$XH??H?L$XA?L?u?L?eHL?e?H?U?H?D$PH;???H?U?H;???L?e?L+?H?T$`H;?u_L??L+?I??L;?vH?
n(?`?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PI???L?H?L$pH?L$xH??tI?$H?I?D$H?A?zH?T$`H;?uZL??L+?I??L;?vH?
?'???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P讏??H?L$XH?L$pH?L$xH??tL?1L?aH?L$XH??H?L$XL?u?L?e?L?e?H?U?H?D$PH;???H?U?H;???L?e?L+?H?T$`H;?u_L??L+?I??L;?vH?
#'??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PI???L?H?L$pH?L$xH??tI?$H?I?D$H?A?zH?T$`H;?uZL??L+?I??L;?vH?
?&???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c???H?L$XH?L$pH?L$xH??tL?1L?aH?L$XH??H?L$XL?u?H?E?H?E?H?E?L?D$PH;???H?E?L;???L?e?M+?H?T$`H;?u\H??I+?H??H;?vH?
?%???H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P謍??H?L$XL?D$PI???H?L$pH?L$xH??tK?H?K?DH?A?{H?T$`H;?uWH??I+?H??H;?vH?
M%???H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?!???H?L$XH?L$pH?L$xH??tL?1H?E?H?AH?D$XL?u?H?E?H?E?H?U?H?L$P貑??L?u?H?E?H?E?H?U?H?L$P蘑??L?u?H?E?H?E?H?U?H?L$P?~???L?u?H?E?H?E?H?U?H?L$P?d???L?u?H??`H?E?H?U?H?L$P?G???E?]A?Ã????/H?H?C?????t?
H???H??xfW???-?A??A;?w?U?3???AO??EfW??A?-?A;?w?U?3???AO??EfW??A?-?A;?w?U?3???AO??EfW??A?-?A;?w?M?3???AO??EA??A???A??A??ED?A???YA???H?E?E3?L?m?D?m?E?E.H?
H?M??t???H?E8L?m0D?m E3?H??&H?M ??s???H?EhL?m`D?mPE?EH??H?MP??s????D$(^H?E?H?D$ L?M L?EP?.???H??????H???z??H????g??H?}hr	H?MP?^?H?EhL?m`?EPH?}8r	H?M ?>?H?E8L?m0?E H?}?r	H?M???H?E?L?m??E??H??L?D??H???
?
L?u?H?EH?E?H?U?H?L$P?????mL?D??H?wH???
??H?E?H?EH?E?H?U?H?L$P?܎??A?E@?+A??!A?H?H????r??A???????Hc?L???
J?D?3?I??I??H??p
??H??x?,?E?,A?E?,A?E?,A?EA??A???A??A??ED?A????A???qHDž?E3?L???D???E?E.H??H?????q???HDžXL??PD??@E3?H??$H??@?q???HDž`L??XD??HE?EH?GH??H?{q????D$(qH???H?D$ L??@L??H?.???H????)??H?????H??????H??`rH??H???HDž`L??XƅHH??XrH??@???HDžXL??Pƅ@H???rH?????HDž?L???ƅ??
H???n???L?D??H??H???
?qH?E??^???H??xfW???D-????E3?D;?wfD?E?A??E??fO?f?EfW??B?D-?D;?wfD?E?A??E??fO?f?EfW??B?D-?D;?wfD?E?A??E??fO?f?EfW??B?-?;?wf?U?
A?Ņ?fO?f?EA??A???A??A??ED?A????A???rHDž?L???ƅ?A?.H?kH????go???HDž?L???ƅ?E3?H?!"H????7o???HDž?L???ƅ?A?H??
H????o????D$(?H???H?D$ L???L????.???H??0???H?????H??0???H???rH?????HDž?L???ƅ?H???rH????R?HDž?L???ƅ?H???rH????#?HDž?L???ƅ??
L?D??H?CH???
?H?E??!L?D??H?H???
??H?E?H?EH?E?H?U?H?L$P?????E
L??xfW??A?D-?A??????????A??;?wfD?M???E??fAO?f?EfW??A@?D-?A???;?wfD?M???E??fAO?f?EfW??A@?D-?A???;?wfD?M???E??fAO?f?EfW??A@?D-?A???;?wfD?E?E??fAO?f?UA??A???A??A??ED?A????A???qHDž?E3?L???D??pE?E.H??H??p?l???HDžHL??@D??0E3?H?VH??0?ll???HDž8L??0D?? E?EH?H?? ?;l????D$(?H??pH?D$ L??0L?? ?.???H???????H??????H???????H??8rH?? ??HDž8L??0ƅ H??HrH??0??HDžHL??@ƅ0H???rH??p?Z?HDž?L???ƅp??H?O	L?D??H???
?=
H?E??*???L?D??H?	H???
?
H?E?????H??xfW???-??EfW??A?-??EfW??A?-??EfW??A?-??EA??A???A??A??ED?A????A????A???qHDž?E3?L???D???E?E.H?kH????gj???HDž?L???D???E3?H?!H????7j???HDž?L???D???E?EH??H????j????D$(?H???H?D$ L???L????.???H??`???H?????H??`???H???rH?????HDž?L???ƅ?H???rH????T?HDž?L???ƅ?H???rH????%?HDž?L???ƅ??H??L?D??H???
?H?E??????L?D??H??H???
??
D?]D?]H?E?ELH?E?H?EH?????H?\????H??x?Z?E?ZH?M?Z@?E?ZH?MA??A???A??A??ED?A????A???qHDžE3?L??D???E?E.H?9?H????5h???HDž?L???D???E3?H??H????h???HDžL??D???E?EH??H?????g????D$(?H???H?D$ L???L????.???H?????H???s??H???`??H??rH????Q?HDžL??ƅ?H???rH????"?HDž?L???ƅ?H??rH??????HDžL??ƅ??tH?p?????H?L????H??x??E?H?M?@?E?H?MA??A???A??A??ED?A????A???qHDž?E3?L???D???E?E.H?Y?H????Uf???HDž?L??xD??hE3?H?H??h?%f???HDž0L??(D??E?EH??H????e????D$(?H???H?D$ L??hL???.???H???	???H?????H???	???H??0rH???q?HDž0L??(ƅH???rH??h?B?HDž?L??xƅhH???rH?????HDž?L???ƅ??L?D??H?SH???
??H?E? ?????H?????HDž?E3?L???D?mxE?E.H???H?Mx?d???HDžpL??hD??XE3?H?rH??X?d???HDž L??D??E?E
H??H???Wd????D$(?H?ExH?D$ L??XL???.???H??????H??????H???????H?? rH?????HDž L??ƅH??prH??X??HDžpL??hƅXH???r	H?Mx?|?HDž?L????Ex?E3?H?ExH?D$pHDž?L????ExI???E3?H???H?Mx?=b???H???
H?D$@?D$8?????D$0????H?D$PH?D$(H???
H?D$ L??p
L?ExH??4"H?M?H?I8???H?|$PtH?L$P??H?L$P??L?l$PL?l$XL?l$`H???rH?????HDž?L???ƅ?H???
H3??@?H???A_A^A]A\_^[]??
??
??
(?
??
1?
?
@USVWATAUAVAWH??$????H??H?E?????H??4"H3?H??Ic?I??L??L?????????¾??D?A???%?????D?E3?;??	H?E?L?e?D?e?D?F*H???H?M???a???H?E L?eD?eE3?H??H?M?a???H?E?L?e?D?e?D?F$H??jH?M??|a????D$(0H?E?H?D$ L?ML?E?)???H?M`?6??H???'??H?M`???H?}?r	H?M???H?E?L?e??E?H?} r	H?M???H?E L?e?EH?}?r	H?M????H?E?L?e??E?A?????A?"D?E??I??A??3?I?GI???E?A?????I??A??3?I?FI??E?I?w8H?u?HDž?L???ƅ?A?H??H????e`???HDž?L???ƅ?A?H?ZH????2`???HDž?L???ƅ?A?H?H?????_???H??L??̀H???H?M0??i???3?I?O8?FVH?΄?????H??H?E?H?D$ E3?A?QE?A0??H?E??M???t!?*~??H??L?
nA??H?{?螁??H???H??L?d$@L?d$8D?d$0H?\$(H?D$ 0E3?E?AH?U???????????}??A?@???Z??0?ZK??4?ZC??8?ZK??<?ZC ??@?ZK(??D??H??H?E?H?D$ E3?A?QE?A??H?E?H????H??L?d$@L?d$8D?d$0H??0H?D$(H?D$ E3?E?AH?U??????t#???}??A?KL?
AH?T?H???t???A?A??uG??tBM?fA?N@???}?Ƀ????A?$?D??????Hc?H?M?3?H??I??H??t%H?H?M?fIc$H?E?Ic$?tH??H??H??M?nMcE3?I??I??H??tL?@I??H??HL??PHDžXL??`L??hHDžpH?D$PH?D$XH?D$`I?_H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
A?3?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?t??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
????
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ns??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?r??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
K
?=?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?r??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?_A?L?L$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
?	?v?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Uq??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P??p??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XI?_L?L$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
.? ?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P??o??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?lo??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XL?L$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
????
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
I?;?
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n??H?L$XA?H?M?H?M?H??tL?	L?aH?L$XH??H?L$XL?L$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??|?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[m??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P??l??H?L$XA?H?M?H?M?H??tL?	L?iH?L$XH??H?L$XL?L$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
4?&?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
????
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ok??H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XL?L$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
????
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
A?3?
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?j??H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XI?_@L?L$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
z?l?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Ki??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?h??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XI?^@L?L$pH?\$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
$??
?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P??g??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?{H?T$`H;?u]H??I+?H??H;?vH?
??
???
?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$P?og??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?D$pH;?s[H?T$pH?D$PH;?wLH?\$pH+?H;L$`u?H?L$P?Ik??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?7H;L$`u?H?L$P?k??H?L$XH?M?H?M?H??tH?H?E?H?AH?D$X?H?t$pH?E?H?D$xH?T$pH?L$P??H?E?L?e??E?A?????A?"D?E??I??A??3?I?GI???E?A?????I??A??3?I?FI??E?I?w8H?u?HDž?L???ƅ?A?H??H?????K???HDž?L???ƅ?A?H???H????K???HDž?L???ƅ?A?H???H????oK???H??L??͐H???H?M0?RU???3?I?O8?AH?΄????6H??H?E?H?D$ E3?A?QE?AH?p?H?E??M???t!?i??H??L?
??
A??H????m??H????H??L?d$@L?d$8D?d$0H?\$(H?D$ HE3?E?AH?U??????9???7i??A????Z??0?ZK??4?ZC??8?ZK??<?ZC ??@?ZK(??D?ZC0??H?ZK8??L?ZC@??P?#H??H?E?H?D$ E3?A?QE?A$?]?H?E??M???t!?h??H??L?
??
A??H?????k??H????H??L?d$@L?d$8D?d$0H??0H?D$(H?D$ $E3?E?AH?U??????t#???!h??A??L?
b?
H?u?H???k??A?A??uF??uBM?fA?N@???}?Ƀ????A?$?D??????Hc?H?M?3?H??I??H??t%H?H?M?fIc$H?E?Ic$?tH??H??H??M?nMcE3?I??I??H??tL?@I??H??pL??xHDž?L??XL??`HDžhH?D$PH?D$XH?D$`I?_H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
c?
?U?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?4_??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?^??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??]??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
m?
?_?
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?>]??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?_A?L?L$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w\??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
?
??
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P??[??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XI?_L?L$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
P?
?B?
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?![??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Z??H?L$XA?H?M?H?M?H??tL?	H?YH?L$XH??H?L$XL?L$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P??Y??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
k?
?]?
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH?D$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
5?
?'?
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?>??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
??
???
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?t=??H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?D$@H?EH?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
??
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w
?0h
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?v
??g
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^@H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?u
??f
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
Yu
?Kf
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?*???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`I?_H?\$hH?D$`H;???H?D$`L?D$@L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?t
??e
?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?f???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?5H;L$Pu?H?L$@?q???H?L$HH?L$pH?L$xH??tH?H?YH?D$HI?GH?D$`H?D$hH?T$`H?L$@????H?D$`H???H?D$hH?T$`H?L$@????H?D$`H???H?D$hH?T$`H?L$@?c???H?D$`H???H?D$hH?T$`H?L$@?????H?D$`H???H?D$hH?T$`H?L$@????L?]?L?\$pH?E?3?H?]??]?D?CH??hH?M????????D$8?????D$0????H?D$@H?D$(H???H?D$ L??L?E?H???!H?M??;-?H9\$@tH?L$@? d
H?L$@?LDH?\$@H?\$HH?\$PI???7(?I???.(H?? H3???DH??8A_A^A]A\_^[]????????????@USVWATAUAVH??$????H??H?D$P????)?$H???!H3?H???E??M??L??H??H??x3?H9q?H?E?H?u?@?u?D?F.H??XH?M??????H?E?H?u?@?u?E3?H?du
H?M??}????H?D$pH?t$h@?t$XD?FH??fH?L$X?T?????D$(HH?E?H?D$ L?M?L?D$X?V?H?M ?7?H???7?H?M ??6?H?|$pr
H?L$X??BH?D$pH?t$h?D$XH?}?r	H?M???BH?E?H?u??E?H?}?r	H?M??BH?E?H?u??E???u??%?????? ???H?D$pH?t$h?D$XA?.H?jWH?L$X?h????H?E?H?u??E?E3?H?+t
H?M??D????H?E?H?u??E?A?*H?neH?M???????D$(KH?D$XH?D$ L?M?L?E??.???H?M ??5?H????5?H?M ?5?H?}?r	H?M??AH?E?H?u??E?H?}?r	H?M??AH?E?H?u??E?H?|$pr
H?L$X?lAH?D$pH?t$h?D$XA?D?G?WI???V*A?D?G?WI???A*?u?C?D$@d?D$HH?CH?L$H?8HM?H?D$@?9dHN??0fW??D$@H?Cf/vH?D$@?Z0H?E?H?D$@H?E?H?D$HI??H?M??ܥ??H??I??H?M??ͥ????t$0?t$(??p?T$ E??L??H??H???w???H???H3??HA(?$H??A^A]A\_^[]???????????????H??UATAUAVAWH?h?H??@H?E?????H?XH?pH?x H?ޑ!H3?H?E0L??L??L?y8D?)A??H?E?3?H?]?]?D?C
H??dH?M??????H?EH?E H?E(H?EH?EH?EA?$??%???A???AD?A?L$??A?T$@?U?I?FH???E???|???؃??E?ЉU?+ȋ??+ΉM???M???]?H?]H?\$@H?\$HH?\$PH????????I????????H?EH????
D?E?A??D?E?Ic?3?H??U??E??}?I?D$H???E?A?D$A???E?I?\$H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H?T$PH;?uoL??L+?I??M;?vH?
?l
??]
?I??H+?H??L;?vCH??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@I????????A?H???H?H?L$xH?L$pH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??M;?vH?
Cl
?5]
?I??H+?H??L;?v>H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HI????????A?H?L$pH?L$xH??tH?H?YH?L$HH??H?L$HL?T$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??M;?vH?
pk
?b\
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?A???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
?j
??[
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HL?T$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uiL??L+?I??I????????M;?vH?
j
??Z
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
ii
?[Z
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?:???H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uiL??L+?I??I????????M;?vH?
?h
??Y
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?c???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?udL??L+?I??I????????M;?vH?
?g
??X
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HA?L?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uoL??L+?I??I????????M;?vH?
#g
?X
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
?f
?sW
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?R???H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HL?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uoL??L+?I??I????????M;?vH?
?e
??V
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
e
??U
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HL?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uoL??L+?I??I????????M;?vH?
9d
?+U
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?
???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
?c
??T
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?h???H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HL?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uoL??L+?I??I????????M;?vH?
?b
??S
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
"b
?S
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HL?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?uiL??L+?I??I????????M;?vH?
Oa
?AR
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@? ???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?ujL??L+?I??I????????M;?vH?
?`
??Q
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?D$HH?E?H?D$pH?E?3?H?]??]?I???E3?H?U?H?M??˯???D?l$8?D$0????H?D$@H?D$(H?EH?D$ L?ML?E?H?C?!I???S?}?u???YA?H?8VH?M?????E?\$@D?]?H?EH?E ?E??H?H?EI?t$HcH?H%???H?EH?L$HH?D$@H;?HE?H?L$HI?\$H?D$`H?\$hH?T$`H;???H?T$`H;???H?\$`H+?H?T$PH;?uiL??L+?I??I????????M;?vH?
_
??O
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?udL??L+?I??I????????M;?vH?
p^
?bO
?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?A???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?ufH??I+?H??I????????I;?vH?
?]
??N
?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?r???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?uaH??I+?H??I????????I;?vH?
]
??M
?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?YH?D$HH?D$`H?E?H?D$hH?T$`H?L$@?d???M?^H?D$`L?\$hH?T$`H?L$@?C???H?D$`H?E?H?D$hH?T$`H?L$@?"???H?D$`H?E?H?D$hH?T$`H?L$@????H?D$`H?t$hH?T$`H?L$@?????H?D$`H?E?H?D$hH?T$`H?L$@?????L?]?L?\$pH?E?3?H?]??]?I???E3?H?U?H?M??e????D?l$8?D$0????H?D$@H?D$(H?EH?D$ L?ML?E?H??}!I?????H?|$@tH?L$@??L
H?L$@??,H?\$@H?\$HH?\$PH?}?r	H?M???,H?E?H?]??E?H?M0H3??-L??$@I?[8I?s@I?{HI??A_A^A]A\]????H??UWATAUAVH?h?H?? H?E?????H?XH?pH?3~!H3?H?EL??H??L?i8H?E?E3?L?u?D?u?E?F
H?dQH?M??[????H?E?H?E?H?E?H?E?H?EH?EH?CH???D$xL?t$@L?t$HL?t$PH??H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
?Y
??J
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?M?H?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
5Y
?'J
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?M?H??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
mX
?_I
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?=???H?L$HH?D$@H???H?H?L$pH?M?H??tH?H?H?CH?A?~H?T$PH;?u[L??L+?I??L;?vH?
?W
??H
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@访??H?L$HH?L$pH?M?H??tH?H?YH?L$HH??H?L$HH?D$`H?D$xH?D$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
W
?H
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?M?H??tJ?H?J?DH?A?H?T$PH;?uXH??I+?H??H;?vH?
?V
?zG
?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?[???H?L$HH?L$pH?M?H??tH?H?D$xH?AH?D$HH?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M?襥????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H?x!I???*?H?|$@tH?L$@?G
H?L$@?:'L?t$@L?t$HL?t$PH?}?r	H?M??'H?E?L?u??E?H?MH3???'L??$ I?[8I?s@I??A^A]A\_]??????@UVWH??$????H??H?E?????H??$@H?vx!H3?H??H??H??3????	H?E?H?u?@?u?D?F.H??;H?M?蔥???H?EH?u@?uE3?H?WX
H?M?p????H?E?H?u?@?u?D?FH??KH?M??K?????D$(?H?E?H?D$ L?ML?E??)???H?M0??H?????H?M0???H?}?r	H?M???%H?E?H?u??E?H?}r	H?M?%H?EH?u?EH?}?r	H?M??%H?E?H?u??E??D?JA?H???H?t$0?t$8H?t$@H?t$HH?t$PH?t$XH?t$`H?t$p?t$x?A?D??H?L$0?E?fW??E??E??E??E?H?u??u?H?u?H?u?H?u?H?u?H?u?H?u??u?L?E?H?U?H?L$0踂?H?M???H?T$0H??????H??H?L$0?$????H?L$0?H??H3??z%H??$@H??_^]????????@UVWATAUAVAWH??$@???H???H?EX????H??$H?v!H3?H???L??L??E3?D?A?QI???L
E3?L?}?D?}?L?}?L?}?L?}?L?}?L?}?L?}?D?}?A?WE?OA?H?M??
?H?U?I??????M?t$8H?ExL?}pD?}`E?GH?qIH?M`?????HDž?HDž?HDž?HDž?HDž?HDž?L?}?D?}?L?}?L?}?L?}L?}L?}L?} D?}(E3?A?WA?H?M??[?L?|$@L?|$HL?|$PA?D$A?D$?D$xH?D$`H?E?H?D$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
Q
?
B
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?M?H?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
rP
?dA
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?B???H?L$HH?L$pH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?O
??@
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?w???H?L$HH?D$@H???H?H?L$pH?M?H??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
O
?@
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?M?H??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?D$xH?D$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
IN
?;?
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?M?H??tJ?H?J?DH?A?H?T$PH;?uXH??I+?H??H;?vH?
?M
??>
?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@莵??H?L$HH?L$pH?M?H??tH?H?D$xH?AH?D$HH?E0H?D$pH?EHL?}@?E0I???E3?H?U`H?M0?؜????D$8?????D$0????H?D$@H?D$(H???H?D$ L???L?E0H?Go!I???WM??H?U?I???o???H?|$@tH?L$@?,>
H?L$@?XL?|$@L?|$HL?|$PH?M??B?H?}xr	H?M`?/H?ExL?}p?E`H?M??H???H3???H??$H???A_A^A]A\_^]???????????????@UVWATAUAVAWH?l$?H??0H?E?????H??$pH?qo!H3?H?E(Mc?L??L??D?E?L???A??E?A?@?E?E3?L?|$PL?|$XL?|$`H?YH?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
cK
?U<
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?3???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
?J
??;
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P莲??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?I
??:
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?ȱ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
jI
?\:
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?:???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?H
??9
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?s???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
H
?9
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
OG
?A8
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??L;?vH?
?F
??7
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P葮??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?E
??6
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?˭??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
jE
?\6
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?:???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
?D
??5
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?p???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
D
?5
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?߫??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??L;?vH?
BC
?44
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??L;?vH?
?B
??3
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P聪??H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XH?D$pH???H?D$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u]H??I+?H??H;?vH?
?A
??2
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P贩??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?H?T$`H;?uXH??I+?H??H;?vH?
TA
?F2
?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P?'???H?L$XH?M?H?M?H??tH?H???H?AH?D$XH?E?L?}??E?A?H?`8H?M?臑???H?E? H?EH?EHcE?H??H?EI??H??H?EH?E 3??X H?E?L?}??E?I???E3?H?U?H?M???H?E?H?E?t??????BH??H??7H?D$@???????#H??L?E?H?Ub!???H??H???%??H????
??t#???P???H??L?
?C
A?H??&?IJ??D??H?J7H?#e!H????2
L?]?L?]?H?E?L?}??E?I???E3?H?U?H?M??N?????H??H?\$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?ML?E?H??a!????H?}?r	H?M???H?E?L?}??E?H?|$PtH?L$P??0
H?L$P?L?|$PL?|$XL?|$`H?M(H3??pH??$pH??0A_A^A]A\_^]??????D?L$ UVWATAUAVAWH?l$?H?? H?E?????H??$hH?
b!H3?H?EM??L??L??L???A??E?A?A?E?E3?L?|$@L?|$HL?|$PH?yH?D$`H?|$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?|$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
>
??.
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?ӥ??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?GH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
\=
?N.
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?,???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?|$H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?<
??-
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?c???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
<
??,
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?ӣ??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
;;
?-,
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
?:
??+
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?{???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?~H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?9
??*
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@賡??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
S9
?E*
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?#???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?|$H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?8
?|)
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?Z???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
?7
??(
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?ʟ??H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HI?}H?D$`H?|$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
27
?$(
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
?6
??'
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?r???H?L$HH?L$pH?L$xH??tH?H?yH?L$HH??H?L$HM?nH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?5
??&
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@誝??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
J5
?<&
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HM?fH?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?4
?t%
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?R???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
?3
??$
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?›??H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
*3
?$
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
?2
??#
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?g???H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?ExH?D$hH?T$`H?D$@H;???H?T$`H;???H?|$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?1
??"
?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@蛙??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?GH?A?H?T$PH;?u[L??L+?I??L;?vH?
81
?*"
?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?ExH?AH?L$HH??H?L$HH?D$`H???H?D$hH?D$`L?D$@H;???H?D$`L;???H?|$`I+?H?T$PH;?u]H??I+?H??H;?vH?
i0
?[!
?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@?w???L?]?L?\$hL?m?L?u??D??A??A???A??A???A??DÃ??A?P?E??I??A??????????%???A????Hc?3?H?GH??E?A??DD?B????????%???A????Hc?HcG@3?H??D$|?M?????????ƒ?DӃ??I??A?ʀ????????????????Hc?3?H?EH??D$x??E??~-I??????fn?????AY??	??Z????H??A;?|֋t$tD??A??3??|$pD;???fff?????;??yfAn?????Y??fn?????Y??X????fn????f/?w/!H3?H??0M??M??H??H?U?L??L?M?H???H?E????3?<?	H?E?H?}?@?}?D?G.H?C?
H?M??B\???H?EH?}@?}E3?H?
H?M?\???H?E?H?}?@?}?D?GH??H?M???[????D$(H?E?H?D$ L?ML?Eغ)???H?M0???H?????H?M0???H?}?r	H?M???H?E?H?}??E?H?}r	H?M?k?H?EH?}?EH?}?r	H?M??K?H?E?H?}??E????<?
H?E?H?}??E?A?.H?+?
H?M??*[???H?EH?}?EE3?H??
H?M?[???H?E?H?}??E?A?H??H?M???Z????D$(H?E?H?D$ L?ML?E??)???H?M0???H?????H?M0?z??H?}?r	H?M??q?H?E?H?}??E?H?}r	H?M?Q?H?EH?}?EH?}?r	H?M??1?H?E?H?}??E??{
?{?
H?E?H?}??E?A?.H??
H?M??
Z???H?EH?}?EE3?H??
H?M??Y???H?E?H?}??E?A?$H?sH?M???Y????D$(H?E?H?D$ L?ML?E??)???H?M0?|??H???m??H?M0?]??H?}?r	H?M??T?H?E?H?}??E?H?}r	H?M?4?H?EH?}?EH?}?r	H?M???H?E?H?}??E?E?A???M?oE?GA?UI?????A?D$A9GuA?D$A9E?
H?E?H?}??E?A?.H???
H?M???X???H?EH?}?EE3?H??
H?M?X???H?E?H?}??E?A?,H??
H?M??}X????D$(H?E?H?D$ L?ML?E??)???H?M0?7??H???(??H?M0???H?}?r	H?M???H?E?H?}??E?H?}r	H?M???H?EH?}?EH?}?r	H?M????H?E?H?}??E?A?$A3???
H?E?H?}??E?A?.H???
H?M??W???H?EH?}?EE3?H?l

H?M?W???H?E?H?}??E?A?H?g
H?M??^W????D$(H?E?H?D$ L?ML?E??)???H?M0???H???	??H?M0????H?}?r	H?M????H?E?H?}??E?H?}r	H?M???H?EH?}?EH?}?r	H?M???H?E?H?}??E?I?G8H?E?A?$????????????Dȃ??U?A?D$??ljE?E?D$HDžHDž HDž(????????Hc?H??H??A?@??????Hc?H??H??HDžH?|$@H?|$HH?|$PI?_H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
?
???	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?l??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
<
?.?	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?
l??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?]?H??H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
q
?c?	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Bk??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?
???	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?j??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?

??	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??i??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?
?}?	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?\i??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?
???	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?h??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
9
?+?	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?
h??H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HA?L?l$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
p?	?b?	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Ag??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
??	???	?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?f??H?L$HH?L$pH?L$xH??tL?)H?E?H?AH?L$HH??H?L$HI?_L?l$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?	??	?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@??e??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?wH?T$PH;?uWH??I+?H??H;?vH?
??	???	?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?ge??H?L$HH?L$pH?L$xH??tL?)H?YH?D$HL?l$`I?D$H?D$hH?T$`H?L$@??i??H?]?L?[L?l$`L?\$hH?T$`H?L$@??i??L?[L?l$`L?\$hH?T$`H?L$@?i??L?l$`H?CH?D$hH?T$`H?L$@?i??L?]?L?\$pH?E?3?H?]??]?I???E3?I??H?M??@L????E??D$8?D$0????H?D$@H?D$(H??H?D$ L??L?E?H?U?H?M??¶?H9\$@tH?L$@???	H?L$@???H?\$@H?\$HH?\$PI?~rI???I?FI?^A?H??0H3??h?H??$?H??@A_A^A]A\_^]??????????????@USVWATH??$@???H???H?D$8????H?
!H3?H???I??H??H?ً??E3?<?H?D$XL?d$PD?d$@E?D$.H? ?
H?L$@?L???H?E?L?d$xD?d$hE3?H???	H?L$h??K???H?E?L?e?D?e?E?D$H?Z?
H?M???K????D$(:H?D$@H?D$ L?L$hL?E??)???H?M????H???z??H?M??j??H?}?r	H?M??a?H?E?L?e??E?H?}?r
H?L$h?@?H?E?L?d$x?D$hH?|$Xr
H?L$@??H?D$XL?d$P?D$@???<?H?E?L?e??E?A?.H???
H?M???J???H?E?L?d$x?D$hE3?H???	H?L$h??J???H?D$XL?d$P?D$@A?H??
H?L$@?J????D$(;H?E?H?D$ L?L$hL?D$@?)???H?M??^??H???O??H?M?????H?|$Xr
H?L$@?4?H?D$XL?d$P?D$@H?}?r
H?L$h??H?E?L?d$x?D$hH?}?r	H?M????H?E?L?e??E??3??u?G?K9Cu	;O?H?E?L?e??E?A?.H???
H?M??I???H?E?L?d$x?D$hE3?H?|?	H?L$h?I???H?D$XL?d$P?D$@A?,H???
H?L$@?iI????D$(<H?E?H?D$ L?L$hL?D$@?)???H?M??!??H?????H?M????H?|$Xr
H?L$@???H?D$XL?d$P?D$@H?}?r
H?L$h???H?E?L?d$x?D$hH?}?r	H?M???H?E?L?e??E?D?A???D?C?SH??蚲H?E?L?e??E?A?H???
H?M??H???H?D$@H?D$0H?D$XL?d$P?D$@I???E3?H?U?H?L$@?AG???H??!H?D$ L?L$@L??H??H???a????H?}?r	H?M????H?E?L?e??E?H???H3???H???A\_^[]????@UH?l$?H???H?E7????3?H?E?E?H?E?H?E?H?EH?EH?EH?E'?E/H?E??E?H?E?H?E?H?E?H?E?H?E?H?E׉EߋE?D$8?Ew?D$0D?L$(D?D$ L?M?L?E??[S???H?M??A??H?M??7?H???]???????????????@UH?l$?H???H?E?????3?H?E?E?H?E?H?EH?EH?EH?EH?E/?E7H?E??E?H?E?H?E?H?E?H?E?H?E?H?E߉E?E?D$0D?L$(D?D$ L?M?L?E??vW???H?M?蜫?H?M?蒫H???]??????????@SH?? H?ٺH????>?H??H?? [?????????????̍D?D?™A???????H??A?L??H?%?	???????????????@SH?? H??A??H??L???
?H??H?? [????????????????H???????????H?H?@p?????????H?H?@x?????????3?H9A??????????????????????H?H???????????H?H??H???????H?H????????????H??(H?	H??t?F?	H??tL??H??A?H??(???????H??????????????HcAH?????????H?\$WH?? H??H?3?H;zsH?BH??H??u!?H??8Z$t???	H;xsH?@H??H??H?\$0H?? _????????????????H?H????????????H??????????????H?AH+H???????H?H???????????H?H??H???????H?H???????????H???????????????H;QsH9w??2???????????????????????????????H???????????????H??????????????H???????????????H?H9?????????H??????????????H;QsH9w??2?????????????????????????????????????????????H???????????????H;QsH9w??2?????????????????????????????????????????????H?????????????????????????????H???????????????3?H9????????H?\$WH?? A??H??H????Ɓ???????	H??t H?GH?{@H?{HH?C H?C(H?GH?CXH?C`H?????!Hǃ????H?\$0H?? _?????????H?\$WH?? H??H??H???g?	??tHǃ?H?\$0H?? _?H??H???H?\$0H?? _H?%*?	??L?A H???I9uH?ApH?QxI?H?A@H?H?AX+҉??????H?AI????????????H???????????????H?A????????????H?A????????????H?A????????????H???????????????H????????????H?H???????????H?H????????H?AH+H???????H??(H?
??	???	???????????????H???????????????H???&?????????H?QH?gfffffffH+H??H??H??H???H???????????????H?QH?gfffffffH+H??H??H??H???H???????????????H??(H?
?	??	???????????????H???????????????H????????????H?AH+H???????H???????????????H???V?????????3????D???u????t????t??????????????H??HH????H?AH????????????H?H????????????H??????????????H?fffffff??????H?AH+H???????H??(H?
?	??	???????????????H?H????????????H?A?xIufDH??H?@?xIt?H??????????????????H??xIu?H??H??xIt?H???H???????????????H????????????????????????????H?H????????????H??HH????H?H????????????H??HH????????????????????????????????H???????????????H???????????????H???????????????@WH??@H?D$ ????H?\$`H?t$hH??3?H?L$P???	?H?W!H?D$XH?
k?	?]?	H??H?H;xsH?HH??H?????3ۀx$t??	H;xs
H?@H??H??u`H?\$XH??uVH??H?L$X???	H???u$H??
H?L$(???	H?fMH?L$(?Ҿ?H?\$XH??!H?????	H??????H?L$P???	H??H?\$`H?t$hH??@_????????????????H???????????????H???????????????H???????????????H??HH?D$ ????3?H??tYH?3333333H;?wH??H??? ?H??u8H?D$PH?T$PH?L$(?J?	?H???	H?D$(H??KH?L$(???H??H???????????????H??HH?D$ ????3?H??tUH????????H;?wH??褽H??u8H?D$PH?T$PH?L$(???	?H?n?	H?D$(H?zKH?L$(?n??H??H???H??HH?D$ ????3?H??tYH?fffffffH;?wH??H???0?H??u8H?D$PH?T$PH?L$(?Z?	?H???	H?D$(H?KH?L$(????H??H???????????????H??HH?D$ ????3?H??tUH????????H;?wH??贼H??u8H?D$PH?T$PH?L$(???	?H?~?	H?D$(H??JH?L$(?~??H??H???H?UUUUUUU??????H?L???zItH?BH?H???H??xIu$H?H?yIufDH??H?I?yIt?I?I???H?R?zIuf?H?H9u
H?H?R?zIt?H?H?ȀxII??HD?I????????H???????????????H???????????????3???????????????H???????????????H?T$H??H?$????H?T$8H??tI?H??H???????????H???????????????H???????????????H???????????????3????????????????D$????????????D$???????????3????????????????D$???????????H?\$WH?? H+?I??H??H??H??H??L?????	H?;H?\$0H?? _?????????????????????H?\$WH?? H+?I??H??H??H??H??L?????	H?;H?\$0H?? _?????????????????????H??H?$????H?L$ H?L$0H??tH?H??H???????????H???????????????H???????????????H??tfff?I?H??H??H?A?u?????????????????H??tfff?I?H??H??H?A?u?????????????????H???????????????H??tfff?I?H??H??H?A?u?????????????????@SH?? H+?I??H??H??H??H??L???a?	H?H?? [?3???????????????@SH?? H+?I??H??H??H??H??L???!?	H?H?? [?3???????????????@SH?? H+?I??H??H??H??H??L?????	H?H?? [?H???????????????H???????????????H?H?A??AH??????????????????H???????????????H???????????????H???????????????H???????????????H??????????????̅?t=H?\$H?t$WH?? I??A??H???U??L??D??H??H???Y??H?\$0H?t$8H?? _???????????????H?AH+H???????H?AH+H?????????????????????H???????????????H???v?????????H?QH?gfffffffH+H??H??H??H???H???????????????H?QH?gfffffffH+H??H??H??H???H?????????????????????????????H???????????????H????????????H??(H?
5?	?'?	???????????????H??(H?
?	??	???????????????H?H????????????H?H????????????H??I??uH?yrH?	D??H?yrH?	A??H??T???H??????????????H?fffffff??????H?H????????????H?H????????????H?H????????????????????????????????????????H??HH?D$ ????3?H??tUH????????H;?wH???ĵH??u8H?D$PH?T$PH?L$(???	?H???	H?D$(H??CH?L$(莵?H??H???H??HH?D$ ????3?H??tYH?fffffffH;?wH??H???P?H??u8H?D$PH?T$PH?L$(?z?	?H??	H?D$(H?&CH?L$(???H??H????????????????D$????????????D$?????????????????????????H?\$WH?? H+?I??H??H??H??H??L?????	H?;H?\$0H?? _???????H???????????????H???????????????H???????????????H???????????????@SH?? H??ǁ?????H?IxH??t4迯??t#????Q??L?
?	H???
H??A???8U??H?CxH?KpH??t4?|???t#???Q??L?
??	H?Q?
H??A????T??H?CpH?? [??????????????H??XH?	3?H?IxH?D$@H?D$8?D$0L?D$(L?L$ D?@E3?????t#???Q??L?
[?	H???
H??A???T??H??X????@SH??0H?	H?D$@E3?H?IpH?D$ 藮?L$@H?؅?t$??P??L?
?	H???
H??A???5T??H??H??0[?????????????H?\$H?t$WH??0HcD$hH?	I??H?IpM??I??L?
????H??L?D$`Ic??(?,HcD$pIc???,E3?H?H?D$hH?D$ ????L$hH???t!?"P??L?
i?	H???
H??A???S??H?\$@H?>H?t$HH??0_????@SWH???H??!H3?H??$?H??$3?L?ڋ?$L??H??$I??H??$?H??$?M??H??$?H?|$pH?|$xH??$?H??$?H??$?HDŽ$?????L;?????$ ??H??t{H??$I?
H?|$hH?IxH?|$`?|$XH?\$PH?|$HH?D$@H?|$8L?D$0H??$?H?D$(H?D$pL??$?D?GI??H?D$ ?߬???H????N??A??? H??I?
H?|$@H?IxH?|$8E3ɉ|$0E?AI??H?\$(H?D$ ?c????????N??A????????L??$L;?t{??$ tqH??tkI?
H?|$hH?|$`H?Ix?|$XL?\$PH?|$HL?L$@H?|$8L?D$0H??$?D??H?D$(H?D$pL??$?H??H?D$ ?????th????M??A???CH??I?
H?|$@H?IxH?|$8E3ɉ|$0L?\$(E?AH??H?D$ 茫??t#???M??A??L?
??	H?s?
H???#Q??H??$?H3?裰H???_[??????????@SWH???H?o!H3?H??$?L??$Hc?$ H?	L??$H??3?I??3?HDŽ$?H??$?H?|$`H??$?H?|$X?|$PIc?3?H?|$HL?D$@I??H?|$8L?T$0H?D$xH??$H?T$pH??$?H??$H??$?H??$?H??$?H??$?H?IxH?D$(H?D$pL??$?L??I??H?D$ 胪??t#???vL??L?
??	H?@?
H??A????O??H??$?H3??j?H???_[?H??(?????t#???,L??L?
s?	H???
H??A???O??H??(????????????H?\$H?l$H?t$WH??`I??E3?H??H?D$PI??A?QL??H?D$ 萩?L$PH?؅?t!?K??L?
?	H???
H??A???.O??3?E3?H??H?D$@H?D$8?D$0D?@H??H?t$(H?|$ ?>???t#???gK??L?
??	H?1?
H??A????N??H?l$xH??$?H??H?\$pH??`_?H??????????????H?H9?????????3?H9????????@SUATH?? I??L??H??M??uL;AwI??H?? A\][?H?t$@H?|$HH?yL?l$PL;?svI+?L;?wn?I+?H?H?yrH??H???N?,L??I?????	H??H??t9f?L??I??H???n???tAA?$L+?J?|/?L?nI??L?????	H??H??u?H???H?|$HH?t$@L?l$PH?? A\][?H?{rH?H+?H???????????????H??????????????H?A????????????H?AH??????????H?AH??????????H?I?????????H?A????????????H?H???????????H?H????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????@SH?? ?AxH??t???	H?K H?	?]?H?C 3?H?H?C@H?H?CX?H?C(H?H?CHH?H?C`??cx?H?KpH?? [????????H?L$WH??0H?D$ ????H?\$HH??H???D?	?H???
H?ƃ?ƃ?H?????	H??t H?GH?OH?C H?C(H?{@H?{HH?KXH?K`H?????? ???Hǃ?H??H?\$HH??0_??????????@SH?? H??H???~?	???u2?H?? [È?H?? [????????H??(???[?	?????H??(?????????H??(?	?C?	?????H??(?????????????????????????????????????H??(H???H??t??	H??(??????H??(H???H??t???	H??(??????H?\$WH?? H????	H??t3H?GXH??HcH?G@H???	H;?sH?????	?H?\$0H?? _?H?H???P8?؃??u
?H?\$0H?? _?H???H???P ??H?\$0H?? _?@SH?? H???H??t(H?????P???tH????:?	??y	???H?? [?3?H?? [??????????????H?L?A?QH????????????????̋A?????????????H?A????????????L??H?I H?M???I;?tI?@pI?@XHcI?@@HI?PxL?	I?@@A??L?I?@XA+Ɂ???????????3?H?H?A?AH??Ë3????E???????H?\$H?t$WH?? ??H???~?	H??tPH?F H??H??i?	H;?s;???tH???V?	?@?;?u%H?FX?H?F@H?3????E?H?\$0H?t$8H?? _?H???H??tP???tKH???u@?????	???u H??H??????	H;?tH??@?;???????H?\$0H?t$8H?? _?H?\$0H?t$8???H?? _???@SH?? H??H???M??H????H??uM??uE?A?E3??[?	??usH??H?|$0H???ƃ???????	H??t H?GH?{@H?{HH?C H?C(H?GH?CXH?C`H?????? H?|$0???Hǃ?H??H?? [?3?H?? [?????????????H?\$WH?? H??H???????H??H???o?	??tHǃ?H?\$0H?? _?H??H???H?\$0H?? _H?%2?	??????????@WH??0H?D$ ????H?\$HA??L??H??H?????E????I???o?	H??H????ƃ?ƃ?H?????	L?_H?OL?[ L?[(H?{@H?{HH?KXH?K`H?????? ???Hǃ?H?T$@H?????	?H???????H??H???s?	??t
Hǃ??H???H???J?	?H?L$@H??t?)?	H??tL??H??A?H???3?H?\$HH??0_?????????????H??HH????H?H????????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?fffffff??????L?AL??H?gfffffffL+I??H??H??H???H?H?fffffffH??H??H+?H;?s
3?I;?IB?H???H?I;?IB?H???????????H?H????????????H???????????????H??HH?D$ ????3?H??tYH?3333333H;?wH??H????H??u8H?D$XH?T$XH?L$(??	?H???	H?D$(H??1H?L$(躣?H??H???????????????H??H?	?yIuMH?A?xIuH??yIu
?H??H?	?yIt?H?H???H?I?yIuH?AH9u
H?
H?I?yIt?H?
H??????H??HH?D$ ????3?H??tYH????????H;?wH????H??u8H?D$XH?T$XH?L$(?:?	?H???	H?D$(H??0H?L$(?ڢ?H??H???????????????H??HH?D$ ????3?H??tYH?fffffffH;?wH??H??萢H??u8H?D$XH?T$XH?L$(???	?H?Z?	H?D$(H?f0H?L$(?Z??H??H???????????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H9?????????H?H????????????H??HH????H?H????????????H??HH????L?BI?H?BI??xIuH?PH?BI?@H?AH;PuL?@I?L?B?H?BH;uL?I?L?B?L?@I?L?B???????????L?I?@H?I?@?xIuH?PH?BI?@H?AH;Pu
L?@I?PL?B?H?BH;Pu
L?@I?PL?B?L?I?PL?B???????H??HH?D$ ????3?H??tYH????????H;?wH??谠H??u8H?D$XH?T$XH?L$(???	?H?z?	H?D$(H??.H?L$(?z??H??H???????????????H?H9?????????H?H9?????????H?T$H??H?$????H?T$8H??tI?H??H???????????H?\$WH?? H+?I??H??H??H??H??L???
?	H?;H?\$0H?? _?????????????????????H?\$WH?? H+?I??H??H??H??H??L?????	H?;H?\$0H?? _?????????????????????H??H?$????H?T$(H?T$8H??tI?H??H???????????H?UUUUUUU??????@SH?? H???????H??H?? [??????????H?H?A??AH??????????????????H??(H??tH??L??3??˟H??(?????H??(H??tH??L??3?諟H??(?????H??(H??tH??L??3?苟H??(?????@SH?? H+?I??H??H??H??H??L?????	H?H?? [?@SH?? H+?I??H??H??H??H??L???a?	H?H?? [?@SH?? H+?I??H??H??H??H??L???1?	H?H?? [?H?H?A??AH??????????????????@SH??@H?D$ ????H?ٹP?ĝH??tH?SH?H?SH?PH?KH?Hf?@H?8H?D$XH?T$XH?L$(?Ͼ	?H?o?	H?D$(H?{+H?L$(?o??H??@[???H?yrH??H????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?H?H?????????H?AH?H????????H??????????????H??HH?D$ ????3?H??tYH????????H;?wH??谜H??u8H?D$XH?T$XH?L$(?ڽ	?H?z?	H?D$(H??*H?L$(?z??H??H???????????????H?H?H?????????H?AH?H????????H?fffffff??????H??HH?D$ ????3?H??tYH?fffffffH;?wH??H????H??u8H?D$XH?T$XH?L$(?*?	?H???	H?D$(H??)H?L$(?ʛ?H??H???????????????H?H????????????L?H????????????L?H????????????H?H9?????????H?H9???????????????????????H?\$WH?? H+?I??H??H??H??H??L???M?	H?;H?\$0H?? _????????D??D?????H??H??? ?D$0??? ?D$(H?D$pH?D$ ?????H??H????̋?? ??tH??? H?H?yxt
H?ypt??2??????????@WH?? L??H???3?H???H??L?I?I??H?? _????????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?H????????H?H???????????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?L$SH??0H?D$ ????H??H???
H??Axt?̷	L?[ I?膙H?C 3?H?H?C@H?H?CX?H?C(H?H?CHH?H?C`?H?Kp?cx?H??H??0[H?%??	????????8??????????@VH?? H?????	H??u	???H?? ^?H?FXH?\$0H??HcH?F@H?_?	H;?sH???Q?	H?\$0?H?? ^??Fx??H????	H????H????	H??H????	H;?wH????	H9FpvgH??H?|$8???	H9Fps
H?????	H?FpH?F H?~pH??H??ɶ	H?N H?H?N@+?H?H?FXH?Ή8???	H?|$8?H?\$0H?? ^Ã??H?\$0H?? ^??H?t$WH?? ??H???s?	H??trH?F H??H?\$0H??Y?	H;?H?\$0vS???tH???A?	@:x?t?Fxu9???H???q?	???tH????	@?8??H?t$8H?? _?3???H?t$8H?? _Ã??H?t$8H?? _???????H?\$H?l$H?t$H?|$ ATH?? A??I??L??H?????	H??tH???~?	H9Fps
H???o?	H?Fp?|$P@????H?????	H??????uH?F H?NpH+H??1??u@??uH?F H??H??K?	H+?H????t
H???	H?(H???
H?F H?H?FpH+?H;???H????	?+H??+??F?	@????H?????	H????H?F`H??Hc8H?FHH8H?F(H??Ĵ	H?N(H?H?NH+?H?H?F`?8?@??tH???j?	H??tq??uH?F H?NpH+H??+??uH?F H??H??;?	H+?H????t
H???	H?(H??x1H?F H?H?FpH+?H;?H????	?+H??+??v?	?H??t
H?p?	H?(H?\$0H?t$@H?|$H3?I?,$H?l$8I?D$A?D$I??H?? A\????????????????H?\$H?l$H?t$ ATH?? IchA??L??I(H???}?	H??tH???o?	H9Fps
H???`?	H?FpH?ݳ	H?|$0H;(??????H???e?	H????H????H?F H?8H?FpH+?H;???H???3?	?/H??+??m?	????H????	H????H?F`H??Hc8H?FHH8H?F(H???	H?N(H?H?NH+?H?H?F`?8?N??t?H?????	H??t1H??x,H?F H?H?FpH+?H;?H???p?	?+H??+???	?
H??	H?(H?|$0H?\$8H?t$H3?I?,$H?l$@I?D$A?D$I??H?? A\?@SUWH?? ?Ax??H??t6??	H??t+H?_pH?????	H;?sH?G`H?OHHcHH?H?G`+Ӊ???u
3?H?? _][?H???DZ	H??t2H?G`H??HcH?GHH???	H;?sH???-?	@?(??H?? _][??Gxt???H?? _][?H???v?	H??u3??H?G`HcH?G H+H?GHHH??H??H?? s? ?
H??t??????H+?H;?sH??u?H??t?H?t$@L?d$HL?l$PL?,H?O|I???J??H?O L?!H??H??tL??I??H??豒H??uNH?G(H?wpH?0H?GHH?0H?G`D?(H?G ?GxH?0H?G@tH?H?GX?0?H?0H?GX??L?t$XH??L??I+?H??M+?HGpH?G(H??m?	H?O(I?I+?H?H?H?OHH???+?H?G`A͉?GxtH?G H?0H?G@H?H?GX?0?/H??? ?	H??H?X?C?	H?W H?2H?W@I?H?H?WX+؉L?t$X?GxL?l$PH?t$@tI??裑?OxH???`?	L?d$H@?(??H?? _][???????H?\$WH?? ??H????????tH???]?H??H?\$0H?? _??H?J??H??H?
???H?H????????????H?H?H?????????H?AH?H????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????L?AL??H?gfffffffL+I??H??H??H???H?H?fffffffH??H??H+?H;?s
3?I;?IB?H???H?I;?IB?H???????????@SH??@H?D$ ????H??H?A?P?\?H??t,H?CH?H?CH?@H?CH?@H?C?@HH?C?@IH???8H?D$PH?T$PH?L$(?Z?	?H???	H?D$(H?H?L$(????H??@[??????????????H??H?	?yIuMH?A?xIuH??yIu
?H??H?	?yIt?H?H???H?I?yIuH?AH9u
H?
H?I?yIt?H?
H??????H?H?H?????????H?AH?H??????????????????????L?H????????????H?H?H?????????H?AH?H??????????????????????H?\$H?l$VH?? I??H??H??H?ApD?IxM????A??A????H??|I??H?|$0?4??L??H??H??H??觎?CxL?7L?[puH?K H?9H?K@H?9H?CX?0?Cx?uG?H?C(H??H?8H?CHIE?H?H?C`+??H?ˉ0???	H??uH?C H?8H?C@H?H?CX?8?KxH?|$0H?\$8H?l$@H?? ^???????????H?H9?????????H?J??H??H?
???H?J??H??H?
???L??H?	?yIH?
uKH?A?xIuL?A?xIu
I??M?A?xIt?I?H???H?I?yIuH?AI9u
I?	H?I?yIt?I?	H?????L?H????????????L?H????????????H?H9?????????H?H9?????????H??(H??tH??L??3??+?H??(?????H??H?$????H?T$(H?T$8H??tI?H??H???????????H??(H??tH??L??3??ۍH??(?????H??(H??tH??L??3?軍H??(?????@SH?? L+?I??I??J??L???ǭ	H?H?? [???????@SH?? L+?I??I??J??L?????	H?H?? [???????@SH?? L+?I??I??J??L???g?	H?H?? [???????@SH?? H???????H??H?? [??????????H?H?A??AH??????????????????H?\$WH?? H?zH?zrH?H?YH;?H?yrH?	L??H;?LB??T?Hcȅ?t
??H?\$0H?? _?H;?s???H?\$0H?? _?3?H;?H?\$0??H?? _?????????????????????????????@SH?? H?9H??t??	H??1?3?H?H?CH?CH?? [?H?\$WH?? 3?H??H??H?H?AH?AH??t;H?fffffffH;?vH?
H?	?:?	?H??????H??H?H?CH??H?C?H?\$0H?? _?????????H?yr
H?H?H???H?
H???????????H?H9?????????H?H9?????????H??(??tI??t3??t2?H??(?H?	H?O?
A?
H??HE3??????H?????H??(?H??????H??(?H?	?????H??(??????????????H?AH?H??H?
???H?AH?H????????H?L$SH??0H?D$ ????H??h???HcPH???
H??
h???H?Y?H????????H??H??0[H?%g?	???????H?L$SH??@H?D$ ????H??H?A?P?x?H??t,H?CH?H?CH?@H?CH?@H?C?@HH?C?@IH???8H?D$hH?T$hH?L$(?v?	?H??	H?D$(H?"H?L$(???H??@[??????????H??H?	?yIuMH?A?xIuH??yIu
?H??H?	?yIt?H?H???H?I?yIuH?AH9u
H?
H?I?yIt?H?
H??????@SH?? H?9H??t?C?	H??q?3?H?H?CH?CH?? [?@SH?? H?9H??t??	H??A?3?H?H?CH?CH?? [?H?L$WH??0H?D$ ????H?\$H??H???U?	?H?=?
H?@????D?@??u??@??t??@??t??H?Cp?CxH??H?\$HH??0_???????????????ATH??0H?D$ ????H?\$@H?t$PH?|$XH??H??H????????H;?vH?
ֵ	?Ȧ	?H?AH+H??H;?s]H??????L??H?D$HL?CH?L+?I???H???o?	?H?H?sH+?H??H??t??H???ݦ	M??L?[I??H?CL?#H?\$@H?t$PH?|$XH??0A\?????????????ATH??0H?D$ ????H?\$@H?t$PH?|$XH??H??H????????H;?vH?
?	???	?H?AH+H??H;?s]H???V???L??H?D$HL?CH?L+?I???H?????	?H?H?sH+?H??H??t?L?H???
?	M??L?[I??H?CL?#H?\$@H?t$PH?|$XH??0A\?????????????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L????	L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L?????	L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????ATH??0H?D$ ????H?\$@H?t$PH?|$XH??H??H????????H;?vH?
6?	?(?	?H?AH+H??H;?s]H???????L??H?D$HL?CH?L+?I???H???ϥ	?H?H?sH+?H??H??t?|?H???=?	M??L?[I??H?CL?#H?\$@H?t$PH?|$XH??0A\?????????????H??(?W???????H??(??????????????@SH?? H?9H??t?ӣ	H???3?H?H?CH?CH?? [?H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L????	L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????H?\$WH?? H?y??H??rH?	?P?H?CH?C?@??tH???/?H??H?\$0H?? _????H?L$SH??0H?D$ ????H??H?yrH?	???H?CH?C?H??0[???@WH??0H?D$ ????H?\$HH???H?|$@H??h???HcPH??
H??:h???H?O???????H?O??b?	H??H?\$HH??0_H?%V?	??????????????L??H?	?yIH?
uKH?A?xIuL?A?xIu
I??M?A?xIt?I?H???H?I?yIuH?AI9u
I?	H?I?yIt?I?	H?????@SH?? H?9H??t?á	H???3?H?H?CH?CH?? [?@SH?? H?9H??t???	H????3?H?H?CH?CH?? [?H?L$WH??0H?D$(????H?\$HH?t$P??H???D$ E??t+H?
?
H?H???
H?AH????G?	??D$ E3?H?WH???&?	?H?HcPH?w?
H?:??H?O??????H??H?\$HH?t$PH??0_?????@WH??0H?D$ ????H?\$HH?l$PH?t$X??H??h???H???H?|$@H??h???Lc@H??
I??8h???H?O???????H?O???	H???~?	@??tH??薀H??H?\$HH?l$PH?t$XH??0_?H??(L?L?AI????????M+?I??I??H+?I;?sH?
??	???	?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?h???H?I;?IB??Y???H??(?????H??(H??I??????????H??(????????H??(L?L?AI????????M+?I??I??H+?I;?sH?
?	??	?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(????H?I;?IB?????H??(?????@SVATH?? L?aH??I?\$?{I??H?l$@H?jH?|$HL?l$PL?jH?KI??rH??H??H?yH;?H?yrH?	L??H;?LB?褁Hcȅ?u
H;?rH;????ȅ?xL??H??H?[?{It?L?l$PH?|$HH?l$@I??H?? A\^[????H??(L?L?AI????????M+?I??I??H+?I;?sH?
?	?ԝ	?L?H?QI+?H??L;?v/H??H??L+?L;?s3?I;?IB?H??(?8???H?I;?IB??)???H??(?????H?\$H?l$VH?? H???A??L?AI+?H??H??H;?wH?
??	?R?	?H?|$0H????I?<H???vH?
??	?,?	?H?AH;?s'H??????H??twH?KH??u8H?{r(H?@?,?FH??u?H?yH??rH?@?8?FH????>H??@?,?H?{rH??H??@??H?L???_~H?{H?{rH??H???8H?|$0H?l$@H??H?\$8H?? ^???????????????H?\$H?t$WH?? A??H??H??H???uH?
??	?L?	?H???vH?
??	?8?	?H?AH;?s'L?A????H????H??uWH?{rHH?@?0?cH??u?H?QH??rH??H??H?\$0H?t$8H?? _?H???H??H?\$0H?t$8H?? _?H??@?3?H?{rH??H??@??L???N}H?{H?{rH??H???8H?t$8H??H?\$0H?? _???@SH?? H?yH??rH?	?|H?CH?C?H?? [????????????????H?L$SH??0H?D$ ????H??H?yrH?	?{H?CH?C?H??0[???H?\$VH?? L?	H??H?QL??H??M+?I??L;?vHI??H;???H??H?|$0H??H+?H??H?H?ZH????"L?M/L;?sL??H??H?M??????H??uL?m'H?EI??HCE?H?U'L?M/H??????t/H?EI??HCE@?4H?]'H?EH?}/HCE?L?M/H?U'H?MH?EI??HC?L?ELC?L?
H???H?EH?D$8H?E?H?D$0H?E?H?D$(H?E?H?D$ H?????	???Q??~???CH?}'???xH?E?H9EH?E??H?UL?M/I??HC?H?]?H+?L?E'L;?IB?H??t?H?EI??HC?H?MHC?L+?H????	L?]'L+?L?]'H?EH?}/HCEB?H????Y?	?_???L?EH?}/LCE?D??H?M??l?	?]?H?}/rmH?M?wH?E/L?m'?E???H?}/HCEH?M?+?E'Hc؅?~H???H?????	H??~H?M????]?H?}/r	H?M?vH?E/L?m'?E???A?H?
G?	??	?H?
9?	?ӕ	?H?}/r	H?M?hv?EL?m'H?E/A??H?M?H3??wL??$?I?[(I?s0I?{8I??A]A\]???????????????@SH?? H?AH?AH???????H??H?? [???????@SH?? H??I??????H?H??H?? [????H?\$VH?? L?	H??H?QL??H??M+?I??L;?vHI??H;???H??H?|$0H??H+?H??H?S
?????H?Hc??H?@L??L?l$(L?l$ L??`?H???{$?D$@??uEH?????sL???H??LC??H?T$HH??????H?|$H?D$@???>????L?l$PH?Hc??H?PH?D$PH?D$(L?l$ E3?A??H??H????#??t#H??a
H?
?E	荝??H??H??E	??E	H?L$P?$L??L?D$P3?H???(H?Hc??H?RL?l$(L?d$ L?L$PA??H??H???p#??t#???'???H??L?
kY	A??H??Q
????H?	??D$hE3?H?U?H?L$p?R>	?H?D$pHcHH??M
H?DpH?E?H?D$XH?M???=	?H?yL
H?E?H?]??]??@???tH??Y
H?M??˔??H?ȋ???<	??H???tH??Y
H?M?襔??H?ȋ???<	H???H?L$p?????I???E3?H??I???f????H???rH????HDž?3?H??????H???H?D$XHDž?H??????I???E3?I??H????k????L?L$PL???I??I???????L??fW?H???yM??tZE??B?D??A??Hc?I?H?A?N?G?D????Hc?I?NH?OA?N?G?D????Hc?I?NH?OM??I??I??????H?H?FH+?H??H??t[3?L?L9L?9??I?????t#???Q???H??L?
?O	A?=H?H
?ž??H??H??H?H?FH+?H??H;?r?H?|$`I?3?E3?D?CI??D8?`uQH?\$@H?\$8?\$0L?t$(H?|$ H?Ix?9???k???κ??H??L?
O	A?BH??G
?B????CH?\$PH?D$PH?D$@H?\$8?\$0L?t$(H?|$ H?Ix????t#???w???H??L?
?N	A?HH?8G
????H?T$P?????t#???A???H??L?
?N	A?LH?G
赽??H?\$ L?L$`??A?H?L$P?z??t#???????H??L?
?N	A?OH??F
?o???H?\$ L?L$X??A?H?L$P?4??t#??赹??H??L?
?M	A?RH?vF
?)???H?D$`H+D$Xf???H*?y?X5?V
?^5?V
H?L$P????XtI?H?Ix???ht0I???(??t$???9???H??L?
}M	A?aH??E
譼???H?EH?D$XH?D$pHcHH??I
H?DpH?E?H?D$`H?vH
H?E??EtH?M??b9	L?]?I??E3?E3?3?H?M??:	L?]?I?H?E?H?H?E?H?]??e?H?M??&9	?H?M???9	H?M??9	?I?|$r	I?$?I?D$I?\$A?$f(?H???H3??i(?$?H???A_A^A]A\_^[]??????????????H?L$WH??0H?D$ ????H?\$HH?l$PH?t$XH??H??3?H?AH?AH?AH?H????P?H?]H?VH?M?????H??H?\$HH?l$PH?t$XH??0_???????????????H?L$SH??0H?D$ ????H??L?AM??M?H?T$H?????H?KH??0[????????@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?
???H??0[????????H?T$H??8H?D$ ????H??H?T$XH??tI??H?????????H??8???????????????H??8H?D$ ????H?L$@H?L$PH??t??????H??8????????H?T$H??8H?D$ ????H??H?T$XH??tI??H???f?????H??8???????????????H?L$SH??0H?D$ ????H??L?AM??M?H?T$H??????H?KH??0[????????H?L$SH??0H?D$ ????H???????L?CM??M?H?T$HH???????H?KH??0[?<??????????????@SH?? H?ك??H???????uH????c??H??tH??????H????H?? [?@SVWH??pH?D$H????H??i H3?H?D$`I??H??H??L?D$XH?D$ H?D$PH?D$8H?D$0?D$ I???E3?H??H?L$ 蝕???E3?L?D$ H??H??????H??H?~rH??eH?FH?F?H??H?L$`H3??H??p_^[?????????????L??SUVWH??H?D$x????H??h H3?H??$?I??I??H??H??M?C?I?C?I?C?I?C?I?C??D$PI???E3?H??I?K??ה???H?D$@??$?D$8??$?D$0H??$?H?D$(H??$?H?D$ L??L?D$PH??H???J????H?}r	H?M?gH?EH?E?EH??$?H3??H?Ĩ_^][??????????@SH?? H?H??t1H????????	??uH????a??H??tH??????H????H?
?i H?? [????@WH??0H?D$ ????H?\$HH???d???H?H???????	??uH???ea??H??tH??????H??????H?D$@H??t	H???????H?H?OL?IL?H?T$@????H?\$HH??0_?H?L$WH??0H?D$ ????H?\$HH???и??H?H??????????uH????`??H??tH???$???H?????H?OH?\$HH??0_?????????????H?\$H?t$WH?? H?H??H??H?????????uH???l`??H??tH??????H???H??H????[H?VH?OH??????H?\$0H?t$8H??H?? _?H?L$SH??@H?D$ ????H??H?A?P?HH??t,H?CH?H?CH?@H?CH?@H?C?@HH?C?@IH???8H?D$XH?T$XH?L$(?F5	?H??A	H?D$(H??H?L$(???H??@[??????????H?L$WH??0H?D$ ????H?\$H??H????????L?GM??M?H?T$PH????????H?O?z??tH???mH??H?\$HH??0_??@WATAUH??@H?D$0????H?\$`H?t$pH??H??H?fffffffH;?vH?
?A	?y2	?H?IH+I?gfffffffI??H??H??H??H???H?H;???H??H?K??v??H??H?D$h?D$h?D$(H?D$ L?KL??H?SH??I????L?CL?I??I+?I??H??L??I??I??H???L?M??tI??H??????H??zH???;2	H??H??H?KK??H??H?KH?3H?\$`H?t$pH??@A]A\_?????H?T$H??8H?D$ ????H??H?T$XH??tI??H????????H??8???????????????H??8H?D$ ????H??H?T$HH?T$XH??tI??H???f?????H??8???????????????H?l$H?t$WH?? I??H??H??H;?toH?\$0H????H????d??uH????]??H??tH??????H???hH??H????.H?VH?OH?????H??(H??(H;?u?H?\$0H?l$8H?t$@H??H?? _??H?T$H??8H?D$ ????H??H?T$XH??tI??H????????H??8???????????????H?\$WH?? ??H???|?????tH???H??H?\$0H?? _??H?L$SH??0H?D$ ????H???5????H?SH?RH???????L?[M?[H?CH?H?CH?@3?H?C?C H??H??0[????????????@SH?? H?H??t1H?????????uH????[??H??tH???9???H???H?
?c H?? [?0???@SH??0H?D$ ????H?H?\$@H??t2H???????L?CM??M?H?T$HH???????H?K?H???H??0[?????????????@WH??0H?D$ ????H?\$PH?t$XH??H??H?H;?tAH?\$@H??t7H???????L?CM??M?H?T$HH???????H?K?CH???;H?>?H?H?\$PH?t$XH??0_??????H?\$H?t$WH?? H?9??H??H??t1H??????????uH???Z??H??tH???????H????H?
?b ?????@??tH???H?t$8H??H?\$0H?? _???????@WH?? L?AL??H?gfffffffL+H??I?fffffffL??I??L??I??I??H???L?I??I+?I;?sH?
?<	??-	?H?IH??M?I+
H??H??H??H???H?L;?v$H??H??L+?L;?s3??H?I;?I??IB?????H?? _?????????????H??8H?D$ ????H??H?T$HH?T$XH??tI??H???V?????H??8???????????????D?L$ ???????????K??????????????@WH??0H?D$ ????H?\$PH?]a H??us?H(?x
H?D$@H??t
H??????H???3?H?=0a H;?tH?l$8H?t$@H?? _?H?l$8H?t$@H?H?? _?H???X???????????@USVWATAUAVAWH?l$?H???H?E?????)?$?H?0\ H3?H?E?M??H??L??L?M?L?}oH?]wH?]?3?H?D$hH?D$pH?E???Mc?E???o3?H?E?H?]??E?H?U?H??????????H?E?L?D$hL?T$pI;??
H?E?L;??H?M?I+?I?gfffffffI??H??H??H??H??H???H?L?]?M;???I??I+?I??H??L??I??I??H???L?H?effffffL;???I??M+?H?gfffffffI??H??H??H???H?L;?v:H??H??H?fffffffH+?H;?s3??H?I;?IB?H?L$h?????L?T$pL?D$hH??I??L?U?L?U?3?M??tI?BI?ZA?I???E3?I??????????L?]?M;???I??I+?H?gfffffffH??L??I??I??H???L?H?effffffL;???I??M+?H?gfffffffI??H??H??H???H?L;?v6H??H??H?fffffffH+?H;?sH???H?I;?IB?H?L$h?????L?T$pL?U?L?U?M??t$I?BI?ZA?I???E3?H?U?I???'????H?D$p(H?}?r	H?M???H?E?H?]??E?H??I;?}!????H?
<6	?.'	?H?
.6	? '	?H?]??I??H??????H@?H???pH??E3?M??~0E3?ff?H?L$hI?	H?zrH?J??I??I??(M;?|?H?E?H?E?H?E?E3?L?e?D?e?L??E3?I??H?M??P????????D$X????D$P????D$HH???H?D$@????D$8????D$0H?EH?D$(H?\$ M??L?E?H??I??????f(?L?D$hH?L$pL;?tQD?L$`H???
???L??H?|$pH??H;?t+H?{rH??H?CH?C?H??(H;?u?L?d$pE3?H???n?H?|$htNH?L$h?&&	H?|$pH?\$hH;?t,H?{rH??>H?CL?c?H??(H;?u?H?\$hH???L?d$hL?d$pL?e?I?}r	I?M??I?EM?eA?Ef(?H?M?H3??(?$?H???A_A^A]A\_^[]?@WH??0H?D$ ????H?\$@H?t$XH??H?5?Y H?t$HH???????iY ??tqH?=lY u=??H??H?D$PH??tH??????H? Y ?3?H??H?
2Y ?????H?H??????L?Y I???X ?YH??X H?H???????????uH???P??H??tH??????H????H?H??????L??X I?H??H?\$@H?t$XH??0_??????H???H???????????@SH?? H??H?	D??E3?3??????H??H?? [??????????????@SH?? H??H?	?ϛ??H??H?? [??????H;???H?L$WATAUH??0H?D$ ????H?\$XH?l$`H?t$hL??H??E3?裧??H?H???????????uH???O??H??tH???????H?????H?~tGH?N??#	H?nH?^H;?t'H?{rH??H?CL?k?H??(H;?u?H?N?~L?nL?nL?nH??(H?t$PI;??Z???H?\$XH?l$`H?t$hH??0A]A\_??????????L?D$VWATH??0H?D$(????H?\$XM??I??H??H??L?D$ @H;?t"L??H??I???????H??(H?|$`H??(H?\$P??H??H?\$XH??0A\_^?????????D?L$ ?????????H??H?D$0?D$(H?D$ ?e???H??H?D?L$I??L??L?AH??I???E????????@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?
???H??0[????????H?\$H?l$L?L$ VH?? I??I??H??H??M;?tOH?QD?L$HH??H?|$0?D???D?L$HH?UL?EH??H??????H?}H?|$0H?H??H?\$8H?l$@H?? ^?H?l$@H?H?\$8H??H?? ^???????@SH?? H?9H??t$?c!	D?L$0H?SH?L?C?E???H??{3?H?H?CH?CH?? [???????????@WATAUH??@H?D$0????H?\$`H?t$pH??H??H?fffffffH;?vH?
?/	?y 	?H?IH+I?gfffffffI??H??H??H??H???H?H;???H??H?K?6^??H??H?D$h?D$h?D$(H?D$ L?KL??H?SH??y????L?[L?I??I+?I??H??L??I??I??H???L?M??tD?L$hL?CI??I???:???H??pH???1 	H??H??H?KK?D?H??H?KH?3H?\$`H?t$pH??@A]A\_??????????@SH?? H?9H??t$??	D?L$0H?SH?L?C?????H????3?H?H?CH?CH?? [???????????@WH?? H??H?IL?L;?t5D?L$0H??H?\$8?????D?L$0H?WL?GH??H???_???H?_H?\$8H?? _?@WH?? L?AL??H?gfffffffL+H??I?fffffffL??I??L??I??I??H???L?I??I+?I;?sH?
?-	??	?H?IH??M?I+
H??H??H??H???H?L;?v$H??H??L+?L;?s3??H?I;?I??IB?????H?? _?????????????@WH??0H?D$ ????H?\$PH??H??H?IH;?sbH?H;?wZH+?H?gfffffffH??H??H??H??H???H?H;Ku
?H???????H??H?H??H?KH?L$@H?L$HH??t???????/H;Ku
?H??????H?KH?L$@H?L$HH??t	H???????H?C(H?\$PH??0_?????????????@UVWATAUAVAWH??$????H??0H?E?????H??$?H??O H3?H?? Hc?L??H?IM?EL;?t+D?L$0H???????H??M?ED?L$0I?UH???Z???I?}???t??~??~??t??t3??L?D$43?3?????t#??????H??L?
R/	A?6H??'
肞???D$4??r???3?H?t$xH?u?H?u?H?L$x?n????E3?H?T$x?L$4?H???t#??豚??H??L?
?.	A?:H?r'
?%??????t$H?T$HH?N?????I?E(?Ԛ??H?|$@H???????????uH????B??H??tH???&???H??????H?|$HtRH?L$H??	H?\$PH?|$HH;?t0H?rH????H?GH?G?H??(H;?u?H?|$HH????3?H?t$HH?t$PH?t$XH9u?tH?M??J	H?M??w?H?u?H?u?H?u??|$???L?
?#	H?
H??A??貒??H?|$H??H??0[????L??WH??pH?D$H????I?[H?C H3?H?D$`H????I?S?I?C?I?C?I?C?I?C??D$ I???E3?I?K??o????P????L?H?T$ ???????H?rH????H?GH?G?H?L$`H3???H??$?H??p_???H?\$WH?? H???????H???L??3?H???H??H??L?A?I?H???H?\$0H?? _?o???????????????H??UH??X???H??H?D$8????H?XH?pH?x H??A H3?H???H??3?H?t$0?i???H?83????????t?F?H???H?E?H?t$x@?t$hD?C5H?e
H?L$h??n???H?E?H?u??]?E3?H??!	H?M???n???H?D$XH?t$P?\$@D?CH?0
H?L$@?n????D$(?H?D$hH?D$ L?M?L?D$@?)???H?M??`??H???Q??H?M??A??H?|$Xr
H?L$@?6?H?D$XH?t$P?D$@H?}?r	H?M???H?E?H?u??E?H?}?r
H?L$h???H?E?H?t$x?D$hHc??H?WH?t$(H?L$0H?L$ A?A??H??H??????t#???U???H??L?
? 	A??H?
?ɏ??H?D$0H???H3??E?L??$?I?[I?s I?{(I??]?????????????H??UH??X???H??H?D$8????H?XH?pH?x H??? H3?H???H??3?H?t$0?Y???H?83??/?????t?F?~H???H?E?H?t$x@?t$hD?C5H?U
H?L$h??l???H?E?H?u??]?E3?H??	H?M???l???H?D$XH?t$P?\$@D?CH??-
H?L$@?l????D$(?H?D$hH?D$ L?M?L?D$@?)???H?M??P??H???A??H?M??1??H?|$Xr
H?L$@?&?H?D$XH?t$P?D$@H?}?r	H?M???H?E?H?u??E?H?}?r
H?L$h???H?E?H?t$x?D$hHc??H?WH?t$(H?L$0H?L$ A?A??H??H???|???t#???E???H??L?
?	A??H?
蹍???D$0H???H3??6?L??$?I?[I?s I?{(I??]??????????????????????????????????????????????H?\$WH?? H??H?
H??H??t?s=??H???PH?H?\$0H?? _?????????????̋9u?B9Au??2??????????????D?L$ ?D$USVWATAUAVH?l$?H?? H?E?????H?P= H3?H?EL??D?E??????L??H?E?E3?L?u?D?u?E?FH?T,
H?M??sj???L?t$@L?t$HL?t$PI?L$H???M??E????Mx?ȉMxH?D$`H?E`H?D$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
	?
	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
m	?_		?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?=???H?L$HH?L$pH?L$xH??tH?H?E`H?AH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?	??	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?p??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
	?	?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??~??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI??H?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
H	?:	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?~??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
?	??	?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?}??H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?	??	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??|??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
]	?O	?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?-|??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?	??	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?a{??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
?	??	?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??z??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?ExH?D$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
2	?$	?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@?z??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?uXH??I+?H??H;?vH?
?	??	?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?vy??H?L$HH?L$pH?L$xH??tH?H?ExH?AH?D$HIc$H?E?HcE?H?EH?EH?E?H?E?H?E?H?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M??`????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H?M3 I???????H?|$@tH?L$@??	H?L$@?%?L?t$@L?t$HL?t$PH?}?r	H?M???H?E?L?u??E?H?MH3???H?? A^A]A\_^[]???????????D?L$ D?D$USVWATAUAVH?l$?H?? H?E?????H?a3 H3?H?EL??U??????L??H?E?E3?L?u?D?u?E?FH??"
H?M??`???L?t$@L?t$HL?t$PI?D$H???E??M??ȋEp???Ep?Ex???ExI?\$H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
	?	?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??v??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
u	?g??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?Ev??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI??H?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?
	????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?}u??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?

	???I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??t??H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
U	?G??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?%t??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
?	????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?s??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?
	????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@??r??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
c
	?U??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?3r??H?L$HH?L$pH?L$xH??tH?H?E?H?AH?L$HH??H?L$HH?D$`H?EpH?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
?		????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?gq??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
		????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??p??H?L$HH?L$pH?L$xH??tH?H?EpH?AH?L$HH??H?L$HH?D$`H?ExH?D$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
8	?*??H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@?p??H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?uXH??I+?H??H;?vH?
?	????H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?|o??H?L$HH?L$pH?L$xH??tH?H?ExH?AH?D$HIc$H?E?HcE?H?EH?EH?E?H?E?H?E?H?E?H?D$pH?E?L?u??E?I???E3?H?U?H?M??V????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H?S) I???????H?|$@tH?L$@???H?L$@?+?L?t$@L?t$HL?t$PH?}?r	H?M???H?E?L?u??E?H?MH3????H?? A^A]A\_^[]?H??UATAUAVAWH?h?H??0H?E?????H?XH?pH?x H?n) H3?H?E M??M??L??L???????H?E?H?E?H?E??E?A?H??
H?M??V???H?D$@H?D$HH?D$PI?EH???E?I?L$H???M?I?GH?E??????????????????I?_H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
?	????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??l??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
R	?D??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?#l??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?	?|??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?[k??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?	????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??j??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
4	?&??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?j??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?	????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?vi??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?	????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?h??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
O	?A??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@? h??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI??H?D$`L?|$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
???z??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Yg??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@??f??H?L$HH?L$pH?L$xH??tH?L?yH?L$HH??H?L$HH?D$`L?e?L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
2??$??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?f??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
??????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?te??H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HH?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
??????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?d??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?uZL??L+?I??L;?vH?
J????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
ީ?К?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
??
??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
???~??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?]??H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HI?^@H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
ŧ????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
6??(??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?_@H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
o??a??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?@??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
??Җ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?
??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??M;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??M;?vH?
???|??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?[??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?_H?D$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??I;?vH?
ã????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$PH;?uWH??I+?H??I;?vH?
8??*??H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@???H?L$HH?L$pH?L$xH??tH?H?YH?D$HH?E?H?D$pH?E?3?H?]??]?I???E3?H?U?H?M??Y?????D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H??H?M???\???H9\$@tH?L$@?“H?L$@??sH?\$@H?\$HH?\$PH?}?r	H?M???sH?E?H?]??E?H?MH3??tH??$pH?? A_A^A]A\_^]???????????H?\$H?t$WH?? I??D?AH??D+B?QH??+WA?H????A???g\D??A??L??H??A???H??A??A??DD?H?\$0H?t$8H?? _????????????????@USVWATAUAVAWH??$X???H??H?E?????H???H3?H???I??M??H??L??H?BH?E?L?rD?AD+A???QA+??A?I???[E?$A??A???A???A??DD?M??H??I??????H????H???R???H???H?}??H???:???E3?E?AH?U?I???_?L?H?H???(????H?M??VE3?E?AH?U?H???k_?H??H?M??N??3???
??	f/?v?\?f/?s
H??H???H,?H?H?D$pH?M??UI?D$8H?D$xH?EPE3?L?eHD?e8E?D$H?IJ	H?M8?????L?d$@L?d$HL?d$PH?7H??H?E?H?u?H?U?H?D$@H?L$HH;???H?U?H;???H?u?H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
i??[??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?9??H?L$HH?D$@H???H?H?L$hH?L$`H??tH?H?H?FH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
ž????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@???H?L$HH?L$`H?L$hH??tH?H?qH?L$HH??H?L$HI?wH?E?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
o??a??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$`H?L$hH??tH?H?qH?L$HH??H?L$HH?E?H?D$pH?E?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?{??H?L$HH?D$@H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u[L??L+?I??L;?vH?
??
??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$`H?L$hH??tH?H?D$pH?AH?L$HH??H?L$HM?oA?L?M?L?m?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ufL??L+?I??L;?vH?
N??@??I??H+?H??L;?v:H??H??H??H+?H;?sI???H?I;?IB?H?L$@???H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?uaL??L+?I??L;?vH?
??????I??H+?H??L;?v5H??H??H??H+?H;?sI???H?I;?IB?H?L$@???H?L$HA?H?L$`H?L$hH??tL?	L?iH?L$HH??H?L$HM?gL?M?L?e?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
?????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
\??N??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?-??H?L$HA?H?L$`H?L$hH??tL?	L?aH?L$HH??H?L$HL?M?L?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?q??H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?L$`H?L$hH??tL?	L?qH?L$HH??H?L$HL?M?H?u?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
H??:??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HL?u?I?6H??@L?M?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
??ۆ?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
Q??C??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?"???H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HI?6H??L?M?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?_???H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HI?w@L?M?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
6??(??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?o???H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HI?wL?M?H?u?H?E?L?D$@H;???H?E?L;???H?u?I+?H?T$PH;?u\H??I+?H??H;?vH?
ޑ?Ђ?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$`H?L$hH??tJ?H?J?DH?A?}H?T$PH;?u]H??I+?H??H;?vH?
S??E??H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$@?'???H?L$HA?H?L$`H?L$hH??tL?	H?qH?D$HIc$H?ExIcEH???HDž?H?E`H?EhH?EpH?E?H?D$`H?E3?H?]??]?I???E3?H?U8H?M??`H?E0L?e(?EH?}r	H?M??`H?EL?e?E?H?OH?L$hM?nH?GH?E?I?vE?ED+A???+W??A?H????HE?A??A???A??A?A??ED?L??H??I???K???I?F8H?E?HDž?L?ex?EhE?GH???	H?Mh????HcCH??`L?{IcH??hHDžpHDžxHDž?HDž?L?d$@L?d$HL?d$PH??H?E?H?]?H?U?H?D$@H?L$HH;???H?U?H;???H?]?H+?H????????I????????H?T$PH;?u_L??L+?I??M;?vH?
??~?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$`H?M?H??tH?H?H?CH?A?H????????I????????H?T$PH;?uZL??L+?I??M;?vH?
t??f}?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?E???H?L$HH?M?H?L$`H??tH?H?YH?L$HH??H?L$HA?L?M?H?u?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
????|?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
!??|?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?M?H?L$`H??tL?	H?qH?L$HH??H?L$HL?M?L?m?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
f??X{?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?7???H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
҉??z?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?M?H?L$`H??tL?	L?iH?L$HH??H?L$HL?M?L?m?L?m?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
??z?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
??qy?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?P???H?L$HA?H?M?H?L$`H??tL?	L?iH?L$HH??H?L$HL?M?L?D$hL?E?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
????x?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?ueL??L+?I??M;?vH?
(??x?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?L?D$hH?M?H?L$`H??tL?	L?AH?L$HH??H?L$HL?M?L?}?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
h??Zw?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?9???H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
ԅ??v?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?M?H?L$`H??tL?	L?yH?L$HH??H?L$HL?M?H?u?H?^H?]?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
??v?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
}??ou?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?N???H?L$HA?H?M?H?L$`H??tL?	H?YH?L$HH??H?L$HH?^@L?M?H?]?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?ueL??L+?I??M;?vH?
????t?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?M?H?L$`H??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??M;?vH?
*??t?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?M?H?L$`H??tL?	H?YH?L$HH??H?L$HH?^L?M?H?]?H?U?H?D$@H;???H?U?H;???H?]?H+?H?T$PH;?u_L??L+?I??M;?vH?
k??]s?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@??	H?M@?????H?E0L?e(?EE3?H?x?H?M?????H?EL?e?E?A?-H?S?	H?M??j?????D$(?H?E@H?D$ L?ML?E?????H????!C?H???C?H?????B?H?}r	H?M???NH?EL?e?E?H?}0r	H?M??NH?E0L?e(?EH?}Xr	H?M@?NH?EXL?eP?E@?,H?H??H?E?H?E?H?U?H?L$@?????L?I??hH?E?L?]?H?U?H?L$@????L?I?øH?E?L?]?H?U?H?L$@?}???L?I??H?E?L?]?H?U?H?L$@?Y???L?I??@L?}?L?]?H?U?H?L$@?E?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?S??D?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@腻??H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HL?u?I?v@L?M?H?u?H?U?H?D$@H;???H?U?H;???H?u?H+?H?T$PH;?ueL??L+?I??L;?vH?
?R??C?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?L$`H?L$hH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
XR?JC?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?)???H?L$HA?H?L$`H?L$hH??tL?	H?qH?L$HH??H?L$HI?vL?M?H?u?H?E?L?D$@H;???H?E?L;???H?u?I+?H?T$PH;?u\H??I+?H??H;?vH?
?Q??B?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?l???H?L$HL?D$@H???H?L$`H?L$hH??tJ?H?J?DH?A?}H?T$PH;?u]H??I+?H??H;?vH?

Q??A?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HA?H?L$`H?L$hH??tL?	H?qH?D$HIc$H?ExIcEH???HDž?H?E`H?EhH?EpH?E?H?D$`H?E3?H?]??]?I???E3?H?U8H?M????????\$8?D$0H?D$@H?D$(H?E`H?D$ L?MxL?E?H??rH?L$x?}
???H9\$@tH?L$@?bAH?L$@?!H?\$@H?\$HH?\$PH?}Pr	H?M8?o!H?EPH?]H?E8H???H3??""H?ĨA_A^A]A\_^[]???????????????@USVWATAUAVH??$`???H??H?D$0????H??rH3?H???Ic?M??H??H??L???3E3????H?D$PL?t$HD?t$8E?F5H?Ye	H?L$8?ϟ???H?E?L?t$xD?t$hE3?H??RH?L$h訟???H?E?L?u?D?u?E?FH??i	H?M?胟????D$(H?D$8H?D$ L?L$hL?E??)???H?M??;?H???,?H?M???H?}?r	H?M?? H?E?L?u??E?H?}?r
H?L$h??H?E?L?t$x?D$hH?|$Pr
H?L$8??H?D$PL?t$H?D$8?G9C|?G9C?H?E?L?u??E?A?5H?,d	H?M?裞???H?E?L?t$x?D$hE3?H?dQH?L$h?|????H?D$PL?t$H?D$8A?4H??h	H?L$8?Q?????D$(H?E?H?D$ L?L$hL?D$8?)???H?M??	?H?????H?M????H?|$Pr
H?L$8??H?D$PL?t$H?D$8H?}?r
H?L$h?H?E?L?t$x?D$hH?}?r	H?M??H?E?L?u??E?H?D???H?D$8H?????H?D$@H?ܪ??H?D$HH?P???H?D$PH?Լ??H?D$XH?????H?D$`H?t?8H???H?E?L?u?@?u?D?F5H??b	H?M??1????H?E?L?t$x@?t$hE3?H??OH?L$h?
????H?D$PL?t$H@?t$8D?FH?g	H?L$8??????D$( H?E?H?D$ L?L$hL?D$8?)???H?M???H????H?M??z?H?|$Pr
H?L$8?oH?D$PL?t$H?D$8H?}?r
H?L$h?KH?E?L?t$x?D$hH?}?r	H?M??)H?E?L?u??E?M??M??H??H??H????H???H3???H?ĠA^A]A\_^[]??????????@UH?l$?H??PH?E@????3?H?D$0H?D$8?D$@H?D$HH?D$PH?D$XH?D$`H?D$hH?D$x?E?H?E??E?H?E?H?E?H?E?H?E?H?E?H?EȉE?H?E?H?E?H?E?H?E?H?EH?EH?EH?E H?E(H?D$0H?D$ ?????H?M?????H?M??????H?M??????H?M???H?L$8?H??P]?????????@SH?? H??H?I H??t??????uH?K ?H?K(??m??3?H?C0H?C(H?CH?CH?CH?CD?C@H?C H?? [?????????@SH?? L??H???????H??H?? [???????@SH?? L??H??????H??H?? [???????@SH?? ?ZhL??H???7???H??H?? [???????????????@SH?? ?*hL??H???G???H??H?? [????????????????,?????????????fW??Ⱥ??-?;?w???3???O?????????????????fW??Ⱥ???-?;?w???3???O?????????????????fW????-э??????w??ø???????O???̋	?"D?????H???????????????̋??%???????H?A???????????̋???????????̅?t=H?\$H?t$WH?? I??A??H??蟷??L??D??H??H??????H?\$0H?t$8H?? _???????????????H??c	H??B?AH?BH?A?B?A?B?AH???????????H?qc	H??B?AH?BH?A?B?A?B?AH??c	H?H?????????????????H?\$WH?? H??H??H???H?_H?\$0?G
H??H?? _????????????????H?\$WH?? H??H??H???PH?_H?\$0?G
H??H?? _????????????????H?\$ UVATH??@A??Ic?Lc?H???#?????H?F8D9fu9nu?%?;?uH?~?OH?~tIH?N H??t????G??uH?N ?EH?N(??i??3?H?F0H?F(H?FH?FH?FH?FD?F@H?F E???????????BH?|$hL?l$p?щA????P?L?́??L?FD?f?‰nD?fD???nHADՃ????????H???????$?ȋ?$?????H?N8?D$0??$?Hc?H?T$`L??I???D$(I???L?d$ ?d??HcFL?^H??H?|$hI;?u?@H?T$`HcFI??H?VH?V(I??H?H?F0?L?l$pH?F ?H?\$xH??@A\^]???????????H??8?D$`?D$(D?L$ E??D??R?1???H??8?????????????H??8??j?D$(??j?D$ ????H??8???????????????H?\$WH??P??jD?	D?A?D$(?{jH?ڋQH??A???H?ˉD$ ????D?LcGD?K@A?Ӹ??????ƒ?D?A???P???????C?H????$?????HcG????Hc?H?SH?ȋG@?D$@H?GL?D$8L?CH?L$0H?O8H?D$(H?GH?D$ ?7f??H?\$`H??P_?????????????H??UH??h???H??H?D$0????H?XH?xH?vgH3?H???H???A
?%H?D$x3?H?|$p@?|$`D?G8H??`	H?L$`蒔???H?D$PH?|$H@?|$8E3?H?RGH?L$8?j????H?E?H?}?@?}?D?G$H?V`	H?M??E?????D$(?H?D$`H?D$ L?L$8L?E??)???H?M????H?????H?M????H?}?r	H?M???H?E?H?}??E?H?|$Pr
H?L$8?H?D$PH?|$H?D$8H?|$xr
H?L$`?H?D$xH?|$p?D$`H?C?H?AH???H3??4L??$?I?[I?{I??]????????????????H??UH??h???H??H?D$0????H?XH?xH??eH3?H???H???A
?%H?D$x3?H?|$p@?|$`D?G8H?,_	H?L$`?????H?D$PH?|$H@?|$8E3?H??EH?L$8?ʒ???H?E?H?}?@?}?D?G$H??^	H?M?襒????D$(?H?D$`H?D$ L?L$8L?E??)???H?M??]?H???N?H?M??>?H?}?r	H?M??5H?E?H?}??E?H?|$Pr
H?L$8?H?D$PH?|$H?D$8H?|$xr
H?L$`??H?D$xH?|$p?D$`H?C?H?AH???H3??L??$?I?[I?{I??]????????????????H??UATAUAVAWH??8???H??H?D$8????H?XH?pH?x H?*dH3?H???A??E??H??L??H?T$@E3?D?|$0E???!D;I?H?E?L?}?D?|$pE?G8H?h]	H?L$p?.????H?E?L?}?D?}?E3?H??CH?M??
????H?D$`L?|$XD?|$HE?G>H??^	H?L$H??????D$(ZH?D$pH?D$ L?M?L?D$HA?W?H?M???H????H?M??{?H?|$`r
H?L$H?pH?D$`L?|$X?D$HH?}?r	H?M??MH?E?L?}??E?H?}?r
H?L$p?,H?E?L?}??D$pI??H???2v???D$0A?????%??????D?E??DD?A?v??D;?
?ƙA????t??uA?F?ƙA????????E?fA;???D???????H?D$`L?|$X?D$HA?8H??[	H?L$H蓏???H?E?L?}??E?E3?H?VBH?M??o????H?E?L?}??D$pA?HH??\	H?L$p?F?????D$(|H?D$HH?D$ L?M?L?D$p?????H?M????H?????H?M????H?}?r
H?L$p??H?E?L?}??D$pH?}?r	H?M??H?E?L?}??E?H?|$`r
H?L$H?H?D$`L?|$X?D$HA;??H?D$`L?|$X?D$HA?8H??Z	H?L$H?n????H?E?L?}??E?E3?H?1AH?M??J????H?E?L?}??D$pA?H?{[	H?L$p?!?????D$(?H?D$HH?D$ L?M?L?D$p?-???H?M????H?????H?M???H?}?r
H?L$p?H?E?L?}??D$pH?}?r	H?M??H?E?L?}??E?H?|$`r
H?L$H?mH?D$`L?|$X?D$HA?ę??Hc?????A;??H?D$`L?|$X?D$HA?8H?uY	H?L$H?;????H?E?L?}??E?E3?H???H?M??????H?E?L?}??D$pA?NH??Y	H?L$p??????D$(?H?D$HH?D$ L?M?L?D$p?????H?M???H????H?M???H?}?r
H?L$p?}
H?E?L?}??D$pH?}?r	H?M??\
H?E?L?}??E?H?|$`r
H?L$H?:
H?D$`L?|$X?D$H?{A??????"D?H???H??H?S?ƙA????A??;??H?D$`L?|$X?D$HA?8H?&X	H?L$H?????H?E?L?}??E?E3?H??>H?M??ȋ???H?E?L?}??D$pA?>H?iX	H?L$p蟋????D$(?H?D$HH?D$ L?M?L?D$p?????H?M??W?H???H?H?M??8?H?}?r
H?L$p?.H?E?L?}??D$pH?}?r	H?M??
H?E?L?}??E?H?|$`r
H?L$H??H?D$`L?|$X?D$H?{?{H?#???B??????	H??H???H3??L??$?I?[0I?s@I?{HI??A_A^A]A\]??H??UATAUAVAWH??h???H??pH?E?????H?XH?pH?x H?]H3?H??`L??H?ً
D??A??A???A???A??DDȃ???A?"D?I??A??3?I?D$I??Ic?3?H??E?M?l$HM?t$DA?A?E?ȉE?M?|$8H?E3?H?}@?}?D?GH??X	H?M??????A?$??????H?H??W?????x?
H???H?lX	H??@??+?H?;X	H??@??+?H?
X	H??@?m+?qH??W	H??@?T+?XH??W	H??@?;+??H?wW	H??@?"+?&H?FW	H??@?	+?
H?E?H?}??E?A?8H?U	H?M??????H?E0H?}(?EE3?H??;H?M?ˆ???H?E?H?}??E?A?
H??%	H?M?蛈????D$(oH?E?H?D$ L?ML?EȺ.???H?M@?U??H???F??H?M@?6??H?}?r	H?M??-	H?E?H?}??E?H?}0r	H?M?
	H?E0H?}(?EH?}?r	H?M???H?E?H?}??E?H?|$PH?|$XH?|$`H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
?6??'?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P葞??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
6?'?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
V5?H&?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?'???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?4??%?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P蚜??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XA?L?L$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
4??$?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?כ??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
s3?e$?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?D???H?L$XA?H?M?H?M?H??tL?	L?iH?L$XH??H?L$XL?L$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
?2??#?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P腚??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
!2?#?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?	L?qH?L$XH??H?L$XL?L$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
^1?P"?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?/???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
?0??!?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P虘??H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XL?L$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
0?? ?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?՗??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?H?T$`H;?u]H??I+?H??H;?vH?
x/?j ?H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$P?L???H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?D$XA?A?E?????????????%???H?H??HDžHDž HDž(HDž0HDž8H?E?H?E?H?E?3?H?]??]?I???E3?H?U?H?M??2~???H??@H?D$@?D$8?????D$0????H?D$PH?D$(H??(H?D$ L??L?E?H?PI???????H9\$PtH?L$P??H?L$P??H?\$PH?\$XH?\$`H?}r	H?M???H?EH?]?E?H??`H3??JL??$pI?[0I?s@I?{HI??A_A^A]A\]Ð5?
N?
g?
??
??
??
˨
????????????H??UATAUAVAWH??h???H??pH?E?????H?XH?pH?x H??PH3?H??`L??H?ً	D??A??A???A???A??DDȃ???A?"D?I??A??3?H?CI??Ic?3?H??E?L?kHL?sDA?A?E?ȉE?L?{8H?E3?H?}@?}?D?GH??L	H?M??}??????????H?H?}K?????п
H???H?L	H??@?E?H??K	H??@?,?H??K	H??@??qH?K	H??@???XH?NK	H??@????H?K	H??@???&H??J	H??@???
H?E?H?}??E?A?8H??H	H?M??|???H?E0H?}(?EE3?H?O/H?M?h|???H?E?H?}??E?A?
H?j	H?M??A|????D$(?H?E?H?D$ L?ML?EȺ.???H?M@????H??????H?M@????H?}?r	H?M????H?E?H?}??E?H?}0r	H?M??H?E0H?}(?EH?}?r	H?M???H?E?H?}??E?H?|$PH?|$XH?|$`H??H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
b*?T?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?3???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?)???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P菑??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pL?d$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?(???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ΐ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
p(?b?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?A???H?L$XH?M?H?M?H??tH?L?aH?L$XH??H?L$XA?L?L$pL?l$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
?'???I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?~???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
'??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XA?H?M?H?M?H??tL?	L?iH?L$XH??H?L$XL?L$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
[&?M?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?,???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??L;?vH?
?%???I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P虍??H?L$XA?H?M?H?M?H??tL?	L?qH?L$XH??H?L$XL?L$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??L;?vH?
%???I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?֌??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u`L??L+?I??L;?vH?
o$?a?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?@???H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XL?L$pH?E?H?D$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?#???H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?|???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?H?T$`H;?u]H??I+?H??H;?vH?
#??H??I+?H??H;?v1H??H??H+?H;?s3??H?H;?HB?H?L$P????H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?D$XA?A?E?????????????%???H?H??HDžHDž HDž(HDž0HDž8H?E?H?E?H?E?3?H?]??]?I???E3?H?U?H?M???q???H??@H?D$@?D$8?????D$0????H?D$PH?D$(H??(H?D$ L??L?E?H??CI???L????H9\$PtH?L$P?1H?L$P?]?H?\$PH?\$XH?\$`H?}r	H?M??>?H?EH?]?E?H??`H3????L??$pI?[8I?s@I?{HI??A_A^A]A\]Ï?
??
??
ڴ
?
?
%?
????H??UVWAUAVH??`H??H??E3?H?PL?@H??L?hL?h????FD?D??$???$??D$(?kFA???H?ΉD$ ????D??P?A??E?u??%??????kA??H?\$X?"D?A??L?d$PA??H????R??
??$?D?$@??$?A?čD??????H?N8Hc??$+??A?UH??H??$?E3?L??H?D$ ?[???$?H?\$XL??H??$???t)?u???L?
?#H?=	H??A??????L??$?HcG??~H??H?GHH?T???I??Hc?$?Hc?$?L?O H???D$@D?l$8H?D$0H?GPH?L$(H?N8Mc?I??H?D$ ????H??$?H??????H??$???L?d$P???????????L?
#H?R<	H??A???4?????Lc?$?L?O ???D$@????D?l$8??L?D$0L?F???H???ƒ?ADփ????????H???????$??Hc?$?????Hc?H?VH??H?GPH?L$(H?N8H?D$ ?)>???G??щF?G???F?F????ƒ?ADփ??????????$???H????@???€?????$?ЉV@H??`A^A]_^]?@UVWATH??XH???IHH??D??WDL?t$PA????~9Vu9Nu?%?A;?uH?~u#??$???$?L??$??H?????3?A?P???D?u??%??????[??H??$??"D???L??$?H????R??
?GHD?,@?GDA?ōD??????H?O8Hc??D(???UH??H??$?E3?L??H?D$ ?|???$?H??$?H??$???t!薌??L?
? H?(:	H??A??
???H??$?H??????Lc^E??~H?FHN?D???L??HcODHcWHL??$?I??L?FP?D$@?D$8H?L$0H?O8H?T$(H?VIc?H?D$ ?H3?H???M??M??L??L??L?M?3?H?\$`H?\$hH?\$pH?E(H?] ?]D?CH?QBH?M?k???H?EPH?]H?]8?D??H?!BH?M8?Xk???H?ExH?]p?]`D?CH??AH?M`?4k???HDž?H??????D?CH??AH????k???HDž?H??????D?CH??AH?????j???HDž?H??????D?CH??pH????j???HDžH????D?CH?AH???tj???HDž@H??8??(D?CH?dpH??(?Dj???HDžhH??`??PD?CH??9	H??P?j???HDž?H?????xD?CH??9	H??x??i???HDž?H??????D?CH?x9	H????i???HDž?H??????D??H?A9	H????i???HDžH?????D?CH?moH????Ui???HDž0H??(??D?CH??8	H???%i???HDžXH??P??@D?CH??8	H??@??h???HDž?H??x??hD?CH?i8	H??h??h???HDž?H??????D?CH?18	H????h???HDž?H??????D?CH??7	H????eh???HDž?H??????D??H??7	H????6h???HDž H????D?CH??7	H???h???HDžHH??@??0D?CH?R7	H??0??g???HDžpH??h??XD?CH??mH??X?g???HDž?H??????D?CH??6	H????vg???HDž?H??????D?CH??6	H????Fg???HDž?H??????D?CH?z6	H????g???HDžH?????D??H??lH?????f???HDž8H??0?? D?CH??lH?? ?f???HDž`H??X??HD?CH??5	H??H?f???A?????%?????D???Hc?Hk???H?H??L?D?I?xrM?H??5	H??p?3H?E?H?E?H?EA?G????????Hc?H??H?M?A?G????????Hc?H??H?M?H?E?A?D??A??A???A??A??A??Dǃ??A?P?E??I??A??????????%???A????Lc?3?I?GI???E?A??DD?B????????%?????Hc?IcG@3?H??E?A?MD??A??A???A??A??A??Dǃ??I??A??????????%???A????Lc?3?I?EI???E?A??DD?B????????%?????Hc?IcE@3?H??E?I?}H?D$PH?|$XH?T$PH?D$`H?L$hH;???H?T$PH;???H?|$PH+?H????????H????????H?T$pH;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?{??H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?GH?A?H????????H????????H?T$pH;?uZL??L+?I??L;?vH?
??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`??z??H?L$hH?M?H?M?H??tH?H?yH?L$hH??H?L$hI?H?D$PH?|$XH?T$PH?D$`H;???H?T$PH;???H?|$PH+?H?T$pH;?u_L??L+?I??L;?vH?
J?<?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`?z??H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$pH;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`?y??H?L$hH?M?H?M?H??tH?H?yH?L$hH??H?L$hI?~H?D$PH?|$XH?T$PH?D$`H;???H?T$PH;???H?|$PH+?H?T$pH;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$`??x??H?L$hH?D$`H???H?H?M?H?M?H??tH?H?H?GH?A?|H?T$pH;?uZL??L+?I??L;?vH?
k?]?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$`????H?EL?}?E?E3?H?C?H?M??\>???HDž?L???ƅ?D?CH???H????+>????D$(*H?EhH?D$ L?M?L????.???H???߲?H???в?H??轲?H???rH???设HDž?L???ƅ?H?}r	H?M?腾H?EL?}?E?H???r	H?Mh?b?HDž?L?}x?Eh?rH??	?#???H??	?8???fW??A?-??E?fW??AC?-??E?fW??AC?-??E?fW??AC?-??E?A???DD?A????A????A???nHDžHL??@ƅ0D?C4H??	H??0?Q??H?\$PH?E?H?D$XH?T$PH?L$`?!Q??L?]?L?]?H?E?L?}??E?I???E3?H??H?M???3???H??@
H?D$@?D$8?????D$0????H?D$`H?D$(H??(
H?D$ L??
L?E?H??H?N8?8????H?|$`tH?L$`??H?L$`?H?L?|$`L?|$hL?|$pH?rH??*?H?GL??H??`
H3??޵H??$?H??pA_A^A]A\_^]?_?
??
??
??
??
??
??
????@UVWATAUAVAWH??$????H??`H?E?????H??$?H?^H3?H??P
I??I??L??H??H?]?E3?L?t$`L?t$hL?t$pHDž
HDž
HDž
L?aIc$H??H???H??
L?iIcEH??H???H?? 
HDž(
D?E??A??A???A??A??A?A??AD?A??C?A?P?I??A??????????%???A????Hc?3?H?FH??E?A??A??ADǍ???????%???A????Hc?HcF@3?H??E?A???Ic?H????????H???fW??A?-Ⱥ?;?w?M??A?ƅ?OˆE?fW??AB?-?;?w?M??A?ƅ?OˆE?fW??AB?-?;?w?M??A?ƅ?OˆE?fW??AB?-?;?w?M??A?ƅ?OˆE?A??ED?A???yA???THDž?L???ƅ?A?8H???H????1???HDž?L???ƅpE3?H?j?H??p?1???H?EHL?u@?E0A?H?"?H?M0?Y1????D$(?H???H?D$ L??pL?E0?.???H????
??H??????H??????H?}Hr	H?M0?߱H?EHL?u@?E0H???rH??p蹱HDž?L???ƅpH???rH???花HDž?L???ƅ??E
H?O	H??0
?r?L?|$P?H?	H??0
?W?H?D$PH?E?H?D$XH?T$PH?L$`?^L?????A,?E??A,B?E??A,B?E??A,B?E?A??ED?A????A???rHDžPL??Hƅ8A?8H??H??8??/???HDžL??ƅ?E3?H???H????/???HDž@L??8ƅ(A?H?2?H??(?f/????D$(?H??8H?D$ L???L??(?.???H?? ???H?????H?? ???H??@rH??(??HDž@L??8ƅ(H??rH???贯HDžL??ƅ?H??PrH??8腯HDžPL??Hƅ8?@H?	H??0
?m?L?|$P????H????????fW??A?-Ⱥ??;?wf?M??
A?ƅ?fO?f?E?fW??AB?-?;?wf?M??
A?ƅ?fO?f?E?fW??AB?-?;?wf?M??
A?ƅ?fO?f?E?fW??AB?-?;?wf?M??
A?ƅ?fO?f?E?A??ED?A????A???rHDž?L???ƅ?A?8H???H????z-???HDž?L???ƅ?E3?H?4?H????J-???HDž`L??XƅHA?H???H??H?-????D$(?H???H?D$ L???L??H?.???H??P?š?H??趡?H??P裡?H??`rH??H蔭HDž`L??XƅHH???rH????e?HDž?L???ƅ?H???rH????6?HDž?L???ƅ???H????{H??H??0
??H?D$P?????A?R???f?E??AB?C???f?E??AB?4???f?E??AB?%???f?E?A??ED?A???LA???6H?EpL?uh?EXA?8H???H?MX?+???H?E?L?u??E?E3?H?S?H?M??l+???HDž?L???ƅ?A?H??H????9+????D$(?H?EXH?D$ L?M?L????.???H??????H???ޟ?H????˟?H???rH???輫HDž?L???ƅ?H?}?r	H?M?蓫H?E?L?u??E?H?}pr	H?MX?s?H?EpL?uh?EX?7H?????H????A???fW??A?-??E?fW??AB?-??E?fW??AB?-??E?fW??AB?-??E?A??ED?A????A???rHDž8L??0ƅ A?8H??H?? ??)???HDž?L???ƅ?E3?H???H????)???HDž?L???ƅ?A?H?A?H????u)????D$(?H?? H?D$ L???L????.???H????#??H?????H??????H???rH?????HDž?L???ƅ?H???rH????éHDž?L???ƅ?H??8rH?? 蔩HDž8L??0ƅ ?OH???H??0
?|?H?D$P? ???H?g?H??0
?Z?L?|$P?????AZ?E??AZJ?M??AZB?E??AZJ?M?A??ED?A???jA???THDž(L?? ƅA?8H??H????'???HDž?L???ƅ?E3?H???H????'???H?E L?u?EA?H?R?H?M?'????D$(H??H?D$ L???L?E?.???H??0	?:??H???+??H??0	???H?} r	H?M??H?E L?u?EH???rH?????HDž?L???ƅ?H??(rH??躧HDž(L?? ƅ?uH????!???H?s?H??0
???L?|$P?>????A?E??AJ?M??AB?E??AJ?M?A??ED?A????A???rHDžL??ƅA?8H?X?H???&???HDž?L???ƅ?E3?H???H?????%???HDžxL??pƅ`A?H???H??`?%????D$(H??H?D$ L???L??`?.???H??`?g??H???X??H??`?E??H??xrH??`?6?HDžxL??pƅ`H???rH?????HDž?L???ƅ?H??rH???إHDžL??ƅ?H???H??0
???H?D$P ?d???H?K?H??0
???H?D$P?B???H?E?L?u??E?A?8H???H?M??r$???HDžL???ƅ?E3?H?,?H????B$???HDžhL??`ƅPA?
H?;?H??P?$????D$(#H?E?H?D$ L???L??P?.???H???????H??豘?H???螘?H??hrH??P菤HDžhL??`ƅPH??rH????`?HDžL???ƅ?H?}?r	H?M??7?H?E?L?u??E?H?FH?D$PH?D$XH?T$PH?L$`?H???L?|$PL?d$XH?T$PH?L$`?/???L?|$PL?l$XH?T$PH?L$`????L?|$PH?E?H?D$XH?T$PH?L$`??>??L?|$PH?E?H?D$XH?T$PH?L$`??>??L?_H?D$PL?\$XH?T$PH?L$`?>??L?_L?|$PL?\$XH?T$PH?L$`?>??L?_@L?|$PL?\$XH?T$PH?L$`?>??L?]?L?\$PH?E?L?u??E?I???E3?H??H?M??%!???H??0
H?D$@?D$8?????D$0????H?D$`H?D$(H??
H?D$ L??
L?E?H??H?N8藁???H?|$`tH?L$`?{?H?L$`觢L?t$`L?t$hL?t$pH?{rH?艢H?CL?s?H??P
H3??=?H??$?H??`A_A^A]A\_^]?f?g?
?????	\????@USVWATH??$`???H??H?D$8????H???H3?H???I??H??H??E3?A???H?D$XL?d$PD?d$@E?D$8H??H?L$@?? ???H?E?L?e?D?e?E3?H???H?M?? ???H?E?L?d$xD?d$hE?D$H?K?H?L$h? ????D$(4H?D$@H?D$ L?M?L?D$h?)???H?M??I??H???:??H?M??*??H?}?r
H?L$h? ?H?E?L?d$x?D$hH?}?r	H?M????H?E?L?e??E?H?|$Xr
H?L$@?ܠH?D$XL?d$P?D$@???|	???H?E?L?d$x?D$hA?8H???H?L$h????H?E?L?e??E?E3?H?u?H?M?????H?D$XL?d$P?D$@A?(H???H?L$@?c????D$(5H?D$hH?D$ L?M?L?D$@?)???H?M????H?????H?M?????H?|$Xr
H?L$@??H?D$XL?d$P?D$@H?}?r	H?M??ΟH?E?L?e??E?H?}?r
H?L$h譟H?E?L?d$x?D$hH?D$@H?D$XL?d$P?D$@H?L$@H?D$0H?uR??u%A?H????z???L?D$@H??H???I????KA?H????U???L?D$@H??H???$????&A?H?e??0???L?L$@L??H??H???,???H??H???H3?躟H?ĠA\_^[]?????????????H??UH??H??H?E?????H?XH?xH??3?H?}??}?H?}?H?}?H?}?H?}?H?}?H?}?}?L?E??R????H?M?H??t????H???uH?M??F?H?M??????H?}?H?}?H?}?H?}?H?}?H?}?}?H?}?H??L??$?I?[I?{I??]???H?	????????????@SH?? H??H?H??t??3?H?C?H??H?? [?H?AH??H?? [??H?\$VH?? ??H????t=D?A?L?
????H?|$0??@??t	H?K?菞H?C?H?|$0H?\$8H?? ^??p?@??tH???j?H??H?\$8H?? ^??????????????̋D$(H?D?A?AH??D?I??????????̅?t=H?\$H?t$WH?? I??A??H???:??L??D??H??H???>>??H?\$0H?t$8H?? _???????????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H???߽?H???H?H?OH?A3?H?q@?1H?SI???E3??????C@?G@H?OHH?AH?q@?1H?SHI???E3??m???H?OpH?AH?q@?1H?SpI???E3??I???H???H?AH?q@?1H???I???E3???????????H??H?\$HH?t$PH??0_????????????????H??UATAUAVAWH??????H??@H?E?????H?XH?pH?x H?k?H3?H??0H??????%??XA???AD?E3????.A+?????	H?E?L?u?D?u?E?G*H??H?M??a???H?E?L?u?D?u?E3?H?$?H?M??=???H?E?L?u?D?u?E?GH???H?M??????D$(?H?E?H?D$ L?M?L?E????H?M0?Ԏ?H???Ŏ?H?M0赎?H?}?r	H?M?謚H?E?L?u??E?H?}?r	H?M?茚H?E?L?u??E?H?}?r	H?M??l?H?E?L?u??E???D$t???D$t???D$t????2??????
H?E?L?u??E?A?.H???H?M??!???H?E?L?u??E?E3?H???H?M??????H?E?L?u??E?A?H?7?H?M???????D$(?H?E?H?D$ L?M?L?E????H?M0蒍?H??胍?H?M0?s??H?}?r	H?M??j?H?E?L?u??E?H?}?r	H?M??J?H?E?L?u??E?H?}?r	H?M??*?H?E?L?u??E???D$p???D$p???D$p??I???H?Ⱥ?|??H?N8??t_?E??HcFH?E?HcFH?E?L?u?H?EL?uL?uL?u L?u?????H??H?D$xH?D$(L?t$ L?M?L?D$p??۔?;Hc^Hc~????H??H?D$xH?D$8L?t$0L?t$(H?\$ L??L?D$p?蘔H??L??L??L??Lc^L??LcVL?? HDž(?D??A??A???A??A??A??ADǃ??A?P?E??I??A??????????%???A????H?I??H;F?:A??ED?B????????%?????H?E??Ic?H??H?N8????H??L?t$ E3?L??I????L??D??A??A???A??A??A??ADǃ??A??H???Hc^????????%???????H?H??H?E?HcFH?E?H?E?A??ED?B????????%?????H?H??H?N8????H??L?t$`L?t$XD?t$PL?t$HH?\$@L?t$8H?FH?D$0H?E?H?D$(H??H?D$ L??M??H?V?C?H?N8????H??膒?L?nH?N8????H??L?t$@L?t$8D?t$0H??H?D$(H??H?D$ E3?L??I??聒D?A????????ƒ?AD?A??C?I??A?̀????????????????Hc?HcFH??H;NtH?N8????H???ߑI???A??L$x??t!?t3??H??L?
??A??H?e???6??H??H??0H3??f?L??$@I?[8I?s@I?{HI??A_A^A]A\]??????H?L$UVWATAUH??0H?D$(????H?\$hL??L???D$ ??J?H??H?D$pH??t)A?u???A?}A?]I???3???H?E?]?}?u?3?I?,$H??t??-?I?D$??	I?D$?D$ I??H?\$hH??0A]A\_^]??????????????@SH??@H?D$X????H?W?H3?H??$0H?ـ=??t	????jH?D$ H?D$PH?D$8H?D$0?D$ A?	H???H?L$ ?_???L?D$ H?b?H???:|???5?????-???$???H??$0H3??͔H??@[?????@USVWATAUAVAWH??$H???H??H?Ep????H???H3?H???L?L$PM??H??L??L?ExL?? H??(L??@3ۉ\$XH??H?D$pH??H?E?H?M?U???D$XE3?H?U?H?L$p?2??H?D$pHcHH???H?DpH?E?H?D$`H?M??q??H?Y?H?E?H?]??]??0???tH???H?M????H?ȋ??Ȱ??8???tH???H?M????H?ȋ????H???H?L$p?iI???I???E3?H??I???F???H???rH???荒HDž?3?H??????H???H?D$`HDž?H??????I???E3?I??H????K???M??L???H??I????_??L??M??tbE?L?L$PA?	B?D??A??Hc?I?I?	A?OA?A?D????Hc?I?OI?IA?OA?A?D????Hc?I?OI?IM??I??I????1??3???H?H?FH+?H??H??tZ@L?L9L?9??I??蟍??t#???2/??H??L?
v?A?lH?#??2??H??H??H?H?FH+?H??H;?r?3?I???r???H??H?|$@H?|$8?|$0L?|$(H?D$PH?D$ E3?E?AI??????t#???.??H??L?
??A?oH????,2????H??t??t? I??????H????I???????H???ŒI???H???t$???Y.??H??L?
??A?|H?J???1???H?EH?D$`H?D$pHcHH???H?DpH?E?H?D$PH???H?E??EtH?M????L?]?I??rL??h?Ut??%H???H?I?H???H?HH??hH?H?D??$H?UpH?? ??q?H???H??t?????q??u	H?Mp??qL???L???L???L???H???D?8L???H???H???H;?t?qfW?f(?fD(?fD(?fD(?fD(?fD(?fD(?fD(??|$@fD(??ȇ??H??3?????????A?U???rH??hH?L?IH??0M?H??L?H?<	L?8H??H??H?4?L?$IHk??fff?f???I*?DX?f???I*@?X?f???I*?DX?f???I*?DX?f???I*?DX?f???I*8?DX?f???K*?DX?f???I*?DX?f???I*0?DX?f???K*`?X?I??I??I??H???Z????|$@fW??sE3?H?UpH?? ?(????H??H????XpH???H????q?D H???H??t?????o??u	H?Mp??oL???L???L???L???H???D?8L???H???H???H;?t?oA?H?UpH?? ?????H??H????oH???H?????p??D$@H???H??t????:o??u	H?Mp?&oL???L???L???L???H???D?8L???H???H???H;?t??nA?H?UpH?? ??????H??H????	oH???H????Fp?D8H???H??t????n??u	H?Mp?nL???L???L???L???H???D?8L???H???H???H;?t?NnA?H?UpH?? ?4????H??H????dnH???H????o?D0H???H??t?????m??u	H?Mp??mL???L???L???L???H???D?8L???H???H???H;?t?mA?H?UpH?? ?????H??H????mH???H?????n?D(H???H??t????Km??u	H?Mp?7mL???L???L???L???H???D?8L???H???H???H;?t?mA?H?UpH?? ??????H??H????mH???H????Wn?DH???H??t????l??u	H?Mp?lL???L???L???L???H???D?8L???H???H???H;?t?_lA?H?UpH?? ?E????H??H????ulH???H????m?DH???H??t????l??u	H?Mp??kL???L???L???L???H???D?8L???H???H???H;?t?kA?H?UpH?? ?????H??H?????kH???H????
m?DH???H??t????\k??u	H?Mp?HkL???L???L???L???H???D?8L???H???H???H;?t?kA?H?UpH?? ??????H??H????+kH???H????hl?DH???H??t????j??u	H?Mp?jL???L???L???L???H???D?8L???H???H???H;?t?pjA?	H?UpH?? ?V????H??H????jH???H?????k?0H???H??t????j??u	H?Mp??iL???L???L???L???H???D?8L???H???H???H;?t??ifA(?fT??f/c???fD/?v2??
>??.??-??6?%??0?D??
??????-??????%???AY??Af(??YD$@?AF?AY??ANf(??AY??AF?AY??An ?AY??AV(f(??AY??AF0f(??AY??AN8?AY??Af@?Y??A^HI???_????H??8H??t????h??uH?? ?hL??PL??HL??@L??0H??`D?8L??8H??pH??hH;?t?Xh?H?|$HtH?L$H?(?H?L$H?TtL?|$HL?|$PL?|$XH?M?>X???H?M??4X???H???H??t?????g??uH?????gL???L???L???L???H???D?8L???H??H???H;?t?gH??H3??tL??$?I?[PA(s?A({?E(C?E(K?E(S?E([?E(c?E(k?E(?p???E(?`???I??A_A^A]A\_^]????????D?D$UVWATAUH??$????H??`HDž?????H??$?H???H3?H??PL??H???E?E3?D?m?A??H?????	??%??=?B??H????????q??
?hHDžL??D??E?E.H???H????????HDž@L??8D??(E3?H?|?H??(?????HDžhL??`D??PE?E*H???H??P?a?????D$(?H??H?D$ L??(L??PA?U?H????f?H???f?H?????e?H??hrH??P??qHDžhL??`ƅPH??@rH??(?qHDž@L??8ƅ(H??rH???qHDžL??ƅH?=???jHDžhL??`ƅPA?.H??H??P?J????HDž@L??8ƅ(E3?H??H??(?????HDžL??ƅE3?H?ԢH?????????D$(?H??PH?D$ L??(L???????H????d?H???d?H????vd?H??rH???gpHDžL??ƅH??@rH??(?8pHDž@L??8ƅ(H??hrH??P?	pHDžhL??`ƅP3?A??I????pH????E3?L?E?H???H???KeH?؋%???t??
u'L???L??pH?ӹP?NfH??H???C?????????E?????????M??s$?t$p?C ?D$t?t$xH?|$pH?? ?|$|???w?}??mHDžhL??`ƅPA?.H???H??P?&????HDž@L??8ƅ(E3?H??H??(??????HDžL??ƅA?H???H?????????D$(H??PH?D$ L??(L???????H????qb?H???bb?H????Ob?H??rH???@nHDžL??ƅH??@rH??(?nHDž@L??8ƅ(H??hrH??P??mHDžhL??`ƅP????????E3?H??H??@?+c?L?m?D?m?L?m?L?m?L?m?L?m?L?m?L?mD?mH??@H?M??z????ƙ??‹?????;?t?ËǙ??‹?????;?t???M????L?mD?mL?m L?m(L?m0L?m8L?m@L?mPD?mX??~??~A?D??H?M?V???L?m`D?mhL?mpL?mxL???L???L???L???D????D?JD?B	H?M`??U???H?E?H?T$x?M?;?HM‹?E?H?E?H?T$|;?HM?Hc?E?H??8HDž@HDžHHc?H?? Hc?H??(HDž0L?l$PL?l$XL?l$`L?m?L?m?L?m?H?D$@H?E?H?D$HH?T$@H?D$PH?L$XH;???H?T$@H;???H?t$@H+?H????????H????????H?T$`H;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H????????H????????H?T$`H;?u[L??L+?I??L;?vH?
x??j??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?H??H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?D$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?|??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?D$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
M?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?D$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
[??M??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?+???H?L$XH?L$pH?L$xH??tH?H?E?H?AH?L$XH??H?L$XH?D$@H?E(H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?_???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?E(H?AH?L$XH??H?L$XH?D$@H?EH?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
0??"??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?m???H?L$XH?L$pH?L$xH??tH?H?EH?AH?L$XH??H?L$XH?D$@H?E H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??L;?vH?
ё?Â?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??L;?vH?
>??0??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?E H?AH?L$XH??H?L$XH?D$@H?E?H?D$HH?D$@L?D$PH;???H?D$@L;???H?t$@I+?H?T$`H;?u]H??I+?H??H;?vH?
r??d??H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?E???H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$`H;?uXH??I+?H??H;?vH?
??Հ?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?E?H?AH?D$XH?D$@H?E?H?D$HH?T$@H?L$P??H?D$(H?J?H?L$(?>W?H??H???H??HH?D$ ????3?H??tUH????????H;?wH???WH??u8H?D$PH?T$PH?L$(?.x?H?΄H?D$(H???H?L$(??V?H??H??̉D?AI?H?AH??????????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H???????????????H?AH+H???????H?????????????????????????????H?AH+H???????H??(H?
U??Gu???????????????H??????????????H?H????????????H??H??H?????????????????????D$??????????????B?A?B?A?B?AH??????H?????????3??H??????????̋D$(?D?A?AH??D?I?????????????D$????????????D$????????????D$???????????3???????????????H??HH?D$ ????3?H??tUH????????H;?wH????TH??u8H?D$PH?T$PH?L$(??u?H???H?D$(H???H?L$(?T?H??H???H??????????????3???????????????3???????????????H???????????????H???????????????3???????????????H???????????????H?????????????????????????????????????????????????????????H???????????????H?H?I?H?AH??????????????????H???????????????H???????????????H?\$L??I??H?B?H?L??H+?H??L??I;?}\A?AI??AAH?A?L?AL?;?}@A??M?C??A?D?C?D?A?D?C?D?A?D?C?D?I?@?M??H?H+?H??L??I;?|?A?H?\$M?C??A?AC?D?A?AC?D?A?AC?D????????̋??B?A?B?A?B?AH?????????H???????????????L?	Hc?L??E??D??A;?t0A???Lc?C??D;?u?A;?tHc?Ic?E??M?A;?u?A??????????H?\$L?I Mc?Hc?C??A9?}H?D??H?I@??B?A??H?\$?A??C9?H?}B??H?I@B?????H?\$?D??H?A B??H?I@??H?\$B?A???????????D?	?D?AD+??BD+??A?JE??E??+???A?A????????????????D??D+??A?JE??+???A???H??????????????3?H?H?AH?AH??????????????????H??HH?D$ ????3?H??tXH????????H;?wH??H???!QH??u8H?D$XH?T$XH?L$(?Kr?H??~H?D$(H???H?L$(??P?H??H????????????????3?H?H?AH?AH??????????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H????????????H??????????????H??HH?D$ ????3?H??tXH????????H;?wH??H???!PH??u8H?D$XH?T$XH?L$(?Kq?H??}H?D$(H???H?L$(??O?H??H???????????????????B?A?B?A?B?AH??????H?????????3??H???????????@SH??H?Lc?H?Q F??I?LcIHM?H??H?D$F??F?T?B?D??D$B?D??CHH?	B???CHH??[ËD$(?D?A?AH??D?I????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????3?H?H?AH?AH??????????????????H?H+H????????H??????????????L?AH????????L+I??I??H??H+?I;?sE3?L;?LB?I???L?L;?LB?I????H?H????????????H??H??H??????H??HH?D$ ????3?H??tXH????????H;?wH??H???NH??u8H?D$XH?T$XH?L$(?;o?H??{H?D$(H???H?L$(??M?H??H????????????????H?H9?????????H???????????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I?????????????????????????????????????????????????H?H?I?H?AH??????????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H??????̋D?D?ID?QD?Y??B?A?B?A?B?AD?D?JD?RD?Z????????????H?\$H?t$H?|$I??I??L?LL??L??H??L;?}e?M??M?C?T??C?D?CT??CD?;?}I??M?I??H?A??C??A?D?C?D?A?D?C?D?A?D?C?D?M??O?L	L;?|?u4H??H?M?A?D??C??A?D??C?D?A?D??C?D?A?D??C?D?L?G?I?@?H?H+?H??L??I;?}cf??CI??CH?A?L?AL?;?}@A??M?C??A?D?C?D?A?D?C?D?A?D?C?D?I?A?M??H?H+?H??L??I;?|??H?t$H?|$M?C?ËCC?D??CC?D??CH?\$C?D??????̋??B?A?B?A?B?AH?????????H;?t3fff??B?H??I??A??BA?@?BA?@?BA?@H;?u?I??????̋H+?A??AH??A?@?AA?@?AA?@L??3??????????H??(D?
D?RA????yD9QuD9Iu?%?A;?uH?yuD?L$4E??L?D$0?D?T$0?>H??(?????????3?H?H?AH?AH??????????????????H?H????????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
x?
i?H???h???H??H?H?H?GH?_?H?\$0H?? _??????????H?H+H????????H?H?H?????????H?AH?H????????I??H??LL????L?H????????????H?H9?????????I??L??H;?t/DE?I??H??D?@?E?A?D?@?A?I??H?A?I??H?L;?u????????????????????????????????????????????????̋D?D?ID?QD?Y??B?A?B?A?B?AD?D?JD?RD?Z????????????@SWH??H??L??H+?H??H??H?H+?H??H??H????H?l$0H?t$8L?d$@L?l$H??L?t$H??L?<$H?lH?f?D?v?D?~?D?f?D?n?H??H??H??L??L??H;?}gff?I??H?A?L??A?D?AL??AD?;?}I??M?I??H?A??C??A?D?C?D?A?D?C?D?A?D?C?D?M??O?L	L;?|?L;?u4H??H?M?A?D??C??A?D??C?D?A?D??C?D?A?D??C?D?L?S?I?B?H?H+?H??L??I;?}[G?,f?I??H?A?L?AL?A;?}@A??M?C??A?D?C?D?A?D?C?D?A?D?C?D?I?A?M??H?H+?H??L??I;?|?M?G?4?G?|?G?d?G?l?H???????L?<$L?t$L?l$L?d$@H?t$8H?l$0H??_[?????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I??????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H??H?$????H?L$ H?L$0H??t???B?A?B?A?B?A?H???????????H?\$D?I?BI??DIBL??L??A;?}:A??
E?B?RE?JA?A?CA?BA?CA?BA?CA?BA?A?SE?CE?K?KA?BKAB;?}6A???SD?CD?K?A?B?CA?B?CA?B?CA?
A?RE?BE?JA?KA?BAKAB;?}3?H?s@H?sHH?sPH9s tH?K ?@^H?K ?m>H?s H?s(H?s0H?;tH???^H??J>H?3H?sH?sH?\$HH?t$PH??0_????????????????????????????????????????????H??(D?D$8L?D$8Hc?????H??(??????H??H?D$0?D$(H?D$ ?U???H??H?H??H?D$0?D$(H?D$ ????H??H?@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ????H??0[????????H?\$H?l$H?t$H?|$ ATAUAVH?? L??I??M??H+?L??I???H??I??H?H+?H??H??H??I?H??????H?oL;?s(H?W?D?B?D?J?DB?D
E;?|
H??H??L;?r?I;?sD?GDG?UUD;?|	H??I;?r?H??H??@I;?sbfff??WD?FWDFD;?;|B?H??H???D?AD?ID?Q??F?A?F?A?F?A?D?FD?ND?VH??I;?r?I;?v]@?S?D?GS?DGD;?:|A?C??O??W?D?G?D?O??G??C?H???G?C??G?C??G?K??S?D?C?D?K?H??L;?r?I;???I;??@H;?t2?E??WD?GD?O??E?G?E?G?E?G?M?UD?ED?ML??L??H??A?A?
A?RE?BE?JA?A?CH??H??A?BA?CA?BA?CA?BA?A?SE?CE?K????H??I;?utH??H;?t0???SD?CD?K??G?C?G?C?G?C??WD?GD?O?E???WD?GD?O??E?H???G?E?G?E?G?M?UD?ED?M?!??????VD?FD?N??CH???F?C?F??C?F???SD?CD?K?????H?\$@H?t$PI?>H?|$XI?nH?l$HI??H?? A^A]A\????????????????E3??????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?BA?@?B?H???????@WH??0L??H??L+?I??H???H??~|H?\$@H?Z?fff??I???L?L$ ?D$ ?CI???D$$?C3҉D$(?CH?ωD$,???G?C?G?C?G?C????H??L??L+?I??I??H???H???H?\$@H??0_?????????????????@SH?? H?9H??t?YH??A93?H?H?CH?CH?? [?????????????????????????????@SH?? 3?D?D$8L?D$8Hc?H??H?H?AH?A????H??H?? [????????????????@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?-???H??0[????????M;?t???H???H??p?k????????????????????????????H???H???H???H???H??H???H??H???H??H???H??H???H???H???L???L???L???L???H??t??EL????????%H??(H?I?H??(H?HH???H?H?D???H???H??????H???H??t???????uH?????L??L??L??L???H?? D?0L???H??0H??(H;?t?H???H?? ?ޖ????????@?????D?????H?????LH???H??PH???H??XH??H??`H??H??hH??H??pH??H??xH??HH???L???L???L???L???H??t??L????????%H??(H?I?H??(H?HH???H?H?D??DH???H??@?m?H???H??t????R??uH????;L??L??L??L???H?? D?0L???H??0H??(H;?t?E?t$?D?t$@B??????A??A?B?| ?A??A??E3?L?d$pL?d$xL?e?Hc?H????D$D????L?D$DH??H?L$p?z????L?e?L?e?L?e?Hc?H?M??a?????]??}?D?e?A??D?e?E??L???L??PE????E??L???HcD$0D???D$DE3?L?l$8H??H?E?H???H?M??L??M?I?zH?}?H??H??I?H???H?L??M?H??IۋL$0?Ʌ???D?d$hL?mxL?ZL?]pL+?L???L+?L???H+?H????+D$0?D$4??H???C?D?C?L?C????E?K?D???E?D???D???G?D???F?T?D???F?D???D?????D?????A+?D??A??A??D??A??E??D??E+???D??????D??E??E+?E??E??E???D????D??D+????D??D+????E??D+?E??E??E?E??E????+????+????D+?E????D???D?D?????E??D+???D??A??????E??D+?E??E??E????A??+????A??+?????????D+????D+?E??E??E????D??D+ȋ????????+????????+??????E??A????A??+?A??A?????+??????D?mhD?]lH?D$pL?]xE?D?T$hDT$4H?EhH??HcU?H?H?M?D??D?D??D????D?H?L$p?E?A??M????M?D?u`?}dH?D$pE?H?E`H???Hc?H?H?M??|$h?H?A?$H??DH?H?AHcHH??DH?DH??H???????????????H???????????????@SH?? H?YH???\?H??H?? [???H?L$SH??0H?D$(????H???D$ ??t(H?7EH?AH?$EH?AH?? ?I???D$ H??CH?H?CHcHH?MCH?DH?SH?T$PH??CH?H?BHcHH??CH?DH??DH?H?xDH?H?CHcHH?>DH?DH??H??0[?H?L$SH??0H?D$ ????H???s??H?K?H??0[?X???????H?T$H?L$H??H?D$????L???$E??t(H?CDH?AH?0DH?AH??<H?A ?$H??BH?H?AHcHH?YBJ?D	I?QH?T$(H?CH?H?BHcHH??BH?DH??CI?H??CH?I?AHcHH?JCJ?D	I??H????????????????H???????????????@SH??0H?D$ ????H?Y H?\$@H???^??H?K??H?H??H??0[?}??????????H?L$H??H?D$????L??L??E3?D?$E??t(H?EDH?AH?2DH?AH?o;H?Ax?$H?uAH?H?AHcHH?;AJ?D	I?QH?T$(H??AH?H?BHcHH??AH?DH??BI?H?fBH?I?AHcHH?,BJ?D	H??CI?H?^CH?I?AHcHH?$CJ?D	I?AHcHF?\	A?B A?A A?B$A?A$I?B(I?A(A?B0A?A0I?B8I?A8I?B@I?A@A?BHA?AHA?BLA?ALA?BPA?API?BXI?AXI?B`I?A`A?BhA?AhA?BlA?AlI??H????̋B ?A ?B$?A$H?B(H?A(?B0?A0H?B8H?A8H?B@H?A@?BH?AH?BL?AL?BP?APH?BXH?AXH?B`H?A`?Bh?Ah?Bl?AlH???????H??8?????D$ D?B???H??8??????????@SH?? H?YxH???f?H??H?? [?e??H?L$SH??0H?D$ ????H?Y?H?\$@H???
??H?K?H??0[????????????????H?L$H??H?D$????L??L??E3?D?$E??t(H??BH?AH??BH?AH?9H?AP?$H?%?H?H?AHcHH??>J?D	I?QH?T$(H???H?H?BHcHH?\?H?DH?H@I?H?@H?I?AHcHH???J?D	H?BI?H??AH?I?AHcHH??AJ?D	I?AHcHF?\	A?B A?A I?B(I?A(A?B0A?A0A?B4A?A4A?B8A?A8A?BI?I?AHcHH??>J?D	I?AHcHF?T	?BA?A?BA?AI??H????̋B?A?B?AH??????????????????A?E??A?Q	???????????????@SH??0H?D$ ????H?Y H?\$@H?K???H??H??0[?6???H?L$H??8H?D$ ????H???H??8????H?L$H??H?D$????L??E3?D?$E??tH??>H?AH?2H?A@?$H?#8H?H?AHcHH??7J?D	H??>I?I?AHcHH?S>J?D	I?AHcHF?T	?BA?AH?BI?AH?B I?A ?B(A?A(?B,A?A,H?B0I?A0I??H?????̋B?AH?BH?AH?B H?A ?B(?A(?B,?A,H?B0H?A0H????H??H?>?t"??=?D$8???D$0?D$(?D$ ?1?H??H???????????@SH??0H?D$ ????H?Y@H?\$@H?K??q?H??H??0[????@SH?? A?PH?????H??H?? [????H?L$H??8H?D$ ????H???H??8?#??H?L$SH??0H?D$(????H??E3?D?L$ E??tH??=H?AH?k0H?Ah?D$ H?p6H?H?AHcHH?66H?DH??=H?H?CHcHH?p=H?DH?CHcHD?LH?KH??A?P?'??H??H??0[??????????@SH?? H??H??A?PH?????H??H?? [????????????@SH??pH??H?L$ ???A?H??H?????H??p[???????@SH??0H?D$ ????H?YhH?\$@H?K????H??H??0[?&???H?L$H??8H?D$ ????H???H??8????H?L$H??H?D$????L??E3?D?$E??tH?`=H?AH?
/H?A@?$H?5H?H?AHcHH??4J?D	H?=I?I?AHcHH??<J?D	I?AHcHF?T	H?BI?A?BA?AH?B I?A ?B(A?A(?B,A?A,?B0A?A0?B1A?A1I??H???????????????H?BH?A?B?AH?B H?A ?B(?A(?B,?A,?B0?A0?B1?A1H???????????????H??X??2?
???D$@?D$8?D$0A??D$(?D$ ?%?H??X???????????@SH??0H?D$ ????H?Y@H?\$@H?K??A?H??H??0[?v???H?L$H??8H?D$ ????H?g<H?A?H?A?HcPH?,<H?D
?H??8?????????H?L$SH??0H?D$(????H???D$ ??tH?o<H?AH??????D$ H?B3H?H?CHcHH?3H?DH??;H?H?CHcHH??;H?DH??H??0[?????????????H?L$H??H?D$????H???$E??tH??;H?AH??,H?A?$H??2H?H?AHcHH?y2H?DH?M;H?H?BHcHH?;H?DH??H?????????????????H???????????????@SH??0H?D$ ????H?YH?\$@H??:H?C?H?C?HcPH??:H?D?H????H??H??0[??????H?L$H??8H?D$ ????H???H?L$@H??:H?A?H?A?HcPH?c:H?D
?H??8?/??????????????H?L$H??H?D$????L???$E??tH??;H?AH?m+H?A(?$H?s1H?H?AHcHH?91J?D	H?
:I?I?AHcHH??9J?D	H?;I?I?AHcHH??:J?D	?BA?A?BA?A?BA?A?BA?A?B A?A I??H??????????????̋B?A?B?A?B?A?B?A?B ?A H????????????????H??8A??D$(?D$ ?A?QE?????H??8?????@SH??0H?D$ ????H?Y(H?\$@H?K?H?L$@H?9H?A?H?A?HcPH??8H?D
???H??H??0[?????????????????H?L$H??8H?D$ ????H???H?L$@H??8H?A?H?A?HcPH??8H?D
?H??8?O??????????????H?L$H??H?D$????L???$E??tH??:H?AH??)H?A0?$H??/H?H?AHcHH?Y/J?D	H?-8I?I?AHcHH??7J?D	H?:I?I?AHcHH??9J?D	H?BI?AH?BI?AH?B I?A H?B(I?A(I??H???H?BH?AH?BH?AH?B H?A H?B(H?A(H???????????????H??8??9??_?
?9?D$ ?%?H??8???@SH??0H?D$ ????H?Y0H?\$@H?K?H?L$@H?H7H?A?H?A?HcPH?
7H?D
????H??H??0[????????????????H?L$H??8H?D$ ????H???H?L$@H??6H?A?H?A?HcPH??6H?D
?H??8???????????????H?L$H??H?D$????L???$E??tH??9H?AH??'H?A0?$H??-H?H?AHcHH??-J?D	H?]6I?I?AHcHH?#6J?D	H??9I?I?AHcHH?9J?D	H?BI?AH?BI?AH?B I?A H?B(I?A(I??H???H?BH?AH?BH?AH?B H?A H?B(H?A(H???????????????H??8?9??]?
?8?D$ ?y?H??8???@SH??0H?D$ ????H?Y0H?\$@H?K?H?L$@H?x5H?A?H?A?HcPH?=5H?D
??
?H??H??0[?B???????????????H?L$H??8H?D$ ????H???H??8????H?L$H??H?D$????L??E3?D?$E??tH?9H?AH?&H?A(?$H??,H?H?AHcHH??,J?D	H??8I?I?AHcHH?s8J?D	I?AHcHF?T	?BA?AH?BI?AI??H????̋B?AH?BH?AH????????????????̺ D?B??H??B?A?B?A?B?AH??ËB?A?B?A?B?AH?????????????H?I>H??B?A?B?A?B?AH??ËB?A?B?A?B?AH?????????????H?y0H?H?????H???????????????H?L$SH??0H?D$ ????H??赽?H??2H?H??H??0[??H?L$H??8H?D$ ????H??2H?H??8?E????????????H?L$WH??0H?D$ ????H?\$H??H??H?t2H?????tH???U?H??H?\$HH??0_??????????H?L$WH??0H?D$ ????H?\$HH?t$P??H????t*L?
R???D?A????|?@??t	H?K????H?C?? H??1H?芼@??tH?????H??H?\$HH?t$PH??0_????????????????I??H??E??H???????????????????H??????????????̺???????????@SH?? H??H??(?^???H?Kx?U???H????I???H???=???H??hH?? [?,???????????????H??8A??@?D$ E?????H??8?????????????H??8???D$(?D$ D?J?D?B??:?H??8??????@SH?? 3?H??H??AH?AH?AH?A H?A(H?A0H?A@?AH??~E??~薩??H?T$PH???!??H??H?? [?@SH?? H??H??H??H??????H??H?? [?H?T$SH??0H?D$(????H??3??D$ H??BH?BH?BH?B H?B(H?B0H?B@?BH?D$ ?F???H??H??0[??????????????H??8H??E??yH??H??H??8??%??fW????D$ ????H??8??????????H?T$SH??0H?D$(????H??3??D$ H??BH?BH?BH?B H?B(H?B0H?B@?BH?D$ ?????H??H??0[??????????????H?a0H?H?????H?Q0H?H?????H???????????????H?\$WH?? ??H???Z???tH?????H??H?\$0H?? _??H?\$VH?? ??H????t=D?A?L?
??H?|$0?:?@??t	H?K?诿H?C?H?|$0H?\$8H?? ^???@??tH??芾H??H?\$8H?? ^???????????????H??????????????H?H???????????H?A????????????H?QH????????*H+H??H??H??H???H???????????????H?QH????????*H+H??H??H??H???H?????????????????????????????H???????????????H???????????????H??馽????????H?AH+?????????H?AH+???????????????????????H???????????????H???V?????????H?AH+H???????H?AH+H?????????????????????H???????????????H????????????H?AH+?????????H?AH+?????????3?H?H?AH?AH????????????????????????????????H?AH+H???????H?AH+H?????????????????????H???????????????H???f?????????H?AH+H???????H?AH+H?????????????????????H???????????????H????????????H?AH+H???????H?AH+H?????????????????????H???????????????H???ƻ????????H?AH+H???????H?AH+H?????????????????????H???????????????H???v?????????H?QH????????*H+H??H??H??H???H????????????????H?QH????????*H+H??H??H??H???H??????????????????????????????H???????????????H????????????H?AH+H???????H?AH+H?????????????????????H???????????????H??閺????????H?AH+H???????H?AH+H?????????????????????H???????????????H???F?????????H?QH????????*H+H??H??H??H???H????????????????H?QH????????*H+H??H??H??H???H??????????????????????????????H???????????????H???????????????H??馹????????H?AH+H???????H?AH+H?????????????????????H???????????????H???V?????????H?AH+H???????H?AH+H?????????????????????H????????????H??(H?
e??W????????????????H??(H?
E??7????????????????H??(H?
%??????????????????H??(H?
???????????????????H???????????????H???????????????H???f?????????H??(H?
????????????????????H??(H?
????????????????????H??(H?
u??g????????????????H??(H?
U??G????????????????H??(H?
5??'????????????????H??(H?
??????????????????H??(H?
????????????????????H??(H?
????????????????????H??(H?
????????????????????H???????????????H???????????????H????????????H??(H?
e??W????????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H??????????????H???????????????H??????????????H?A????????????H?A`????????????H?Aa????????????H???????????????H?A????????????H?A????????????H?A?xaufDH??H?@?xat?H??????????????????H??xau?H??H??xat?H???H??????????????H??????????????H??????????????H??????????????H?UUUUUUU??????H???????????????H??????????????H?UUUUUUU??????H??????????????H?A`????????????H?Aa????????????H???????????????H?A????????????H?A????????????H?A?xaufDH??H?@?xat?H??????????????????H??xau?H??H??xat?H???H??????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H9?????????H?H9?????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H????????????H?H9?????????H?H9?????????H?H????????????H?A????????????H???????????????H?A????????????H???????????????H??????????????H??????????????H?H????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????H?H????????????H??H?	?yauMH?A?xauH??yau
?H??H?	?yat?H?H???H?I?yauH?AH9u
H?
H?I?yat?H?
H??????H?H????????????H??H?	?yauMH?A?xauH??yau
?H??H?	?yat?H?H???H?I?yauH?AH9u
H?
H?I?yat?H?
H?????????????????????	?QH????????I?D$?L$H?D$H?H?????????????????̋??B?AH?????3?H?H?????????̋??B?AH???????I?D$?L$H?D$H?H??????????????????H??????????????H??????????????H??????????????H?H?H?BH?AH?????????????????3?H?H?AH??????H?H?H?BH?AH?????????????????@SH?? H??H?H??t?蓣H?C?H??H?? [?H?AH??H?? [??@SH?? H??H?H??t??S?H?C?H??H?? [?H?AH??H?? [??@SH?? H??H?H??t???H?C?H??H?? [?H?AH??H?? [??H??HH?D$ ????3?H??tYH????????H;?wH?IH??萮H??u8H?D$PH?T$PH?L$(????H?Z?H?D$(H?f<H?L$(?Z??H??H???????????????H??HH?D$ ????3?H??tHH???w
?!?H??u8H?D$PH?T$PH?L$(?K??H???H?D$(H??;H?L$(???H??H????????????????H??HH?D$ ????3?H??tUH????????H;?wH??褭H??u8H?D$PH?T$PH?L$(????H?n?H?D$(H?z;H?L$(?n??H??H???H??HH?D$ ????3?H??tUH????????H;?wH???4?H??u8H?D$PH?T$PH?L$(?^??H???H?D$(H?
;H?L$(????H??H???H??HH?D$ ????3?H??tUH????????H;?wH???ĬH??u8H?D$PH?T$PH?L$(????H???H?D$(H??:H?L$(莬?H??H???H??HH?D$ ????3?H??tUH????????H;?wH???T?H??u8H?D$PH?T$PH?L$(?~??H??H?D$(H?*:H?L$(???H??H???H??HH?D$ ????3?H??tUH????????H;?wH????H??u8H?D$PH?T$PH?L$(???H???H?D$(H??9H?L$(讫?H??H???H??HH?D$ ????3?H??tYH?UUUUUUUH;?wH?IH???p?H??u8H?D$PH?T$PH?L$(????H?:?H?D$(H?F9H?L$(?:??H??H???????????????H??HH?D$ ????3?H??tUH?????????H;?wH?????H??u8H?D$PH?T$PH?L$(???H???H?D$(H??8H?L$(辪?H??H???H??HH?D$ ????3?H??tUH????????H;?wH??脪H??u8H?D$PH?T$PH?L$(????H?N?H?D$(H?Z8H?L$(?N??H??H???H??HH?D$ ????3?H??tYH?UUUUUUUH;?wH?IH????H??u8H?D$PH?T$PH?L$(?:??H???H?D$(H??7H?L$(?ک?H??H???????????????H??HH?D$ ????3?H??tUH????????H;?wH??蔩H??u8H?D$PH?T$PH?L$(????H?^?H?D$(H?j7H?L$(?^??H??H???H??HH?D$ ????3?H??tUH????????H;?wH???$?H??u8H?D$PH?T$PH?L$(?N??H???H?D$(H??6H?L$(???H??H???H???????????????H???????????????H??HH?D$ ????3?H??tUH?vb'vb'vH;?wHk?h蔨H??u8H?D$PH?T$PH?L$(????H?^?H?D$(H?j6H?L$(?^??H??H???H???????????????H???????????????H??HH?D$ ????3?H??tUH?vb'vb'vH;?wHk?h??H??u8H?D$PH?T$PH?L$(?.??H???H?D$(H??5H?L$(?Χ?H??H?????????????????B?Hc?H???????H??(H?IH??t
??Q?H??(?????@SH?? H??H?IH??t????.???uH??蝝H?K?$?E3?L?[L?H?? [?A??Hc?H???????Hc?H???????????Hc?H????????????	?Q?YH??????????????????	?Q?YH?????????????????H??(H?IH??t
?聚H??(?????H??(H?IH??t
??a?H??(?????H??(H?IH??t
??A?H??(?????H??(H?IH??t
??!?H??(?????@SH?? H??H?IH??t????????uH???)?H?K???E3?L?[L?H?? [?H??(H?IH??t
????H??(?????H??(H?IH??t
?衙H??(?????H??(H?IH??t
?聙H??(?????H??(H?IH??t
??a?H??(?????H??(H?IH??t
??A?H??(?????H??(H?IH??t
??!?H??(?????H??(H?IH??t
???H??(?????H??(H?IH??t
???H??(?????H??(H?IH??t
????H??(??????D$????????????D$???????????H?\$WH?? H??I??H??H+?H??L?????H?;H?\$0H?? _????????????????H?\$WH?? H+?I??H??H??H??H??L?????H?;H?\$0H?? _????????D$???????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????H?\$WH?? H+?I??H??H??H??H??L?????H?;H?\$0H?? _????????D$???????????H?\$WH?? H??I??H??H+?H??L?????H?;H?\$0H?? _?????????????????D$???????????H?\$WH?? H+?I??H??H??H??H??L???]?H?;H?\$0H?? _????????D$????????????D$???????????H;?tOfff??H?? I?? A?@??A?A?@?A?A?@?A?A?@?A?A?@??A?A?@?A?A?@??A?A?@?H;?u?I????????????D$???????????H?\$WH?? H+?I??H??H??H??H??L?????H?;H?\$0H?? _????????D$???????????H;?t,fff??H??I??A?@?A?A?@??A?A?@?H;?u?I???????????????D$???????????H;?tfff??H??I??A?@?H;?u?I?????????????D$???????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????H?\$WH?? H+?I??H??H??H??H??L???m?H?;H?\$0H?? _????????D$???????????H;?t,fff??H??I??A?@?A?A?@??A?A?@?H;?u?I???????????????D$????????????D$???????????H;?tfff?H?H??I??I?@?H;?u?I???????????H?l$WH?? I??H??H;???H?\$0H?t$8H?YH?s?H;?tlH?KH??t
???H???5???L?[4L?_8????G?C?GH?CH?GH?CH?GH?C$H?G(H?C,H?G0?CG???H???1G???H????$G???H?Kx?G???H?K(H??0[?G?????????????H?L$WH??0H?D$ ????H?\$HH??H????H?BH?AH?BH?A?B?A?B?AH?B H?A H??(H??(??????H?SxH?Ox?????H???H????????H??H???????H??hH??h?????H??H?\$HH??0_????H?\$WH?? ?H??H???H?BH??(H?A?H?BH??(H?A?B??A??B?A?H?B?H?A??????H?SxH?Ox?????H???H????????H??H???????H??hH??h????H?\$0H??H?? _???????H?L$H??H?$????3?H?A(?A0H?A8H?A@H?AHH?APH?AXH?Ah?ApH?Ax???H???H???H???H???H???H??????H??????H???H???H???H???H???H????H???? H??(H??0H??8H??@H??HH??X??`H??h??pH??xH???H???H???H???H????????Q?Y?D$@?A?D$H?A?D$P?A H??H???????????????H?L$SH??0H?D$ ????H??H????.D???H?K`?$D???H?KH??0[?D???????H?L$WH??0H?D$ ????H?\$HH??H?????B?A?B?A?B?AH??H????????H?S`H?O`??????H???H?????????H??H?\$HH??0_???????????????H?\$WH?? ?H??H????BH???A?BH???A??B??A??M???H?S`H?O`?@???H???H????-???H?\$0H??H?? _????????????????H?L$SH??0H?D$ ????H??H??@??B???H?????B???H?????B???H??P??B???H???L?
?????PD?B??2`?H??L?
?????PD?B??`?H??pL?
n????PD?B???_?H???L?
Q????PD?B???_?H?K0L?
7????PD?B?H??0[?_????H?L$WH??@H?D$0????H?\$XH?l$`H?t$hH??H?????B?A?B?A?B?A?B?A?B?A?B?A?B?A?B ?A ?B$?A$?B(?A(H??0H??0H?-????H?l$(H?5????H?t$ A?E?AN??aH???H???H?l$(H?t$ A?E?AN?aH??pH??pH?l$(H?t$ A?E?AN?~aH??H??H?l$(H?t$ A?E?AN?WaH???H???H?l$(H?t$ A?E?AN?0aH??PH??P?????H???H????????H???H?????????H??@H??@??????H??H?\$XH?l$`H?t$hH??@_?????H?\$H?l$H?t$WATAUAVAWH?? ?H??A???BL???A?BL??A?BH?yh?A?BH+ىA?BE??A?B?A?B?A?B ?A ?B$?A$?B(?A(ff?H?l;?H?w?H;?txH?L;?H??t
???OH???????L?;L??E??D;̉G̋D;ЉG?H?D;?H?G?H?D;?H?G?H?D;?H?G?H?D;?H?G??D;?G?D;?G?D;?GH?D;?H?G?H??PI???m???I??M??H?l;?H?w?H;?txH?L;?H??t
??6OH???V???L?;L??E??D;̉G̋D;ЉG?H?D;?H?G?H?D;?H?G?H?D;?H?G?H?D;?H?G??D;?G?D;?G?D;?GH?D;?H?G?H??PI???m???I???M??H?l?H?w?H;?txH?L?H??t
??NH???>??L?L??E??D̉G̋DЉG?H?D?H?G?H?D?H?G?H?D?H?G?H?D?H?G??D?G?D?G?D?GH?D?H?G?H??PI???m???I??HM??H?l;?H?w?H;?txH?L;?H??t
???MH???>??L?;L??E??D;̉G̋D;ЉG?H?D;?H?G?H?D;?H?G?H?D;?H?G?H?D;?H?G??D;?G?D;?G?D;?GH?D;?H?G?H??PI???m???I???fDH?l;?H?w?H;?txH?L;?H??t
??VMH???v=??L?;L??E??D;̉G̋D;ЉG?H?D;?H?G?H?D;?H?G?H?D;?H?G?H?D;?H?G??D;?G?D;?G?D;?GH?D;?H?G?H??PI???m???I??PI??PH;?tlH?K H??t	A?V??LH????)??u*H?H??tH?BHcHH?DH?L??H?K?)E3?L?[L?H?? [????????@SH?? H??H?IH??t7?????(??u*H?H??tH?BHcHH?DH?L??H?K?(E3?L?[L?H?? [????????@SH?? H??H?IH??t7????~(??u*H?H??tH?BHcHH?DH?L??H?K?[(E3?L?[L?H?? [????????@SH?? H??H?IH??t(????(??uH?H??t
H???H?K?
(E3?L?[L?H?? [???????@SH?? H??H?IH??t(?????'??uH?H??t
H???H?K?'E3?L?[L?H?? [???????H?\$ UH?? I??H??H;??H?t$0H?|$8L?d$@E3?H?y?H?w?H;???H?OH??t
??H'H?KH??t????7'??uH???$'H?C@L?c0L?c(L?c L?cD? ?{L?c??6???/H?KH?C?G?C?G?CH?GDH?H?H?GDH?KHH?@H?A?H??H????&H?GH?CH?GH?C H?G$H?C(H?G,H?C0H?GH?CH?G4H?C8H??`H??`H?G?H;?????L?d$@H?|$8H?t$0H??H?\$HH?? ]???????????@SH?? H??I??H??H+?H??L????SH?H?? [??????????@SH?? H+?I??H??H??H??H??L???aSH?H?? [?@SH?? H+?I??H??H??H??H??L???1SH?H?? [?@SH?? H??I??H??H+?H??L???
SH?H?? [??????????@SH?? H+?I??H??H??H??H??L????RH?H?? [?H;?t8H????A?H??I??A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I??????????????????@SH?? H+?I??H??H??H??H??L???QRH?H?? [?@SH?? H+?I??H??H??H??H??L???!RH?H?? [?H?\$ UH?? I??H??H;??H?t$0H?|$8L?d$@E3?H?y?H?w?H;???H?OH??t
??h$H?KH??t????W$??uH???D$H?C@L?c0L?c(L?c L?cD? ?{L?c??6???/H?KH?C?G?C?G?CH?GDH?H?H?GDH?KHH?@H?A?H??H????#H?GH?CH?GH?C H?G$H?C(H?G,H?C0H?GH?CH?G4H?C8H??`H??`H?G?H;?????L?d$@H?|$8H?t$0H??H?\$HH?? ]???????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????H;?t8H????A?H??I??A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I??????????????????H;?tOfff??H?? I?? A?@??A?A?@?A?A?@?A?A?@?A?A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????????H;?t,fff??H??I??A?@?A?A?@??A?A?@?H;?u?I??????????????H;?tfff??H??I??A?@?H;?u?I????????????H;?t3fff??H??I??A?@??A?A?@?A?A?@??A?A?@?H;?u?I???????H;?t,fff??H??I??A?@?A?A?@??A?A?@?H;?u?I??????????????H;?tfff?H?H??I??I?@?H;?u?I???????????H?$I?$I?$	??????H???????????????H??HH?D$ ????3?H??tXH?$I?$I?$	H;?wHk?H???Q-H??u8H?D$XH?T$XH?L$(?{N?H?[H?D$(H?'?H?L$(?-?H??H????????????????H??????????????H?H???????????H?H????????????H?H9?????????L?AL??H?%I?$I?$IL+I??H??H??H???H?H?$I?$I?$	H??H??H+?H;?s
3?I;?IB?H???H?I;?IB?H???????????@SH?? H?H??tH???B#H???0,H?? [?????????????@SH??0H?D$ ????H?H??tH?\$@H???#H????+H??0[???????????????2?????????????????????????????????????????????????????????????????????????????????????????????????????????????????H?T$H??H?$????H?T$8H??t1A??A?@?BA?@?BA?@?BA?@?BA?@?BA?@?B?H??????????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H?????????????????????H?T$H??H?$????H?T$8H??t8A??A?@?BA?@?BA?@?BA?@?BA?@?BA?@?BA?@?B?H???????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?B?H??????????????H?T$H??H?$????H?T$8H??tA???H????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?B?H??????????????@SH?? H??H?IH??t(??????uH?H??t
H???H?K?
E3?L?[L?H?? [???????H;?tMH????A?H??I??A?@?A?A?@?A?A?@?A?A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I?????????????H;?tMH????A?H??I??A?@?A?A?@?A?A?@?A?A?@??A?A?@?A?A?@??A?A?@?H?A?H;?u?I?????????????H?\$WH?? H??H?I??H??t??????uH????H?C@3?H?K0H?K(H?K H?K?H?KH?KHH?CPH;?t??@??tH????'H??H?\$0H?? _??????????H??H?$????H?T$(H?T$8H??tA???H???????????H??H?$????H?T$(H?T$8H??tA???H?????????????????????????H??H?$????H?T$(H?T$8H??tI?H??H?????????????????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H??H?$????H?T$(H?T$8H??tA???H??????????????????????????H??H?$????H?T$(H?T$8H??tI?H??H?????????????????????????H??H?$????H?T$(H?T$8H??t8A??A?@?BA?@?BA?@?BA?@?BA?@?BA?@?BA?@?B?H???????????H??H?$????H?T$(H?T$8H??tI?H??H?????????????????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?B?H??????????????H??H?$????H?T$(H?T$8H??tA???H????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?BA?@?B?H?????????????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?B?H??????????????H?T$H??8H?D$ ????H??H?T$XH??tI??H???&?????H??8???????????????H?T$H??H?$????H?T$8H??tA??A?@?BA?@?BA?@?B?H???????@SH?? H??H?IH??t(???????uH?H??t
H???H?K??E3?L?[L?H?? [???????H??8H?D$ ????H?L$@H?L$PH??t?_?????H??8????????H??H?$????H?L$ H?L$0H??t???B?A?B?A?B?A?H?????????????????????????H?H?H?????????H?AH?H????????3?H?H?AH?AH??????????????????H??????????????H??HH?D$ ????3?H??tXH????????H;?wH??H???#H??u8H?D$XH?T$XH?L$(?+D?H??PH?D$(H?װH?L$(??"?H??H????????????????@SH?? H?H??H?H?JH?KH??t
??RH??H?? [??H?T$H??H?$????H?T$8H??t1A??A?@?BA?@?BA?@?BA?@?BA?@?BA?@?B?H??????????????????H?H9?????????H??H?$????H?L$ H?L$0H??t*???B?A?B?A?B?A?B?A?B?A?B?A?H?????????H?H?H?????????H?AH?H????????3?H?H?AH?AH??????????????????H?UUUUUUU??????H??HH?D$ ????3?H??tYH?UUUUUUUH;?wH?RH???@!H??u8H?D$XH?T$XH?L$(?jB?H?
OH?D$(H??H?L$(?
!?H??H???????????????H?H9?????????HcA?H+??4???????HcA?H+??????????HcA?H+??4???????HcA?H+??????????HcA?H+?????????HcA?H+?????????HcA?H+?????????HcA?H+?餩??????HcA?H+?锭??????H?L$WH??0H?D$ ????H?\$HH?t$PH??H???H??t???????uH?????3?H???H???H???H???H???0H???H??H??H;?t??H?KxH??t????{??u	H?K`?gH???H???H???H?spH????0H?sxH???H???H;?t?;?H?KH??t??????uH???
H?s0H?s(H?s H?sH?C@?0H?sH?KHH?CPH;?t??H?\$HH?t$PH??0_?????????????H?L$WH??0H?D$ ????H?\$HH??H???]????H?S`H?O`?O????H???H????;????H??H?\$HH??0_?????????????H?\$WH?? H??H???K???H?S`H?O`?>???H???H????+???H?\$0H??H?? _??????????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H???H??t???????uH?????3?H???H???H???H???H???0H???H??H??H;?t??H?KxH??t????{??u	H?K`?gH???H???H???H?spH????0H?sxH???H???H;?t?;?H?KH??t??????uH???
H?s0H?s(H?s H?sH?C@?0H?sH?KHH?CPH;?t??H?\$HH?t$PH??0_?????????????H?L$WH??0H?D$ ????H?\$HH??H???]????H?S`H?O`?O????H???H????;????H??H?\$HH??0_?????????????H?\$WH?? H??H???K???H?S`H?O`?>???H???H????+???H?\$0H??H?? _???????????????Q?I?!H???AYH(??AY@?A?\?(??AY`?
?AY@(??YY?Y??\??\??J?b???????A?!?IH???AYH?A?AY@?\?f(??AY`?AY@?
f(??YI?YY?\??\??J?b?????̋??B?A?B?A?B?A?B?AH???H??UH??????H?? H?D$`????H?XH?x H??lH3?H??H??H?A???H?T$p??H?T$pH?L$@?+3?A??D$|9D$xDM?H?T$@H?M??I????H?D???A????|$0@?|$(?D$ ????D?G???H?????L?A???H???H??A??H???H?L$@?D???A??H??PH????P????D???D?GH???H???c?H?T$@H?????H???H??t????
??uH?????
H???H???H???H???H????8H???H??H???H;?t??
?H??hH??t????
??uH??P?
H???H??xH??pH??`H????8H??hH???H???H;?t?W
?H??H??t????6
??uH????
H?? H??H??H??H??0?8H??H??@H??8H;?t???H?M??????H?M?H??t???????u
H?L$p?H?}?H?}?H?}?H?}?H?E??8H?}?H?E?H?M?H;?t?H??H3??sL??$ I?[ I?{(I??]???????????????H?L$SH??0H?D$ ????H??H?D?AH??I???????H?KpH?T$`?؂???H???H?T$h?Ƃ????D$p??0?L$x??8H??$?H?H??@H?AH??HH?AH??PH?AH??XH??H??0[??????????????H?L$WH??0H?D$ ????H?\$HH??H??H?H??B?AH??H???)????H?SpH?Op?????H???H????????H??0H??0H??8H??8H??@H??@H??HH??HH??PH??PH??XH??XH??H?\$HH??0_?????@SH?? H??H??H???8
H?H??t!H?IH??tH?APH+AHH?CH??H?CH??H?? [???????????@SH?? H??H??H????H?H??t!H?IH??tH?APH+AHH?CH??H?CH??H?? [???????????H??H?fW???~???D$0?D$(?D$ 苴??H??H???????3?H?H?AH?AH??????????????????3?H?H?AH?AH??????????????????H?\$WH?? 3?H??H??H?H?AH?AH??t>H????????H;?vH?
D?
5?H??????H?H??H?H?CHȰH?KH?\$0H?? _??????H?\$WH?? 3?H??H??H?H?AH?AH??t-H???vH?
?C??4?H???a???H?H?CH?H?C?H?\$0H?? _?????????????????????@SH?? H?9H??t??4H???3?H?H?CH?CH?? [?H?\$WH?? 3?H??H??H?H?AH?AH??t7H????????H;?vH?
C??3?H????w??H?H?CH??H?C?H?\$0H?? _?????????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
?B??3?H???????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t-H???vH?
1B?#3?H???A???H?H?CH?H?C?H?\$0H?? _?????????????????????@SH?? H?9H??t?C3H??q3?H?H?CH?CH?? [?H?\$WH?? 3?H??H??H?H?AH?AH??t7H????????H;?vH?
?A?z2?H??????H?H?CH??H?C?H?\$0H?? _???????????????????????????@SH?? H?9H??t??2H???3?H?H?CH?CH?? [?H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
?@??1?H??????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
h@?Z1?H???????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t7H????????H;?vH?
????0?H???8???H?H?CH??H?C?H?\$0H?? _???????????????????????????@SH?? H?9H??t?1H??13?H?H?CH?CH?? [?H?\$WH?? 3?H??H??H?H?AH?AH??t;H?UUUUUUUH;?vH?
H??:0?H???8???H?H?H?CH??H?C?H?\$0H?? _?????????H?\$WH?? 3?H??H??H?H?AH?AH??t7H?????????H;?vH?
?>??/?H???x???H?H?CH??H?C?H?\$0H?? _?????????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
h>?Z/?H??????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t7H?????????H;?vH?
?=??.?H???(	??H?H?CH??H?C?H?\$0H?? _?????????????H?\$WH?? 3?H??H??H?H?AH?AH??t;H?UUUUUUUH;?vH?
?=?z.?H??????H?H?H?CH??H?C?H?\$0H?? _?????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
=?
.?H???????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t:H????????H;?vH?
?<??-?H???????H??H?H?H?GH?_?H?\$0H?? _??????????H?\$WH?? 3?H??H??H?H?AH?AH??t7H????????H;?vH?
8<?*-?H??????H?H?CH??H?C?H?\$0H?? _?????????????H?\$WH?? 3?H??H??H?H?AH?AH??t>H?3333333H;?vH?
?;??,?H??????H??H??H?H?CHȰH?KH?\$0H?? _??????@SH??@H?D$ ????H??H?A?h?
H??t,H?CH?H?CH?@H?CH?@H?C?@`H?C?@aH???8H?D$PH?T$PH?L$(?.?H??:H?D$(H?ƚH?L$(??H??@[??????????????@SH??@H?D$ ????H??H?A?h?|H??t,H?CH?H?CH?@H?CH?@H?C?@`H?C?@aH???8H?D$PH?T$PH?L$(?z-?H?:H?D$(H?&?H?L$(??H??@[??????????????H?H?H?????????H?AH?H????????L?H????????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H9?????????H?H????????????L??H?	?yaH?
uKH?A?xauL?A?xau
I??M?A?xat?I?H???H?I?yauH?AI9u
I?	H?I?yat?I?	H?????H?H????????????L??H?	?yaH?
uKH?A?xauL?A?xau
I??M?A?xat?I?H???H?I?yauH?AI9u
I?	H?I?yat?I?	H?????H?H9????????̋?B?H??W-??A????????H??BH?H??fW<?A??????????B?H???JW??A?BW??IW??A????????????;H??BH?H???JfW??A?BfW??IfW??A?????@SH?? H??H?IH??t(????????uH?H??t
H???H?K???E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H????H?KH??t(????|???uH?H??t
H???H?K?h?3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????@SH?? H??H?IH??t(???????uH?H??t
H???H?K???E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H????H?KH??t(???????uH?H??t
H???H?K??3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????@SH?? H??H?IH??t(????.???uH?H??t
H???H?K??E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H?????H?KH??t(???????uH?H??t
H???H?K??3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????@SH?? H??H?IH??t(????N???uH?H??t
H???H?K?:?E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H?????H?KH??t(????????uH?H??t
H???H?K???3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????@SH?? H??H?IH??t(????n???uH?H??t
H???H?K?Z?E3?L?[L?H?? [???????H?\$H?t$WH?? H?zH??H??H??t
?H???
?H?KH??t(????????uH?H??t
H???H?K???3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _???????????????@SH?? H??H?IH??t(???????uH?H??t
H???H?K?z?E3?L?[L?H?? [???????H??(?x??????H??(??????????????@SH?? H??H?IH??t7???????u*H?H??tH?BHcHH?DH?L??H?K???E3?L?[L?H?? [????????H?\$H?t$WH?? H?zH??H??H??t
?H????H?KH??t7???????u*L?M??tI?@?HcHJ?DJ?L?H?K?y?3?H?CH?H?H?t$8H?H?{H??H?\$0H?? _????????????????@SH?? H??H?IH??t7???????u*H?H??tH?BHcHH?DH?L??H?K???E3?L?[L?H?? [????????@SH?? H??H?IH??t7???????u*H?H??tH?BHcHH?DH?L??H?K??E3?L?[L?H?? [????????H?\$H?t$WH?? H?zH??H??H??t
?H???M?H?KH??t7????H?UUUUUUUH;?vH?
????H???????H?H??H?H?CHȰH?KH?\$0H?? _??????H?H9????????̋?A?H??W]y?B????????H??AH?H??fWJ#?B??????(y??A?H???IW??B?AW??JW??B????????????"H??AH?H???IfW??B?AfW??JfW??B?????H?L$H??H?$????L??E3?L?	D?IH?QH?QPH?A`H?AXL?HH?AXL?D?ID?
H?A?BL?I@L?I8L?I0L?I L?I(L?IHH??xI???I???I???L?HI???L?E?H|D?	I?@p?BM???M???M???M???M???M???I???I??I?? I??L?HI??L?E???D?	Iǀ??BM??M???M???M???M???M??M??0M??8M??XM??PM??HM??@I??H????????H?T$SH??0H?D$(????H???D$ H??P ??D$ H??H??0[???????????H??(?9u-?B9Au%?A.BzuH??H???b????u?H??(?2?H??(???H?L$SH??0H?D$ ????H?Y?H?KH??t5????0???u(H?H??tH?BHcHH?LH???H?K??3?H?CH?H??H??0[?w??????H?L$WH??0H?D$(????H?\$HH??H??3҉T$ E??tH??zH?AH??IH?A8?D$ H??OH?H?AHcHH??OH?DH?lzH?H?CHcHH?2zH?DH?CHcH?TH?GH?CH?OH?KH??t??:???G ?C ?G$?C$?G(?C(H??H?\$HH??0_??HcA?H+???????H?\$WH?? H??H??H??H??????D?[ D?_ ?C$?G$?C(H?\$0?G(H??H?? _??@SH??PH?D$0????3?H?\$8H?\$@?D$(?D$ D?KA??H?T$8???H?L$@H??t6????v???u)L?D$8M??tI?@HcHJ?LH??S?H?L$@?T?H?\$@H?\$8H??P[?@SH?? H?Y8H???????H??H?? [????H?L$SH??0H?D$ ????H?Y?H?KH??t5????????u(H?H??tH?BHcHH?LH???H?K???3?H?CH?H??H??0[?7??????H?L$WH??0H?D$(????H?\$HH??H???D$ E??tH?6yH?AH?sGH?A(?D$ H?xMH?H?AHcHH?>MH?DH??xH?H?CHcHH??xH?DH?BH?CH?JH?KH??t?????G ?C H??H?\$HH??0_????????H?\$WH?? H??H??H??H???????D?[ H?\$0D?_ H??H?? _??????????????@SH?? H?Y(H???~???H??H?? [?U??H?L$SH??0H?D$ ????H??H?I?H??t6????a???u)H?S?H??tH?BHcHH?LH???H?K????3?H?C?H?C?H?K?H??0[?????@SH?? H?Y0H???~???H??H?? [????H?L$SH??0H?D$ ????H?Y?H?KH??t5????????u(H?H??tH?BHcHH?LH???H?K??3?H?CH?H??H??0[?#??????H?L$SH??0H?D$(????H??E3?D?L$ E??tH??wH?AH?[EH?A(?D$ H??KH?H?AHcHH??KH?DH??wH?H?CHcHH?XwH?DH?CHcHD?LH?BH?CH?JH?KH??t?????H??H??0[??????????????HcA?H+??t?????HcA?H+??j?????@SH?? H??H??H??????H??H?? [??@SH?? H?Y(H???~???H??H?? [?5??H?L$WH??0H?D$ ????H?\$HH??H??H?wH?H??H????R???H?GhH?ChH?OpH?KpH??t????H?GxH?CxH???H???H??t?????H??H?\$HH??0_???????H?\$WH?? H??H??H??H???S??H?ShH?Oh?6???H?SxH?Ox?????H?\$0H??H?? _????????????H?L$H??H?$????3?H??AH?AH?AH?A H?A(H?A0H?A@?AHH?AP?AXH?A`H?AhH?ApH?AxH???H??????H??????H???H???H???H???H???H??????H??????H??H??H??H??H?? H??0??8H??@??HH??PH??XH??`H??hH??pH??????H??????H???H???H???H???H???H??????H??????H???H???H??H??H??H?? ??(H??0H??8H??@H??HH??PH??H????????H?L$WH??0H?D$ ????H?\$HH??H????J???H?WPH?KP??J???H???H?????J???H???H????J???H??@H??@?J???H???H????J???H???H????{J???H??0H??0H??8H??8H??@H??@H??t?????H??HH??HH??PH??PH??t?????H??H?\$HH??0_???????H?\$WH?? H??H???J??H?SPH?OP?J??H???H????J??H???H????J??H??@H??@?uJ??H???H????bJ??H???H????OJ??L??0H??8H??8L??0?~???H??HH??H?k???H?\$0H??H?? _??????????????@SH?? H?9H??t??H????3?H?H?CH?CH?? [?@SH?? H?9H??t??H????3?H?H?CH?CH?? [?@SH?? H?9H??t?cH???3?H?H?CH?CH?? [?@SH?? H?9H??t?3H??a?3?H?H?CH?CH?? [?H?l$H?t$WH?? I??H??H??M;?t>H?\$0H?YI??I+?H??L???PL?3H?\$0L?]H?7H??H?l$8H?t$@H?? _?H?l$8H?t$@L?H??H?? _????????????????H?l$H?t$WH?? I??H??H??M;?t>H?\$0H?YI??I+?H??L????L?3H?\$0L?]H?7H??H?l$8H?t$@H?? _?H?l$8H?t$@L?H??H?? _????????????????H?AH?H??H?
???H?AH?H????????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L???$L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????H?l$H?t$WH?? I??H??H??M;?tJH?AH?\$0I??I+?H??H??H??L????L?;H?\$0L?]H?>H??H?l$8H?t$@H?? _?H?l$8H??H?t$@L?H?? _????H?AH?H??H?
???H?AH?H????????@SH?? H??H?IH??t8????????u+H?|$0H?;H??tH?????H?????H?K??H?|$0E3?L?[L?H?? [???????H?\$H?l$WH?? H?zH??H??H??t
?H???]?H?KH??t8????L???u+H?t$0H?3H??tH???b?H???P?H?K?-?H?t$03?H?CH?H?EH?l$@H?H?{H??H?\$8H?? _??????????????????????????????H?\$H?t$WH?? H?zH??H??H??t
?H????H??????L?H?t$8L?H?{H??H?\$0H?? _?H?\$H?l$ WH?? I??H??H??H;??~H?t$0L?d$8E3?f?H?wH??t
?H???B?H?KH??t(????1???uH?H??t
H???H?K??L?cL?#H?H??H?sH?H??H;?u?L?d$8H?t$0H?l$HH??H?\$@H?? _?????????????????????????????????????????????????????????????????????????????????????????????????????????????????H?\$H?l$ WH?? I??H??H??H;??~H?t$0L?d$8E3?f?H?wH??t
?H????H?KH??t(???????uH?H??t
H???H?K???L?cL?#H?H??H?sH?H??H;?u?L?d$8H?t$0H?l$HH??H?\$@H?? _???????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht%L??H??H???????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_???????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???:???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht%L??H??H???????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_???????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???j???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???C???H?? H?\$PH?D$@H?? H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???
???H?? H?|$`H?? H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???*???H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I??蚭??H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???s???H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H??????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????@SH?? H?JH??H??t????^???uH???K?H?C@3?H?K0H?K(H?K H?K?H?KH?KHH?CPH;?t?/?H?? [??????H??8H?D$ ????H??H?T$HH?T$XH??tI??H???>????H??8???????????????H??H?$????H?T$(H?T$8H??tA??A?@?BA?@?BA?@?B?H???????H?T$H??8H?D$ ????H?T$XH??t"I?H?I?HH?JH??t
??_????H??8????????????????????????????H??H?D$0?D$(H?D$ ????H??H?@SH?? H??H?IH??t(????????uH?H??t
H???H?K???E3?L?[L?H?? [???????H??8H?D$ ????H?T$HH?T$XH??t"I?H?I?HH?JH??t
??????H??8??????????????@VWATH??0H?D$ ????H?\$XM??I??H??H??H;?t"L??H??I???????H??H?|$`H??H?\$P??H??H?\$XH??0A\_^??????H??H?$????H?T$(H?T$8H??t1A??A?@?BA?@?BA?@?BA?@?BA?@?BA?@?B?H??????????????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H?yHtH??H?w?H?OH??3?H?wHH?wPH?wXH9w(tH?O(?P?H?O(?}?H?w(H?w0H?w8H?\$HH?t$PH??0_????H?L$SH??0H?D$ ????H??H?y8r	H?I ?8?H?C8H?C0?C H??0[?H?L$WH??0H?D$ ????H?\$HH?t$PH??H?yhtH??h???H?Kh???3?H?shH?spH?sxH?KH??t???????uH????H?s0H?s(H?s H?sH?C@?0H?sH?KHH?CPH;?t?r?H?\$HH?t$PH??0_???????????????H?\$WH?? ??H???|?????tH???M?H??H?\$0H?? _??H?L$H??H?$????H?0dH??A@?A??A?A?A?A?A ?A$?A(	?A,H??H?A03҉Q8H?????????H?A@?AHH?QPH?QXH?Q`?Ap@H??H??????????????????H?L$H??H?$????L??H?}cH???A?B?AA??AA?@?AA??AA?A?AH?L$@?A?B ?AA?B$?D$HA?B(?D$PA?B,?D$X?AB0?D$`A?B8?D$h?AB@?D$pA?BH3?I?BPI?BXI?B`?D$xA?BpI??H???????H?L$WH??PH?D$ ????H?\$hH??H??bH?3?H?yH?yH?yH?y H?yPH?yXH?y`H?D$@H?|$8@?|$(L?D$(???H?|$@r
H?L$(?k?H?D$@H?|$8?D$(H??H?\$hH??P_?????????????H?L$SH??0H?D$ ????L??H??H?(bH?3?H?AH?AH?AH?A H?APH?AXH?A`H?H??I???P0?H??H??0[??????????H?L$SH??0H?D$ ????H??aH?H?YPH?;tH???x?H???3?H?H?CH?CH??0[??????H?L$WH??0H?D$ ????H?\$HH?t$P??H??H?oaH?H?yPtH??P??H?KP?H?3?H?CPH?CXH?C`@??tH???,?H??H?\$HH?t$PH??0_????????????H?L$WH??0H?D$ ????H?\$HH?t$P??H????t*L?
???D?A??x?L?@??t	H?K????H?C??CH??`H?H?yPtH??P?l?H?KP??3?H?CPH?CXH?C`@??tH???}?H??H?\$HH?t$PH??0_?????????????H?L$H??H?$????H?A(H?A ?AH??H??????H?L$SH??0H?D$ ????H??H?y(r	H?I??H?C(H?C ?CH??0[?@SH??pH?D$@????3?H?\$HH?\$PH?\$X?D$0H?D$HH?D$(?D$ ??aA?A???>??H9\$HtH?L$H?W?H?L$H??H?\$HH?\$PH?\$XH??p[?H?\$H?t$WH?? H?qȋ?H?N8?????H?N8???@??tH???9?H?\$0H??H?t$8H?? _?????????H?\$VH?? ????t9D?A?H?Y?L?
????H??Ⱥ@?j?@??tH?????H??H?\$8H?? ^?H?|$0H?y?H?O8?D???H?O8?_?@??tH????H?\$8H??H?|$0H?? ^???????????H?\$H?t$WH?? H?q؋?H?N(?2???H?N(?
?@??tH???Y?H?\$0H??H?t$8H?? _?????????H?\$VH?? ????t9D?A?H?Y?L?
P???H??غ0??@??tH????H??H?\$8H?? ^?H?|$0H?y?H?O(????H?O(??@??tH?????H?\$8H??H?|$0H?? ^???????????H?\$H?t$WH?? H?q؋?H?N(?r???H?N(?-?@??tH???y?H?\$0H??H?t$8H?? _?????????H?\$VH?? ????t9D?A?H?Y?L?
????H??غ0??@??tH??? ?H??H?\$8H?? ^?H?|$0H?y?H?O(?????H?O(蟽@??tH?????H?\$8H??H?|$0H?? ^???????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H??X?I??H?KPH??t)????m???uH?KHH??t
H???H?KP?X?3?H?sPH?sHH?K8?Q????H?K0H??t/????'???u"H?{(H??tH???A?H???/?H?K0??H?s0H?s(H??H?\$HH?t$PH??0_???????????@UH??H??PH?E?????H?\$`H?|$pH?ٹ???H?E3?H??tA?WҍW H?????H??H?E?H??t???H?E???H?}???H?EH??t?H??肾?H??H?E?H??t?蚻H?E???H?}?L?E?H?U?H??????H?M?H??t/???????u"H?]?H??tH????H???
?H?M???H?}?H?}?H?M?H??t3????º??u&H?]?H??tH?]H???ؽH?????H?M?裺H?}?H?}?H?\$`H?|$pH??P]????????H?\$WH?? ??H????????tH???}?H??H?\$0H?? _??H?\$VH?? ??H????t=D?A?L?
??????H?|$0??@??t	H?K??/?H?C?H?|$0H?\$8H?? ^??J???@??tH???
?H??H?\$8H?? ^???????????????H?\$VH?? H?QH?H??H;?t$H?|$0H??H??H+?L?????L?H?|$0L?^H?\$8H?? ^?????????H?\$VH?? H?QH?H??H;?t0H??H?|$0H??H+?H??H????H??H??????????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?????H??H??????????H??H?D$0?D$ ?.???H??H??????????H??H?D$0?D$ ?n???H??H??????????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?????H??H??????????H??H?D$0?D$ ?N???H??H??????????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?????H??H??????????H??H?D$0?D$ ?.???H??H??????????H??H?D$0?D$ ?n???H??H??????????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?????H??H??????????H??H?D$0?D$ ?N???H??H??????????H??H?D$0?D$ ????H??H??????????H??H?D$0?D$ ?????H??H??????????H??H?D$0?D$ ?.???H??H??????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???????H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????L?D$VWATH??0H?D$(????H?\$XM??I??H??H??L?D$ @H;?t"L??H??I???m???H??PH?|$`H??PH?\$P??H??H?\$XH??0A\_^?????????@SH?? H?JH??H??t????????uH????H?C@3?H?K0H?K(H?K H?K?H?KH?KHH?CPH;?t?ϲH?? [????????????????????@SH??0?D$@M??M??H??L?I?D$(M??I??H??H?D$ ?
???H??0[????????@SH?? H?JH??H??t8????N???uH?H??t
H???H?K?:?E3?L?[L?H?? [?E3?L?ZL?H?? [???????H??8H?D$ ????H?T$HH?T$XH??t"I?H?I?HH?JH??t
??ϱ???H??8??????????????H??H?D$0?D$ ?.???H??H??????????H?T$H?L$WH??0H?D$ ????H?\$XI??I??H?D$@H;D$Ht'L??H??H???C???H??H?\$PH?D$@H??H?D$@??H??H?\$XH??0_?????????????HcA?H+??$???????HcA?H+??????????@SH?? H??H?IH??t>???????u1H?|$0H?{H??tH??????H????H?CH?|$0H?? [?H?CH?? [???H?\$VH?? H??H??H;???H?|$0?t?L?CL?I??I+?u=H?VH?H;???H??H??H+?L?????L?H?|$0L?^H??H?\$8H?? ^?H?L?NL+?I;?wM+?I???}?H?CH+H?dH?FH+?H;?w"K?<L??I??H???~??H?[H?NH+?H???*H??t???H?SH??H+?r?????tH?H?[H?H+?L????H?H?FH??H?|$0H?\$8H?? ^?H??H?\$8H?? ^?H?\$VH?? H??H??H;???Y?L?CL?I??I+?H??H??uH???????H??H?\$8H?? ^?L?L?VM+?I??I;?w7M+?I??I??I????w?H?KH?H+H??H??H??H?NH?\$8H?? ^?H?FI+?H??H;?wAH?|$0K????????u1H?|$0H?{H??tH???;???H????H?CH?|$0H?? [?H?CH?? [???H?\$WH?? H??H??H;?t)H?JH??t
?蠘H??????D?D?H?GH?CH??H?\$0H?? _?????@WH??@H?D$ ????H?\$PH??H?L$(??H??H;?t)H?HH??t
??H?L$h????H?E?H?u??E?E3?H?G?H?M??`???H?D$XH?t$P?D$@A?H?_H?L$@?5????D$(?H?D$hH?D$ L?M?L?D$@?)???H?M???v?H????v?H?M???v?H?|$Xr
H?L$@?ÂH?D$XH?t$P?D$@H?}?r	H?M?蠂H?E?H?u??E?H?}?r
H?L$h??H?E?H?t$x?D$hH?????tRL?IL?K?A??HcQHcAH???%???~H?I@L??DHcH??H??I??u?H?KH??I?H?K ?O?L$0??L$4E3?H?T$0H???PvH??H???H3?貂H??$?H?Ġ_^]????????????????H?L$WH??0H?D$ ????H?\$HH??H??H?KH??B?A?B?A?B?A?B?A?B?A?B?A?B ?A ?B$?A$?B(?A(?B,?A,?B0?A0?B4?A4?B8?A8?B??H???H??????H???H????J???H?\$0H??H?? _?????????????H?L$SH??0H?D$ ????H???9?H???H?3?H?CH?CH?CH??H??0[????H?L$SH??0H?D$ ????H??H??H?H???H?H??H???????H??H??0[????????????????H?L$WH??0H?D$ ????H?\$HH??H??H???H?H?9?H?H??H???a????H??H??C(?G(?C,?G,H??H?\$HH??0_????????????H?L$WH??0H?D$ ????H?\$HH??H??H?K?H?H???H?H??H????????H???H?H?G(H?C(H?O0H?K0H??t???6?H?G8H?C8H?O@H?K@H??t???6?H?GHH?CHH?OPH?KPH??t??6?H?WXH?KX?<???????H??H?\$HH??0_???????????????H?L$WH??0H?D$ ????H?\$HH??H??H?c?H?H??H????????C(?G(H??H?\$HH??0_???????H?L$WH??0H?D$ ????H?\$HH??H??H??H?H??H?????????C(?G(H?E?H??C0?G0H?C8H?G8H?C@H?G@?CH?GH?CL?GLH??H?\$HH??0_???????????H?\$WH?? H??H??H??H??????H???H????p;??H???H???????H???H????*H?NI??H+H??H??H??H??H???H??(????t??D$@L?H?VH??D$ L?O?z???H??H?t$XH??0_?????????H?L$ATH??@H?D$0????H?\$XH?t$`H?|$hH??H??3?H?H?AH?AH?zH+:H??H?H?AH?AH??t[H????????H;?vH?
?k??\?H??H???v???H?H?CH??H?H?{?D$P?D$ L?KL?H?VH?蘮??H?CH??H?\$XH?t$`H?|$hH??@A\????????????@SH?? H?9H??t$??\D?L$0H?SH?L?C襬??H???<3?H?H?CH?CH?? [???????????@VWH??8H??H??H;???H?\$XH?l$`L?d$0?M\H?^H?.L??I?gfffffffL+?I??I??L??I??I??H???L?u
H???`????L?_L?I??I??I+?H??L??I??I??H???L?M;?wYD?L$PM??H??H??苛??H?oH??H;?tH??????H??PH;?u?H?NI??H+H??H??H??H???H?H??H??H?\H?OI??I+?H??H??H??H???H?L;?wYK??D?L$PM??H??H??H?H???????D$PL?GH?V?D$ L?OH???{??H?GH?l$`H?\$XL?d$0H??H??8_^?M??tM??I??H???:??H??0;H?NI??H+H??H??H??H??H???H??o-????t??D$PL?H?VH??D$ L?O?H??H??8_^?????????@WH?? H??H?IL?L;?t5D?L$0H??H?\$8?8\??D?L$0H?WL?GH??H???o???H?_H?\$8H?? _?D?L$ ?%????????H??H?D$0?D$ ?????H??H??????????@SH?? H???B???H??H?? [??????????@SH?? H?:H??tH????YH??:3?H?H?CH?CH?? [??????????????H?T$H??8H?D$ ????H??H?T$XH??tI??H???V?????H??8???????????????H?T$SH??0H?D$ ????H?ZH?;tH???bYH??93?H?H?CH?CH??0[????????????????H??8H?D$ ????L??H?T$HH?T$XH??t#A??A?@?BA?@?BI?PI?I?ѣ????H??8??????????@SH?? H??H??H???Z???H??H?? [??H?\$WH?? H??H??H??H???3???D?[(D?_(?C,H?\$0?G,H??H?? _???????H?\$H?l$H?t$WH?? H??H??H??H???????H?S(H?O(??W??H?s@H??t
?H???N,H?O8?]tVH???V3H?nH?>H?|$PH;?t4H?tH?O?43H?O?aL?oL?oL?o H??0H?|$PH;?u?H???L?.L?nL?nH?? I;?u?H?\$XH?l$`H?t$hH??0A]A\_?????H??H?D$0?D$ ?~???H??H??????????H?\$WH?? H??H??H;?tL?AH?T$0M??M?????H??H???|???H??H?\$8H?? _???????????????H?L$SH??0H?D$ ????H??L?AM??M?H?T$H?6????H?KH??0[?e???????H?L$SH??0H?D$ ????H????????H??H??0[????????????D?L$ ?U????????H?T$SH??0?D$HI??M??L??L?IL??I??I?ʈD$ ?r???H??0[?????????????H?L$SH??0H?D$ ????H??L?AM??M?H?T$H?v????H?KH??0[????????H?L$SH??0H?D$ ????H???????H??H??0[????????????D?L$I??L??L?AH??I???????????@SH?? H?9H??t$?1D?L$0H?SH?L?C?U???H??3?H?H?CH?CH?? [???????????H?L$ATH??@H?D$0????H?\$XH?t$`H?|$hH??H??3?H?H?AH?AH?zH+:H??H?H?AH?AH??t[H????????H;?vH?
?>??/?H??H???f???H?H?CH??H?H?{?D$P?D$ L?KL?H?VH??????H?CH??H?\$XH?t$`H?|$hH??@A\????????????@SH?? H?9H??t$??/D?L$0H?SH?L?C?5???H???3?H?H?CH?CH?? [???????????H?L$WH??0H?D$ ????H?\$HI??H??H?AH?A?I???E3?賍???H?O(H???????H??H?\$HH??0_????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H?y(t*H??(?/L?C@D?L$@H?S0H?K(?h???H?K(?-3?H?s(H?s0H?s8H?{rH??H?CH?s?H?\$HH?t$PH??0_????H?L$WH??0H?D$ ????H?\$HH??H??H?AH?A?I???E3??Ì???H?S(H?O(?????H??H?\$HH??0_???????H?L$H??8H?D$ ????H??8??????????H?T$WH??0H?D$ ????H?\$@I??H??H?T$XH??t6H?BH?B?I???E3?H??H???3????H?W(H?K(??????H?\$@H??0_????????H?T$WH??0H?D$ ????H?\$@I??H??H?T$XH??t6H?BH?B?I???E3?H??H???Ë???H?W(H?K(??????H?\$@H??0_????????H?L$WH??0H?D$ ????H?\$H??H?????????tH???_
H??H?\$HH??0_????@WH??0H?D$ ????H?\$@H?t$HH??H??????H??H?D$PH?PH?OL???????H??H?\$@H?t$HH??0_?H?L$H??8H?D$ ????H??8?e????????H?T$H??8H?D$ ????H??H??8?B?????H?T$H??8H?D$ ????H??H??8?"?????L?D$VWATH??0H?D$ ????H?\$PH?l$XL??H??A?xatH?
D??+?I??M?HI??zauH??xau4H??H??xat??&I?P?zau@L;BuL??H?T$`H?R?zat?H?T$`H?M?yatI?9?I??xatH???
H?zH;???H?]?auH?_H?FH9huH?x?H9+uH?;?H?{H?VH9*u&?atH???H??H??xauH??H??xat?H?
H?VH9j???atH???"H??H?G?xau?H??H?@?xat?H?J?lH?QH?EH?I;uH???H?Z?auH?_H?;I?H?BI?H?PH?FH9huH?P?H?EH9(uH??H?PH?EH?B?J`?E`?B`?M`?}`?)H?FH;x??`?
H?H;?uTH3?H??0L??L??33۩??H?E?H?]??]?D?C.H??H?M??Z????H?E?H?]??]?E3?H?4H?M??7????H?E?H?]?]?D?CH??H?M???????D$(HH?E?H?D$ L?M?L?Eغ)???H?M0????H?????H?M0???H?}?r	H?M??H?E?H?]??E?H?}?r	H?M??H?E?H?]??E?H?}?r	H?M??eH?E?H?]??E?A?$<?
H?E?H?]??E?A?.H???H?M??D????H?E?H?]??E?E3?H?3H?M?? ????H?E?H?]??E?A?H??=H?M???????D$(IH?E?H?D$ L?M?L?E??)???H?M0???H?????H?M0???H?}?r	H?M??H?E?H?]??E?H?}?r	H?M??kH?E?H?]??E?H?}?r	H?M??KH?E?H?]??E?M?~8H?EH?]?EA?H??H?M?3???HDžHDž HDž(M?fIc$H??IcEH??HDžH?\$@H?\$HH?\$PI?^H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
?-???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?z???H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
-???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Ԕ??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?^A?L?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
:,?,?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
?+???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?s???H?L$HA?H?L$pH?L$xH??tL?H?YH?L$HH??H?L$HI?^L?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
?*???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@讒??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
E*?7?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?H?YH?L$HH??H?L$HL?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?)?v?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?U???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
?(???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Ð??H?L$HA?H?L$pH?L$xH??tL?L?aH?L$HH??H?L$HI?]H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
)(??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?'???I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?k???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?]A?L?d$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?&???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@袎??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?zH?T$PH;?uZL??L+?I??L;?vH?
B&?4?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tL?!H?YH?L$HH??H?L$HI?]L?d$`H?\$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?%?u?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@?W???H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?wH?T$PH;?uWH??I+?H??H;?vH?
?$???H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@?̌??H?L$HH?L$pH?L$xH??tL?!H?YH?D$HH?E?H?D$pH?E?3?H?]??]?I???E3?H?UH?M??t???A???????ƒ?AD?A????D$8?T$0H?D$@H?D$(H??H?D$ L??L?E?H?!GI???????H9\$@tH?L$@?nH?L$@??H?\$@H?\$HH?\$PH?}r	H?M?{?H?EH?]?EH??0H3??.?H??$?H??@A_A^A]A\_^]????@UVWH??$p???H??H?D$0????H??$?H??FH3?H???H??H?ً	????<??????????H?D$x3?H?t$p@?t$`D?F.H???H?L$`??s???H?D$PH?t$H@?t$8E3?H??&H?L$8?s???H?E?H?u?@?u?D?F,H???H?M??s????D$(nH?D$`H?D$ L?L$8L?E??)???H?M??G??H???8??H?M??(??H?}?r	H?M???H?E?H?u??E?H?|$Pr
H?L$8???H?D$PH?t$H?D$8H?|$xr
H?L$`???H?D$xH?t$p?D$`D?A????C???+???D???C???+?????H??????H??H???????H???H3??R?H??$?H?Đ_^]????????????????D?L??D??D?A?? ~*?A?D;?~ ?|$(? ?E?A??A?@??|$(??A?E?A?HA?A?3ҍD???3?A?A?HA?C?D?A?A??A?AA?@??????H??f/wH?????????????????̋9u?B9Au??2?????????????̅?t=H?\$H?t$WH?? I??A??H??????L??D??H??H??螓??H?\$0H?t$8H?? _???????????????H??H?HATAUAVH??PH?D$0????H?XH?pH?x L??L??3??p?L?rH?HcHI???H??~/I?$HcHI???I;?vI?$HcHI???H??I+??H??I??H?L$8??a????|$@u
???I?$HcHI??L%???@tBH??t9I?$HcHI??YX??H????????u	???t$ ?
H??H?|$(?…?u8I?}rM?mI?$HcHI???H??M??I????I;?t??;?H??t9I?$HcHI??YX?^H?????????u???
H??H?|$(?Ɖt$ I?$HcHI?3??_??	L?d$p?t$ I?$HcHI?E3????5??&??uH?L$8??H?T$8H?HcHH???H??tH?T$8H?HcHH???H?H???RI??L?\$PI?[(I?s0I?{8I??A^A]A\?@UVWATAUAVAWH??$????H??PH?E?????H??$?H??AH3?H??HM??M??H??L??H?A8H?E؋	????????¿??D׃?ɸP?H??$?????????????????Hc?3?I?FH??E?HDž3?H??@???D?GH?C?H????n???????H???Z??D??A?L??0A? ??EE?L??8HDž@?????Hc?H??L?? HDž(A???%?????DljE?9???E?H?t$PH?t$XH?t$`E??tI????R??H?E?H????R??D?O?I?FH?E?H?CH?E?L?L$pH?E?H?D$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?t$pH+?H????????H????????H?T$`H;?ueL??L+?I??L;?vH?
???
?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P?`???H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?AH?L$XH??3??H????????H????????H?T$`H;?uaL??L+?I??L;?vH?
????I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$P誃??H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XL?L$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??L;?vH?
|?n?I??H+?H??L;?v5H??H??H??H+?H;?sH???H?I;?IB?H?L$P?L???H?L$XA?H?M?H?M?H??tL?	H?E?H?AH?L$XH??H?L$XI?t$L?L$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???
?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P脁??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
&?
?I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XA?H?M?H?M?H??tL?	H?qH?L$XH??H?L$XI?t$A?L?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
\?N	?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?-???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P???H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?uH?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??~??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?|H?T$`H;?uZL??L+?I??L;?vH?
??s?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?R~??H?L$XH?M?H?M?H??tH?H?qH?L$XH??H?L$XI?uL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?}??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
3?%?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?}??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XH???H??A?L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?ueL??L+?I??L;?vH?
i?[?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?:|??H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?{??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XH???H??L?D$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
???I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??z??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?~H?T$`H;?u`L??L+?I??L;?vH?
?q?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Pz??H?L$XA?H?M?H?M?H??tL?H?qH?L$XH??H?L$XL?d$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?y??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?H?T$`H;?uZL??L+?I??L;?vH?
,??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P??x??H?L$XH?M?H?M?H??tL?!H???H?AH?L$XH??H?L$XI?vL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
h?Z?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?9x??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?w??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XI?vL?d$pH?t$xH?T$pH?D$PH;???H?T$pH;???H?t$pH+?H?T$`H;?u_L??L+?I??L;?vH?
??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P??v??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?FH?A?xH?T$`H;?uZL??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?bv??H?L$XH?M?H?M?H??tL?!H?qH?L$XH??H?L$XE????L?d$pH?E?H?D$xH?D$pH;???H?D$pL?D$PL;???H?t$pI+?H?T$`H;?u\H??I+?H??H;?vH?
?
????H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?u??H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?3H;L$`u?H?L$P?y??H?L$XH?M?H?M?H??tL?!H?E?H?AH?D$XL?d$pH???H?\$xH?T$pH?L$P??y??L?[L?d$pL?\$xH?T$pH?L$P??y??L?d$pH?E?H?D$xH?T$pH?L$P?y??L?d$pH???H?\$xH?T$pH?L$P?y??L?[L?d$pL?\$xH?T$pH?L$P?ry??L?d$pH???H?D$xH?T$pH?L$P?Ry??H?D$pH?E?H?D$xH?T$pH?L$P?1y??3?????????H?E?H?E?H?E?3?H?]??]?I???E3?H???H?M???[???A???????ƒ?AD?A???H?
wH?L$@?D$8?T$0H?D$PH?D$(H??0H?D$ L??L?E?H??.H?M??!???H?M??(???H?M??????1E?????D?B?H?M??o[???A???????%??X??AD?H???H?M????H??H???R??H?ȋ????H??H???{R??H?ȋ????L?]?L?]?H?U?H?M??[????L??H??-H?u?H??????H??H???Y?????H??????t#???$z??H??L?
hA??H???}??D??H?H?_0H???V?L?]?L?]?H?E?H?E??E?I???E3?H???H?M??Z???A??????????AD?A???H?\$@?D$8?L$0H?D$PH?D$(H??0H?D$ L??L?E?H?
-H??肺??H?M??=??H?M??=???H?M??X??3??H?E?H?E?H?E?3?H?]??]?I???E3?H???H?M??oY???A??????????AD?A????D$8?L$0H?D$PH?D$(H??0H?D$ L??L?E?H?k,H?M???????H?|$PtH?L$P???H?L$P???H?\$PH?\$XH?\$`H??rH??????HDžH??ƅ?H??HH3??o?H??$?H??PA_A^A]A\_^]?????H??USVWATAUAVAWH??????H??(H?E?????)p?)x?H?,H3?H???I??H?]?L?D$pH??L??L???L?e?H???H?}?H???I?yu!I??????H???????H???o
H???b
?=?&?|$xfW??t$hf/qH?D$hwH?A?f/?vH?D$xH?H?A?D$hd?D$xL?AH?L$xA?8IM?H?D$h?9dHN??A????%??????D??D$hA?UE?]E????Ѓ? ~C?;?~? ?E??E?D?G????ϋ?A?E??AE?D???D
?3???D???D$xC?D?3?A??D???D$|?AEf/??\HDž?HDž?ƅ?A?,H?[?H?????W???H?ExH?Ep?E`E3?H??
H?M`?W???HDž?HDž?ƅ?L??H???H????kW????D$(?H???H?D$ L?M`L????)???H?? ???H???
??H?? ????H???rH??????HDž?3?H???@???H?}xr	H?M`???H?ExH?}p?E`H???rH?????HDž?H???ƅ??3?A?}|A?}~A?}?OHDž?H???ƅ?A?,H??H????TV???H?ExH?}p?E`E3?H?	H?M`?0V???HDž?H???ƅ?A?8H??H?????U????D$(?H???H?D$ L?M`L????)???H?? ???H?????H?? ???H???rH????}?HDž?H???ƅ?H?}xr	H?M`?T?H?ExH?}p?E`H???rH????.?HDž?H???ƅ?H?T$p?BH???O9Gu;Ju?3???gHDž?HDž?ƅ?A?,H?j?H?????T???H?ExH?Ep?E`E3?H??H?M`?T???HDž?HDž?ƅ?A?DH?3?H????wT????D$(?H???H?D$ L?M`L????)???H?? ?(??H?????H?? ???H???rH??????HDž?HDž?ƅ?H?}xr	H?M`???H?ExH?Ep?E`H???rH?????HDž?HDž?ƅ?A?G???wE??t
A???PHDž?E3?L???D???E?F,H??H????ZS???H?ExL?upD?u`E3?H?H?M`?6S???HDž?L???D???E?F8H?y?H????S????D$(?H???H?D$ L?M`L????)???H?? ???H?????H?? ???H???rH?????HDž?L???ƅ?H?}xr	H?M`?\?H?ExL?up?E`H???rH????6?HDž?L???ƅ??E3??{u?%???
?OHDž?L???ƅ?A?,H???H?????Q???H?ExL?up?E`E3?H??H?M`??Q???HDž?L???ƅ?A?/H?߆H????Q????D$(?H???H?D$ L?M`L????)???H?? ?L??H???=??H?? ?*??H???rH?????HDž?L???ƅ?H?}xr	H?M`???H?ExL?up?E`H???rH??????HDž?L???ƅ?A?}?z?CA?L$A9D$u;KuA?$%???
??HDž?L???ƅ?A?,H??H????rP???H?ExL?up?E`E3?H?5H?M`?NP???HDž?L???ƅ?A?>H??H????P????D$(?H???H?D$ L?M`L????)???H?? ????H?????H?? ???H???rH?????HDž?L???ƅ?H?}xr	H?M`?r?H?ExL?up?E`H???rH????L?HDž?L???ƅ??D?A???D?CA?$%?A;?u\A?|$|TE9D$|MHDžD??DžL??H???I????i???H??I???5???H???躳???
?I??軸??H??A?}IE?E3?E?AH?U??????E3?E?AH?UI???ۼ???A?M???fn?[??
p??^??Z?L?EH?U??)???L?e?M??E3??SA?H?ci??HDž?D???L???L???L???L???L???HDž?D???????????L???H??I???,???H???該???D$`H??uh?NP??H??H??H??tGD?CH?D?pL?pL?pL?p L?p(L?p0H?@@D?pHE??~?D?JH???S????I???D$`?L??A??SA?H??Rh??A?E??Hc?I?????)??A?E??Hc?I?????)??D?\$hA??tA??u@?t$ f(?A?I???H??????t$ f(?A?I???H?L$p????A?E9e|JIc?H?~
?~?
H?E?L?}??E?A?,H??hH?M??#4???H?E(L?} ?EE3?H???H?M??3???H?E?L?}??E?A?'H??jH?M???3????D$(:H?E?H?D$ L?ML?E??)???H?M`蒨?H??胨?H?M`?s??H?}?r	H?M??j?H?E?L?}??E?H?}(r	H?M?J?H?E(L?} ?EH?}?r	H?M??*?H?E?L?}??E?H??tA?E?EA?UH???????F??Hc?H????????F??Hc?H???????I??H??????fW??t$ ??A?H???H???????A?D9f|V?Ic?H??N?L$PE3?LcnE????O?d?I??ffffff?A?~???D?|$x?L$|Hc?H??H?Ic?H??H?3?E??HD\$`L???HL??֨L???HL??ΨH???I?H???I??F?D$@H?D$xH?D$8H?\$0L?T$(L?\$ ????E??DO?I??PA?͋L$P?^???Ic?H??H?H??ިH?T$h????H???HH?T$X????H??0H3??q?(?$@H??XA_A^A]A\_^[]??????@UVWATAUAVAWH?l$?H?? H?E?????H??$pH?H3?H?EL??H??H?M?L?iL?aD?	A???E?EE?A?$?I???)???H?C8H?E?H?E?E3?L?u?D?u?E?FH?;eH?M??
.???L?t$@L?t$HL?t$PH??H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?D??H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@??C??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?_H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
W??I??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?'C??H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?B??H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HA?L?L$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ufL??L+?I??L;?vH?
?????I??H+?H??L;?v:H??H??H??H+?H;?sI???H?I;?IB?H?L$@??A??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?uaL??L+?I??L;?vH?
h??Z??I??H+?H??L;?v5H??H??H??H+?H;?sI???H?I;?IB?H?L$@?8A??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HM?wL?L$`L?t$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?s@??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HA?H?L$pH?L$xH??tL?	L?qH?L$HH??H?L$HL?L$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
I??;??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?>??H?L$HA?H?L$pH?L$xH??tL?	L?iH?L$HH??H?L$HM?gL?L$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
??????I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?=??H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u`L??L+?I??L;?vH?
T??F??I??H+?H??L;?v4H??H??H??H+?H;?s3??H?I;?IB?H?L$@?%=??H?L$HA?H?L$pH?L$xH??tL?	L?aH?L$HH??H?L$HL?m?I?]@L?L$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?ueL??L+?I??L;?vH?
???}??I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$@?\H?M?8???H?E?3?H?]Ј]?E3?H???H?M?????H?EH?]??]?E?EH?`>H?M???????D$(?H?EH?D$ L?M?L?E?)???H???z?H???z?H???z?H?}r	H?M??{?H?EH?]??E?H?}?r	H?M??[?H?E?H?]??E?H?}(r	H?M?;?H?E(H?] ?E??uH?T$0I???[o???.L?l$8H?\$0??D?L??E??A??H???	o??L??I??I??????H???H3?謆H??$8H???A_A^A]A\_^]??@UVWATAUAVAWH??$????H??`H?E?????H??$?H?N?H3?H??PL??L??3?H?I8???????A?E%????
H?E?3?H?]??]?D?@,H?]<H?M??T???H?E?H?]??]?E3?H??H?M??1???H?EH?]?]?D?C&H?.?H?M??
????D$(H?E?H?D$ L?M?L?E??(???H?MP??x?H???x?H?MP?x?H?}r	H?M?蟄H?EH?]?E?H?}?r	H?M???H?E?H?]??E?H?}?r	H?M??_?H?E?H?]??E??I?E8H?E?A?MD??A??A???A?ǸA??DD?D?}????M?H?E83?H?]0?] D?@H?<H?M ????foj:fEPfo
?:fM`fo?:fEpfo
s:f??fos:f??fo
?:f??fo3:f??Mc?E?&A?̃?I??Hk?H?LcT?4D?þP?E??~pA?z?M??D?{?A?	????????ƒ?AD׃??H??H??$?????????????????Hc?IcA@3?H??#?D;?DL?I??PI??u?D?}?A?EI??tA?B?D??A???E?HDž8@A?L??@HDžH??????????Hc?H??H?? I?EH?E??????????Hc?H??H??(HDž0A????????ƒ?AD?A??C?$H??@?΀????????????????A?V?U?H?\$PH?\$XH?\$`I?uH?D$@H?t$HH?T$@H?D$PH?L$XH;???H?T$@H;???H?t$@H+?H????????I????????H?T$`H;?ufL??L+?I??M;?vH?
?????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????I????????H?T$`H;?uaL??L+?I??M;?vH?
[??M??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?+??H?L$XA?H?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?uL?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?ufL??L+?I??M;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?a??H?L$XH?D$PA?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??M;?vH?
?????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XA?H?L$pH?L$xH??tL?H?qH?L$XH??H?L$XI??@L?D$@L?l$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
2??$??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?uaL??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?o??H?L$XA?H?L$pH?L$xH??tL?L?iH?L$XH??H?L$XI?vH?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
ի?ǜ?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??M;?vH?
E??7??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?vA?L?l$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
{??m??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?K??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$`H;?u[L??L+?I??M;?vH?
??ݚ?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XI?v@L?l$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
+????I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$`H;?u[L??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?k??H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XI?vhH?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
ק?ɘ?I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u[L??L+?I??M;?vH?
G??9??I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?v`L?l$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
???u??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?S??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$`H;?u[L??L+?I??M;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P??
??H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XI???L?l$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u`L??L+?I??M;?vH?
0??"??I??H+?H??L;?v4H??H??H??H+?H;?sH???H?I;?IB?H?L$P?
??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$`H;?u[L??L+?I??M;?vH?
??????I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$P?p??H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XA????I???H?D$@H?t$HH?D$@L?D$PH;???H?D$@L;???H?t$@I+?H?T$`H;?u]H??I+?H??I;?vH?
ϣ????H??I+?H??H;?v1H??H??H+?H;?sH???H?H;?HB?H?L$P???H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?|H?T$`H;?uXH??I+?H??I;?vH?
C??5??H??I+?H??H;?v,H??H??H+?H;?sH???H?H;?HB?H?L$P???H?L$XH?L$pH?L$xH??tH?H?qH?D$XI???L?l$@H?D$HH?T$@H?L$P???M???L?l$@L?\$HH?T$@H?L$P???H?L$XA??|iI??H?D$@H?D$HH?T$@H?L$P?R??M??L?l$@L?\$HH?T$@H?L$P?2??M??0L?l$@L?\$HH?T$@H?L$P???H?L$XL?l$@H?}?H?|$HH?D$@H;?s]L?D$@H?D$PI;?wNH?|$@H+?H;L$`u?H?L$P?H??H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?GH?A?1H;L$`u?H?L$P???H?L$XH?L$pH?L$xH??tL?)H?yH?D$XL?l$@H?E?H?D$HH?T$@H?L$P?D??L?l$@H?E?H?D$HH?T$@H?L$P?'??L?]?L?\$pH?E?H?]??E?I???E3?H?U H?M????????E??D$8D?|$0H?D$PH?D$(H??8H?D$ L?? L?E?H???H?M??L[???H?|$PtH?L$P?0?H?L$P?\rH?\$PH?\$XH?\$`H?}8r	H?M ?=rH?E8H?]0?E H??PH3???rH??$?H??`A_A^A]A\_^]??????@UVWATAUAVAWH??$p???H??H?D$0????H??$?H???H3?H???L??L??H???H?D$x3?H?\$p?\$`D?B2H??(H?L$`?????H?D$PH?\$H?\$8E3?H?l?H?L$8?????H?E?H?]??]?E?EH??)H?M??`?????D$(_H?D$`H?D$ L?L$8L?E??)???H?M??e?H???	e?H?M???d?H?}?r	H?M???pH?E?H?]??E?H?|$Pr
H?L$8??pH?D$PH?\$H?D$8H?|$xr
H?L$`?pH?D$xH?\$p?D$`A?$??????%??????D?E?t$E?|$??u
I??I???Y???3??~$??I?݋?f?D??E??A??H???OY??H??PH??u?I??I???k???H???H3???pH??$?H?ĐA_A^A]A\_^]???k??????????????L?	L?AL??M+?H?gfffffffI??I??M??H??H??H???H??-???????????????????????????????H?\$WH?? ?H??H?????%?????D?H??Hc??^???D?A??A???A??A??tE??~H?H???G???H?\$0H?? _????????????̍D?D?™A??????̋?H??????????̋??B?A?B?A?B?AH????????̋??B?A?B?A?B?AH????????̋??B?A?B?A?B?AH????????̰????????????????fn????????̋??B?A?B?A?B?AH?????????f?????H*??????3?H?H?AH??????H?L$H??H?$????3???A@?AH?A@@H?AH?A H?A(H?A0H?A8H?A@H?AP?AXH?A`?AhH?ApH?AxH???H???H???H??????H??????H???H???H???H???H???H??????H??H??Ë??B?A?B?A?B?AH?????????3?H?H?AH?????????B?A?B?A?B?AH????̋??B?A?B?A?B?AH??????????Afn??Afn??A????Zfn??????Rfn????H???J??????????????̋Af??f???H*?f??f???A?H*??Z?A?H*??R??H*??JH??????????????H?H?I?H?AH???????????????????D$(???AD?AD?IH???????3?H?H?A?D$(?A?D?AH??D?I????H????Q?Q?Q????????????3?H?H?A??Q?Q?QH???????????H??UH??X???H??H?D$0????H?XH?xH?v?H3?H???H??H?L$8?D?AD?I3?H?A@@H?yH?y H?y(H?y0H?y8H?y@H?yP?yXH?y`?yhH?ypH?yxH???H???H???H??????H??????H???H???H???H???H???H???????A??~=?H?E?H?|$x?D$hA?/H??#H?L$h??????H?E?H?}??E?E3?H???H?M???????H?D$XH?|$P?D$@A?)H?c#H?L$@??????D$(?H?D$hH?D$ L?M?L?D$@?)???H?M??Q^?H???B^?H?M??2^?H?|$Xr
H?L$@?'jH?D$XH?|$P?D$@H?}?r	H?M??jH?E?H?}??E?H?}?r
H?L$h??iH?E?H?|$x?D$h?C%?}?ȃ???????H?D$XH?|$P?D$@A?/H??"H?L$@?????H?E?H?}??E?E3?H?s?H?M??????H?E?H?|$x?D$hA?H?"H?L$h?b?????D$(?H?D$@H?D$ L?M?L?D$h?)???H?M??]?H???]?H?M???\?H?}?r
H?L$h??hH?E?H?|$x?D$hH?}?r	H?M???hH?E?H?}??E?H?|$Xr
H?L$@?hH?D$XH?|$P?D$@?C%?}?ȃ??????? H?D$XH?|$P?D$@A?/H?r!H?L$@?x????H?E?H?}??E?E3?H?;?H?M??T????H?E?H?|$x?D$hA?H?? H?L$h?*?????D$(?H?D$@H?D$ L?M?L?D$h?)???H?M???[?H????[?H?M???[?H?}?r
H?L$h?gH?E?H?|$x?D$hH?}?r	H?M??gH?E?H?}??E?H?|$Xr
H?L$@?ugH?D$XH?|$P?D$@?H??H???H3?? hL??$?I?[I?{ I??]????????????D?D$UVWATAUAVAWH?l$?H??H?E?????H??$XH???H3?H?EL??H??H?E?E3?L?}?D?}?E?GH?: H?M???????L?sIcH?E?L?kIcEH?E?H?EH?E?H?E?H?E?L?|$@L?|$HL?|$PH??H?D$`H?\$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?\$`H+?H????????H????????H?T$PH;?u`L??L+?I??L;?vH?
n??`??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?>???H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?CH?A?H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
Ǔ????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HI?\$H?D$`H?\$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
n??`??I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?>???H?L$HH?L$pH?L$xH??tH?H?YH?L$HH??H?L$HH?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
??????I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?z???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?L?iH?L$HH??H?L$HH?D$`L?t$hH?T$`H?D$@H;???H?T$`H;???H?\$`H+?H?T$PH;?u`L??L+?I??L;?vH?
V??H??I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$@?&???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?CH?A?H?T$PH;?u[L??L+?I??L;?vH?
Ə????I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?L?qH?L$HH??H?L$HH?D$`H?E`H?D$hH?D$`L?D$@H;???H?D$`L;???H?\$`I+?H?T$PH;?u]H??I+?H??H;?vH?
?????H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$@?????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?H?T$PH;?uXH??I+?H??H;?vH?
o??a?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@?B???H?L$HH?L$pH?L$xH??tH?H?E`H?AH?D$HH?E?H?D$pH?E?L?}??E?I???E3?H?U?H?M????????i??H???D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?M?L?E?H????H???H?|$@tH?L$@??~H?L$@?_L?|$@L?|$HL?|$PH?}?r	H?M???^H?E?L?}??E?H?MH3??_H??$XH??A_A^A]A\_^]?????????@UVWATAUAVAWH??$????H??`H?E@????H??$?H?N?H3?H??PM??L??H??H?M?D?M?L???????????HDž?3?H???@?upD?FH??H?Mp?R????fW??EH?EP?EX?E`H?u??u?H?uH?uH?uH?uH?u H?u0?u8L?E?H?UHI??跻???H?M???A???-??mH?mP?mX?m`H?u??u?H?u?H?u?H?u?H?u?H?u?H?u??u?L?E?H?UHI???_????H?M??A??E?]A????????¸??D?A??C??P?H??$?????????????????Hc?3?I?EH??H?E??G@??H?H??H?E?HDž??HDž?HDž?L?{??A?+?+E??????ƒ??H?H????
+ϋC?H?1?0?????????H?H???HDž?H?t$PH?t$XH?t$`H?sH?EHH?uPH?UHH?D$PH?L$XH;???H?UHH;???H?uHH+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
???|{?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?[???H?L$XH?D$PH???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
???z?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?t$H?EHH?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
!??z?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
????y?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?c???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?uH?EHH?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
Ї??x?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
A??3x?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XA?L?mHH?E?H?EPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
}??ow?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?N???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
???v?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tL?)H?E?H?AH?L$XH??H?L$XI?vH?EHH?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
,??v?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
????u?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?n???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?vL?mHH?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
߃??t?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
P??Bt?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?!???H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XL?mHL?}PH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
????s?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?k???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
???r?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tL?)L?yH?L$XH??H?L$XL?mHL?e?I?t$H?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
L??>r?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
????q?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XI?t$L?mHH?uPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
???p?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
s?ep?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?D???H?L$XH?L$pH?L$xH??tL?)H?qH?L$XH??H?L$XL?mHH?E?H?EPH?UHH?D$PH;???H?UHH;???H?uHH+?H?T$`H;?u_L??L+?I??L;?vH?
?~??o?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
*~?o?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tL?)H?E?H?AH?L$XH??H?L$XH?u?H?uHE3?L?ePH?EHL?D$PH;???H?EHL;???H?uHI+?H?T$`H;?u]H??I+?H??H;?vH?
i}?[n?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?m?0^?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$@????H?L$HH?E?H?L$pH?L$xH??tH?L?aH?D$HH?E?H?D$pH?E?L?e??E?I???E3?H?U?H?M??_?????H??H???D$8?????D$0????H?D$@H?D$(H?E?H?D$ L?ML?E?H?????&???H?|$@tH?L$@??]H?L$@??=L?d$@L?d$HL?d$PH?}?r	H?M???=H?E?L?e??E?H?MH3??>H??$xH?? A_A^A]A\_^]????????????H??UAVAWH?h?H???H?E????H?XH?pH?xL?h E??I??H??L??L?uoE3?E?FA?VH?M?Q&??A?E?FA?VI???;&??E?D?\$0A?F?D$4A?F?D$8I?FH?D$@I?FH?D$HI?N H?M?I?F(H?E?I?F0H?E?I?F8H?E?A?F@?E?A?FD?E?A?FH?E?H??t??0?H?uw??E??F?E??F?E?H?FH?E?H?FH?E?H?N H?M?H?F(H?E?H?F0H?E?H?F8H?E?F@?E??FD?E??FH?E?H??t??.0?A???FE?A???E?FA?VH???A%??D?A???D?F?VH???(%??E?EH??I???????E?EH??H???????L?\$0L;?tsH?O H??tA???/H?L$0????L?_8L?]???D$0?G?D$4?G?D$8H?GH?D$@H?GH?D$HH?G(H?E?H?G0H?E??G@?E??GD?E??GH?E?H?G H?E?H?E?H;?toH?K H??t
??9/H?M??X??L?[8L?]??E??C?E??C?E?H?CH?E?H?CH?E?H?C(H?E?H?C0H?E?C@?E??CD?E??CH?E?H?C H?E?L?|$(?]_?\$ D?MWL?EH?U?H?L$0?#????Ug.?ztL?M??H?L$0??????H?M?????H?L$0???L??$?I?[ I?s(I?{0M?k8I??A_A^]??????????????H??XL?L$HL??I??E?H?D$@A?C?ACL??L???H?Q`L?T$8H???D$0?D$(A?C?D$ ????H??X?????????????H?\$WH??P)t$@??)|$0?D)D$ (?(?D(??:??$?H????p?x?D@?@?G??H???G??H?H?A?L???\???H??H?ڍH?\$`(t$@(|$0D(D$ H??P_?9???H?
???????????_>???????????H?H?H?????????H?H?H?????????H?H?H????????̋9u?B9Au??2???????????????f??Bf?A?Bf?A?Bf?AH???????????????????fn?????????3???AH???????̉T$?L$H??(D?ҋ???????A??t??A?H?T$0A;?H?D$8HM‹???Q??fn???????????DA??^=?gfff?X_??,????????????H?D$P?u?H??(???f??Bf?A?Bf?A?Bf?AH?????????????????3???AH?????????f??Bf?A?Bf?A?Bf?AH?????????????????H???????????????Afn??Afn??A????Zfn??????Rfn????H???J???????????????3???A?D$(f?Af?fD?AH??fD?I????????????????3???Af?f?Qf?Qf?QH?????????H?L$WH??0H?D$ ????H?\$HH?t$PH??H???tH?????VH?????63?H???H???H???H9??tH????hVH????6H???H???H???H?\$HH?t$PH??0_????????????????H??UH??H???H??H?D$0????H?XH?x)p?H??H3?H???H??H?L$8H?L?AL?IH???H?AH???H?A H???H?A(H???H?A0H??H?A8H??H?A@H??H?AHH??H?AP3?H?yXH?y`H?yhH?yp?zu
?5C??K??AxH???H???H???H???H???H???H??8~?x~
?x?H?E?H?|$x?D$hA?/H???H?L$h?C????H?E?H?}??E?E3?H?gH?M??????H?D$XH?|$P?D$@A?6H?.?H?L$@???????D$(RH?D$hH?D$ L?M?L?D$@?)???H?M??(?H???(?H?M??(?H?|$Xr
H?L$@?4H?D$XH?|$P?D$@H?}?r	H?M??_4H?E?H?}??E?H?}?r
H?L$h?>4H?E?H?|$x?D$hH??H???'???H?D$XH?|$P?D$@A?/H?~?H?L$@?????H?E?H?}??E?E3?H??eH?M??????H?E?H?|$x?D$hA?4H???H?L$h農????D$(SH?D$@H?D$ L?M?L?D$h?)???H?M??v'?H???g'?H?M??W'?H?}?r
H?L$h?M3H?E?H?|$x?D$hH?}?r	H?M??+3H?E?H?}??E?H?|$Xr
H?L$@?	3H?D$XH?|$P?D$@L?A?y?ZA?I?ɺ??fn?[??Ysx?AYq?
R??fn?[?/?? H?D$XH?|$P?D$@A?/H??H?L$@許???H?E?H?}??E?E3?H?kdH?M?脱???H?E?H?|$x?D$hA?rH???H?L$h?Z?????D$(TH?D$@H?D$ L?M?L?D$h?)???H?M??&?H???&?H?M???%?H?}?r
H?L$h??1H?E?H?|$x?D$hH?}?r	H?M???1H?E?H?}??E?H?|$Xr
H?L$@?1H?D$XH?|$P?D$@??H??H???H3??N2L??$?I?[I?{ A(s?I??]?????@UVWATAUAVAWH?l$?H??pH?E?????H??$?H??H3?H?E`M??L??H??H?A8H?E????%??????D??E?A?%??E?H?E?E3?L?u?D?u?D?AH???H?M???????L?t$PL?t$XL?t$`H?^H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????I????????H?T$`H;?u`L??L+?I??M;?vH?
?^??O?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?y???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????I????????H?T$`H;?u[L??L+?I??M;?vH?
^??N?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XL?FA?L?L$pL?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ufL??L+?I??M;?vH?
<]?.N?I??H+?H??L;?v:H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?ueL??L+?I??M;?vH?
?\??M?I??H+?H??L;?v5H??H??H??H+?H;?sI???H?I;?IB?H?L$P?u???H?L$XA?L?FH?M?H?M?H??tL?	L?AH?L$XH??H?L$XL?vL?L$pL?t$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?ueL??L+?I??M;?vH?
?[??L?I??H+?H??L;?v9H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PA?H???H?H?M?H?M?H??tH?H?H?CH?A?~H?T$`H;?u`L??L+?I??M;?vH?
J[??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P觵??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
IM?;>?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?L?v=?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?U???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
?K??<?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ų??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
+K?<?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?uZL??L+?I??L;?vH?
?J??;?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?l???H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XI?]H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
?I??:?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P裱??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
EI?7:?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XI?\$H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u_L??L+?I??L;?vH?
H?q9?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?P???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?|H?T$`H;?uZL??L+?I??L;?vH?
?G??8?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?ï??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH???H?D$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u\H??I+?H??H;?vH?
*G?8?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?H?T$`H;?uWH??I+?H??H;?vH?
?F??7?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?r???H?L$XH?M?H?M?H??tH?H???H?AH?D$XHcE?H?EHcE?H?EH?EH?E?H?E?H?EH???H???A??HD?H?E?H?E?H?E?3?H?}?@?}?I???E3?H?U?H?M??t????H?\$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?ML?E?H??hI????????H9|$PtH?L$P??6H?L$P?H?|$PH?|$XH?|$`H?}?r	H?M???H?E?H?}??E?H?M H3??H??8A_A^A]A\_^[]?????????D?D$USVWATAUAVAWH?l$?H??8H?E?????H?DhH3?H?E I??M??U?M?q8E?)A???H?E?E3?L?}?D?}?E?GH???H?M??_????L?|$PL?|$XL?|$`H?^H?D$pH?\$xH?T$pH?D$PH?L$XH;???H?T$pH;???H?\$pH+?H????????I????????H?T$`H;?u`L??L+?I??M;?vH?
D?
5?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H????????I????????H?T$`H;?u[L??L+?I??M;?vH?
vC?h4?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?F???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH???H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
?B??3?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?}???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??M;?vH?
B?3?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?M?H?M?H??tH?H???H?AH?L$XH??H?L$XH?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
OA?A2?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??M;?vH?
?@??1?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P葨??H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH???H?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
????0?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?ħ??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??M;?vH?
f??X0?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?6???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
?>??/?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P?p???H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??M;?vH?
>?/?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?ߥ??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?D$pH?E?H?D$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
E=?7.?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?H?T$`H;?u[L??L+?I??M;?vH?
?<??-?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P脤??H?L$XH?M?H?M?H??tH?H?E?H?AH?L$XH??H?L$XH?^H?D$pH?\$xH?T$pH?D$PH;???H?T$pH;???H?\$pH+?H?T$`H;?u`L??L+?I??M;?vH?
?;??,?I??H+?H??L;?v4H??H??H??H+?H;?sI???H?I;?IB?H?L$P躣??H?L$XH?D$PH???H?H?M?H?M?H??tH?H?H?CH?A?}H?T$`H;?u[L??L+?I??M;?vH?
\;?N,?I??H+?H??L;?v/H??H??H??H+?H;?sI???H?I;?IB?H?L$P?,???H?L$XH?M?H?M?H??tH?H?YH?L$XH??H?L$XH?D$pH???H?D$xH?D$pL?D$PH;???H?D$pL;???H?\$pI+?H?T$`H;?u]H??I+?H??I;?vH?
?:??+?H??I+?H??H;?v1H??H??H+?H;?sI???H?H;?HB?H?L$P?f???H?L$XL?D$PH???H?M?H?M?H??tJ?H?J?DH?A?H?T$`H;?uXH??I+?H??I;?vH?
:??*?H??I+?H??H;?v,H??H??H+?H;?sI???H?H;?HB?H?L$P?١??H?L$XH?M?H?M?H??tH?H???H?AH?D$XHcE?H?EHcE?H?EH?EH?E?H?E?H?EH??H???A??HD?H?E?H?E?H?E?L?}??E?I???E3?H?U?H?M??݈???H?\$@?D$8?????D$0????H?D$PH?D$(H?E?H?D$ L?ML?E?H?\I???]????H?|$PtH?L$P?A*H?L$P?m
L?|$PL?|$XL?|$`H?}?r	H?M??N
H?E?L?}??E?H?M H3??H??8A_A^A]A\_^[]?H?\$H?l$H?t$WATAUH??0??$?Hc?D?Q?H?4?A??E??D??A??H?Ic‰\$(D??H?v?W??M?L$M?ǺH???>???t#????S??H??L?
?A??H?v?EW??M?L$M?Ǻ	H??????t#???S??H??L?
??A??H??u?	W??L?L$PM?Ǻ
H???Ʊ??t#???YS??H??L?
??A??H??u??V??M?L$ M?ǺH??花??t#???S??H??L?
a?A??H?Nu?V??M?MM?ǺH???O???t#????R??H??L?
&?A??H?u?VV??M??M?Ǻ
H??????t#???R??H??L?
??A??H??t?V???????3?H?|$@H?|$8?|$0H?M?H?L$(H?M?H?L$ E3?D?GH??H?诰??t#???HR??H??L?
??A??H?yt?U???g???H?臰H???????t$???R??H??L?
P?A??H?=t?U???H?}?r	H?M??-?H?E?H?}??E?H?M?H3???H???A_A^A]A\_^[]????????????????@USVWATAUAVAWH?l$?H??H?E?????H??H3?H?E?I??M??L??H??L?i8A?Y$???%???A???ADljD$T?$????????y???
?(ʨt?Y???t?Y????y?^??(??,‰D$PH?D$`H?E?H?D$xH?D$p?D$`A?H?stH?L$`?12???D??H?T$`H?M??????H?D$`H?E?H?D$xH?D$p?D$`I???E3?H?U?H?L$`??0???L?D$`H?DI???Ě??H??HcL$PL??H?M?H?E?????Lc?L?M?Hc??I??H?M؋B?D??A???Ux??H?H?E?L?M?Ep?‰D$XL?E?H??I???{R??M?N3?D?BH???K???t#????O??H??L?
"?A??H?r?RS??L?O?D?BH??????t#???O??H??L?
??A??H??q?S??M?L$?D?BH???ҭ??t#???eO??H??L?
??A??H??q??R??E3?A?QA?H??薭??t#???)O??H??L?
m?A??H?Zq?R??L???M??A??H???Z???t#????N??H??L?
1?A??H?q?aR??L?OM?ǺH??????t#???N??H??L?
??A??H??p?&R??L?OM?ǺH??????t#???wN??H??L?
??A??H??p??Q??L?MxM?ǺH??詬??t#?????H??L?
-?A?PH?a?]B??L???M?ƺH??????t#???>??H??L?
??A?QH??`?B??L?L$\M?ƺH???ܜ??t#???o>??H??L?
??A?RH??`??A??L?L$PM?ƺ	H??蠜??t#???3>??H??L?
w?A?SH?d`?A??L???M?ƺ
H???b???t#????=??H??L?
9?A?TH?&`?iA??L?L$TM?ƺH???&???t#???=??H??L?
??A?UH??_?-A??L?L$XM?ƺH??????t#???}=??H??L?
??A?VH??_??@??L?NM?ƺ
H??诛??t#???B=??H??L?
??A?WH?s_?@??L?NM?ƺH???t???t#???=??H??L?
K?A?XH?8_?{@??M?L$M?ƺH???8???t#???????D??H?T$XH?M??????H?D$XH?E?H?D$pL?l$hD?l$XI???E3?H?U?H?L$X?????L?D$XH?U?H????|??H??H?E  H?E(H?E0??(????????Hc?H??H?M8D?? A?@??????Hc?H??H?U@H?EH??A???D$T????8?D$PL?E H??H???h4??L?M?3?E?EH???8???t#????1??H??L?
?A??H??S??5??L?MȺD?BH???????t#???1??H??L?
??A??H??S?5??L?M??D?BH???????t#???S1??H??L?
??A??H??S??4??L?M??D?BH??脏??t#???1??H??L?
[?A??H?HS?4??L?M??D?BH???H???t#????0??H??L?
?A??H?S?O4??L?M??D?BH??????t#???0??H??L?
??A??H??R?4??L?MкD?BH???Ў??t#???c0??H??L?
??A??H??R??3??L?M??D?BH??蔎??t#???'0??H??L?
k?A??H?XR?3??L?N?D??H???Y???t#????/??H??L?
0?A??H?R?`3??L?M??	D?B?H??????t#???/??H??L?
??A??H??Q?$3??L?M??
D?B?H??????t#???t/??H??L?
??A??H??Q??2??L?M??D?B?H??襍??t#???8/??H??L?
|?A??H?iQ?2??L?M??D?B?H???i???t#????.??H??L?
@?A??H?-Q?p2??L?? ?
D?B?H???*???t#???.??H??L?
?A??H??P?12??L??(?D?B?H??????t#???~.??H??L?
??A??H??P??1??L??0?D?B?H??謌??t#????.??H??L?
??A??H?pP?1??L??8?D?B?H???m???t#???.??H??L?
D?A??H?1P?t1??L??@?D?B?H???.???t#????-??H??L?
?A??H??O?51??L??H?D?B?H??????t#???-??H??L?
??A??H??O??0??L?L$T?D?B?H??貋??t#???E-??H??L?
??A??H?vO?0??L?L$P?D?B?H???u???t#???-??H??L?
L?A??H?9O?|0??L???D?B?H???6???t#????,??H??L?

?A??H??N?=0??L???D?B?H???????t#???,??H??L?
??A??H??N??/??詜??L?l$@L?l$8D?l$0H?M H?L$(H?M8H?L$ E3?E?AH??H?蒊??t#???+,??H??L?
o?A??H?\N?/???J???H??j?H???މ??t$????+??H??L?
3?A??H? N?c/???H?}r	H?M???H?EL?m?E?I????.??H?MPH3?辎H??hA]A\_^[]???????????????@USVWATAUH?l$?H??8H?E?????H?l?H3?H?E H?M?H?U?L?E?L?M?H???H?E?H???H?E?L???H???H?u?I?|$8?^$H?D$XH?E?H?D$pE3?L?l$hD?l$XE?EH?CPH?L$X?Q???D??H?T$XH?M???????H?D$XH?E?H?D$pL?l$hD?l$XI???E3?H?U?H?L$X??
???L?D$XH?h?H????t??H??H?E? H?E?H?E?????????????Hc?H??H?MD???A?@??????Hc?H??H?UH?E???A???D$PL?E?H??H???,??L?M?3?E?EH???\???t#????)??H??L?
3?A??H? L?c-??L?M??D?BH??? ???t#???)??H??L?
??A??H??K?'-??L?M??D?BH??????t#???w)??H??L?
??A??H??K??,??L?M??D?BH??訇??t#???;)??H??L?
?A??H?lK?,??L?M??D?BH???l???t#????(??H??L?
C?A??H?0K?s,??L?M??D?BH???0???t#????(??H??L?
?A??H??J?7,??M?L$?D?BH??????t#???(??H??L?
ʼA??H??J??+??L????D?B?H??贆??t#???G(??H??L?
??A??H?xJ?+??L????D?B?H???u???t#???(??H??L?
L?A??H?9J?|+??L????	D?B?H???6???t#????'??H??L?

?A??H??I?=+??L????
D?B?H???????t#???'??H??L?
λA??H??I??*??L?N?D?B?H??軅??t#???N'??H??L?
??A??H?I??*??L?L$P?D?B?H???~???t#???'??H??L?
U?A??H?BI?*??L????
D?B?H???????t#????&??H??L?
?A??H?I?F*??L?N?D?B?H??????t#???&??H??L?
ںA??H??H?
*??赖??L?l$@L?l$8D?l$0H?M?H?L$(H?MH?L$ E3?E?AH??H?螄??t#???7&??H??L?
{?A??H?hH?)???V???H??v?H??????t$????%??H??L?
??A??H?,H?o)???H?}?r	H?M???H?E?L?m??E?H????(??H?M H3??ʈH??8A]A\_^[]???????????@SUVWATAUAVAWH??XHDŽ$?????H?y?H3?H??$@L??$?L?D$pL??L??H??$?H??$?H??$?H??$?H??$?H?D$xH??$?H??$83?9{??H??$?H??$???$???$?D??$?D??$?DH??H??$???(????σ??L$`?t$X?l$PD?d$HD?l$@H?D$8H?D$xH?D$0H??$?H?D$(H??$?H?D$ L??$?L?D$pI??I?????????;{|?H???'??H??$@H3??d?H??XA_A^A]A\_^][?@USVWATAUAVAWH?l$?H??(H?E?????H??H3?H?EH?M?H?U?L?E?L?M?H???H?E?H???H?E?H???H???H?~8?X$H?D$XH?E?H?D$pE3?L?|$hD?|$XE?G
H?dIH?L$X????D??H?T$XH?M??????H?D$XH?E?H?D$pL?|$hD?|$XI???E3?H?U?H?L$X????L?D$XH??H???m??H??H?E? H?E?H?E??F????????Hc?H??H?MD?NA?A??????Hc?H??H?MH?E??????????A???ADփ?ɸP?H??$?????????????????Lc?3?H?FI???D$TD???D?L$PL?E?H??H????$??L?M?3?E?GH???€??t#???U"??H??L?
??A?"H??D??%??L?M??D?BH??膀??t#???"??H??L?
]?A?#H?JD?%??L?M??D?BH???J???t#????!??H??L?
!?A?$H?D?Q%??L?M??D?BH??????t#???!??H??L?
?A?%H??C?%??L?M?A?A??H??????t#???e!??H??L?
??A?&H??C??$??L?M??D?BH?????t#???)!??H??L?
m?A?'H?ZC?$??L?N?D?BH???Z??t#???? ??H??L?
1?A?(H?C?a$??L?L$TM?ƺH?????t#??? ??H??L?
??A?)H??B?%$??L?NM?ƺH????~??t#???v ??H??L?
??A?*H??B??#??L?NM?ƺ	H???~??t#???; ??H??L?
?A?+H?lB?#??L???M?ƺ
H???j~??t#??????H??L?
A?A?,H?.B?q#??L???M?ƺH???,~??t#?????H??L?
?A?-H??A?3#??L?L$PM?ƺH????}??t#?????H??L?
dzA?.H??A??"??袏??L?|$@L?|$8D?|$0H?M?H?L$(H?MH?L$ E3?E?AH??H??}??t#???$??H??L?
h?A?0H?UA?"???C???H??c}H????|??t$??????H??L?
,?A?3H?A?\"???H?}?r	H?M??	?H?E?L?}??E?H?MH3?迁H??(A_A^A]A\_^[]????????????@USVWATAUAVAWH??$H??????Q?H+?H?E8????)?$?)?$?H?O?H3?H???L?M?L?E?H?U?H??H?? H?E?H??(H?E?H??0H?E?H??8H?E?L??@H??HH?E H??PH?]?H??XH?E?H??`H?}(L?aE3?L?uA?<$?%??v???mHDžXL??PD??@A?2H???H??@??????HDžL??ƅ?E3?H???H????????HDž0L??(ƅA?GH?&CH???z?????D$(nH??@H?D$ L???L???)???H??p?(s?H???s?H??p?s?H??0rH????~HDž0L??(ƅH??rH?????~HDžL??ƅ?H??XrH??@?~HDžXL??Pƅ@fW??????????????C?E??C?E?fn??????f(??!?.??^??,ƉE?H?M?A;$IM?Lc)D?m?E?,$B??Hc?H??PH??@HDžHH??v)?H??H??????H@?H???zH??@H??HH??@H?M?I??N?,?M?L?L?M?M?$?LcE?D??E?A?E?FA?K?D?H????A?$H??~kM??M??M+?L??M+?I??I+?L?Z?fff?C??+???C?DA??+???A?@C??C?DKcDH?D?H????B?DI??I??u?L?M?A??]?A?$?M???E?A?D????H?M???e??A?D?E???H?M???e??A?D?E???H?M???e??A?D?E???H?M??e??H?E?H??PH?EA?D?E???H???e??H?E?H??PH?E?A?D?E???H???re??H?E?H??PH?EA?D?E???H???Re??H?E?H??PH?E?A?D?E???H???2e??A?D?E???H?M??e??H?M?A?D?E???H??P?e??A?D?E??H?M???d??A?D?E???H?M???d??H?E??P?D?E?$A??A???ʍ?E?;?}A????A????E??M?A?D????I???d??H???I??????H???H?M?????H???H?M?????H???H?M??s???H???H?M??c???H???H?]?H???P???H???H?M?@???H???H?M??0???H???H?M?? ???H???H?M????H???H?KP????H???H?M??????H???H?M??????D?M?A?Q??ULc???EH?M@H?M0H?M?J?|?H?E?H+?H?E?L+??f?H?]?D?M?H?M?D;???H?O?H?M?	?M??\8?A?T=??U?Ic?H?M?Lc?L?EH?E?H?@H?E?Ic?H??H?H?E?H?D?H?E?D?d$8L??H?M??\$0?T$(D?D$ H?U?M??A???e?????????H?EL??M??H?U?H?M??D$8?E??D$0?\$(?E??D$ ?~(u
?;?????a?????E?D=D?T8?E?\=?Ic?D??H?E?H?HIc?L?4?M?J?\??T$XH?E?D?d$PH??D?D$HH??D?T$@L??D?\$8H?D$0H?E?H?D$(D?L$ A?????????C???H?]?˃?H?E@H?EH??H?M@????L??L?O?L?MHcU?H?M?Hc?Hc?L??Mҋ??$?L?E?A?8??$?A?D=??$?A???$?A?D8???$?A?D=???$?H?T$xH?T$pL?\$hL?|$`H?E?H?@H?D$XH?E?H?@H?D$PH?M?J?D?H?D$HJ?D?H?D$@L?M?K?D?H?D$8L?E?K?D?H?D$0H?U?J?D?H?D$(H?M?J?D?H?D$ O?L?O?D?J?T?J?L?????D??L?uH??H?M@???L??Ic?L??M?H?]??L$XH?EЋT8??T$PA?T=??T$HHcM?H?U????D$@L?\$8L?|$0H?E?J?D?H?D$(H?E?H?@H?D$ H?E?N?L?H?E?N?D?H?E?J?T?H?E?J?L?????A??H??H?EЋU?????H?}(?]?D?e?H?uA?D??A??H???C`???%???tA?D??A??H?] H???`???vH?] H;?tmH?O H??t
???jH????Z??L?_8L?[8???G?C?G?CH?GH?CH?GH?CH?G(H?C(H?G0H?C0?G@?C@?GD?CD?GH?CHH?G H?C H???H??????Mc?K??H?HcU?L?E?Mc?A??D$HH?\$@L?T$8H?t$0H?E?H?D?H?D$(H?E?H?@H?D$ H?E?L?L?H?E?L?D?H?E?H?T?H?E?H?L?????D?A???A??t?|$ ??H??H????????H??PH??@H;?t??vL??PL??@HDžHH???H3??~v(?$?(?$?H???A_A^A]A\_^[]???????????@USVWATAUAVAWH??$H??????yH+?H?E8????)?$?)?$?H???H3?H???L?M?L?E?H?U?H??H?? H?E?L??(L?e?H??0H?E?H??8H?E?L??@H??HH?E H??PH?]?H??XH?EH??`H?}(L?iE3?L?uA?}?%??v???mHDžXL??PD??@A?2H?q4H??@?????HDž0L??(ƅE3?H?G?H???]????HDžL??ƅ?A?GH??7H????*?????D$(nH??@H?D$ L??L????)???H??p??g?H????g?H??p?g?H??rH????sHDžL??ƅ?H??0rH???xsHDž0L??(ƅH??XrH??@?IsHDžXL??Pƅ@fW??????????????C?E??C?E?fn?????wf(?????w?^??,ƉE?H?M?A;EIM͋?E?A?E??Hc?H??PH??@HDžHH??v)?H??H??????H@?H???IoH??@H??HH??@H?M?HcU?L?,?M?L?L?M?M??LcE?D??E?A?E?FA?J???H?????A?H??~vM??M??M+?L??M+?I??I+?H?Z?H??fff?C??+???C?DA??+???A?@C??C?DKcDH???H?????B?DI??H??u?H?}(L?M?A??]?A?
?M???E?A?D????H?M??Z??A?D?E???H?M??Z??A?D?E???H?M??pZ??A?D?E???H?M??[Z??H?E?H??PH?EA?D?E???H???;Z??H?E?H??PH?E?A?D?E???H???Z??H?E?H??PH?E?A?D?E???H????Y??H?E?H??PH?E?A?D?E???H????Y??A?D?E???I????Y??I?L$PA?D?e?E?ċ??Y??A?E?čH?M??Y??A?E?ċ?L?e?I???Y??H?M?D?A?D?HcU?D??A??A??A?ȍ?E?;?}A??A??A????E??M?A?D????I???4Y??H???I???E???H???H?M??5???H???H?M??%???H???H?M?????H???H?M?????H???H?]?H???????H???H?M??????H???H?M??????H???H?M??????H???H?M????H???H?KP????H???H?M?????H???I??????D?M?A?Q??ULc???HH?M@H?M0H?M?J?|?H?E?H+?H?E?L+??ffff?H?]?D?M?H?M?D;???H?O?H?M??	?M??\8?A?T=??U?Ic?H?M?Lc?L?EH?E?H?@H?E?Ic?H??H?H?E?H?D?H?E?D?d$8L??H?M??\$0?T$(D?D$ H?UM??A???????莺??H?EL??M??H?U?H?M??D$8?E??D$0?\$(?E??D$ ?~(u
????????????E?D=D?T8?E?\=?Ic?D??H?E?H?HIc?L?4?M?J?\??T$XH?ED?d$PH??D?D$HH??D?T$@L??D?\$8H?D$0H?E?H?D$(D?L$ A???z?????????H?]?˃?H?E@H?EH??H?M@?f??L??L?O?L?M?HcU?H?M?Hc?Hc?L??Mҋ??$?L?E?A?8??$?A?D=??$?A???$?A?D8???$?A?D=???$?H?T$xH?T$pL?\$hL?|$`H?E?H?@H?D$XH?E?H?@H?D$PH?M?J?D?H?D$HJ?D?H?D$@L?M?K?D?H?D$8L?E?K?D?H?D$0H?U?J?D?H?D$(H?M?J?D?H?D$ O?L?O?D?J?T?J?L?????D??L?uH??H?M@?U??L??Ic?L??M?H?]???L$XH?EЋT8??T$PA?T=??T$HHcM?H?U????D$@L?\$8L?|$0H?E?J?D?H?D$(H?E?H?@H?D$ H?E?N?L?H?E?N?D?H?E?J?T?H?E?J?L??,???A??H??H?EЋU?????H?}(?]?D?e?H?uA?D??A??H????T???%???tA?D??A??H?] H???T???vH?] H;?tmH?O H??t
??i_H???O??L?_8L?[8???G?C?G?CH?GH?CH?GH?CH?G(H?C(H?G0H?C0?G@?C@?GD?CD?GH?CHH?G H?C H???H???X???Mc?K??H?HcU?L?E?Mc?A??D$HH?\$@L?T$8H?t$0H?E?H?D?H?D$(H?E?H?@H?D$ H?E?L?L?H?E?L?D?H?E?H?T?H?E?H?L??8???D?A???A??t?|$ ???H??H???ߠ???H??PH??@H;?t?rkL??PL??@HDžHH???H3??k(?$?(?$?H???A_A^A]A\_^[]??????????̋9u?B9Au??2??????????????H?L$H??H?$????3?H?A0H?A8H?A@H?APH?AXH?A`H?ApH?AxH???H???H???H???H??????H???H???H???H???H???H??????H????H??H??H?? H??(H??0H??@??HH??P??XH??`H??hH??pH??xH???H??????H??????H???H???H???H???H???H??????H??????H??H??H??H??H?? H??0??8H??@??HH??PH??XH??`H??hH??pH??????H??????H???H???H???H???H???H??????H??????H???H???H??H??H??H?? ??(H??0??8H??@H??HH??PH??XH??`H??p??xH??????H???H???H???H???H???H??????H??????H???H???H???H???H??H????H?? ??(H??0H??8H??@H??HH??PH??`??hH??p??xH???H???H???H???H???H??????H???H?H?333333??H?AH?333333??H?A?A?AH?{?G?z??H?A ?A(,?A,H??H???@SH?? H??H??0?n???H?KP?e???H?Kp?\???H????P???H????J??H????I??H??P??I??H?????I??H?????I??H??@??I??H????I??H????I??H??0?I??H????I??H????I??H?? ?I??H??pH?? [?oI?????????????????H??UATAUAVAWH?h?H?? H?E?????H?XH?pH?x H??H3?H?EM??L??H??H?A8H?E?H?E? H?E?H?E?L?aIc$H?EL?iIcEH?EH?E?	????????¾??Dփ??A?P?A??H??$?????????????????Hc?3?H?CH??E?A?????????ƒ?Dփ??I??A?Ȁ????????????????Hc?3?I?FH??E?H?E?H?E??E?D?FH??(H?M??;????H?D$@H?D$HH?D$PH?sH?D$`H?t$hH?T$`H?D$@H?L$HH;???H?T$`H;???H?t$`H+?H????????H????????H?T$PH;?u_L??L+?I??L;?vH?
??݂?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$PH;?uZL??L+?I??L;?vH?
E??7??I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HA?L?D$`L?d$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
???r??I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Q???H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
??ڀ?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HA?H?L$pH?L$xH??tL?L?aH?L$HH??H?L$HL?D$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?ueL??L+?I??L;?vH?
'????I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@A?H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
?????I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?`???H?L$HA?H?L$pH?L$xH??tL?L?iH?L$HH??H?L$HL?D$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
ʍ??~?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$PH;?u`L??L+?I??L;?vH?
8??*~?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?	???H?L$HA?H?L$pH?L$xH??tL?H?E?H?AH?L$HH??H?L$HI?vH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
k??]}?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@???0v?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$xH?L$pH??tH?H?H?FH?AH?L$HH??3??H????????H????????H?T$PH;?u[L??L+?I??L;?vH?
???u?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@?]???H?L$HH?L$pH?L$xH??tH?L?aH?L$HH??H?L$HA?L?d$`L?l$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
ǃ??t?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?{H?T$PH;?u[L??L+?I??L;?vH?
8??*t?I??H+?H??L;?v/H??H??H??H+?H;?sH???H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tL?!L?iH?L$HH??H?L$HL?d$`L?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
|??ns?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?M???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$PH;?uZL??L+?I??L;?vH?
???r?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tL?!L?qH?L$HH??H?L$HL?d$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
.?? r?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
????q?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?p???H?L$HH?L$pH?L$xH??tL?!H?E?H?AH?L$HH??H?L$HI?wH?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
???p?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
I?;p?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH?u?H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
~~?po?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?O???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?}??n?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HL?d$`H?E?H?D$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
,}?n?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?|??m?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?n???H?L$HH?L$pH?L$xH??tL?!H?E?H?AH?L$HH??H?L$HH?u?H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
?{??l?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
C{?5l?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH???H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
uz?gk?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?F???H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?y??j?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@????H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HH???H??H?D$`H?t$hH?T$`H?D$@H;???H?T$`H;???H?t$`H+?H?T$PH;?u_L??L+?I??L;?vH?
y?
j?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$@?????H?L$HH?D$@H???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$PH;?uZL??L+?I??L;?vH?
?x?{i?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$@?Z???H?L$HH?L$pH?L$xH??tH?H?qH?L$HH??H?L$HL?d$`H???H?D$hH?D$`L?D$@H;???H?D$`L;???H?t$`I+?H?T$PH;?u\H??I+?H??H;?vH?
?w??h?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HL?D$@H???H?L$pH?L$xH??tJ?H?J?DH?A?~H?T$PH;?uWH??I+?H??H;?vH?
8w?*h?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$@????H?L$HH?L$pH?L$xH??tL?!H???H?AH?D$HL?d$`H?E?H?D$hH?T$`H?L$@????L?d$`H?E?H?D$hH?T$`H?L$@?z???L?d$`H?E?H?D$hH?T$`H?L$@?]???L?d$`H?E?H?D$hH?T$`H?L$@?@???L?d$`H?E?H?D$hH?T$`H?L$@?#???L?]?L?\$pH?E?H?E??E?I???E3?H?U?H?M????????D$8?????D$0????H?D$@H?D$(H?E(H?D$ L?ML?E?H??H?M??F0???H?|$@tH?L$@?*gH?L$@?VGH?D$@H?D$HH?D$PH?}r	H?M??+GH?EH?E??E?H?M@H3???GL??$PI?[8I?s@I?{HI??A_A^A]A\]?????????????H??UATAUAVAWH?h?H??@H?E?????H?XH?pH?x H?n?H3?H?E8L?M?M??L??H??H?A8H?E?H?E  H?E(H?E0L?aIc$H?EL?iIcEH?EH?E?	?????????A???ADЃ?ɿP???H??$?????????????????Hc?3?H?FH??E?H????
????????ËÃ?AD????D??I??A??????????%???A????L?JHc?3?I??H??E?H????
D??A??A???A??A??A??AD????H???????????%???????L?BHc?3?I??H??E?H???Hc@@3?I??E???A?ADٍ???????%???A????Hc?Hc?3?H??E?H???Hc@@3?I???E?A??ED?B????????%???????Hc?Hc?3?H??E?H?E?H?E??E?E?AH??	H?M???????H?D$PH?D$XH?D$`H??H?D$@H?t$HH?T$@H?D$PH?L$XH;???H?T$@H;???H?t$@H+?H????????H????????H?T$`H;?u_L??L+?I??L;?vH?
r?qc?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?P???H?L$XH?D$PH???H?H?L$xH?L$pH??tH?H?H?FH?A?H????????H????????H?T$`H;?uZL??L+?I??L;?vH?
?q??b?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XA?L?D$@L?d$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
q?b?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?H?T$`H;?u`L??L+?I??L;?vH?
?p?ta?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?S???H?L$XA?H?L$pH?L$xH??tL?L?aH?L$XH??H?L$XA?L?d$@L?l$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?o??`?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?zH?T$`H;?uZL??L+?I??L;?vH?
,o?`?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tL?!L?iH?L$XH??H?L$XL?d$@H?E?H?D$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
mn?__?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?>???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?m??^?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tL?!H?E?H?AH?L$XH??H?L$XI?vH?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
m?	^?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?l?z]?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?Y???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XI?wH?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?k??\?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
2k?$\?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH?u?H??H?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
gj?Y[?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?8???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?i??Z?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH???H??H?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
i??Y?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
{h?mY?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?L???H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH???H??H?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
?g??X?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?~???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
g?X?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P?????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH???H??H?D$@H?t$HH?T$@H?D$PH;???H?T$@H;???H?t$@H+?H?T$`H;?u_L??L+?I??L;?vH?
Pf?BW?I??H+?H??L;?v3H??H??H??H+?H;?s3??H?I;?IB?H?L$P?!???H?L$XH?D$PH???H?H?L$pH?L$xH??tH?H?H?FH?A?~H?T$`H;?uZL??L+?I??L;?vH?
?e??V?I??H+?H??L;?v.H??H??H??H+?H;?s3??H?I;?IB?H?L$P????H?L$XH?L$pH?L$xH??tH?H?qH?L$XH??H?L$XH???H??H?D$@H?t$HH?D$@L?D$PH;???H?D$@L;???H?t$@I+?H?T$`H;?u\H??I+?H??H;?vH?
?d??U?H??I+?H??H;?v0H??H??H+?H;?s3??H?H;?HB?H?L$P?????H?L$XL?D$PH???H?L$pH?L$xH??tJ?H?J?DH?A?{H?T$`H;?uWH??I+?H??H;?vH?
hd?ZU?H??I+?H??H;?v+H??H??H+?H;?s3??H?H;?HB?H?L$P?.?%0.?%".?%.?%.?%?-?%?-?%?-?%?-?%?-?%?2?%?2?%?2?%?2?%?2?%t2?%f2?%X2?%J2?%<2?%.2?% 2?%2?%2?%?1?%?1?%?1?%?1?%?1?%?1?%?1?%L2?%>1?%01?%"1?%1?%1?%2?%?0?%?0?%?0?%?0?%?0?%?0?%?0?%1?%1?%1?%1?%1?%
1?%1?%1?%1?%B&?%l'?%>&?%@&?%B&?%D&?%F&?%H&?%J&?%L&?%N&?%P&?%R&?%T&?%V&?%X&?%Z&?%\&?%^&?%`&?%b&?%d&?%f&?%h&?%j&?%l&?%n&?%p&?%r&?%t&?%v&?%x&?%z&?%|&?%~&?%?&?%?&?%?&?%?&?%?"?%?"?%?"?%?"?%#?%#?%#?%#?%#?%
#?%#?%#?%#?%#?%#?%?"?%? ?%? ???C??%? ?%? ??H?L?AH????H??(H?I?? H??tL??H??A?H??(???H?\$WH?? H??H?I???? H??tL??H??A?@??tH???H??H?\$0H?? _?@SH?? H?ٹ?H??tH??VH?XH?H??VH?? [??@SH??0H?D$ ????3?H?L$@?? ??/H?H??VH?K?) H??tL??H??A?H???$H?_VH??u?H?L$@? H??0[??@SH??0H?D$ ????3?H?L$H? ??/H?H?VH?K??H??tL??H??A?H???H??UH??u?H?L$H??H??0[???%~?%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%??%?!?%?!?%?!H?1lH?H?????H?\$H?t$WH?? ??H????t*D?A?L?

???@??t	H?K??9H?C????@??tH??? H??H?\$0H?t$8H?? _????H????%R!?%D!?%6!?%(!?%!?%T!?%!??H??H?XH?hH?pH?x ATH?? I?Y8H??M??H??L?CI??H??I???tD?[D?UA??A??A?A#?A??fDD?E??tL??M??H??H???????D??H?\$0H?l$8H?t$@H?|$HA??H?? A\????????????????????ff?H;
?PuH??f????u??H???U??%* ?% ?% ?% ?%???H??(H??8csm?t3?H??(??c	?H?\$D?D$H?L$VWATH??@I??A??L??H???ω|$pxI+?H?\$`H???????H?\$hH??@A\_^???H??L?H D?@H?PSVWATH??8M??Ic?H??`?H??H??H?H?X?ω|$pxH+?H?\$`H??A?????D$ H??8A\_^[????@SH?? H??H?
X?BH?D$8H???uH?????~???H?
?W?H?D$8H?
?W?H?D$@H???lH??L?D$@H?T$8?RH??H?L$8?LH??WH?L$@?:H?sW??H??H?? [?H??(?G???H???????H??(???%R?%,?%.?%0?%2?%4?%6?%8@SH?? E?H??L??A???A?L??tA?@McP??L?Hc?L#?Ic?J?H?C?HHK?At?A???H?L?L3?I??H?? [?????H??(M?A8H??I???????H??(???%??%??%??%??%??%??%??%??%???????????????ff?H??L?$L?\$M3?L?T$L+?MB?eL?%M;?sfA???M?????A?M;?u?L?$L?\$H????%d?%f?%h?%j?%l?%n?%p?%r?%tL?D$H?L$SVWATAUH??0E??M??H??H??3ۉ\$ ?\$$A;?}!H??H????$?I?H?|$`I?H?t$h?????D$ H??0A]A\_^[???%H??H?XH?p H?PH?HWATAUH??0M??E??H??H??3ۉX؉\$$A;?}H??A??H?H?|$P?????D$ H?\$`H?t$hH??0A]A\_??%??%?eH?%0???@SH?? ???H??H???H??TH??TH??u?C?#H?#?nH?
??2???H?
O?&???3?H?? [???H??H?XH?hH?xL?` AUAVAWH?? 3?M??L????8??N???#??D???NeH?%0H?X?H;?t???g3??H??Su??A???S??t??	?H?
?S?#L??H????H?
?S?
M??L??H??H??I;?rZH9}t??\H9Et?H?M??H???CH?E??H?
?S??H?
qSH????L;?uL;?t?L??L???I???=??H?@SH?AS?=SE????H?=S??3???????eH?%0??H?X?H;?t???=3??H??Ru?????R??t????>H?|&H?
e&??R???u?H?C&H?
?%??mR??u
H??H?gRH9=hRt!H?
_R?*??tM?ĺI???ER??L?H?\$@H?l$HH?|$PL?d$XH?? A_A^A]????H??H?XH?pH?xATH??0I????L???X??I??u9OLu
3ۉX?????t??u7H??cH??t?Ћ؉D$ ????L?Ƌ?I???0????؉D$ ????L?Ƌ?I??????؉D$ ??u5??u1L??3?I???m??L??3?I???????L?1cM??tL??3?I??A?Ӆ?t??u7L?Ƌ?I?????????#ˋىL$ tH??bH??tL?Ƌ?I???Ћ؉D$ ?3ۉ\$ ??H??????H?\$@H?t$HH?|$PH??0A\????H?\$H?t$WH?? I????H???u??L?Nj?H??H?\$0H?t$8H?? _???????H?L$H??H?
?K?H??LH?D$XE3?H?T$`H?L$X?H?D$PH?|$PtAH?D$8H?D$HH?D$0H?D$@H?D$(H?DKH?D$ L?L$PL?D$XH?T$`3????"H??$?H?LH??$?H??H??KH??KH?gJH??$?H?hK?>J	??8JH??GH?D$hH??GH?D$p?&??J??3??H?
ga???=?Ju
??X???	?H????H?Ĉ??%$?%&?%(?%*?%,H?

O?H?\$WH?? H?G?H?=@??H?H??t??H??H;?r?H?\$0H?? _?H?\$WH?? H??H?=??H?H??t??H??H;?r?H?\$0H?? _??%???H???MZf9t3??HcH??H?? ]???????????????@UH?? H??H???H?????=??H?? ]???????????????@UH?? H??H???H????=??H?? ]???????????????@UH?? H??H???H????=??H?? ]???????????????@UH?? H??H???H????T=??H?? ]???????????????@UH?? H??H???H????$=??H?? ]???????????????@UH?? H??H???H???????????H????t$??????H????d$??????H???T$??????H??0?ڛ??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????T??H?? ]???????????????@UH?? H??H???H????$??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????H????!??????H????!??????H??P??:??????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????T??H?? ]???????????????@UH?? H??H???H????$??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????@UH?? H??H???H????4??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????H??????????H??????????H??P?7??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H??????????H??????????H??????????H??????????H????t??????H?? ?????????H????T??????H????D??????H????4??????H?? 麐??????H??????????H??????????H???????????H?? ?z???????H??@?T2??????@UH?? H??H?UxH?Mp?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p????????H??????????H??????????H?????????H??????????H??0?
???????H????d??????H???T??????H????D??????H??0?ʍ??????H????$??????H?????????H??????????H??0銍??????H??@?d/??????@UH?? H??H?UxH?Mp?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p????????H??`????????H??`???????H??`???????H??????????H??????????H?? ?t??????H????d??????H??P????????H????D??????H?? ?4??????H????$??????H??P骊??????H??????????H?? ????????H???????????H??P?j???????H???????????H?? ???????H??????????H??P?*???????H??P?,??????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UxH?Mp?z???H?? ]?????@UH?? H??H?UxH?Mp?Z???H?? ]?????@UH?? H??H?UxH?Mp?:???H?? ]?????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UxH?Mp?z???H?? ]?????H??x???????H??x???????H??@???????H??h???????H????t??????H????????????H????T??????H??h?D??????H??@?4??????H???麇??????H??????????H??0???????H???????????H???????????H???????????H???????????H?? ?J???????H??????????H??????????H??????????H?? ?
???????H????d??????H????T??????H????D??????H?? ?ʆ??????H????$??????H??????????H??????????H?? 銆??????H??@?d(??????@UH?? H??H?UxH?Mp?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????H??p?
??????H??p?
??????H??p????????H???????????H???????????H??????????H??????????H??@?:???????H??@?&??????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p??	??????H??@?	??????H????	??????H??h?	??????H???????????H??0?t	??????H????d	??????H????T	??????H?? ?D	??????H????4	??????H??P麀??????H????	??????H?? ?	??????H???????????H??P?z???????H???????????H?? ????????H??????????H??P?:???????H??@?"??????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????H??p???????H??@?t??????H????d??????H????T??????H?????}??????H??h?4??????H??0?$??????H??0???????H??????????H???????????H??????????H???????????H??0?Z}??????H??@?4??????@UH?? H??H?UxH?Mp?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p????????H??@????????H???????????H??h???????H????:z??????H??0???????H??????????H????t??????H???d??????H????T??????H??0??y??????H??@???????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????H??p?d???????H??@?T???????H????D???????H??h?4???????H????v??????H??h????????H???????????H??@?????????H????zv??????H??0?????????H??0?????????H??P?4??????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????H???????????H??P?t??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????H????$???????H???????????H??P???????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????H????T???????H??X?D???????H????4???????H????$???????H???l??????H???????????H????????????H??X?????????H???jl??????H????????????H??H????????H???????????H??@???????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????H??p?D???????H??x?4???????H??p?$???????H???????????H???????????H??8?????????H???????????H??`?ji??????H???????????H??8????????H???????????H??`?*i??????H??????????H??8?t???????H????d???????H??`??h??????H??`??
??????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????4???????H??x?$???????H??p????????H??x????????H??p?????????H??X?????????H??H?????????H??x?????????H??h????????H??h????????H??x????????H??h????????H??h?t???????H??p?????????H????T???????H??h?D???????H??h?4???????H??x?$???????H??h????????H??h????????H??x?????????H??h?????????H??h?????????H??x?????????H??h????????H??h????????H?? ????????H??p????????H????????????@UH?? H??E ????t
?e ?H?MH?????H?? ]???????????H????4???????H????$???????H??????????H???????????H??0?c??????H????????????H???????????H????????????H??0?Jc??????H??@?$??????@UH?? H??H?UxH?Mp?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????H??p????????H???????????H????t???????H????d???????H????`??????H??@?????????H??0?4???????H??0?$???????H???????????H??????????H????????????H??0?z`??????H????????????H???????????H???????????H??0?:`??????H??P???????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????H??p?D???????H????4???????H????$???????H???????????H?? ?]??????H??@?t???????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????H??p?$???????H???????????H???????????H????????????H?? ?zZ??????H????????????H????????????H???????????H?? ?:Z??????H??@????????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????H??p?D???????H????4???????H????$???????H??????????H???????????H??0?W??????H????????????H???????????H????????????H??0?JW??????H??@?$???????@UH?? H??H?UxH?Mp?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?ڿ??H?? ]?????@UH?? H??H?UpH?Mx躿??H?? ]?????@UH?? H??H?UpH?Mx蚿??H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?ھ??H?? ]?????H??p????????H??@????????H??h?????????H????????????H????jT??????H????????????H??0????????H???????????H??x????????H??P????????H????
T??????H????d???????H??x?T???????H??P?D???????H?????S??????H??`?$???????H??H????????H?? ????????H??p?S??????H??`?d???????H??0?????????H??0?????????H??`?????????H???????????H??`????????H??H????????H?? ?t???????H??p??R??????H??`?????????H??0?D???????H??0?4???????H??`?4???????H????$???????H??P????????H??8?????????H???????????H??`?jR??????H??P?D???????H??0????????H??0????????H??P????????H???????????H??P?t???????H??8?d???????H???T???????H??`??Q??????H??P????????H??0?$???????H??0????????H??P????????H???????????H??P?????????H??8?????????H???????????H??`?JQ??????H??P?$???????H??0????????H??0????????H??P????????H????t???????H??P?T???????H??8?D???????H???4???????H??`?P??????H??P????????H??0????????H??0?????????H??P?????????H????????????H??P?????????H??8????????H??????????H??`?*P??????H??P????????H??0?t???????H??0?d???????H??P?d???????H????T???????H????4???????H????$???????H??h????????H????O??????H??h?????????H????????????H????????????H????ZO??????H???????????H???????????H??h????????H????O??????H??h?t???????H????d???????H????T???????H?????N??????H????4???????H??`?$???????H??8????????H????N??????H????????????H??`?????????H??8?????????H????ZN??????H???????????H??`????????H??8????????H????N??????H??`?t???????H??8?d???????H????T???????H?????M??????H????4???????H??8?$???????H??`????????H????M??????H??`?????????H??8?????????H????????????H????ZM??????H??x?4???????H????$???????H???H??P????H????4???????H??(?????????@UH?? H??E ????t?e ?H????;??H?? ]????????H???鴾??????H???H??P頾??H???锾??????H???H??P逾??H???????????H??(?d???????@UH?? H??E ????t?e ?H??@?=???H?? ]????????H????$???????H???H??P????H???????????H???H??P????H???????????H??(?Խ??????@UH?? H??E ????t?e ?H??@譽??H?? ]????????H???锽??????H???H??P逽??H????t???????H???H??P?`???H???????????H??(?D???????@UH?? H??E ????t?e ?H??@????H?? ]????????H???????????H???H??P????H??@????????H??@?????????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UpH?Mx?ʴ??H?? ]?????@UH?? H??H?UpH?Mx誴??H?? ]?????@UH?? H??H?UpH?Mx芴??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʳ??H?? ]?????@UH?? H??H?UpH?Mx誳??H?? ]?????@UH?? H??H?UpH?Mx芳??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʲ??H?? ]?????H???????????H??p?????????H??(H?%?u??H??(H?%?u??@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U H?M0?J???H?? ]?????@UH?? H??H?U(H?M8?*???H?? ]?????H??(H?%bu??@UH?? H??H?UHH?MX?????H?? ]?????@UH?? H??H?U@H?MP?ڱ??H?? ]?????H??(H?%u??H??(H?%u??H??X?t???????H??X?d???????H??X?T???????@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U(H?M8?J???H?? ]?????@UH?? H??H?U(H?M8?*???H?? ]?????@UH?? H??H?UHH?MX?
???H?? ]?????H??(H?%Bt??@UH?? H??H?UHH?MX?ڰ??H?? ]?????@UH?? H??H?UHH?MX躰??H?? ]?????H?? ?t???????H??0?d???????H??8?T???????H??0?D???????H??8?4???????H??0?$???????H??8????????@UH?? H??H?U(H?M8?*???H?? ]?????@UH?? H??H?UHH?MX?
???H?? ]?????@UH?? H??H?UHH?MX????H?? ]?????H?T$UH?? H??3?3???Q????????????H?T$UH?? H??3?3??Q????????????H?T$SUWH?? H??H?] H?}`H;?t@H???h5??H??PH;?u?3?3??lQ????????H?T$SUWH?? H??H?] H?}PH;?t@H???(5??H??PH;?u?3?3??,Q????????H?T$SUWH?? H??H?] H?}PH;?t@H????4??H??PH;?u?3?3???P????????H?T$UH??0H??H?MX?P??3?3???P???@UH?? H??H?U@H?MH誮??H?? ]?????@UH?? H??H?U@H?MH芮??H?? ]?????@UH?? H??H?UxH????g???H?? ]??@UH?? H??H?UxH????G???H?? ]??H??`锻??????H???t???????H????d???????H????T???????H?????C??????H??@?D???????H??`?4???????H???????????H???????????H???????????H????zC??????@UH?? H??H?U@H?MH?z???H?? ]?????@UH?? H??H?U@H?MH?Z???H?? ]?????H?T$SUH??8H??L?E0H?]8H??H????{N??H???O??3?3?? O????????????H?T$SUH??8H??L?E0H?]8H??H????;N??H????N??3?3???N????????????H??`????????H??8????????H????????????H????zB??????H?? H???`??H??p?????????H???????????H??H????????H????*B??????H??H????????H????t???????H??p?d???????H?????A??????H??`?D???????H??8?4???????H????$???????H????A??????H??p????????H????????????H??H?????????H????jA??????H??H?????????H???????????H??p????????H????*A??????H??H????????H????t???????H??p?d???????H?????@??????H??`?D???????H????4???????H??8?$???????H????@??????H??`鄲??????H?T$UH??0H??H?MP?*L??3?3??L???H??0????????H????Է??????H??0?ķ??????H???鴷??????H??0餷??????H??P锷??????H??0鄷??????H????t???????H??0?d???????H????T???????H???鴱??????H??0餱??????H???锱??????H??@鄱??????H????t???????@UH?? H??H?UHH?MX芩??H?? ]?????H?T$UH??0H??H?MP??J??3?3??gK???H??P?$???????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԩ??H?? ]???????????????@UH?? H??H???H???褨??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???货??H?? ]???????????????@UH?? H??H???H???脧??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????Ħ??H?? ]???????????????@UH?? H??H???H???蔦??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԥ??H?? ]???????????????@UH?? H??H???H???褥??H?? ]???????????????H????????????H????????????H??P?4???????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贤??H?? ]???????????????@UH?? H??H???H???脤??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????ģ??H?? ]???????????????@UH?? H??H???H???蔣??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԣ??H?? ]???????????????@UH?? H??H???H???褢??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贡??H?? ]???????????????H???????????H????Կ??????H??P?D???????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????Ġ??H?? ]???????????????@UH?? H??H???H???蔠??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԟ??H?? ]???????????????@UH?? H??H???H???褟??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贞??H?? ]???????????????@UH?? H??H???H???脞??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????ĝ??H?? ]???????????????H????????????H???????????H??P?T???????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԝ??H?? ]???????????????@UH?? H??H???H???褜??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贛??H?? ]???????????????@UH?? H??H???H???脛??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????Ě??H?? ]???????????????@UH?? H??H???H???蔚??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԙ??H?? ]???????????????@UH?? H??H???H???褙??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????D???????H????4???????H??P????????@UH?? H??H???H???贘??H?? ]???????????????@UH?? H??H???H???脘??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????ė??H?? ]???????????????@UH?? H??H???H???蔗??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԗ??H?? ]???????????????@UH?? H??H???H???褖??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贕??H?? ]???????????????@UH?? H??H???H???脕??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????Ĕ??H?? ]???????????????@UH?? H??H???H???蔔??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????H???锲??????H???鄲??????H??P?????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԓ??H?? ]???????????????@UH?? H??H???H???褓??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贒??H?? ]???????????????@UH?? H??H???H???脒??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????đ??H?? ]???????????????@UH?? H??H???H???蔑??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԑ??H?? ]???????????????@UH?? H??H???H???褐??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贏??H?? ]???????????????H???????????H????ԭ??????H??P?D???????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ď??H?? ]???????????????@UH?? H??H???H???蔎??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԍ??H?? ]???????????????@UH?? H??H???H???褍??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贌??H?? ]???????????????@UH?? H??H???H???脌??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ċ??H?? ]???????????????@UH?? H??H???H???蔋??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????H???锩??????H???鄩??????H??P?????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԋ??H?? ]???????????????@UH?? H??H???H???褊??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贉??H?? ]???????????????@UH?? H??H???H???脉??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ĉ??H?? ]???????????????@UH?? H??H???H???蔈??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԇ??H?? ]???????????????@UH?? H??H???H???複??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????D???????H????4???????H??P餾??????@UH?? H??H???H???贆??H?? ]???????????????@UH?? H??H???H???脆??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ą??H?? ]???????????????@UH?? H??H???H???蔅??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԅ??H?? ]???????????????@UH?? H??H???H???褄??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贃??H?? ]???????????????@UH?? H??H???H???脃??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????H????T???????H????D???????H??P鴺??????@UH?? H??H???H????Ă??H?? ]???????????????@UH?? H??H???H???蔂??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԁ??H?? ]???????????????@UH?? H??H???H???褁??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???贀??H?? ]???????????????@UH?? H??H???H???脀??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????@UH?? H??H???H????4??H?? ]???????????????H????d???????H????T???????H??P?Ķ??????@UH?? H??H???H?????~??H?? ]???????????????@UH?? H??H???H????~??H?? ]???????????????@UH?? H??H???H????t~??H?? ]???????????????@UH?? H??H???H????D~??H?? ]???????????????@UH?? H??H???H????~??H?? ]???????????????@UH?? H??H???H?????}??H?? ]???????????????@UH?? H??H???H????}??H?? ]???????????????@UH?? H??H???H????}??H?? ]???????????????@UH?? H??H???H????T}??H?? ]???????????????@UH?? H??H???H????$}??H?? ]???????????????@UH?? H??H???H?????|??H?? ]???????????????@UH?? H??H???H?????|??H?? ]???????????????@UH?? H??H???H????|??H?? ]???????????????@UH?? H??H???H????d|??H?? ]???????????????@UH?? H??H???H????4|??H?? ]???????????????@UH?? H??H???H????|??H?? ]???????????????@UH?? H??H???H?????{??H?? ]???????????????@UH?? H??H???H????{??H?? ]???????????????@UH?? H??H???H????t{??H?? ]???????????????@UH?? H??H???H????D{??H?? ]???????????????H????t???????H????d???????H??P?Բ??????@UH?? H??H???H?????z??H?? ]???????????????@UH?? H??H???H????z??H?? ]???????????????@UH?? H??H???H????z??H?? ]???????????????@UH?? H??H???H????Tz??H?? ]???????????????@UH?? H??H???H????$z??H?? ]???????????????@UH?? H??H???H?????y??H?? ]???????????????@UH?? H??H???H?????y??H?? ]???????????????@UH?? H??H???H????y??H?? ]???????????????@UH?? H??H???H????dy??H?? ]???????????????@UH?? H??H???H????4y??H?? ]???????????????@UH?? H??H???H????y??H?? ]???????????????@UH?? H??H???H?????x??H?? ]???????????????@UH?? H??H???H????x??H?? ]???????????????@UH?? H??H???H????tx??H?? ]???????????????@UH?? H??H???H????Dx??H?? ]???????????????@UH?? H??H???H????x??H?? ]???????????????@UH?? H??H???H?????w??H?? ]???????????????@UH?? H??H???H????w??H?? ]???????????????@UH?? H??H???H????w??H?? ]???????????????@UH?? H??H???H????Tw??H?? ]???????????????H???鄕??????H????t???????H????d???????H??@?Ԯ??????@UH?? H??H?UhH?M`??v??H?? ]?????@UH?? H??H?U`H?Mh??v??H?? ]?????@UH?? H??H?U`H?Mh?v??H?? ]?????@UH?? H??H?U`H?Mh?v??H?? ]?????@UH?? H??H?U`H?Mh?jv??H?? ]?????@UH?? H??H?U`H?Mh?Jv??H?? ]?????@UH?? H??H?U`H?Mh?*v??H?? ]?????@UH?? H??H?U`H?Mh?
v??H?? ]?????@UH?? H??H?U`H?Mh??u??H?? ]?????@UH?? H??H?U`H?Mh??u??H?? ]?????H??`????????@UH?? H??H?UHH?MX?u??H?? ]?????H??0????????H?T$SUVWH??(H??H?] H?}pH;?tH???H??H????C??H?? H;?u?3?3??E?????????????????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???tC??H?? H;?u?3?3???????H??@?|??????H??P?|??????H??@?|??????H??`????????H??8?????????H???????????H????j
??????H????Ē??????H??8鴒??????H??`餒??????H????*
??????H????|??????H??0??{??????H????d???????H????T???????H??X?D???????H????	??????H??X?$???????H???????????H???????????H???	??????H????d{??????H????ԑ??????H????đ??????H??X鴑??????H???:	??????H??X锑??????H???鄑??????H????t???????H??????????H??X?T???????H????D???????H????4???????H?????????H????z??????H???????????H????????????H???????????H??0?j??????H????Đ??????H???鴐??????H???餐??????H??0?*??????H????z??????H??`?%??????H?T$UH??0H??H?MX????3?3?????@UH?? H??H?U@H?MH??q??H?? ]?????@UH?? H??H?U@H?MH??q??H?? ]?????H???????????H???????????H??h????????H????j??????H??h?ď??????H???鴏??????H???餏??????H????*??????H??h鄏??????H????t???????H????d???????H???????????H??h?D???????H????4???????H????$???????H??????????H??h?$??????@UH?? H??H?UPH?MX?p??H?? ]?????@UH?? H??H?UXH?MP?zp??H?? ]?????H??x鴎??????H???餎??????H??P锎??????H??????????H??P?t???????H????d???????H??x?T???????H???????????H??P?4???????H????$???????H??x????????H??????????H??P???????H???????????H??X?ԍ??????H????č??????H????J??????H??X餍??????H???锍??????H???鄍??????H????
??????H??X?d???????H????T???????H????D???????H???????????H????D
??????H??X?4
??????H???????????H???????????H??x????????H????j??????H????Č??????H??x鴌??????H???餌??????H????*??????H???鄌??????H??x?t???????H????d???????H???????????H????D???????H??x?4???????H????$???????H??????????H????$	??????H??x?	??????H??0??z??????H?????z??????H??0??z??????H?????z??????H????$u??????H??@?u??????H????u??????H??@?z??????H??`?tz??????H??@?dz??????H???Tz??????H??@?Dz??????H????4z??????H????t??????H?? ?t??????H??@?tt??????H????dt??????H????Tt??????H????4'??????H??H????????@UH?? H??E@????t?e@?H?? ?
t??H?? ]????????@UH?? H??E@????t?e@?H?????s??H?? ]????????@UH?? H??H?UhH?????k??H?? ]??@UH?? H??H???H?Mh??k??H?? ]??@UH?? H??H???H????k??H?? ]???????????????@UH?? H??H???H????tk??H?? ]???????????????H??@?x??????H??`?x??????H??@?x??????H???x??????H??@?tx??????H????dx??????H?????r??????H????r??????H??@?r??????H??@?$x??????H????x??????H??@?x??????H????w??????H??@??w??????H??`??w??????H??@??w??????H????w??????H????r??????H??0?r??????H??@??q??????H?????q??????@UH?? H??E ????t
?e ?H?MH?Pw??H?? ]???????????@UH?? H??E ????t
?e ?H?MH? w??H?? ]???????????H??@H???w??H??@H??p??v??H??@H?????v???????????????H???鴇??????H??8餇??????H??锇??????H??????????H???t???????H??8?d???????H????T???????H???????????H???4???????H??8?$???????H???????????H??????????H??p??_??????H????_??????H??`??u??????H?? ??u??????H??鴆??????H??8餆??????H???锆??????H??????????H????u??????H????tu??????H??`?du??????H????Tu??????H????o??????H????$???????H??@锟??????@UH?? H??H?UxH?M`?g??H?? ]?????@UH?? H??H?UxH?M`?g??H?? ]?????@UH?? H??H?UxH?M`?jg??H?? ]?????@UH?? H??H?UxH?M`?Jg??H?? ]?????@UH?? H??H?UxH?M`?*g??H?? ]?????@UH?? H??H?UxH?M`?
g??H?? ]?????@UH?? H??H?UxH?M`??f??H?? ]?????@UH?? H??H?UxH?M`??f??H?? ]?????@UH?? H??H?UxH?M`?f??H?? ]?????@UH?? H??H?UxH?M`?f??H?? ]?????@UH?? H??H?UxH?M`?jf??H?? ]?????@UH?? H??H?UxH?M`?Jf??H?? ]?????H??x鄄??????H????t???????H???d???????H??8?T???????H??P?????????H??8?4???????H???$???????H???????????H??P????????H?????\??????H??P??\??????H??`??r??????H?????r??????H??8鴃??????H??餃??????H???锃??????H??P????????H??`?r??????H?????l??????H?? ?T???????H??@?Ĝ??????@UH?? H??H?UxH?Mp??d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx?zd??H?? ]?????@UH?? H??H?UpH?Mx?Zd??H?? ]?????@UH?? H??H?UpH?Mx?:d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx??c??H?? ]?????@UH?? H??H?UpH?Mx??c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx?zc??H?? ]?????@UH?? H??H?UpH?Mx?Zc??H?? ]?????@UH?? H??H?UpH?Mx?:c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx??b??H?? ]?????H??p?4???????H????$???????H??????????H??8????????H??P????????H??8????????H???Ԁ??????H????Ā??????H??P?J???????H????Y??????H??P?tY??????H??`?o??????H????o??????H??8?d???????H???T???????H????D???????H??P?????????H??`?4o??????H????i??????H?? ????????H??@?t???????@UH?? H??H?UxH?Mp?a??H?? ]?????@UH?? H??H?UpH?Mx?ja??H?? ]?????@UH?? H??H?UpH?Mx?Ja??H?? ]?????@UH?? H??H?UpH?Mx?*a??H?? ]?????@UH?? H??H?UpH?Mx?
a??H?? ]?????@UH?? H??H?UpH?Mx??`??H?? ]?????@UH?? H??H?UpH?Mx??`??H?? ]?????@UH?? H??H?UpH?Mx?`??H?? ]?????@UH?? H??H?UpH?Mx?`??H?? ]?????@UH?? H??H?UpH?Mx?j`??H?? ]?????@UH?? H??H?UpH?Mx?J`??H?? ]?????@UH?? H??H?UpH?Mx?*`??H?? ]?????@UH?? H??H?UpH?Mx?
`??H?? ]?????@UH?? H??H?UpH?Mx??_??H?? ]?????@UH?? H??H?UpH?Mx??_??H?? ]?????@UH?? H??H?UpH?Mx?_??H?? ]?????H??p??}??????H??`??}??????H?????}??????H????}??????H??@?:???????H????l??????H???l??????H???l??????H?????f??????H???T}??????H??@?Ė??????@UH?? H??H?UhH?M`??^??H?? ]?????@UH?? H??H?U`H?Mh?^??H?? ]?????@UH?? H??H?U`H?Mh?^??H?? ]?????@UH?? H??H?U`H?Mh?z^??H?? ]?????@UH?? H??H?U`H?Mh?Z^??H?? ]?????@UH?? H??H?U`H?Mh?:^??H?? ]?????@UH?? H??H?U`H?Mh?^??H?? ]?????@UH?? H??H?U`H?Mh??]??H?? ]?????@UH?? H??H?U`H?Mh??]??H?? ]?????@UH?? H??H?U`H?Mh?]??H?? ]?????@UH?? H??H?U`H?Mh?]??H?? ]?????@UH?? H??H?U`H?Mh?z]??H?? ]?????@UH?? H??H?U`H?Mh?Z]??H?? ]?????@UH?? H??H?U`H?Mh?:]??H?? ]?????H??`?t{??????H??`?d{??????H????T{??????H????D{??????H??@?????????H????4j??????H???$j??????H???j??????H????td??????H????z??????H??@?T???????@UH?? H??H?UhH?M`?j\??H?? ]?????@UH?? H??H?U`H?Mh?J\??H?? ]?????@UH?? H??H?U`H?Mh?*\??H?? ]?????@UH?? H??H?U`H?Mh?
\??H?? ]?????@UH?? H??H?U`H?Mh??[??H?? ]?????@UH?? H??H?U`H?Mh??[??H?? ]?????@UH?? H??H?U`H?Mh?[??H?? ]?????@UH?? H??H?U`H?Mh?[??H?? ]?????@UH?? H??H?U`H?Mh?j[??H?? ]?????@UH?? H??H?U`H?Mh?J[??H?? ]?????@UH?? H??H?U`H?Mh?*[??H?? ]?????@UH?? H??H?U`H?Mh?
[??H?? ]?????@UH?? H??H?U`H?Mh??Z??H?? ]?????@UH?? H??H?U`H?Mh??Z??H?? ]?????H??`?y??????H??0?tb??????H??`?db??????H??`H??P?Pb??H??`H????=b???????????????H??`H????b???????????????H??`H??@??a???????????????H??`H?????a???????????????H??`H????a???????????????H??`H??8魱???????????????H??`H??H鍱???????????????H?????f??????H??`??f??????H??@?T???????H??@?D???????H??`?$a??????H??`?a??????H??@?a??????H??@H??P??`??H??@H?????`???????????????H??@H????`???????????????H??@H??@?`???????????????H??@H????}`???????????????H??@H????]`???????????????H??@H??8?M????????????????H??@H??H?-????????????????H??@?`??????H??@H??P??_??H??@H?????_???????????????H??@H????_???????????????H??@H??@?_???????????????H??@H????}_???????????????H??@H????]_???????????????H??@H??8?M????????????????H??@H??H?-????????????????H??p?u??????H????tu??????H??H?du??????H????????????H????Du??????H??@鴎??????@UH?? H??H?UxH?Mp??V??H?? ]?????@UH?? H??H?UpH?Mx?V??H?? ]?????@UH?? H??H?UpH?Mx?V??H?? ]?????@UH?? H??H?UpH?Mx?jV??H?? ]?????@UH?? H??H?UpH?Mx?JV??H?? ]?????@UH?? H??H?UpH?Mx?*V??H?? ]?????@UH?? H??H?UpH?Mx?
V??H?? ]?????@UH?? H??H?UpH?Mx??U??H?? ]?????@UH?? H??H?UpH?Mx??U??H?? ]?????@UH?? H??H?UpH?Mx?U??H?? ]?????@UH?? H??H?UpH?Mx?U??H?? ]?????@UH?? H??H?UpH?Mx?jU??H?? ]?????@UH?? H??H?UpH?Mx?JU??H?? ]?????@UH?? H??H?UpH?Mx?*U??H?? ]?????@UH?? H??H?UpH?Mx?
U??H?? ]?????@UH?? H??H?UpH?Mx??T??H?? ]?????@UH?? H??H?UpH?Mx??T??H?? ]?????@UH?? H??H?UpH?Mx?T??H?? ]?????@UH?? H??H?UpH?Mx?T??H?? ]?????@UH?? H??H?UpH?Mx?jT??H?? ]?????@UH?? H??H?UpH?Mx?JT??H?? ]?????@UH?? H??H?UpH?Mx?*T??H?? ]?????H??p?dr??????H????Tr??????H??P?ċ??????@UH?? H??H???H?????S??H?? ]???????????????@UH?? H??H???H????S??H?? ]???????????????@UH?? H??H???H????tS??H?? ]???????????????@UH?? H??H???H????DS??H?? ]???????????????@UH?? H??H???H????S??H?? ]???????????????@UH?? H??H???H?????R??H?? ]???????????????@UH?? H??H???H????R??H?? ]???????????????@UH?? H??H???H????R??H?? ]???????????????@UH?? H??H???H????TR??H?? ]???????????????@UH?? H??H???H????$R??H?? ]???????????????@UH?? H??H???H?????Q??H?? ]???????????????@UH?? H??H???H?????Q??H?? ]???????????????@UH?? H??H???H????Q??H?? ]???????????????@UH?? H??H???H????dQ??H?? ]???????????????@UH?? H??H???H????4Q??H?? ]???????????????@UH?? H??H???H????Q??H?? ]???????????????@UH?? H??H???H?????P??H?? ]???????????????@UH?? H??H???H????P??H?? ]???????????????@UH?? H??H???H????tP??H?? ]???????????????@UH?? H??H???H????DP??H?? ]???????????????@UH?? H??H???H????P??H?? ]???????????????@UH?? H??H???H?????O??H?? ]???????????????@UH?? H??H???H????O??H?? ]???????????????@UH?? H??H???H????O??H?? ]???????????????H????m??????H????m??????H??P????????@UH?? H??H???H????$O??H?? ]???????????????@UH?? H??H???H?????N??H?? ]???????????????@UH?? H??H???H?????N??H?? ]???????????????@UH?? H??H???H????N??H?? ]???????????????@UH?? H??H???H????dN??H?? ]???????????????@UH?? H??H???H????4N??H?? ]???????????????@UH?? H??H???H????N??H?? ]???????????????@UH?? H??H???H?????M??H?? ]???????????????@UH?? H??H???H????M??H?? ]???????????????@UH?? H??H???H????tM??H?? ]???????????????@UH?? H??H???H????DM??H?? ]???????????????@UH?? H??H???H????M??H?? ]???????????????@UH?? H??H???H?????L??H?? ]???????????????@UH?? H??H???H????L??H?? ]???????????????@UH?? H??H???H????L??H?? ]???????????????@UH?? H??H???H????TL??H?? ]???????????????@UH?? H??H???H????$L??H?? ]???????????????@UH?? H??H???H?????K??H?? ]???????????????@UH?? H??H???H?????K??H?? ]???????????????@UH?? H??H???H????K??H?? ]???????????????@UH?? H??H???H????dK??H?? ]???????????????@UH?? H??H???H????4K??H?? ]???????????????H????di??????H??@?Ԃ??????@UH?? H??H?UxH?Mp??J??H?? ]?????@UH?? H??H?UpH?Mx??J??H?? ]?????@UH?? H??H?UpH?Mx?J??H?? ]?????@UH?? H??H?UpH?Mx?J??H?? ]?????@UH?? H??H?UpH?Mx?jJ??H?? ]?????@UH?? H??H?UpH?Mx?JJ??H?? ]?????@UH?? H??H?UpH?Mx?*J??H?? ]?????@UH?? H??H?UpH?Mx?
J??H?? ]?????@UH?? H??H?UpH?Mx??I??H?? ]?????@UH?? H??H?UpH?Mx??I??H?? ]?????@UH?? H??H?UpH?Mx?I??H?? ]?????@UH?? H??H?UpH?Mx?I??H?? ]?????@UH?? H??H?UpH?Mx?jI??H?? ]?????@UH?? H??H?UpH?Mx?JI??H?? ]?????@UH?? H??H?UpH?Mx?*I??H?? ]?????@UH?? H??H?UpH?Mx?
I??H?? ]?????@UH?? H??H?UpH?Mx??H??H?? ]?????@UH?? H??H?UpH?Mx??H??H?? ]?????@UH?? H??H?UpH?Mx?H??H?? ]?????@UH?? H??H?UpH?Mx?H??H?? ]?????@UH?? H??H?UpH?Mx?jH??H?? ]?????@UH?? H??H?UpH?Mx?JH??H?? ]?????@UH?? H??H?UpH?Mx?*H??H?? ]?????@UH?? H??H?UpH?Mx?
H??H?? ]?????H????Df??????H??p?4f??????H????$f??????H??@???????@UH?? H??H?UxH?Mp?G??H?? ]?????@UH?? H??H?UpH?Mx?G??H?? ]?????@UH?? H??H?UpH?Mx?jG??H?? ]?????@UH?? H??H?UpH?Mx?JG??H?? ]?????@UH?? H??H?UpH?Mx?*G??H?? ]?????@UH?? H??H?UpH?Mx?
G??H?? ]?????@UH?? H??H?UpH?Mx??F??H?? ]?????@UH?? H??H?UpH?Mx??F??H?? ]?????@UH?? H??H?UpH?Mx?F??H?? ]?????@UH?? H??H?UpH?Mx?F??H?? ]?????@UH?? H??H?UpH?Mx?jF??H?? ]?????@UH?? H??H?UpH?Mx?JF??H?? ]?????@UH?? H??H?UpH?Mx?*F??H?? ]?????@UH?? H??H?UpH?Mx?
F??H?? ]?????H??p?Dd??????H??X?4d??????H??P?}??????@UH?? H??H?UxH?Mp?E??H?? ]?????@UH?? H??H?UpH?Mx?E??H?? ]?????@UH?? H??H?UpH?Mx?zE??H?? ]?????@UH?? H??H?UpH?Mx?ZE??H?? ]?????@UH?? H??H?UpH?Mx?:E??H?? ]?????@UH?? H??H?UpH?Mx?E??H?? ]?????@UH?? H??H?UpH?Mx??D??H?? ]?????@UH?? H??H?UpH?Mx??D??H?? ]?????@UH?? H??H?UpH?Mx?D??H?? ]?????@UH?? H??H?UpH?Mx?D??H?? ]?????@UH?? H??H?UpH?Mx?zD??H?? ]?????@UH?? H??H?UpH?Mx?ZD??H?? ]?????@UH?? H??H?UpH?Mx?:D??H?? ]?????@UH?? H??H?UpH?Mx?D??H?? ]?????@UH?? H??H?UpH?Mx??C??H?? ]?????@UH?? H??H?UpH?Mx??C??H?? ]?????@UH?? H??H?UpH?Mx?C??H?? ]?????@UH?? H??H?UpH?Mx?C??H?? ]?????H??p??a??????H?????a??????H??@?4{??????@UH?? H??H?UxH?Mp?JC??H?? ]?????@UH?? H??H?UpH?Mx?*C??H?? ]?????@UH?? H??H?UpH?Mx?
C??H?? ]?????@UH?? H??H?UpH?Mx??B??H?? ]?????@UH?? H??H?UpH?Mx??B??H?? ]?????@UH?? H??H?UpH?Mx?B??H?? ]?????@UH?? H??H?UpH?Mx?B??H?? ]?????@UH?? H??H?UpH?Mx?jB??H?? ]?????@UH?? H??H?UpH?Mx?JB??H?? ]?????@UH?? H??H?UpH?Mx?*B??H?? ]?????@UH?? H??H?UpH?Mx?
B??H?? ]?????@UH?? H??H?UpH?Mx??A??H?? ]?????@UH?? H??H?UpH?Mx??A??H?? ]?????@UH?? H??H?UpH?Mx?A??H?? ]?????@UH?? H??H?UpH?Mx?A??H?? ]?????@UH?? H??H?UpH?Mx?jA??H?? ]?????H??p?_??????H????I??????H??`?I??????H???t_??????H????d_??????H????T_??????H??p?????????H???H??????H????H??????H??P?H??????H???_??????H?????^??????H?????^??????H??`?j???????H???DH??????H????4H??????H??@?$H??????H??P????????H??P?????????H??P??w??????@UH?? H??H???H????@??H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H?????>??H?? ]???????????????@UH?? H??H???H????>??H?? ]???????????????@UH?? H??H???H????>??H?? ]???????????????@UH?? H??H???H????T>??H?? ]???????????????@UH?? H??H???H????$>??H?? ]???????????????@UH?? H??H???H?????=??H?? ]???????????????@UH?? H??H???H?????=??H?? ]???????????????@UH?? H??H???H????=??H?? ]???????????????@UH?? H??H???H????d=??H?? ]???????????????@UH?? H??H???H????4=??H?? ]???????????????H????d[??????H??P??t??????@UH?? H??H???H???????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????T??H?? ]???????????????@UH?? H??H???H????$??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????@UH?? H??H???H????4??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????H????t"??????H???????????H??8?T"??????H????D"??????H???4"??????H????$"??????H??`骙??????H????"??????H????!??????H?????!??????H??`?j???????H?????!??????H???!??????H????!??????H??`?*???????H????!??????H???t!??????H????d!??????H??`????????H??P??:??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????T??H?? ]???????????????@UH?? H??H???H????$??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????H??????????H??????????H??8?t??????H????d??????H???T??????H????D??????H??`?ʕ??????H????$??????H?????????H??????????H??`銕??????H???????????H??????????H???????????H??`?J???????H??????????H?????????H??????????H??`?
???????H??P??6??????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H??????????H????$??????H??8???????H??????????H???t??????H????d??????H??`????????H????D??????H???4??????H????$??????H??`骑??????H??????????H??????????H???????????H??`?j???????H???????????H?????????H??????????H??`?*???????H??P?3??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H???????????H????D??????H??8???????H??????????H?????????H??????????H??`?
???????H????d??????H???T??????H????D??????H??`?ʍ??????H????$??????H?????????H??????????H??`銍??????H???????????H??????????H???????????H??`?J???????H??P?$/??????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????H???????????H???????????H???????????H??????????H??p?J???????H?????????H??????????H??????????H??p?
???????H???d??????H????T??????H????D??????H??p?ʉ??????H??@?$??????H?????????H??????????H???????????H??p?z???????H??????????H???????????H??????????H??p?:???????H?????????H??????????H????t??????H??p?????????H??`??*??????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????H????d??????H????T??????H????D??????H???4??????H??p麆??????H?????????H??????????H???????????H??p?z???????H??????????H???????????H??????????H??p?:???????H??@???????H?????????H????t??????H????d??????H??p????????H???D??????H????4??????H????$??????H??p骅??????H?????????H?????
??????H?????
??????H??p?j???????H??`?D'??????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H???????????H??????????H??????????H??????????H??0?*???????H??????????H????t??????H???d??????H??0????????H??@?????????H????Ҏ??????H????$9??????H???H?? ????@UH?? H??E0????t?e0?H????]B??H?? ]????????H?????
??????H??h??
??????H????
??????H????:???????H??0?B??????H??H?"???????H??H?$A??????H??HH????A??H??H?TF??????H??HH?? ?????@UH?? H??E@????t
?e@?H?MX?C??H?? ]???????????H????
??????H????	??????H??`??	??????H????j???????H????????????H??@?????????H??@????????H??H?$C??????H??P????????H????t	??????H????d	??????H????T	??????H?? ?ڀ??????H????4	??????H???$	??????H??(?	??????H???隀??????H??(????????H??????????H???????????H????Z???????H??(???????H?????????H??????????H???????????H??(?t??????H???d??????H????T??????H???????????H??(?4??????H???$??????H??????????H??????????H??(????????H??????????H???????????H????Z??????H??P???????H??`?$!??????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H??????????H??????????H??????????H??????????H?? ?
}??????H??@?????????H???????????H????D3??????H???H?? ????@UH?? H??E0????t?e0?H????}??H?? ]????????H??8?4>??????H??????????H??????????H????t??????H??P??{??????H????T??????H????D??????H????4??????H??P?{??????H?? ???????H??????????H???????????H???????????H??P?j{??????H??P?D??????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H??????????H??????????H??????????H??????????H??@?
x??????H????d??????H????T??????H????D??????H??@??w??????H???$??????H??????????H??????????H????????????H??@?zw??????H??P?T??????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????????????H???????????H???????????H???????????H??@?t??????H????t???????H????d???????H????T???????H??@??s??????H???4???????H????$???????H???????????H???????????H??@?s??????H??P?d??????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????????????H????????????H???????????H???????????H??@?*p??????H???????????H????t???????H????d???????H??@??o??????H???D???????H????4???????H????$???????H???????????H??@?o??????H??P?t??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????????????H??x?????????H????????????H??P????????H????:l??????H??8?2x??????H??8?"??????@UH?? H??E0????t
?e0?H?M@??+??H?? ]???????????H??@?+??????H????+??????@UH?? H??E0????t
?e0?H?Mp?-??H?? ]???????????H??8?-??????H????????????H??0?T???????H????bw??????H???? ??????H???H??? ???@UH?? H??E$????t?e$?H????=+??H?? ]????????H????t???????H??0?????????H?????v??????H????t ??????H???H??????@UH?? H??E$????t?e$?H????
+??H?? ]????????H??`?*??????H??P??*??????@UH?? H??ED????t?eD?H????=,??H?? ]????????H???????????H???????????H??h?t???????H?????i??????H??@??+??????H???T???????H????D???????@UH?? H??E@????t
?e@?H?MP?+??H?? ]???????????H???????????H????????????H????????????H????????????H???????????H??h????????H??@????????H?? ?i??????H??@?t???????H??h?d???????H????T???????H?? ??h??????H????D???????H????$???????H?? ????????H???????????H???h??????H??P?????????H??p?????????H????????????@UH?? H??EL????t
?eL?H?M`?0*??H?? ]???????????H???????????H????t???????H??X?d???????H?????g??????H??@??)??????H??`?4???????H??8?$???????H???????????H????g??????H??(H?%???H??(H?%???H??(H?%Ҕ??H??(H?%”??@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U H?M0?:???H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????H??@?D???????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????H?T$UH?? H??3?3??pr????????????H?T$UH?? H??3?3??Pr????????????H?T$UH?? H??3?3??0r????????????H?T$UH??0H??H?MX??q??3?3??r???@UH?? H??H?U@H?MH?????H?? ]?????@UH?? H??H?U@H?MH?????H?? ]?????@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?UHH?MX?j???H?? ]?????H??@?$??????H???????????@UH?? H??H???H?Mp?'???H?? ]??@UH?? H??H?UpH???????H?? ]??@UH?? H??H?UpH????????H?? ]??@UH?? H??H?UpH????????H?? ]??@UH?? H??H?UpH???????H?? ]??@UH?? H??H?UpH???????H?? ]??@UH?? H??H?UpH????g???H?? ]??@UH?? H??H?UpH????G???H?? ]??H??p????????H??p?t???????H???????????H??P????????H????D???????H???????????H??0????????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p?????????H????????????H??0?????????@UH?? H??H?UHH?MX?J???H?? ]?????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H????1??H?? H;?u?3?3??m????H??P????????H????4???????H????$???????H??0????????H?T$SUVWH??(H??H?] H?}pH;?tH???H??H???q1??H?? H;?u?3?3??l?????????????????H???$???????H???????????H?? ????????H???????????H?T$UH??0H??H?MX?l??3?3??l???H????T???????H???D???????H??(?4???????H????_??????H???????????H??????????H??(?????????H????z_??????H??(?T???????H??(?D???????H??h????????H??(?$???????H??(?t??????H????d??????H???=??????@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH???????H?? ]??H????????????H??(H?%ҋ??@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U(H?M8?J???H?? ]?????H??(H?%????H??(H?%r???H??(H?%b???H??(H?%R???@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U H?M0?????H?? ]?????@UH?? H??H?U H?M0????H?? ]?????H??(H?%???@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????H??(H?%r???@UH?? H??H?U(H?M8?
???H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????H??(H?%"???H??(H?%???H??(H?%???@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????H?T$UH?? H??3?3?? h????????????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????H?T$UH?? H??3?3???g????????????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????H?T$UH?? H??H?MH?Hg??3?3??Wg???H?T$UH?? H??3?3??@g????????????H?T$UH?? H??3?3?? g????????????H?T$UH?? H??3?3??g????????????H?T$UH?? H??H?????f??3?3???f????????????????H?T$UH?? H??3?3??f????????????@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?U@H?MH?j???H?? ]?????@UH?? H??H?U@H?MH?J???H?? ]?????@UH?? H??H?U@H?MH?*???H?? ]?????H?T$UH??0H??H?Mh??e??3?3??f???H?T$UH??0H??H?MX??e??3?3???e???H?T$UH??0H??H?MX?e??3?3???e???H???????????H????????????H????????????H????jY??????H????????????H???????????H???????????H????*Y??????H???????????H????t???????H????d???????H?????X??????H????D???????H????4???????H????$???????H????X??????H???????????H????????????H????????????H????jX??????H??@?????????H??????????H??h????????H??`?*X??????H???????????H????t???????H????d???????H?? ??W??????H????D???????H????4???????H????$???????H?? ?W??????H?? ????????H????????????H?? ?????????H??P?jW??????H??`?????????H??8????????H???????????H????*W??????@UH?? H??H?U@H?MH?*???H?? ]?????@UH?? H??H?U@H?MH?
???H?? ]?????@UH?? H??H?U@H?MH?????H?? ]?????@UH?? H??H?U@H?MH?????H?? ]?????H???????????@UH?? H??H?U`H?MX????H?? ]?????@UH?? H??H???H?M`?w???H?? ]??H??0?$V??????H??@鴐??????H???t???????H????d???????H??(?$???????H??0?d???????H????T???????H????D???????H?????U??????H??0?$???????H???????????H???????????H????U??????H??0?????????H????????????H????????????H????JU??????H??0????????H???????????H???????????H????
U??????H????????????H??0?T???????H????D???????H????4???????H????T??????H????r??????H?????e??????@UH?? H??H?UPH???藾??H?? ]??@UH?? H??H?UPH????w???H?? ]??@UH?? H??H?UPH????W???H?? ]??@UH?? H??H?UPH????7???H?? ]??H??P?????????H??0?????????H????????????H????T???????H??P?D???????H???????????H???????????H???????????H????t???????H????d???????H??8?T???????H????D???????@UH?? H??H?UPH????W???H?? ]??@UH?? H??H?UPH????7???H?? ]??@UH?? H??H?UPH???????H?? ]??@UH?? H??H?UPH????????H?? ]??@UH?? H??H?UPH????׼??H?? ]??@UH?? H??H?UPH???跼??H?? ]??@UH?? H??H?UPH???藼??H?? ]??@UH?? H??H?UPH????w???H?? ]??@UH?? H??H?UPH????W???H?? ]??@UH?? H??H?UPH????7???H?? ]??H??P?t???????H????????????H??P?????????H????4o??????H????c??????H??0????????H???????????H???????????H??P?????????H???????????H??(?????????H????????????H??P?JQ??????H??(????????H???????????H??????????H??P?
Q??????H??(?d???????H????T???????H???D???????H??P??P??????H???????????@UH?? H??H?U`H?MX躺??H?? ]?????@UH?? H??H?UXH?M`蚺??H?? ]?????@UH?? H??H?UXH?M`?z???H?? ]?????@UH?? H??H?UXH?M`?Z???H?? ]?????@UH?? H??H?UXH?M`?:???H?? ]?????@UH?? H??H?UXH?M`????H?? ]?????@UH?? H??H?UXH?M`?????H?? ]?????@UH?? H??H?UXH?M`?ڹ??H?? ]?????@UH?? H??H?UXH?M`躹??H?? ]?????@UH?? H??H?UXH?M`蚹??H?? ]?????H??X?????????H???餉??????H???锉??????H????T???????H???????????H??????????H??x?t???????H?? ??N??????H????????????H????T???????H??`?D???????H??????????H??p????????H?? ????????H????t???????H??(?d???????H????T???????H??x?D???????@UH?? H??H?U`H?Mh?Z???H?? ]?????@UH?? H??H?U`H?Mh?:???H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh?????H?? ]?????@UH?? H??H?U`H?Mh?ڷ??H?? ]?????@UH?? H??H?U`H?Mh躷??H?? ]?????@UH?? H??H?U`H?Mh蚷??H?? ]?????@UH?? H??H?U`H?Mh?z???H?? ]?????@UH?? H??H?U`H?Mh?Z???H?? ]?????@UH?? H??H?U`H?Mh?:???H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh?????H?? ]?????@UH?? H??H?U`H?Mh?ڶ??H?? ]?????@UH?? H??H?U`H?Mh躶??H?? ]?????@UH?? H??H?U`H?Mh蚶??H?? ]?????@UH?? H??H?U`H?Mh?z???H?? ]?????@UH?? H??H?U`H?Mh?Z???H?? ]?????@UH?? H??H?U`H?Mh?:???H?? ]?????H??`?t???????H??x?????????H??`?T???????H??(H?%By??H??(H?%2y??@UH?? H??H?U(H?M8?ʵ??H?? ]?????@UH?? H??H?U H?M0誵??H?? ]?????H??(H?%?x??H??(H?%?x??@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U(H?M8?J???H?? ]?????@UH?? H??H?U(H?M8?*???H?? ]?????@UH?? H??H?U(H?M8?
???H?? ]?????H??P?T???????@UH?? H??H?U(H?M8?ڴ??H?? ]?????@UH?? H??H?U(H?M8躴??H?? ]?????@UH?? H??H?U(H?M8蚴??H?? ]?????H?T$UH?? H??H?MH?hV??3?3??wV???H?T$UH?? H??3?3??`V????????????H?T$UH?? H??3?3??@V????????????@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?U@H?MH?????H?? ]?????H?T$UH??0H??H?MX??U??3?3???U???H?T$UH?? H??H?Mp?U??3?3??U???H?T$UH??0H??H?M0?U??3?3??U???H??8H??H?P???H??8H????=????????????????H??8H????????????????????H??8H??H??????????????????H??8H????ݺ???????????????H??8H???齺???????????????H??8H??8靺???????????????H??h????????H????????????H??@?????????H????jH??????H??@?????????H???????????H??h????????H????*H??????H??@????????H????t???????H??h?d???????H?????G??????H??@?D???????H????4???????H??h?$???????H????G??????H??@????????H????????????H??h?????????H????jG??????H??8?X??????H????ľ??????H??p鴾??????H???????????H??????????H??@?t???????H?????F??????@UH?? H??H?U@H?MH?????H?? ]?????@UH?? H??H?U@H?MH?ڰ??H?? ]?????H?T$UH??0H??H?MP??S??3?3??R???H??(??W??????H??P?????????H???????????@UH?? H??E ????t
?e ?H?M@?W??H?? ]???????????@UH?? H??E ????t
?e ?H?M@?PW??H?? ]???????????H??@?????????H????T???????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UpH?Mx?ʯ??H?? ]?????@UH?? H??H?UpH?Mx誯??H?? ]?????@UH?? H??H?UpH?Mx芯??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʮ??H?? ]?????@UH?? H??H?UpH?Mx誮??H?? ]?????@UH?? H??H?UpH?Mx芮??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʭ??H?? ]?????@UH?? H??H?UpH?Mx読??H?? ]?????@UH?? H??H?UpH?Mx芭??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????H??p?D???????H??P????????H????$???????@UH?? H??H???H???贬??H?? ]???????????????@UH?? H??H???H???脬??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????ī??H?? ]???????????????@UH?? H??H???H???蔫??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԫ??H?? ]???????????????@UH?? H??H???H???褪??H?? ]???????????????H????????????H????????????H??P?4???????H???????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????ԩ??H?? ]???????????????@UH?? H??H???H???褩??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???质??H?? ]???????????????@UH?? H??H???H???脨??H?? ]???????????????@UH?? H??H???H????T???H?? ]???????????????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????ħ??H?? ]???????????????@UH?? H??H???H???蔧??H?? ]???????????????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H????Ԧ??H?? ]???????????????@UH?? H??H???H???褦??H?? ]???????????????@UH?? H??H???H????t???H?? ]???????????????@UH?? H??H???H????D???H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H???????????H???????????H????????????H??@?d???????@UH?? H??H?UxH?Mp?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?ڤ??H?? ]?????@UH?? H??H?UpH?Mx躤??H?? ]?????@UH?? H??H?UpH?Mx蚤??H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?ڣ??H?? ]?????@UH?? H??H?UpH?Mx躣??H?? ]?????@UH?? H??H?UpH?Mx蚣??H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????H??p????????H???????????H??@?????????@UH?? H??H?UxH?Mp?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʢ??H?? ]?????@UH?? H??H?UpH?Mx誢??H?? ]?????@UH?? H??H?UpH?Mx芢??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʡ??H?? ]?????@UH?? H??H?UpH?Mx誡??H?? ]?????@UH?? H??H?UpH?Mx芡??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʠ??H?? ]?????@UH?? H??H?UpH?Mx誠??H?? ]?????H??p????????H????Ծ??????H??@?D???????@UH?? H??H???H?Mx?W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????ן??H?? ]??@UH?? H??H?UxH???跟??H?? ]??@UH?? H??H?UxH???藟??H?? ]??@UH?? H??H?UxH????w???H?? ]??@UH?? H??H?UxH????W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????מ??H?? ]??@UH?? H??H?UxH???跞??H?? ]??@UH?? H??H?UxH???藞??H?? ]??@UH?? H??H?UxH????w???H?? ]??@UH?? H??H?UxH????W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????ם??H?? ]??@UH?? H??H?UxH???距??H?? ]??H??x?????????H???????????H??@?T???????@UH?? H??H???H?Mx?g???H?? ]??@UH?? H??H?UxH????G???H?? ]??@UH?? H??H?UxH????'???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????ǜ??H?? ]??@UH?? H??H?UxH???觜??H?? ]??@UH?? H??H?UxH???臜??H?? ]??@UH?? H??H?UxH????g???H?? ]??@UH?? H??H?UxH????G???H?? ]??@UH?? H??H?UxH????'???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????Ǜ??H?? ]??@UH?? H??H?UxH???觛??H?? ]??@UH?? H??H?UxH???臛??H?? ]??@UH?? H??H?UxH????g???H?? ]??@UH?? H??H?UxH????G???H?? ]??@UH?? H??H?UxH????'???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????ǚ??H?? ]??H??x????????H??p?????????H??H????????H????Ը??????H????Z0??????H???鴸??????H???餸??????H??`锸??????H????0??????H??`?t???????H????d???????H????T???????H?????/??????H????4???????H????$???????H???????????H???/??????H????????????H???????????H????Է??????H???Z/??????H???鴷??????H???餷??????H???锷??????H???/??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H??0????????H??????????H??X?????????H????z.??????H??X?Զ??????H???Ķ??????H??0鴶??????H????:.??????H??@???????@UH?? H??H???H????$???H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????H??`?h??????H????t??????H??X????????H???????????H??0????????H????j-??????@UH?? H??H???H????d???H?? ]???????????????@UH?? H??H???H????4???H?? ]???????????????@UH?? H??E ????t
?e ?H?M@? >??H?? ]???????????H??@?x-??????H??@?h-??????H??@?X-??????H??@?H-??????H??P?8-??????H??P?D???????H??PH???P???H??PH??h?@???H??@????????H??@H??? ???H??@H??h????H??@??,??????H??@?8??????H??@?t???????H??@鴭??????H??@H???????H??@H??h鰝??H??@?h,??????H??h?7??????@UH?? H??E ????t
?e ?H?MP?P???H?? ]???????????H?T$UH?? H??H?MH?h7??3?3??w7???H???鴳??????H??X餳??????H???锳??????H????+??????H????t???????H??X?d???????H????T???????H?????*??????@UH??}?????t?]???????????H??(????????H????Ԯ??????H????????????H??@????????H??h?Բ??????H????$???????H???H???0???H???H??h? ???H?????*??????@UH?? H??E ????t
?e ?H?M@?p???H?? ]???????????H????T???????H???D???????H????4???????H??@?)??????H???????????H??@????????@UH?? H??H???H?Mx藓??H?? ]??@UH?? H??H?UxH????w???H?? ]??@UH?? H??H?UxH????W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????ג??H?? ]??@UH?? H??H?UxH???跒??H?? ]??@UH?? H??H?UxH???藒??H?? ]??@UH?? H??H?UxH????w???H?? ]??@UH?? H??H?UxH????W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??@UH?? H??H?UxH????ב??H?? ]??@UH?? H??H?UxH???跑??H?? ]??@UH?? H??H?UxH???藑??H?? ]??@UH?? H??H?UxH????w???H?? ]??@UH?? H??H?UxH????W???H?? ]??@UH?? H??H?UxH????7???H?? ]??@UH?? H??H?UxH???????H?? ]??@UH?? H??H?UxH????????H?? ]??H??x?4???????H????$???????H?? ????????H???????????H??P?&??????H???????????H??@?T???????@UH?? H??H?UxH?Mp?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʏ??H?? ]?????@UH?? H??H?UpH?Mx誏??H?? ]?????@UH?? H??H?UpH?Mx芏??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʎ??H?? ]?????@UH?? H??H?UpH?Mx誎??H?? ]?????@UH?? H??H?UpH?Mx芎??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʍ??H?? ]?????H??p????????H??`?????????H??8????????H????ԫ??????H????Z#??????H???鴫??????H??8餫??????H??`锫??????H????#??????H????t???????H????d???????H????T???????H??@??"??????H????4???????H????$???????H???????????H??@?"??????H????????????H???????????H????Ԫ??????H??@?Z"??????H???鴪??????H???餪??????H???锪??????H??@?"??????H???t???????H??P?????????@UH?? H??H?UxH?Mp?????H?? ]?????@UH?? H??H?UpH?Mx?ڋ??H?? ]?????@UH?? H??H?UpH?Mx躋??H?? ]?????@UH?? H??H?UpH?Mx蚋??H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?ڊ??H?? ]?????@UH?? H??H?UpH?Mx躊??H?? ]?????@UH?? H??H?UpH?Mx蚊??H?? ]?????H??p?Ԩ??????H????Ĩ??????H??(鴨??????H??館??????H??P?* ??????H???鄨??????H??P?????????@UH?? H??H?UxH?Mp?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʉ??H?? ]?????@UH?? H??H?UpH?Mx誉??H?? ]?????@UH?? H??H?UpH?Mx芉??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʈ??H?? ]?????@UH?? H??H?UpH?Mx誈??H?? ]?????@UH?? H??H?UpH?Mx芈??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʇ??H?? ]?????@UH?? H??H?UpH?Mx誇??H?? ]?????H??p????????H??`?ԥ??????H??8?ĥ??????H???鴥??????H????:??????H???锥??????H??8鄥??????H??`?t???????H???????????H????T???????H??8?D???????H??`?4???????H??????????H???????????H??8????????H??`?????????H????z??????H????Ԥ??????H??8?Ĥ??????H??`鴤??????H????:??????H???锤??????H??8鄤??????H??`?t???????H???????????H???T???????H????D???????H????4???????H??????????H???????????H???????????H???????????H????z??????H????ԣ??????H????ģ??????H??鴣??????H????:??????H??????????H??`鄣??????H??@?????????@UH?? H??H???H?Mp????H?? ]??@UH?? H??H?UpH???????H?? ]??@UH?? H??H?UpH?Mx?ʄ??H?? ]?????@UH?? H??H?UpH?Mx誄??H?? ]?????@UH?? H??H?UpH?Mx芄??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʃ??H?? ]?????@UH?? H??H?UpH?Mx誃??H?? ]?????@UH?? H??H?UpH?Mx芃??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????H???d???????H??p?T???????H???D???????H??p?4???????H????$???????H???????????H??????????H??????????H?? ????????H????Ԡ??????H????Ġ??????H????J??????H???餠??????H???锠??????H?? 鄠??????H????
??????H????d???????H????T???????H?? ?D???????H???????????H????$???????H???????????H?? ????????H??????????H??P????????H????ԟ??????H?? ?ğ??????H????J??????H???餟??????H??P????????@UH?? H??H?UxH?Mp?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?ʀ??H?? ]?????@UH?? H??H?UpH?Mx誀??H?? ]?????@UH?? H??H?UpH?Mx芀??H?? ]?????@UH?? H??H?UpH?Mx?j???H?? ]?????@UH?? H??H?UpH?Mx?J???H?? ]?????@UH?? H??H?UpH?Mx?*???H?? ]?????@UH?? H??H?UpH?Mx?
???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????H????ĝ??????H?? 鴝??????H??P餝??????H????*??????H???鄝??????H??@?t???????H??H?d???????H???	????????H????D???????H????4???????H????$???????H??0???????H??p????????H??0?????????H?? ????????H????j??????H????Ĝ??????H???鴜??????H???餜??????H??`?*??????H???鄜??????H????t???????H????d???????H??	????????H????D???????H??h?4???????H???$???????H???
???????H??x????????H??X?????????H??????????H????j??????H??p?ě??????H???鴛??????H??餛??????H???锛??????H??`???????H????t???????H????d???????@UH?? H??L?
P???A??(H????Q ??H?? ]????H??0?$???????H??P锴??????@UH?? H??H???H????|??H?? ]???????????????@UH?? H??H???H????t|??H?? ]???????????????@UH?? H??H???H????D|??H?? ]???????????????@UH?? H??H???H????|??H?? ]???????????????@UH?? H??H???H?????{??H?? ]???????????????@UH?? H??H???H????{??H?? ]???????????????@UH?? H??H???H????{??H?? ]???????????????@UH?? H??H???H????T{??H?? ]???????????????@UH?? H??H???H????${??H?? ]???????????????@UH?? H??H???H?????z??H?? ]???????????????@UH?? H??H???H?????z??H?? ]???????????????@UH?? H??H???H????z??H?? ]???????????????@UH?? H??H???H????dz??H?? ]???????????????@UH?? H??H???H????4z??H?? ]???????????????@UH?? H??H???H????z??H?? ]???????????????@UH?? H??H???H?????y??H?? ]???????????????@UH?? H??H???H????y??H?? ]???????????????@UH?? H??H???H????ty??H?? ]???????????????@UH?? H??H???H????Dy??H?? ]???????????????@UH?? H??H???H????y??H?? ]???????????????@UH?? H??H???H?????x??H?? ]???????????????@UH?? H??H???H????x??H?? ]???????????????H???????????H????Ԗ??????H???Ė??????H???鴖??????H??`?:??????H???锖??????H???鄖??????@UH?? H??L?
p???A??(H????q??H?? ]????H??0?D???????H??P鴯??????@UH?? H??H???H?????w??H?? ]???????????????@UH?? H??H???H????w??H?? ]???????????????@UH?? H??H???H????dw??H?? ]???????????????@UH?? H??H???H????4w??H?? ]???????????????@UH?? H??H???H????w??H?? ]???????????????@UH?? H??H???H?????v??H?? ]???????????????@UH?? H??H???H????v??H?? ]???????????????@UH?? H??H???H????tv??H?? ]???????????????@UH?? H??H???H????Dv??H?? ]???????????????@UH?? H??H???H????v??H?? ]???????????????@UH?? H??H???H?????u??H?? ]???????????????@UH?? H??H???H????u??H?? ]???????????????@UH?? H??H???H????u??H?? ]???????????????@UH?? H??H???H????Tu??H?? ]???????????????@UH?? H??H???H????$u??H?? ]???????????????@UH?? H??H???H?????t??H?? ]???????????????@UH?? H??H???H?????t??H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????dt??H?? ]???????????????@UH?? H??H???H????4t??H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H?????s??H?? ]???????????????H???????????H??`?????????H???????????H??8?ԑ??????H???Z	??????H??8鴑??????H???餑??????H??`锑??????H???	??????H??8?t???????H????d???????H??`?T???????H??????????H????D???????H??`?$???????H???????????H??8????????H?????????H??8????????H????Ԑ??????H??`?Đ??????H???J??????H??8餐??????H???锐??????H??`鄐??????H???
??????H????t??????H??X?T???????H????D???????H????4???????H??????????H???????????H???????????H??X????????H????z??????H????Ty??????H???Dy??????H??P?4???????@UH?? H??H?UxH?Mp?Jq??H?? ]?????@UH?? H??H?UpH?Mx?*q??H?? ]?????@UH?? H??H?UpH?Mx?
q??H?? ]?????@UH?? H??H?UpH?Mx??p??H?? ]?????@UH?? H??H?UpH?Mx??p??H?? ]?????@UH?? H??H?UpH?Mx?p??H?? ]?????@UH?? H??H?UpH?Mx?p??H?? ]?????@UH?? H??H?UpH?Mx?jp??H?? ]?????@UH?? H??H?UpH?Mx?Jp??H?? ]?????@UH?? H??H?UpH?Mx?*p??H?? ]?????@UH?? H??H?UpH?Mx?
p??H?? ]?????@UH?? H??H?UpH?Mx??o??H?? ]?????@UH?? H??H?UpH?Mx??o??H?? ]?????@UH?? H??H?UpH?Mx?o??H?? ]?????@UH?? H??H?UpH?Mx?o??H?? ]?????@UH?? H??H?UpH?Mx?jo??H?? ]?????@UH?? H??H?UpH?Mx?Jo??H?? ]?????@UH?? H??H?UpH?Mx?*o??H?? ]?????H??p?d???????H??p?T???????H????D???????H??H?4???????H?? ?$???????H??p???????H????v??????H??@?t???????@UH?? H??H?UxH?Mp?n??H?? ]?????@UH?? H??H?UpH?Mx?jn??H?? ]?????@UH?? H??H?UpH?Mx?Jn??H?? ]?????@UH?? H??H?UpH?Mx?*n??H?? ]?????@UH?? H??H?UpH?Mx?
n??H?? ]?????@UH?? H??H?UpH?Mx??m??H?? ]?????@UH?? H??H?UpH?Mx??m??H?? ]?????@UH?? H??H?UpH?Mx?m??H?? ]?????@UH?? H??H?UpH?Mx?m??H?? ]?????@UH?? H??H?UpH?Mx?jm??H?? ]?????@UH?? H??H?UpH?Mx?Jm??H?? ]?????@UH?? H??H?UpH?Mx?*m??H?? ]?????@UH?? H??H?UpH?Mx?
m??H?? ]?????@UH?? H??H?UpH?Mx??l??H?? ]?????@UH?? H??H?UpH?Mx??l??H?? ]?????@UH?? H??H?UpH?Mx?l??H?? ]?????H??p????????@UH?? H??H?UpH?Mx?zl??H?? ]?????@UH?? H??H?UpH?Mx?Zl??H?? ]?????@UH?? H??H?UpH?Mx?:l??H?? ]?????@UH?? H??H?UpH?Mx?l??H?? ]?????H??p?T???????H????D???????H??P鴣??????@UH?? H??H???H?????k??H?? ]???????????????@UH?? H??H???H????k??H?? ]???????????????@UH?? H??H???H????dk??H?? ]???????????????@UH?? H??H???H????4k??H?? ]???????????????@UH?? H??H???H????k??H?? ]???????????????@UH?? H??H???H?????j??H?? ]???????????????@UH?? H??H???H????j??H?? ]???????????????@UH?? H??H???H????tj??H?? ]???????????????@UH?? H??H???H????Dj??H?? ]???????????????@UH?? H??H???H????j??H?? ]???????????????@UH?? H??H???H?????i??H?? ]???????????????@UH?? H??H???H????i??H?? ]???????????????@UH?? H??H???H????i??H?? ]???????????????@UH?? H??H???H????Ti??H?? ]???????????????@UH?? H??H???H????$i??H?? ]???????????????@UH?? H??H???H?????h??H?? ]???????????????@UH?? H??H???H?????h??H?? ]???????????????@UH?? H??H???H????h??H?? ]???????????????@UH?? H??H???H????dh??H?? ]???????????????@UH?? H??H???H????4h??H?? ]???????????????@UH?? H??H???H????h??H?? ]???????????????@UH?? H??H???H?????g??H?? ]???????????????@UH?? H??H???H????g??H?? ]???????????????@UH?? H??H???H????tg??H?? ]???????????????H???餅??????H??P锅??????H???鄅??????H??x?t???????H????????????H??x?T???????H????D???????H??P?4???????H???????????H??x????????H???????????H??P????????H????z???????H??@?Ԅ??????H??P?Ą??????H???鴄??????H??x餄??????H????*???????H??x鄄??????H????t???????H??P?d???????H????????????H??x?D???????H????4???????H??P?$???????H???????????H??@????????H????tm??????H???????????H????ԃ??????H????ă??????H???J???????H???餃??????H???锃??????H???鄃??????H???
???????H??@????????@UH?? H??H?UxH?Mp??d??H?? ]?????@UH?? H??H?UpH?Mx??d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx?zd??H?? ]?????@UH?? H??H?UpH?Mx?Zd??H?? ]?????@UH?? H??H?UpH?Mx?:d??H?? ]?????@UH?? H??H?UpH?Mx?d??H?? ]?????@UH?? H??H?UpH?Mx??c??H?? ]?????@UH?? H??H?UpH?Mx??c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx?zc??H?? ]?????@UH?? H??H?UpH?Mx?Zc??H?? ]?????@UH?? H??H?UpH?Mx?:c??H?? ]?????@UH?? H??H?UpH?Mx?c??H?? ]?????@UH?? H??H?UpH?Mx??b??H?? ]?????@UH?? H??H?UpH?Mx??b??H?? ]?????@UH?? H??H?UpH?Mx?b??H?? ]?????@UH?? H??H?UpH?Mx?b??H?? ]?????H??p?Ԁ??????H????Ā??????H??p鴀??????H??H餀??????H????*???????H??H鄀??????H??p?t???????H????d???????H????????????H??0??i??????H????i??????H????i??????H???????????H???????????H???????????H?? ?z???????H???????????H???????????H??????????H?? ?:???????H??@????????@UH?? H??H?UxH?Mp?*a??H?? ]?????@UH?? H??H?UpH?Mx?
a??H?? ]?????@UH?? H??H?UpH?Mx??`??H?? ]?????@UH?? H??H?UpH?Mx??`??H?? ]?????@UH?? H??H?UpH?Mx?`??H?? ]?????@UH?? H??H?UpH?Mx?`??H?? ]?????@UH?? H??H?UpH?Mx?j`??H?? ]?????@UH?? H??H?UpH?Mx?J`??H?? ]?????@UH?? H??H?UpH?Mx?*`??H?? ]?????@UH?? H??H?UpH?Mx?
`??H?? ]?????@UH?? H??H?UpH?Mx??_??H?? ]?????@UH?? H??H?UpH?Mx??_??H?? ]?????@UH?? H??H?UpH?Mx?_??H?? ]?????@UH?? H??H?UpH?Mx?_??H?? ]?????@UH?? H??H?UpH?Mx?j_??H?? ]?????@UH?? H??H?UpH?Mx?J_??H?? ]?????@UH?? H??H?UpH?Mx?*_??H?? ]?????@UH?? H??H?UpH?Mx?
_??H?? ]?????@UH?? H??H?UpH?Mx??^??H?? ]?????@UH?? H??H?UpH?Mx??^??H?? ]?????H??p?}??????H?????|??????H?????|??????H??X??|??????H?? ?Z???????H??X?|??????H????|??????H????|??????H?? ????????H??@??e??????H??H??e??????H????T|??????H??@?ĕ??????@UH?? H??H?UxH?Mp??]??H?? ]?????@UH?? H??H?UpH?Mx?]??H?? ]?????@UH?? H??H?UpH?Mx?]??H?? ]?????@UH?? H??H?UpH?Mx?z]??H?? ]?????@UH?? H??H?UpH?Mx?Z]??H?? ]?????@UH?? H??H?UpH?Mx?:]??H?? ]?????@UH?? H??H?UpH?Mx?]??H?? ]?????@UH?? H??H?UpH?Mx??\??H?? ]?????@UH?? H??H?UpH?Mx??\??H?? ]?????@UH?? H??H?UpH?Mx?\??H?? ]?????@UH?? H??H?UpH?Mx?\??H?? ]?????@UH?? H??H?UpH?Mx?z\??H?? ]?????@UH?? H??H?UpH?Mx?Z\??H?? ]?????@UH?? H??H?UpH?Mx?:\??H?? ]?????@UH?? H??H?UpH?Mx?\??H?? ]?????@UH?? H??H?UpH?Mx??[??H?? ]?????@UH?? H??H?UpH?Mx??[??H?? ]?????@UH?? H??H?UpH?Mx?[??H?? ]?????H??p??y??????@UH?? H??H?UpH?Mx?[??H?? ]?????@UH?? H??H?UpH?Mx?j[??H?? ]?????@UH?? H??H?UpH?Mx?J[??H?? ]?????@UH?? H??H?UpH?Mx?*[??H?? ]?????H??p?dy??????H????Ty??????H??@?Ē??????@UH?? H??H???H?Mp??Z??H?? ]??@UH?? H??H?UpH????Z??H?? ]??@UH?? H??H?UpH????Z??H?? ]??@UH?? H??H?UpH????wZ??H?? ]??@UH?? H??H?UpH????WZ??H?? ]??@UH?? H??H?UpH????7Z??H?? ]??H??p?tx??????H????dx??????H???Tx??????H????Dx??????H??0?????????H??0?a??????H????a??????H????a??????H??`??w??????H????da??????H??@?T???????@UH?? H??H???H?Mp?gY??H?? ]??@UH?? H??H?UpH????GY??H?? ]??@UH?? H??H?UpH????'Y??H?? ]??@UH?? H??H?UpH????Y??H?? ]??@UH?? H??H?UpH?????X??H?? ]??@UH?? H??H?UpH?????X??H?? ]??H??p?w??????H??P?t???????@UH?? H??H???H????X??H?? ]???????????????@UH?? H??H???H????TX??H?? ]???????????????@UH?? H??H???H????$X??H?? ]???????????????@UH?? H??H???H?????W??H?? ]???????????????@UH?? H??H???H?????W??H?? ]???????????????@UH?? H??H???H????W??H?? ]???????????????@UH?? H??H???H????dW??H?? ]???????????????@UH?? H??H???H????4W??H?? ]???????????????@UH?? H??H???H????W??H?? ]???????????????@UH?? H??H???H?????V??H?? ]???????????????@UH?? H??H???H????V??H?? ]???????????????@UH?? H??H???H????tV??H?? ]???????????????@UH?? H??H???H????DV??H?? ]???????????????@UH?? H??H???H????V??H?? ]???????????????@UH?? H??H???H?????U??H?? ]???????????????@UH?? H??H???H????U??H?? ]???????????????H?????s??????H?????s??????H?????s??????H????s??????H??@?$???????@UH?? H??H?UxH?Mp?:U??H?? ]?????@UH?? H??H?UpH?Mx?U??H?? ]?????@UH?? H??H?UpH?Mx??T??H?? ]?????@UH?? H??H?UpH?Mx??T??H?? ]?????@UH?? H??H?UpH?Mx?T??H?? ]?????@UH?? H??H?UpH?Mx?T??H?? ]?????@UH?? H??H?UpH?Mx?zT??H?? ]?????@UH?? H??H?UpH?Mx?ZT??H?? ]?????@UH?? H??H?UpH?Mx?:T??H?? ]?????@UH?? H??H?UpH?Mx?T??H?? ]?????@UH?? H??H?UpH?Mx??S??H?? ]?????@UH?? H??H?UpH?Mx??S??H?? ]?????@UH?? H??H?UpH?Mx?S??H?? ]?????@UH?? H??H?UpH?Mx?S??H?? ]?????@UH?? H??H?UpH?Mx?zS??H?? ]?????@UH?? H??H?UpH?Mx?ZS??H?? ]?????@UH?? H??H?UpH?Mx?:S??H?? ]?????@UH?? H??H?UpH?Mx?S??H?? ]?????@UH?? H??H?UpH?Mx??R??H?? ]?????@UH?? H??H?UpH?Mx??R??H?? ]?????@UH?? H??H?UpH?Mx?R??H?? ]?????@UH?? H??H?UpH?Mx?R??H?? ]?????H?????p??????H??p??p??????H???p??????H????p??????H????p??????H??P????????H????Y??????H??P??Y??????H??h?Tp??????H????Dp??????H??@?4p??????H???????????H????Y??????H????????????H????????????H????z??????H??P?TY??????H????DY??????H????4Y??????H????o??????H??@????????@UH?? H??H?U`H?Mh?*Q??H?? ]?????@UH?? H??H?U`H?Mh?
Q??H?? ]?????@UH?? H??H?U`H?Mh??P??H?? ]?????@UH?? H??H?U`H?Mh??P??H?? ]?????@UH?? H??H?U`H?Mh?P??H?? ]?????@UH?? H??H?U`H?Mh?P??H?? ]?????@UH?? H??H?U`H?Mh?jP??H?? ]?????@UH?? H??H?U`H?Mh?JP??H?? ]?????@UH?? H??H?U`H?Mh?*P??H?? ]?????@UH?? H??H?U`H?Mh?
P??H?? ]?????@UH?? H??H?U`H?Mh??O??H?? ]?????@UH?? H??H?U`H?Mh??O??H?? ]?????@UH?? H??H?U`H?Mh?O??H?? ]?????@UH?? H??H?U`H?Mh?O??H?? ]?????@UH?? H??H?U`H?Mh?jO??H?? ]?????@UH?? H??H?U`H?Mh?JO??H?? ]?????@UH?? H??H?U`H?Mh?*O??H?? ]?????@UH?? H??H?U`H?Mh?
O??H?? ]?????@UH?? H??H?U`H?Mh??N??H?? ]?????@UH?? H??H?U`H?Mh??N??H?? ]?????@UH?? H??H?U`H?Mh?N??H?? ]?????@UH?? H??H?U`H?Mh?N??H?? ]?????@UH?? H??H?U`H?Mh?jN??H?? ]?????@UH?? H??H?U`H?Mh?JN??H?? ]?????@UH?? H??H?U`H?Mh?*N??H?? ]?????@UH?? H??H?U`H?Mh?
N??H?? ]?????H??`?Dl??????H??`?4l??????H??8?$l??????H????l??????H???????????H?????k??????H?????k??????H????k??????H?????k??????H??0?J???????H????k??????H???k??????H????k??????H??0?
???????H????dk??????H???Tk??????H????Dk??????H??0?????????H????$k??????H???k??????H????k??????H??0????????H?????j??????H????j??????H?????j??????H??0?J???????H??@?$???????@UH?? H??H?UxH?Mp?:L??H?? ]?????@UH?? H??H?UpH?Mx?L??H?? ]?????@UH?? H??H?UpH?Mx??K??H?? ]?????@UH?? H??H?UpH?Mx??K??H?? ]?????@UH?? H??H?UpH?Mx?K??H?? ]?????@UH?? H??H?UpH?Mx?K??H?? ]?????@UH?? H??H?UpH?Mx?zK??H?? ]?????@UH?? H??H?UpH?Mx?ZK??H?? ]?????@UH?? H??H?UpH?Mx?:K??H?? ]?????@UH?? H??H?UpH?Mx?K??H?? ]?????@UH?? H??H?UpH?Mx??J??H?? ]?????@UH?? H??H?UpH?Mx??J??H?? ]?????H??p?i??????H??@?i??????H??h??h??????H?????h??????H????j???????H?????h??????H??h?h??????H??@?h??????H????*???????H????h??????H??h?th??????H??@?dh??????H????????????H????Dh??????H??0?4h??????H????Q??????H??@?Q??????H????Q??????H??@?tQ??????H??PH?%?	??H??(H?%???H??(H?%???H??(H?%???H??(H?%???@UH?? H??H?U(H?M8?:I??H?? ]?????@UH?? H??H?U H?M0?I??H?? ]?????H??(H?%R??H??(H?%B??H??@H?%	??H??@?T$??????H??(H?%??H??(H?%??H??(H?%???H??(H?%???@UH?? H??H?U(H?M8?zH??H?? ]?????@UH?? H??H?U(H?M8?ZH??H?? ]?????H??(H?%???H??(H?%???H??(H?%r??H??@H?%B??H??(H?%R??@UH?? H??H?U(H?M8??G??H?? ]?????H??@H??H??H?%????????H??@H??H????O???????????H??(H?%?
??H??P?T=??????H??@H?%???H?T$UH?? H??H?MH?H???3?3??W????H?T$UH?? H??H?MH?(???3?3??7????H?T$UH?? H??H?MH????3?3??????H??@?Te??????H??@H??H??H?%????????H??@H??H????N???????????@UH?? H??E ????t?e ?H?M@H????`H?? ]???H??@H??H?%>??????????????H??@H???N??H??@H??H??H?%???????H??@H??H???YN???????????H??@??d??????H??@?Td??????@UH?? H??H?U@H?MH??E??H?? ]?????@UH?? H??H?U@H?MH??E??H?? ]?????H??`?d??????H??@?td??????H??@??c??????@UH?? H??H?UHH?MX?zE??H?? ]?????@UH?? H??H?U@H?MP?ZE??H?? ]?????H??`?c??????H??@?c??????H??@?tc??????H??@??c??????H??@?Tc??????H??@?Dc??????@UH?? H??H?UHH?MX??D??H?? ]?????@UH?? H??H?UHH?MX?D??H?? ]?????H??8??b??????H??H??b??????H?????b??????H??p??b??????H????J???????H??H?b??????H??(?b??????H??p?b??????H????tb??????H??H?db??????H????????????H??h?Db??????H????4b??????H??@?$b??????H???????????H??@?b??????H?????a??????H??h??a??????H????j???????H??@??a??????H????a??????H??h?a??????H????*???????H??@?a??????H????ta??????H??h?da??????H????????????H??@?Da??????H????4a??????H??h?$a??????H???????????H??@?a??????H??@?ta??????H??H?da??????H??H??`??????H??@??`??????H??@?4a??????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???z??H??(H;?u?3?3??(?????@UH?? H??H?UHH?MX?
B??H?? ]?????H??@H?%"??H??8?4`??????@UH?? H??E ????t
?e ?H?M0?`??H?? ]???????????H??8??_??????H??8??_??????@UH?? H??E ????t
?e ?H?M@??_??H?? ]???????????@UH?? H??E ????t
?e ?H?M@?_??H?? ]???????????@UH?? H??E ????t
?e ?H?M@?`_??H?? ]???????????H??H??_??????H??H?4_??????H??@?_??????H??@?_??????@UH?? H??H?UHH?MX?@??H?? ]?????H??X??^??????H??X?T_??????@UH?? H??H?UHH?MX?j@??H?? ]?????@UH?? H??E ????t
?e ?H?MH?^??H?? ]???????????@UH?? H??E ????t?e ?H?M`H?????H?? ]???H??`H??H?%???????????????H??0H?%??H??`H???????H??@H??H??H?%g???????H??@H??H??鉎???????????H??H?D^??????H??H?]??????H??h?$^??????H??h?]??????H????^??????H????t]??????@UH?? H??H?UHH?MX?
???H?? ]?????H??X?D]??????H??X?]??????@UH?? H??H?UHH?MX??>??H?? ]?????H??@H??H??H?%g????????H??@H??H??鉍???????????H?T$UH?? H??H?MP?X???3?3??g????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???v??H??(H;?u?3?3??(?????H??@H????]??H??@H??(????H??@H??H?@\??H??@H????[???????????????H??@H????
\???????????????H??`H???]??H??`H??(連??H??`H??H??[??H??`H????=[???????????????H??`H????[???????????????H??h?[??????H??@?d???????H???H??H??H?%?????????H???H??H???????????????H???H??H??H?%?????????H???H??H??驋???????????H???H??H??H?%G????????H???H??H???i????????????H??@H???@???H??H?2???????H??8?Z??????H?? ?tZ??????H??@?dZ??????H??@??Z??????H??@?b??????H??@?Z??????H??@?$Z??????H??p?Z??????@UH?? H??EX????t?eX?H?MpH????`?H?? ]???H??pH??H?%>???????????????H??HH?%????H??pH???C??H??p?TZ??????H???Y??????H????tY??????H??x?dY??????H????TY??????H????DY??????H????????????H??x?$Y??????H??H?Y??????H??@?Y??????H??h??X??????H?????X??????H?????X??????H??x??X??????H????X??????H????X??????H??x?X??????H???????????H??H?tX??????H??HH??H??H?%?????????H??HH??H???B???????????H??x?$X??????@UH?? H??EX????t?eX?H?MpH????p?H?? ]???H??pH??H?%N???????????????H??`H?%????H??pH???A??H??p?dX??????H????W??????H??`?W??????H??`H??H??H?%?????????H??`H??H???)A???????????H??PH?%???H????$W??????H????W??????H??x?W??????@UH?? H??Eh????t?eh?H?MpH????P?H?? ]???H??pH??H?%.???????????????H??XH?%????H??pH???p@??H??p?DW??????H????tV??????H??X?dV??????H??XH??H??H?%?????????H??XH??H???	@???????????H??`H?%????H??@H??頝??H??@?t-??????@UH?? H??H?UHH?MX?7??H?? ]?????@UH?? H??H?U@H?MP?j7??H?? ]?????@UH?? H??H?UHH?MX?J7??H?? ]?????H??@?4???????H??@??,??????H??@?D???????H??@????????H??@??,??????H??X?4U??????H??P?$U??????H????U??????H????U??????H??@????????H??@H??逜??H??(H?%????H??P?D,??????H??P?d???????H??@鄿??????H??@?D???????H??@?,??????H?T$UH??0H??H?Mh????3?3??????@UH?? H??H?UHH?MX??5??H?? ]?????@UH?? H??H?UHH?MX??5??H?? ]?????@UH?? H??H?UHH?MX?5??H?? ]?????H??@?Ծ??????H??@?ľ??????H??@鄽??????H??@?D+??????H??@锾??????H??@?T???????H??@?+??????@UH?? H??H?UHH?MX?*5??H?? ]?????H??@????????H??@?4???????H??@?????????H??@?*??????@UH?? H??H?U@H?MH??4??H?? ]?????@UH?? H??H?U@H?MH?4??H?? ]?????H?????R??????H??h?t???????H?????R??????@UH?? H??H???H????T4??H?? ]???????????????@UH?? H??H???H????$4??H?? ]???????????????H????TR??????H??H?A??????H??P?????????H??PH???????H?T$SUWH?? H??H?] H?}`H;?t@H???H???H??(H;?u?3?3???????????H?T$UH??0H??H?Mh?h???3?3??w????@UH?? H??H?U@H?MH?Z3??H?? ]?????@UH?? H??H?U@H?MH?:3??H?? ]?????H??x?4S??????H?????R??????H??@H??????H??h?????????H??@鄿??????H????$Q??????H????Q??????@UH?? H??H?UhH?Mp?2??H?? ]?????@UH?? H??H?UpH?Mh?2??H?? ]?????@UH?? H??H?UpH?Mh?j2??H?? ]?????@UH?? H??H?UpH?Mh?J2??H?? ]?????H??hH??? ???H??@H??????H??`?????????H??X?????????H??8????????H????4P??????H????$P??????H??p?P??????H???????????H??X??O??????H??P??O??????H??h??O??????H?????O??????H??@?O??????H????:???????H??h?O??????H????O??????H??@?tO??????H????????????H??@?4???????H??@?????????H??@?&??????H????$O??????H??@?h??????@UH?? H??H?UxH?Mp?0??H?? ]?????@UH?? H??H?UpH?Mx?0??H?? ]?????@UH?? H??H?UpH?Mx?j0??H?? ]?????@UH?? H??H?UpH?Mx?J0??H?? ]?????@UH?? H??H?UpH?Mx?*0??H?? ]?????@UH?? H??H?UpH?Mx?
0??H?? ]?????@UH?? H??H?UpH?Mx??/??H?? ]?????@UH?? H??H?UpH?Mx??/??H?? ]?????@UH?? H??H?UpH?Mx?/??H?? ]?????@UH?? H??H?UpH?Mx?/??H?? ]?????@UH?? H??H?UpH?Mx?j/??H?? ]?????@UH?? H??H?UpH?Mx?J/??H?? ]?????H??p?M??????H????tM??????H??@??f??????@UH?? H??H?UxH?Mp??.??H?? ]?????@UH?? H??H?UpH?Mx??.??H?? ]?????@UH?? H??H?UpH?Mx?.??H?? ]?????@UH?? H??H?UpH?Mx?.??H?? ]?????@UH?? H??H?UpH?Mx?z.??H?? ]?????@UH?? H??H?UpH?Mx?Z.??H?? ]?????@UH?? H??H?UpH?Mx?:.??H?? ]?????@UH?? H??H?UpH?Mx?.??H?? ]?????@UH?? H??H?UpH?Mx??-??H?? ]?????@UH?? H??H?UpH?Mx??-??H?? ]?????@UH?? H??H?UpH?Mx?-??H?? ]?????@UH?? H??H?UpH?Mx?-??H?? ]?????H??p??K??????H?????K??????H??@?4e??????@UH?? H??H?UxH?Mp?J-??H?? ]?????@UH?? H??H?UpH?Mx?*-??H?? ]?????@UH?? H??H?UpH?Mx?
-??H?? ]?????@UH?? H??H?UpH?Mx??,??H?? ]?????@UH?? H??H?UpH?Mx??,??H?? ]?????@UH?? H??H?UpH?Mx?,??H?? ]?????@UH?? H??H?UpH?Mx?,??H?? ]?????@UH?? H??H?UpH?Mx?j,??H?? ]?????@UH?? H??H?UpH?Mx?J,??H?? ]?????@UH?? H??H?UpH?Mx?*,??H?? ]?????@UH?? H??H?UpH?Mx?
,??H?? ]?????@UH?? H??H?UpH?Mx??+??H?? ]?????@UH?? H??H?UpH?Mx??+??H?? ]?????@UH?? H??H?UpH?Mx?+??H?? ]?????@UH?? H??H?UpH?Mx?+??H?? ]?????@UH?? H??H?UpH?Mx?j+??H?? ]?????@UH?? H??H?UpH?Mx?J+??H?? ]?????@UH?? H??H?UpH?Mx?*+??H?? ]?????@UH?? H??H?UpH?Mx?
+??H?? ]?????@UH?? H??H?UpH?Mx??*??H?? ]?????@UH?? H??H?UpH?Mx??*??H?? ]?????@UH?? H??H?UpH?Mx?*??H?? ]?????H??p??H??????H?????H??????H??@?Db??????@UH?? H??H?UxH?Mp?Z*??H?? ]?????@UH?? H??H?UpH?Mx?:*??H?? ]?????@UH?? H??H?UpH?Mx?*??H?? ]?????@UH?? H??H?UpH?Mx??)??H?? ]?????@UH?? H??H?UpH?Mx??)??H?? ]?????@UH?? H??H?UpH?Mx?)??H?? ]?????@UH?? H??H?UpH?Mx?)??H?? ]?????@UH?? H??H?UpH?Mx?z)??H?? ]?????@UH?? H??H?UpH?Mx?Z)??H?? ]?????@UH?? H??H?UpH?Mx?:)??H?? ]?????@UH?? H??H?UpH?Mx?)??H?? ]?????@UH?? H??H?UpH?Mx??(??H?? ]?????@UH?? H??H?UpH?Mx??(??H?? ]?????@UH?? H??H?UpH?Mx?(??H?? ]?????@UH?? H??H?UpH?Mx?(??H?? ]?????@UH?? H??H?UpH?Mx?z(??H?? ]?????H??p?F??????H????F??????H????F??????H??`?F??????H???
???????H??`?dF??????H????TF??????H????DF??????H???ʽ??????H??`?$F??????H????F??????H????F??????H??銽??????H??`??E??????H?????E??????H?????E??????H???J???????H??`?E??????H????E??????H????E??????H???
???????H??`?dE??????H????TE??????H????DE??????H???ʼ??????H????.??????H??`?E??????H????E??????H?????D??????H???z???????H??0?T.??????H?T$SUWH?? H??H?] H???H;?t?H???H???H??PH;?u?3?3??L?????????H??`?D??????H??8?tD??????H????dD??????H???????????H?T$UH??0H??H?Mh?????3?3???????H?? H???-??H?? H??X?-??H?? H????=????????????????H?? H????????????????????H?? H?????????????????????H??@H??? -??H??@H??X?-??H??@H????????????????????H??@H????????????????????H??@H????}????????????????H????$C??????H????C??????H????C??????H??@銺??????H?????B??????H?????B??????H?????B??????H??@?J???????H????B??????H????B??????H????B??????H??@?
???????H???dB??????H??P??[??????@UH?? H??H?UxH?Mp??#??H?? ]?????@UH?? H??H?UpH?Mx??#??H?? ]?????@UH?? H??H?UpH?Mx?#??H?? ]?????@UH?? H??H?UpH?Mx?#??H?? ]?????@UH?? H??H?UpH?Mx?j#??H?? ]?????@UH?? H??H?UpH?Mx?J#??H?? ]?????@UH?? H??H?UpH?Mx?*#??H?? ]?????@UH?? H??H?UpH?Mx?
#??H?? ]?????@UH?? H??H?UpH?Mx??"??H?? ]?????@UH?? H??H?UpH?Mx??"??H?? ]?????@UH?? H??H?UpH?Mx?"??H?? ]?????@UH?? H??H?UpH?Mx?"??H?? ]?????@UH?? H??H?UpH?Mx?j"??H?? ]?????@UH?? H??H?UpH?Mx?J"??H?? ]?????@UH?? H??H?UpH?Mx?*"??H?? ]?????@UH?? H??H?UpH?Mx?
"??H?? ]?????H??p?D@??????H????4@??????H????$@??????H????@??????H??@隷??????H????????????H????????????H????????????H??@?Z???????H???????????H???????????H???????????H??@????????H???t???????H??P??X??????@UH?? H??H?UxH?Mp?? ??H?? ]?????@UH?? H??H?UpH?Mx?? ??H?? ]?????@UH?? H??H?UpH?Mx? ??H?? ]?????@UH?? H??H?UpH?Mx? ??H?? ]?????@UH?? H??H?UpH?Mx?z ??H?? ]?????@UH?? H??H?UpH?Mx?Z ??H?? ]?????@UH?? H??H?UpH?Mx?: ??H?? ]?????@UH?? H??H?UpH?Mx? ??H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?z??H?? ]?????@UH?? H??H?UpH?Mx?Z??H?? ]?????@UH?? H??H?UpH?Mx?:??H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????H??p?T=??????H????D=??????H??@?V??????@UH?? H??H?UxH?Mp????H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?j??H?? ]?????@UH?? H??H?UpH?Mx?J??H?? ]?????@UH?? H??H?UpH?Mx?*??H?? ]?????@UH?? H??H?UpH?Mx?
??H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?j??H?? ]?????@UH?? H??H?UpH?Mx?J??H?? ]?????@UH?? H??H?UpH?Mx?*??H?? ]?????@UH?? H??H?UpH?Mx?
??H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????H??p?$;??????H????$??????H????$??????H??8??:??????H??@?dT??????@UH?? H??H?UhH?M`?z??H?? ]?????@UH?? H??H?U`H?Mh?Z??H?? ]?????@UH?? H??H?U`H?Mh?:??H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh?z??H?? ]?????@UH?? H??H?U`H?Mh?Z??H?? ]?????@UH?? H??H?U`H?Mh?:??H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh?z??H?? ]?????@UH?? H??H?U`H?Mh?Z??H?? ]?????@UH?? H??H?U`H?Mh?:??H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????H??`?8??????H????8??????H????7??????H?????7??????H????j???????H??h??7??????H??@?4Q??????@UH?? H??H?U`H????G??H?? ]??@UH?? H??H???H?M`?'??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`?g??H?? ]??@UH?? H??H???H?M`?G??H?? ]??@UH?? H??H???H?M`?'??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`?g??H?? ]??@UH?? H??H???H?M`?G??H?? ]??@UH?? H??H???H?M`?'??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??H??@?$5??????H???5??????H????5??????H???銬??????H?????4??????H??h??4??????H??@?DN??????@UH?? H??H?U`H????W??H?? ]??@UH?? H??H???H?M`?7??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`?w??H?? ]??@UH?? H??H???H?M`?W??H?? ]??@UH?? H??H???H?M`?7??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`?w??H?? ]??@UH?? H??H???H?M`?W??H?? ]??@UH?? H??H???H?M`?7??H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`????H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`???H?? ]??@UH?? H??H???H?M`?w??H?? ]??H????1??????H???1??????H??@?1??????H???????????H????t1??????H???????????H???????????H??8?D1??????H??@?J??????@UH?? H??H?UhH?M`????H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh?j??H?? ]?????@UH?? H??H?U`H?Mh?J??H?? ]?????@UH?? H??H?U`H?Mh?*??H?? ]?????@UH?? H??H?U`H?Mh?
??H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh?j??H?? ]?????@UH?? H??H?U`H?Mh?J??H?? ]?????@UH?? H??H?U`H?Mh?*??H?? ]?????@UH?? H??H?U`H?Mh?
??H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh????H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh???H?? ]?????@UH?? H??H?U`H?Mh?j??H?? ]?????@UH?? H??H?U`H?Mh?J??H?? ]?????@UH?? H??H?U`H?Mh?*??H?? ]?????H??`?d.??????H??8?T.??????H??h?D.??????H????4.??????H???麥??????H????.??????H??h?.??????H??8??-??????H????z???????H?????-??????H??h??-??????H??8?-??????H????:???????H??0H?????H??0H??X???H??0H????????????????????H??0H????????????????????H??0H????m????????????????H??0?D??????H??0H?????H??0H??X?p??H??0H????????????????????H??0H?????????????????????H??0H?????????????????????H??`?,??????H??8?t,??????H????d,??????H???????????H??`?D,??????H??8?4,??????H????$,??????H???骣??????H??p?,??????H?????+??????H??H??+??????H????j???????@UH?? H??E0????t
?e0?H?M@?0??H?? ]???????????H??H?+??????H????+??????H??p?t+??????H????????????H??H?T+??????H????D+??????H??p?4+??????H???麢??????H??H?+??????H????+??????H??p??*??????H????z???????H??H??*??????H?????*??????H??p?*??????H????:???????H????*??????H????*??????H???t*??????H????d*??????H??@????????H??P??C??????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H?????
??H?? ]???????????????@UH?? H??H???H????
??H?? ]???????????????@UH?? H??H???H????
??H?? ]???????????????@UH?? H??H???H????T
??H?? ]???????????????@UH?? H??H???H????$
??H?? ]???????????????@UH?? H??H???H?????	??H?? ]???????????????@UH?? H??H???H?????	??H?? ]???????????????H?????'??????H?????'??????H?????'??????H????'??????H????'??????H??@?:???????H??P?A??????@UH?? H??H???H????$	??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????d??H?? ]???????????????@UH?? H??H???H????4??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????H????D%??????H????4%??????H??`?>??????H???%??????H??8?%??????H??`??$??????H?????$??????H?????$??????H?????$??????H???$??????H??(?$??????H??P?$??????H??x?$??????H????t$??????H????d$??????H????T$??????H???D$??????H??@?4$??????H??h?$$??????H????$??????H????$??????H?????#??????H????#??????H??0??#??????H??X??#??????H????#??????H????#??????H????#??????H????#??????H?? ?t#??????@UH?? H??L?
`#??A??(H???a???H?? ]????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????t??H?? ]???????????????@UH?? H??H???H????D??H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H??????H?? ]???????????????@UH?? H??H???H????T??H?? ]???????????????@UH?? H??H???H????$??H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????@UH?? H??H???H???????H?? ]???????????????H????? ??????H????? ??????H????? ??????@UH?? H?ꋅ?????t????H???H?????H?? ]??????????H???H??H?%????????????????H??xH?%B???H???H???0
??H????!??????H????4 ??????H??@?9??????@UH?? H??H?UxH?Mp???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?z??H?? ]?????@UH?? H??H?UpH?Mx?Z??H?? ]?????@UH?? H??H?UpH?Mx?:??H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?z??H?? ]?????@UH?? H??H?UpH?Mx?Z??H?? ]?????@UH?? H??H?UpH?Mx?:??H?? ]?????@UH?? H??H?UpH?Mx???H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????H??p???????H??pH??H??H?%????????H??pH??H???9???????????H??@????????H????4??????H??`?6??????H??????????H??????????H??@????????H????z???????H??H????????H??????????H??8???????H??0?:???????H??????????H??????????H??X?t??????H??`?????????H??h?T??????H????D??????H????4??????H??麓??????H??0???????H??????????H???????????H????z???????H?? ????????H???????????H?????????H??@
?:???????H?????????H??????????H??p?t??????H??p	?????????H????T??????H????D??????H??`?4??????H???麒??????H??????????H??????????H??`?t4??????H???????????H??p????????H??0????????H????J???????H??8???????H??????????H??(???????H?? ?
???????H????d??????H????T??????H??H?D??????H??P?ʑ??????H??X?$??????H??????????H??????????H???銑??????H?? ????????H???????????H???????????H????J???????H?????????H??????????H?????????H??0
?
???????H???d??????H????T??????H??`?D??????H??`	?ʐ??????H????$??????H??????????H??P???????H???銐??????H??P????????H??@????????H???????????H??h???????H????:???????H??h???????H??????????H??@?t??????H????????????H??0?T??????H??0?D??????H??0?4??????H??(???????H??@H?%???H??@H?????H??@H??H????H??@H??p????H??@H????????????????????H??????????H??????????H??????????H??0????????H????t??????H????d??????H????T??????H??0?ڎ??????H??p?Қ??????@UH?? H??E ????t
?e ?H?M`?"??H?? ]???????????H??P????????H?T$UH?? H??H?UH?z@'???u??H?M???H?M`?}???H?V)H?M`?c????H?? ]???????H??x???????@UH?? H??EX????t?eX?H?MpH?????H?? ]???H??pH??H?%????????????????H??`H?%???H??pH?????H??p????????H??????????H??`????????H??`H??H??H?%G????????H??`H??H???????????????H??PH?%????H??????????H??????????H????t??????H????d??????@UH?? H??E ????t
?e ?H?MX?P??H?? ]???????????H????4??????H??????????H??????????H???????????H???z???????H????T???????H???D???????H??H?4.??????@UH?? H??H?U@H?Mh?J???H?? ]?????@UH?? H??H?U@H?Mh?*???H?? ]?????@UH?? H??H?U@H?Mh?
???H?? ]?????@UH?? H??H?U@H?Mh?????H?? ]?????@UH?? H??H?U@H?Mh?????H?? ]?????@UH?? H??H?U@H?Mh????H?? ]?????@UH?? H??H?U@H?Mh????H?? ]?????@UH?? H??H?U@H?Mh?j???H?? ]?????H??@???????H??p???????H?? ???????H??p???????H??p?t??????H??p?d??????H??p?T??????H??p?D??????H??p?4??????H??p?$??????H??p???????H??p???????H??p????????H??????????H??(????????H??P???????H????:???????H??P???????H??(???????H???t??????H????????????H??P?T??????H??(?D??????H???4??????H???麉??????H??@?$??????H???????????H???t???????H??`?d???????H??P?T+??????H????D+??????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????@UH?? H??H?UpH?Mx?Z???H?? ]?????@UH?? H??H?UpH?Mx?:???H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx?????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx????H?? ]?????@UH?? H??H?UpH?Mx?z???H?? ]?????H??p???????H??p???????H???????????H???????????H???????????H??(H?%b???H??(H?%R???@UH?? H??H?U(H?M8?????H?? ]?????H??(H?%"???H??(H?%???H??(H?%???@UH?? H??H?U(H?M8????H?? ]?????H??(H?%ҳ??@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U(H?M8?J???H?? ]?????H?T$UH?? H??3?3??0?????????????@UH?? H??H?U H?M0?
???H?? ]?????H?T$UH?? H??H?MP???3?3??????H?T$UH?? H??3?3??Б????????????H?T$UH?? H??3?3?谑????????????@UH?? H??H?U(H?M8????H?? ]?????H?? ?t??????H?? H?? ?`??H?? H??@?P??H??@?D??????H??@H?? ?0??H??@H??@? ??@UH?? H??H?U(H?M8?
???H?? ]?????H?T$UH??0H??H?MX?ؐ??3?3??????H?T$UH?? H??3?3??А????????????H?T$UH??0H??H?MX蘐??3?3?觐???H??p????????H???????????H??H????????H????J???????H??@?T??????H??@H?? ?@??H??@H??@?0??@UH?? H??E0????t
?e0?H?M@?0Q??H?? ]???????????H??P????????H??PH?? ????H??PH??@????@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?U@H?MH????H?? ]?????H??@???????H??@H?? ?^??H?T$UH??0H??H?Mp?Z??3?3??W????H??P?D??????H??PH?? ?@^??H????t??????H??`?d??????H????T??????H????ڂ??????H??p????????H?? ????????H????$???????H???????????H???????????H??@?????????H??p???????H??pH?? ?]??H??p?T`??????H????T??????H???H?? ?@??H???H??@?0??H????DO??????H??H?W??????@UH?? H??H???H????????H?? ]???????????????@UH?? H??H???H????????H?? ]???????????????H???????????H???????????H????]??????H????t??????H???H?? ?`??H???H??@?P??H??p?D??????H??pH?? ?@\??H?? 鸁??????H?? ?D???????H?? ?4???????H??@?$???????H??@????????H?? ????????H?? ?????????H??@????????H??@?Ԡ??????H??@錃??????H??@?|???????H??@?l???????H??@?\???????H??@?L???????H??@????????????????H??@H?? H?? ?*???????????????@UH?? H??E????t?e?H?M H?? ?0??H?? ]???????H?? H???ҁ??H?? H?? ?΁??H??@H?? H??鮁??????????????H??@H?? H?? 隁??????????????@UH?? H??E????t?e?H?M H??x?~??H?? ]???????H?? H???B???H?? H?? ?>???H?? H?? 頨??H??@H??PH?? 錨??????????????H??@H?? H??????????????????H??@H?? H?? ?ڀ??????????????@UH?? H??E????t?e?H?M H??P??}??H?? ]???????H?? H??邀??H?? H?? ?~???H?? H?? ????H??@H??PH?? ?̧??????????????H??@H?? H???.???????????????H??@H?? H?? ????????????????H??@H??XH??????????????????@UH?? H??E????t?e?H?M H??X?}??H?? ]???????H?? H?????H??@H??XH?????????????????H??@H??0H???n??????????????@UH?? H??E????t?e?H?M H??0?|??H?? ]???????H?? H???"??H??@H??0H?????????????????H??@H?? H????~??????????????@UH?? H??E????t?e?H?M H?? ?|??H?? ]???????H?? H???~??H??@H?? H???~??????????????H??@H??@H???n~??????????????@UH?? H??E????t?e?H?M H??@?{??H?? ]???????H?? H???"~??H??@H??@H???~??????????????H??@H??hH????}??????????????@UH?? H??E ????t?e ?H?M@H??h?{??H?? ]???????H??@H???}??H??@H??hH???}??????????????H??@H??@H???n}??????????????@UH?? H??E????t?e?H?M H??@?z??H?? ]???????H?? H???"}??H??@H??@H???}??????????????H??@H??H????|??????????????@UH?? H??E ????t?e ?H?M@H???z??H?? ]???????H??@H???|??@UH?? H??E????t?e?H?M H????y??H?? ]???????H?? H???b|??H??@H??H???N|??????????????H??@H??(H???????????????????H??@H??H???|??????????????@UH?? H??E????t?e?H?M H??(? y??H?? ]???????H?? H????{??H?? H??進??H??@H??(H???l???????????????H??@H??H???~{??????????????H??@H??0H???,???????????????H??@H??H???>{??????????????@UH?? H??E????t?e?H?M H??0?Px??H?? ]???????H?? H????z??H?? H??鰱??H??@H??0H??霱??????????????H??@H??H???z??????????????H??@H??0H???\???????????????H??@H??H???nz??????????????@UH?? H??E????t?e?H?M H??0?w??H?? ]???????H?? H???"z??H?? H??????H??@H??0H???̰??????????????H??@H??H????y??????????????H??@H??(H????y??????????????@UH?? H??E????t?e?H?M H??(??v??H?? ]???????H?? H???~y??H??@H??(H???jy??????????????H??@?z??????H??@?tz??????H??@?dz??????H??@?^|??????H??@?N|??????H??@?>|??????H??@?.|??????@UH?? H??E ????t
?e ?H?MH?@???H?? ]???????????@UH?? H??E ????t
?e ?H?MH????H?? ]???????????H??(H?%r???H??(H?%b???H??(H?%R???H??(H?%B???H??(H?%2???H??(H?%"???H??(H?%???H??(H?%???H??(H?%???H??(H?%???H??(H?%ҡ??H??(H?%¡??H??(H?%????H??(H?%????H??(H?%????H??(H?%????H??@?w??????@UH?? H??H?U(H?M8?
???H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?j???H?? ]?????@UH?? H??H?U H?M0?J???H?? ]?????@UH?? H??H?U H?M0?*???H?? ]?????@UH?? H??H?U H?M0?
???H?? ]?????@UH?? H??H?U H?M0?????H?? ]?????@UH?? H??H?U H?M0?????H?? ]?????@UH?? H??H?U H?M0????H?? ]?????@UH?? H??H?U H?M0????H?? ]?????@UH?? H??H?U H?M0?j???H?? ]?????@UH?? H??H?U H?M0?J???H?? ]?????@UH?? H??H?U H?M0?*???H?? ]?????@UH?? H??H?U H?M0?
???H?? ]?????@UH?? H??H?U H?M0?????H?? ]?????H??(H?%"???H??(H?%???@UH?? H??E ????t
?e ?H?MX????H?? ]???????????@UH?? H??E ????t
?e ?H?MX?????H?? ]???????????@UH?? H??E ????t
?e ?H?MH????H?? ]???????????@UH?? H??E ????t
?e ?H?MX?p???H?? ]???????????@UH?? H??E ????t
?e ?H?MH?@???H?? ]???????????@UH?? H??E ????t
?e ?H?Mh????H?? ]???????????@UH?? H??E ????t
?e ?H?MH?????H?? ]???????????@UH?? H??E ????t
?e ?H?MH????H?? ]???????????H?? ????????H?? H??`????H?? H????m????????????????H??@?T???????H??@H??`?@???H??@H????-????????????????H??@?Hp??????H??@H??????H??@H??h?????H??@H?????????????????????H??@??o??????H??@H??????H??@H??h????H??@H????????????????????H??@H?? H???^r??????????????H??@H?? H?? ?Jr??????????????H??PH?? H???r??????????????H??PH?? H?? ?
r??????????????H??@H??PH?? ?\???????????????H??@H?? H???q??????????????H??@H?? H?? ?q??????????????H??PH??PH?? ?????????????????H??PH?? H???^q??????????????H??PH?? H?? ?Jq??????????????H??@H??XH???q??????????????H??PH??XH????p??????????????H??@H??0H????p??????????????H??PH??0H???p??????????????H??@H?? H???p??????????????H??PH?? H???~p??????????????H??@H??@H???^p??????????????H??PH??@H???>p??????????????H??@H??hH???p??????????????H??PH??hH????o??????????????H??@H??@H????o??????????????H??PH??@H???o??????????????H??@H??H???o??????????????H??PH??H???~o??????????????H??@H??(H???,???????????????H??@H??H???>o??????????????H??PH??(H??????????????????H??PH??H????n??????????????H??@H??0H??鬥??????????????H??@H??H???n??????????????H??PH??0H???l???????????????H??PH??H???~n??????????????H??@H??0H???,???????????????H??@H??H???>n??????????????H??PH??0H??????????????????H??PH??H????m??????????????H??@H??(H????m??????????????H??PH??(H????m??????????????H??8????????@UH?? H??E ????t
?e ?H?M0????H?? ]???????????H??8?t???????@UH?? H??E ????t
?e ?H?M0?P???H?? ]???????????H??@H??H????H??@H????????????????????H??@H?????????????????????H??@H??H?M????????????????H??@H????-????????????????H??@H????
????????????????H??@H??8??????????????????H??@H??H?????H??@H????????????????????H??@H????-????????????????H??@H??H?}????????????????H??@H????]????????????????H??@H????=????????????????H??@H??8?????????????????H??@H??(????H??@H??x?????H??@H?????????????????????H??@H???????????????????H??@H??h?????????????????H??@H??(????H??@H??x?p???H??@H????]????????????????H??@H???=????????????????H??@H??h?????????????????H?? H??(????H?? H??x?????H?? H?????????????????????H?? H???????????????????H?? H??h?????????????????H??@H??????H??@H??`?p???H??@H????]????????????????H??@H???@???H??@H??`?0???H??@H????????????????????@UH?? H??H?M@H??0L?
????A??P?s??H?? ]???@UH?? H??H?M@H???L?
????A??P?Ms??H?? ]????????????????@UH?? H??H?M@H??pL?
????A??P?
s??H?? ]????????????????@UH?? H??H?M@H??L?
E???A??P??r??H?? ]????????????????@UH?? H??H?M@H???L?
???A??P?r??H?? ]????????????????H??@H??P??????????????????H??@H????????????????????H??@H????????????????????H??@H??@?m????????????????H??PH??P?M????????????????H??PH????-????????????????H??PH????
????????????????H??PH??@??????????????????H?? ?????????H?? H??P?????H??@????????H??@H??P????H??@?$???????H??(H?%???H??(H?%???H??(H?%???H??(H?%Ґ??H??(H?%??H??(H?%????H??(H?%????H??(H?%????H??(H?%????H??(H?%r???H??(H?%b???H??(H?%R???H??(H?%B???H??(H?%2???H??(H?%"???H??(H?%???H??(H?%???H??(H?%???H??@?e??????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?UHH?MX????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U@H?MP?????H?? ]?????@UH?? H??H?U H?M0????H?? ]?????H??(H?%???@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U H?M0?j???H?? ]?????H??(H?%????H??@????????H??@H??`????H??@H????}????????????????H??@?d???????H??@H??`?P???H??@H????=????????????????H??@?$???????H??@H??`????H??@H?????????????????????H??@?????????H??@H??`?????H??@H????????????????????H??p????????H?????K??????H???????????H??P?t???????H????d???????H??@H???P???H??@H??p?@???H??@H????-????????????????H??@H??????H??@H??p????H??@H?????????????????????H??(H?%Š??H??(H?%????H??@?L`??????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?UHH?MX????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?U(H?M8?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8?z???H?? ]?????@UH?? H??H?UHH?MX?Z???H?? ]?????@UH?? H??H?U(H?M8?:???H?? ]?????@UH?? H??H?UHH?MX????H?? ]?????H?T$UH?? H??3?3??g????????????@UH?? H??H?U@H?MP?????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????@UH?? H??H?U(H?M8????H?? ]?????H?? H???????H?? H??p?????H?? H????????????????????@UH?? H??E ????t
?e ?H?MH?Pa??H?? ]???????????H??@H??8H???^]??????????????H??@H??8H???|a??????????????@UH?? H??E ????t?e ?H?M@H??8?PZ??H?? ]???????H??@H????\??H??@H??? a??H??8?a??????H??@H??(H???\??????????????H??@H??(H????`??????????????@UH?? H??E ????t?e ?H?M@H??(?Y??H?? ]???????H??@H???R\??H??@H???`??H??@H??0H???.\??????????????H??@H??0H?? ?La??????????????H??@H??(H????[??????????????H??@H??(H???la??????????????@UH?? H??E ????t?e ?H?M@H??(??X??H?? ]???????H??@H???[??H??@H???a??H??@H???p???H??@H??h??`??H??@H??x??b??H?? ????????H?? H??P????H?? H????????????????????H?? H????m????????????????H?? H??@?M????????????????H?? H????-????????????????H?? H????
????????????????H?? H??8?????????????????H?? H??H?????????????????H??@????????H??@H??P????H??@H????????????????????H??@H????m????????????????H??@H??@?M????????????????H??@H????-????????????????H??@H????
????????????????H??@H??8?????????????????H??@H??H?????????????????H?T$UH?? H??3?3???a????????????H?T$UH?? H??3?3???a????????????H?T$UH?? H??3?3??a????????????H?T$UH?? H??3?3??a????????????H?T$UH?? H??3?3??`a????????????H?T$UH?? H??3?3??@a????????????H?T$UH?? H??3?3?? a????????????H?T$UH?? H??3?3??a????????????H?T$UH?? H??3?3???`????????????H?T$UH?? H??3?3???`????????????H?T$UH?? H??3?3??`????????????H?T$UH?? H??3?3??`????????????H?T$UH?? H??3?3??``????????????H?T$UH?? H??3?3??@`????????????H?T$UH?? H??3?3?? `????????????H?T$UH?? H??3?3??`????????????H?T$UH?? H??3?3???_????????????H?T$UH?? H??3?3???_????????????H?T$UH?? H??3?3??_????????????H?T$UH?? H??3?3??_????????????H?T$UH?? H??3?3??`_????????????H?T$UH?? H??3?3??@_????????????@UH?? H??H?UHH?MX????H?? ]?????@UH?? H??H?U(H?M8?????H?? ]?????@UH?? H??H?UHH?MX?ڼ??H?? ]?????@UH?? H??H?UHH?MX躼??H?? ]?????H?T$UH?? H??3?3??^????????????@UH?? H??H?U(H?M8?z???H?? ]?????H??@H??(?@z??H??@H??H? ???H??@H?? ????H??@????????H??@H??h? ???H?? H??P?0c??H?? H??P? c??H??`H??P?c??H??(?4???????H??@H??P??b??H??@H??P??b??H??@H??P??b??H??@H??P??b??H?? H???????H??@H???????H??H?t???????H??@??U??????H??@H??(?0|??H??@H??8? }??H??@H??H? [??H??@H??X?V??H??h?]??????H??(??|??????H??h??\??????H??8??{??????H??h??S??????H?T$UH?? H??3?3???\????????????H?T$SUWH?? H??H?] H?}`H;?t@H???x@??H??PH;?u?3?3??|\????????@UH?? H??H?UHH?MX?Z???H?? ]?????H?T$UH?? H??3?3??@\????????????H?T$UH??0H??H?Mh?\??3?3??\???H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H??蔜??H??`H;?u?3?3???[????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???T???H??`H;?u?3?3??[????H??@H?? ?????H??(????????@UH?? H??E ????t
?e ?H?MH????H?? ]???????????H??@H??????H??@H???p???H?T$UH??0H??H?MP??E??3?3??[???H?T$UH??0H??H?MP????3?3???Z???H?T$UH??0H??H?MP?ʦ??3?3???Z???H?T$UH??0H??H?MP?z???3?3??Z???H?T$UH??0H??H?MP??F??3?3??Z???H?T$UH??0H??H?MP?zG??3?3??gZ???H?T$UH??0H??H?MP?ʦ??3?3??GZ???H?T$UH??0H??H?MP??H??3?3??'Z???H?T$UH??0H??H?MP?ʦ??3?3??Z???H?T$UH??0H??H?MP????3?3???Y???H?T$UH??0H??H?MP?
???3?3???Y???H?T$UH??0H??H?MP??Z??3?3??Y???H?T$UH??0H??H?MP?
???3?3??Y???H?T$UH??0H??H?MP?Jg??3?3??gY???H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H??贱??H??H;?u?3?3??(Y????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???t???H??H;?u?3?3???X????H??@H??(?t??H??@H??H????H??@?Ժ??????H??@H?? ????H??@H????????????????????H??@锺??????H??@H?? ?????H??@H????M????????????????H??@H?????H??@H???p???H??@H??@? t??H??@?d???????H??@H??h?????H????4???????H??P?$???????H??x????????H??0?K??????@UH?? H??E0????t
?e0?H?MH?????H?? ]???????????H????????????H??h????????H???????????H??@????????H????K??????H??h?t???????H????d???????H??@?T???????H?????J??????H??@H??P?????H??@H??x?r??H??@H????r???????????????H??@H????}r???????????????H??@H????]r???????????????H??@H???r???????????????H??@H??0??L???????????????H??@H??@?M???????????????H??@H??P?}N???????????????H??@锺??????H??@H?? 逻??H??@H???P???H??@H??8?@???H??@H??X?0???H??@H??x?Z??H??@H????}????????????????H??@H??????H??@H??8????H??@H??X?о??H??@H??x?PZ??H??@H????????????????????H?? H???p???H??@H???`???H??@H???P???H??@?nO??????H??@H?? ??e???????????????H??@H??@?Y???????????????H??@H??`?M????????????????H??@H????-????????????????H??@H???
????????????????H??@?N??????H??@H?? ?Me???????????????H??@H??@?
Y???????????????H??@H??`靹???????????????H??@H????}????????????????H??@H???]????????????????H??`?????????H??8????????H???????????H????*G??????H???????????H??8?t???????H??`?d???????H?????F??????@UH?? H??E ????t
?e ?H?MX谸??H?? ]???????????@UH?? H??E ????t
?e ?H?MX耸??H?? ]???????????@UH?? H??E ????t
?e ?H?MX?P???H?? ]???????????@UH?? H??E ????t
?e ?H?MH? ???H?? ]???????????@UH?? H??E ????t
?e ?H?MX????H?? ]???????????@UH?? H??E ????t
?e ?H?MH?????H?? ]???????????@UH?? H??E ????t
?e ?H?MH萷??H?? ]???????????H??`?????????H??8?????????H????????????H????ZE??????H?T$UH??0H??H?MP蚝??3?3??WQ???H?T$UH??0H??H?MP??P??3?3??7Q???@UH?? H??H?U@H?MH????H?? ]?????@UH?? H??H?U@H?MH?????H?? ]?????H?T$UH??0H??H?MP?:???3?3???P???H??@H???0???@UH?? H??H?U@H?MP誮??H?? ]?????H??PH??????@UH?? H??E ????t?e ?H???????H?? ]????????@UH?? H??E ????t
?e ?H?MX????H?? ]???????????@UH?? H??E ????t?e ?H????]???H?? ]????????@UH?? H??E ????t
?e ?H?M0?0???H?? ]???????????@UH?? H??E ????t
?e ?H?MH????H?? ]???????????H??@?D???????H??@H?? ?0???H??@H??????H??@H????H???????????????H??@H????M???????????????H??@H????]I???????????????H??@?I??????H??@?I??????H??@H?? ?`???????????????H??@H??@??S???????????????H??@H??`?m????????????????H??@H????M????????????????H??@H???-????????????????H??@H??????H??@H??X????H??@H????_???????????????H??@H????_???????????????H??@H????m_???????????????H??@H???P_??H??@H???@_??H??@?4???????H??@?$???????H??@????????H??@H???_??H??@H????^??H??@?????????H??@?????????H??@?????????H??@H???^??H??@H???^??H??@????????H??@????????H??PH??(鰲??H??PH??x頲??H??PH????M^???????????????H??PH????-^???????????????H??PH???M????????????????H??PH??X?-????????????????@UH?? H??H?MPH???L?
???A??P?M??H?? ]????????????????@UH?? H??H?MPH??HL?
ű??A??P?MM??H?? ]????????????????H??@H??(鐱??H??@H??x週??H??@H????-]???????????????H??@H????
]???????????????H??@H???-????????????????H??@H??X?
????????????????@UH?? H??H?M@H???L?
???A??P?mL??H?? ]????????????????@UH?? H??H?M@H??HL?
????A??P?-L??H?? ]????????????????H??PH??(?p???H??PH??x?`???H??PH????
\???????????????H??PH?????[???????????????H??PH???
????????????????H??PH??X??????????????????H??@H?? ?Я??H??@H??p?????H??@H???魯???????????????H??@H??鍯???????????????H??@H??`?m????????????????H??@H????M????????????????H??@H???-????????????????H??@H??P?
????????????????H??@H????Z???????????????H??@H????ͮ???????????????H??@H?? 鰮??H??@H??p頮??H??@H???鍮???????????????H??@H???m????????????????H??@H??`?M????????????????H??@H????-????????????????H??@H???
????????????????H??@H??P??????????????????H??@H????Y???????????????H??@H???魭???????????????H??@H??0?PY??H??@H??P?@Y??H??@H??p?0Y??H??@H????Y???????????????H??@H????=????????????????H??@H???????????????????H??@H??P??????????????????H??@H????ݬ???????????????H??@H???齬???????????????H??@H??@靬???????????????H??@H????}????????????????H??@H????]????????????????H??@H??0?=????????????????H??@H????????????????????H??@H?????????????????????H??@H?? ?ݫ???????????????H??@H??p齫???????????????H??@H??0?`W??H??@H??P?PW??H??@H??p?@W??H??@H????-W???????????????H??@H????M????????????????H??@H???-????????????????H??@H??P?
????????????????H??@H?????????????????????H??@H????ͪ???????????????H??@H??@魪???????????????H??@H???鍪???????????????H??@H????m????????????????H??@H??0?M????????????????H??@H????-????????????????H??@H????
????????????????H??@H?? ??????????????????H??@H??p?ͩ???????????????H?T$UH??0H??H?MP?????3?3???C???H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H???t???H??(H;?u?3?3??C????@UH?? H??H?UHH?MX?z???H?? ]?????H??@H???Ю??@UH?? H??H?UHH?MX?J???H?? ]?????H??XH??頮??H??@?7??????H??@H??????H??@?7??????H??@H???p???H??@?x7??????H??@H???P???H??@?T;??????H??@?H7??????H??@H??? ???H??@?$;??????H??@H??(?`a??H??@H??8?Pb??H??@H??H?P@??H??@H??X??;??H??@H???????H??@H??????H??@?;??????H?T$UH??0H??H?MP?J???3?3??B???@UH?? H??H?UHH?MX????H?? ]?????H??HH???@???@UH?? H??H?UHH?MX躟??H?? ]?????H??XH??????H??@????????H??@H??(?p??H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H?????H?? H;?u?3?3??HA????H??HH??頬??H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H??????H??0H;?u?3?3???@????H?T$UH??0H??H?MP???3?3???@???H??@????????H??@????????H??@H??(???H??@????????H??@H??(?p??H??@H??????H??@H????\??H??@H??(?@??H??@?T??????H??@鄼??????H??@H??(???H??@?d???????H??@H??(????H??@???????H??@????????H??@?$???????H??@H??(???@UH?? H??H?UHH?MX誝??H?? ]?????H??X????????H??XH??(?p??H??X???????H??@H???????H??@H??(?P??H??@H??H?@???H??@H???@??H??@H???0??H??@??7??????H??@H??p??;??H??@H????=???????????????H??H????????H??H????????H??HH??(???@UH?? H??H?UHH?MX蚜??H?? ]?????H??X?Ժ??????H??XH??(?`??H??X?t??????H?T$UH??0H??H?MP????3?3??G>???H??H?D??????H??H?t???????H??HH??(???H?T$UH?? H??H?MP??=??3?3???=???@UH?? H??H?U@H?MP?ڛ??H?? ]?????H??h????????H??h????????H??hH??(???H??x???????H??x?Թ??????H??xH??(?`??@UH?? H??H?UHH?MX?Z???H?? ]?????H?T$UH?? H??H?UhH?MP?!??3?3??3=???????????????@UH?? H??H?UHH?MX?
???H?? ]?????H?T$SUVWH??(H??H?] H?}`H;?tH?uhH??H????&??H?? H;?u?3?3????+0?+f?+??+??+??+֥+?+??+?+*?+D?+`?+z?+??+??+??+Φ+?+??+?+$?+6?+N?+j?+|?+??+??+??+Χ+ڧ+?+?+?+,?+>?+R?+h?+??+??+|?+:`+?_+?_+?_+X_+6_+_+_+?^+?^+?^+?^+n^+F^+^+?]+?]+?]+?]+P]+&]+?\+?\+?\+|\+T\+2\+\+?[+?[+?[+t[+T[+ [+?Z+?Z+VZ+*Z+
Z+rY+j`+dX+6X+X+?W+?W+?W+?W+zW+nW+\W+RW+HW+W+W+?V+?V+?V+jV+NV+4V+V+?U+?U+?U+zU+FU+U+?T+?T+?T+?T+S+$T+T+?S+?S+?S+|S+XS+.S+?`+?`+$a+ba+?a+?a+b+Pb+?b+?b+?b+.c+dc+?c+?c+?c+,d+^d+?d+?d+?d+e+Le+ze+?e+?e+?e+`f+?f+?f+?f+g+0g+\g+?g+?g+
h+Fh+?X+?+?o+?o+?o+p+*p+?p+q+>q+bq+?q+?q+r+tr+?r+s+8s+?s+?s+?s+Lt+lt+?t+u+?u+?u+v+Bv+?v+Xw+?w+?w+2x+`x+?x+?x+ y+By+?y+?y+z+Bz+hz+?z+?z+??+@?+?+??+z?+>?+?+ؑ+??+??+x?+8?+??+Ώ+??+??+X?+(?+??+Ѝ+Č+??+n?+F?+?+?+T?+?+?+??+8?+?+??+x?+0?+??+h?+(?+?+b?+.?+܅+??+?+?+??+n?+@?+?+ƃ+??+d?+8?+??+Ȃ+??+N?+?+??+́+??+??+\?+>?+:?+8+?~+?~+?~+|~+~+?}+?}+|}+X}+,}+?|+l|+4|+|+?{+?{+?{+b{+?z+ too long"??L'?L' invalid string positionstring too long"?,M'4M' "?\M'dM' "??M'?M' "??M'?M' "?,N'(?(PtrainIdx.empty() || (trainIdx.rows == query.rows && trainIdx.size() == distance.size())"?
@(d@(?trainIdx.empty() || (trainIdx.rows == nQuery && trainIdx.size() == distance.size() && trainIdx.size() == imgIdx.size())"?@B(B(PB(0"??B(?B( "? C('?C(`trainIdx.isContinuous() && distance.isContinuous()distance.size() == trainIdx.size()distance.type() == CV_32FC2 || distance.type() == CV_32FC1trainIdx.type() == CV_32SC2 || trainIdx.type() == CV_32SC1"?
E(?E(Hdistance.type() == CV_32FC2 && distance.cols == trainIdx.colsimgIdx.type() == CV_32SC2 && imgIdx.cols == trainIdx.colstrainIdx.type() == CV_32SC2"?|F(?F(PnMatches.type() == CV_32SC1 && nMatches.cols == trainIdx.rowsdistance.type() == CV_32FC1 && distance.size() == trainIdx.size()"??G(%?H(pimgIdx.type() == CV_32SC1 && imgIdx.size() == trainIdx.size()"??I(J( "?PJ(hJ(0"?	?J(
K(0"?
?K(L(?"?	M(
XM(0"??M(?M(0"?0N(
?N(0"?O(	0O(?"??O(?O(("??O(?O(("??O(P( "?+?P(NR(?buildWarpPlaneMapsK_Rinv.isContinuous()(T.size() == Size(3, 1) || T.size() == Size(1, 3)) && T.type() == CV_32F && T.isContinuous()R.size() == Size(3, 3) && R.type() == CV_32FK.size() == Size(3, 3) && K.type() == CV_32F..\..\..\..\opencv\modules\ocl\src\build_warps.cpp"?) U(GhV(?buildWarpCylindricalMaps"?)HY(G?Z(?buildWarpSphericalMaps"?`](00^(?buildWarpAffineMapsM.rows == 2 && M.cols == 3"?H`(0a(?buildWarpPerspectiveMapsM.rows == 3 && M.cols == 3?'? f?س?"?c(c( "?	lc(?c( "?0d(
`d(X..\..\..\..\opencv\modules\ocl\src\canny.cpp"?	?d( e( "?
?e(f(8dx_.type() == CV_32SC1 && dy_.type() == CV_32SC1 && dx_.size() == dy_.size()"?pg(18h(?calcSobelRowPass"??j(5?k(?-D L2GRADcalcMagnitude_buf"?n(1?n(?calcMagnitude"?@q(5r(?calcMap"?Xt(!?t(?edgesHysteresisLocal"??v()Dw(PedgesHysteresisGlobal"?4y(%?y(?getEdges"?{(({(P"??{(?{(@src.type() == CV_8UC1"?`|(?|(0dx.type() == CV_32SC1 && dy.type() == CV_32SC1 && dx.size() == dy.size()"?4}(<}(@"?t}(|}(@"?<~(#?~(?RGB2Gray-D DEPTH_%d"?p?(??(?Gray2RGB"?`?(#??(?RGB2YUV"???(#@?(?YUV2RGB"??('??(?YUV2RGBA_NV12"???(# ?(?RGB2YCrCb"?$`?(L??(8Unknown/unsupported color conversion codesz.width % 2 == 0 && sz.height % 3 == 0 && depth == CV_8Uscn == 1scn == 3 || scn == 4depth == CV_8U || depth == CV_16U || depth == CV_32F..\..\..\..\opencv\modules\ocl\src\color.cpp"?h?('?(?columnSumsrc.type() == CV_32FC1..\..\..\..\opencv\modules\ocl\src\columnsum.cpp%dCL_INVALID_GLOBAL_WORK_SIZECL_INVALID_MIP_LEVELCL_INVALID_BUFFER_SIZECL_INVALID_GL_OBJECTCL_INVALID_OPERATIONCL_INVALID_EVENTCL_INVALID_EVENT_WAIT_LISTCL_INVALID_GLOBAL_OFFSETCL_INVALID_WORK_ITEM_SIZECL_INVALID_WORK_GROUP_SIZECL_INVALID_WORK_DIMENSIONCL_INVALID_KERNEL_ARGSCL_INVALID_ARG_SIZECL_INVALID_ARG_VALUECL_INVALID_ARG_INDEXCL_INVALID_KERNELCL_INVALID_KERNEL_DEFINITIONCL_INVALID_KERNEL_NAMECL_INVALID_PROGRAM_EXECUTABLECL_INVALID_PROGRAMCL_INVALID_BUILD_OPTIONSCL_INVALID_BINARYCL_INVALID_SAMPLERCL_INVALID_IMAGE_SIZECL_INVALID_IMAGE_FORMAT_DESCRIPTORCL_INVALID_MEM_OBJECTCL_INVALID_HOST_PTRCL_INVALID_COMMAND_QUEUECL_INVALID_QUEUE_PROPERTIESCL_INVALID_CONTEXTCL_INVALID_DEVICECL_INVALID_PLATFORMCL_INVALID_DEVICE_TYPECL_INVALID_VALUECL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LISTCL_MISALIGNED_SUB_BUFFER_OFFSETCL_MAP_FAILURECL_BUILD_PROGRAM_FAILURECL_IMAGE_FORMAT_NOT_SUPPORTEDCL_IMAGE_FORMAT_MISMATCHCL_MEM_COPY_OVERLAPCL_PROFILING_INFO_NOT_AVAILABLECL_OUT_OF_HOST_MEMORYCL_OUT_OF_RESOURCESCL_MEM_OBJECT_ALLOCATION_FAILURECL_COMPILER_NOT_AVAILABLECL_DEVICE_NOT_AVAILABLECL_DEVICE_NOT_FOUND"?d?(	??(0, line , file ) in (OpenCV Error: unknown function"??(	?(0OpenCL DFT is not implemented..\..\..\..\opencv\modules\ocl\src\fft.cpp??????????????h '??[?س?? '??\?س?X!'?p]?س?"?d?(t?( ?!'?f??^?"???(??(0"?Г(??( "??(?( P"'?Pf??_?"?T?(\?(0"?t?(??( "?ܔ(?(?"'?@c??b?"??(?("?4?(= 0 && roi.y >= 0 && roi.width <= src_size.width && roi.height <= src_size.height(anchor.x == -1 && anchor.y == -1) || (anchor.x == ksize.width >> 1 && anchor.y == ksize.height >> 1)ksize.height > 0 && ksize.width > 0 && ((ksize.height & 1) == 1) && ((ksize.width & 1) == 1)"??( ?( "???(??( "?"x?(E??(?ksize == (anchor << 1) + 1src.oclchannels() == dst.oclchannels()src.cols == dst.cols-D RADIUSX=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D %sBORDER_CONSTANTBORDER_REPLICATEBORDER_REFLECTBORDER_WRAPBORDER_REFLECT_101row_filter"?"H?(EX?(?"?"?(E(?(?"?"?(E??(?"?"??(EȮ(?"?"??(E??(?"?"X?(Fh?(?-D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D CN=%d -D %s -D GENTYPE_SRC=%s -D GENTYPE_DST=%s -D convert_to_DST=%sint4convert_int4_satconvert_int_satfloatconvert_uchar_satfloat2uchar2convert_uchar2_satfloat4uchar4convert_uchar4_satcol_filter"?"0?(F@?(?"?"?(F?(?"?"??(F??(?"?"??(F??(?"?"??(F??(?"?%L?(Lt?(?-D RADIUSX=%d -D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D ERODE %s %s-D RECTKERNELunsupported type-D VAL=FLT_MAX -D GENTYPE=float4-D VAL=FLT_MAX -D GENTYPE=float-D VAL=255 -D GENTYPE=uchar4-D VAL=255localThreads[0]*localThreads[1] * 2 >= (localThreads[0] + ksize.width - 1) * (localThreads[1] + ksize.height - 1)morphlocalThreads[0]*localThreads[1] * 8 >= (localThreads[0] * 4 + ksize.width - 1) * (localThreads[1] + ksize.height - 1)morph_C1_D0(src.oclchannels() == dst.oclchannels())(src.cols == dst.cols) && (src.rows == dst.rows)src.clCxt == dst.clCxt"?%P?(Lx?(?-D RADIUSX=%d -D RADIUSY=%d -D LSIZE0=%d -D LSIZE1=%d -D DILATE %s %s-D VAL=-FLT_MAX -D GENTYPE=float4-D VAL=-FLT_MAX -D GENTYPE=float-D VAL=0 -D GENTYPE=uchar4-D VAL=0"?
?(p?(?pc?pc?pc?v?v?v?type == CV_8UC1 || type == CV_8UC3 || type == CV_8UC4 || type == CV_32FC1 || type == CV_32FC1 || type == CV_32FC4op == MORPH_ERODE || op == MORPH_DILATE"?\?(??(`iterations > 0"?X?(??(Xunsupported border type???????"???(??(?unknown morphological operation"?%??(I??(?-DANCHOR=%d -DANX=%d -DANY=%dfilter2D(borderType != 0)"?	,?(t?(???????(srcType == CV_8UC1 || srcType == CV_8UC3 || srcType == CV_8UC4 || srcType == CV_32FC1 || srcType == CV_32FC3 || srcType == CV_32FC4) && dstType == srcType"??($?(H"?T?(\?(0"??(??(?-D anX=%d -D anY=%d -D ksX=%d -D ksY=%d -D %sBORDER_WRAP is not supported!boxFilter_C1_D0"???(???(?boxFilter_C4_D0"?H?(?@?(?boxFilter_C1_D5"???(???(?boxFilter_C4_D5"??(
8?(H???????????0??0??"???(??(8"??(?(0"?L?(
|?(?P~??????`???????"???(
(?(?p????p??(?p<??O?"???(??(H"??((?(`"???(??(X"??(?(h"?h?(x?(h"?	??(?(8????????ksize == 1 || ksize == 3"???(?(h? 0 && ksize.width % 2 == 1 && ksize.height > 0 && ksize.height % 2 == 1@"???(??(P"?X?(	x?(0OpenCL BLAS is not implemented..\..\..\..\opencv\modules\ocl\src\gemm.cpp"???(??( "??(?( "???(??( "???(??( "??(?("?8?(@?("?|?(??("???(??("???(?( "?$?(,?("?l?(t?("??( ?("???(??(??(("?H?( ?(X?( "???(??(??( "? ?(??(0?(0"???(??( "?@?(P?( ..\..\..\..\opencv\modules\ocl\src\gfft.cpp"??($?( "???(?(?sortCorners_selectionSortFinalsortCorners_selectionSortLocal"?l?(3<)-D WITH_MASKfindCorners"?<)D) "??)?)?)("?)4)?sortCorners_bitonicSort"??)?)?)("?p)?)"??)t)?)0"??)+p)?????????mask.empty() || (mask.type() == CV_8UC1 && mask.size() == image.size())qualityLevel > 0 && minDistance >= 0 && maxCorners >= 0??8"??)	) "?0	)8	)"?x	)?	)"??	)?	) "?
) 
) "?H
)P
) "?x
)?
) "??
)?
)"??
)?
)"?,)4)..\..\..\..\opencv\modules\ocl\src\haar.cpp"??)?) "??)?)"?()0)"?h)p)"??)?) "??)?)"?
) 
)"?H
)P
) "?x
)?
) "??
)?
) "??
)?
)"?$),)"?\)d)"??)?)"?)?),) "?l)t)"??)?)"?)?)$) "?l)t)"??)?)"?)?)() "??)?)?) "?8))H) "??)?)?) "??)|)	?)H"??)?) "?4)D) "??)?)?)0"?l)D)|)0"??)?))0"?t)14)??%rectangle #%d of the classifier #%d of the stage classifier #%d is not inside the reference (original) cascade windowheader of the stage classifier #%d is invalid (has null pointers or non-positive classfier count)Negative number of cascade stageshid_cascade has been already createdInvalid classifier pointer"??)\)???Scale must be positive"?)	0)?"??)	?)0!_seq || _seq->elem_size == sizeof(_Tp)C:\Users\vp\work\pkg\opencv\modules\core\include\opencv2/core/operations.hpp"?T)d) "??)?) "?T)l)??????ư>"??)?)h"?=?)u? )0????????gpuRunHaarClassifierCascade_scaled2gpuscaleclassifiergpuRunHaarClassifierCascade-D STUMP_BASED=0-D STUMP_BASED=1Image too smallscale factor must be > 1Only 8-bit images are supportedNull storage pointerInvalid classifier cascade"??$)3|%)?"?&?')I))??
?<??<6?3=??}=.?=d7?=F??=?Q>U?
>?Q>F??=d7?=.?=??}=6?3=??<???)'>oC>^?V>?t]>^?V>oC>?)'>?Q>???=?ʏ=???=6?3=?ʏ=???=:4>7?I>&?z>°?>??>?8?>??>°?>&?z>7?I>:4>???=?ʏ=??}=???=:4>^?V>a-?>E?>???>?2?>"i?>?2?>???>E?>a-?>^?V>:4>???=.?=?Q>7?I>a-?>?Z?>"i?>?	??~??E??~??	?"i?>?Z?>a-?>7?I>?Q>d7?=?)'>&?z>E?>"i?>J??c?*?)K;?+=A?)K;?c?*?J??"i?>E?>&?z>?)'>F??=oC>°?>???>?	?c?*?}_G???Z?Q?a???Z?}_G?c?*??	????>°?>oC>?Q>^?V>??>?2?>?~?)K;???Z?`}p??x?`}p???Z?)K;??~??2?>??>^?V>U?
>?t]>?8?>"i?>?E?+=A?Q?a??x????x?Q?a?+=A??E?"i?>?8?>?t]>?Q>^?V>??>?2?>?~?)K;???Z?`}p??x?`}p???Z?)K;??~??2?>??>^?V>F??=oC>°?>???>?	?c?*?}_G???Z?Q?a???Z?}_G?c?*??	????>°?>oC>d7?=?)'>&?z>E?>"i?>J??c?*?)K;?+=A?)K;?c?*?J??"i?>E?>&?z>?)'>.?=?Q>7?I>a-?>?Z?>"i?>?	??~??E??~??	?"i?>?Z?>a-?>7?I>?Q>??}=???=:4>^?V>a-?>E?>???>?2?>"i?>?2?>???>E?>a-?>^?V>:4>???=6?3=?ʏ=???=:4>7?I>&?z>°?>??>?8?>??>°?>&?z>7?I>:4>???=?ʏ=???)'>oC>^?V>?t]>^?V>oC>?)'>?Q>???=?ʏ=???=?;@<?<?<=0=P=p=p=P=0==?<?<@<?;@<=p=?=?=>>4>4>>>?=?=p==@<?<p=?=>4>\>?>?>?>?>\>4>>?=p=?<?<?=>D>|>?>?>?>?>?>?>|>D>>?=?<=?=4>|>?>?>?>???>?>?>|>4>?==0=>\>?>?>?>?%?%???>?>?>\>>0=P=>?>?>?>?)?C?C?)???>?>?>>P=p=4>?>?>?%?C?a?a?C?%???>?>4>p=p=4>?>?>?%?C?a?a?C?%???>?>4>p=P=>?>?>?>?)?C?C?)???>?>?>>P=0=>\>?>?>?>?%?%???>?>?>\>>0==?=4>|>?>?>?>???>?>?>|>4>?==?<?=>D>|>?>?>?>?>?>?>|>D>>?=?<?<p=?=>4>\>?>?>?>?>\>4>>?=p=?<@<=p=?=?=>>4>4>>>?=?=p==@<?;@<?<?<=0=P=p=p=P=0==?<?<@<?;??"?h+)p+) "??+)?+) "??+)?+)"?,),)"?h,)p,) "??,)?,) "??,)?,)"?-)-)"?L-)T-)"??-)?-)"?8.)@.) "?p.)x.)"??.)?.)"?/)/)"??/)?/)?/) "?@0)0)P0) "??0)?0)1) "?2),2) "?3)?2)(3)0"??3)|3)?3) "?,4)4)<4)8"??4)1\5)0cells_per_block == Size(2, 2)cell_size == Size(8, 8)block_stride == cell_sizeblock_size.width % cell_size.width == 0 && block_size.height % cell_size.height == 0(win_size.width - block_size.width ) % block_stride.width == 0 && (win_size.height - block_size.height) % block_stride.height == 0..\..\..\..\opencv\modules\ocl\src\hog.cpp"?7)L7)?checkDetectorSize()"?48)D8) "??8)?8)?8)8"?$9)D9)H"??9)?9)(??>?Uʽj??AI?=?i?>!?>	q>e?{=|?h>???ԛ??:?B=ߌ?=?9=?E?=?Ǽ?
?>?d?>ˍ?]?=S?>{h?>v>?bb={1??*?>v?>פ?.?F>??f=??Ӽ'
??c ?"R>?I?=?*??ͽ????s???c?/=,D??H?>%@}>?_???MF?Z?~??TF>~?;?a=??=??+>[?+>?ɚm?=?b?=?????H??̽x?w>CW½[z4??\?:J?	????=??P=?9?=?Ɠ=?!?=I.;?????pAv??x????H?????o8???$??=?	?]?۽Q>?>Di>If>???,?=???VF?<(ђ=RI?9?򟼡???G?'??ٱ?,??=6?u>?ۇ>??0=??*>?K?=?y=?o??t??u??=Ea>~?!>*???10?1??=տ=?^?=@L?=??=
>jk$>?J-??e?.???Jj????uf<,ָ>??>jڥ?LĻ??Ə=?_>?<=???[??;
e??~?>0???%?I?[yɼ??6>?^M?1#H?
>???=?ֽ:??>?i?@=f??=??=?b?=a??????)???y==?н⒣?????׹??g?=??Ƚe?_??h%=??>??>?=?=?-B=???=?C}=E
&?WvQ?-	???=?R???T޼?	??>???=
8?=?	?+>?[Y=?NN?q?0=|;??=t???????>?2=[}??>?/??
=pC?=?|??U?=d??pA??թ=jj?;Rݽ)??<
???pB?bK??
D>?????????????C?=?7?=6?ڽ/?????0>C?=A?>?j??߽???=6?P??ͽ9'v??2=)??Q1N??9??	?OWw??N+?o????(????н&U۽?,??8=y;B>qT^>???x?R????Z?????{?6?]??R,????=_읽???h=\U?>(??lv?=f2\>?cj>??=sG?=??=xC?=?x?=???=??H???(>KY&>??(=?
"P>?o~>?g>%??c???????Z޼???????o?&??G??'l??z>`s?=M:>Ɔ.>t?>??>7ݪ> l>?C=?!8??p???>:?7??4?=?g?=?۽[????S???=????~???n=??Y>*?????H?'??2W>???=f?}??=?-?Uj>?鴾\s7??F?="9?>8??v?@?_?"?X??>I??=??V>b??>?ҷ>?|?>Ll.>?.`??
U?$|o=?????;r??g???????o?[?Ͻ???5???;s?=c?o>f?>?ˤ>??u>?	?=CqG?}??<4?M=2*>.sj>?}=
7 >?R>?"?=P?=??+>ۇ?>4??>mtN?(eB>?ݜ>?r?=??ý{1????'?e?????MhR=?s??p???????r@?v?O?wMH=?|>?;?>?^?>I,?=?s\>$?@>??-#U??]???j6>?E>?1??q9??	?=5??=????ž??>?͉>]O??6?Vb?=Dk?>h??=?(H>?q??:+>?xA>-@[="Q??(?>b????[?=?>??~?M7??v??v>?{:?Z)?=???/?=J@l>Q??>W?s=?8?b?f??????C????*A?\WL?Ɉ>?kn=@?4?L7	=??6>O?=J??=?3?=fg1>?٘>"m?=жZ=r?2>?l>Ϊ?=X;*>l?i>1	?=?25>??:????~?a?S=???p??l?%;v??????
>ɎM???»B?=?>SZ=??>O??=?2K>? |>u???%?I??=?A=??^????=S?<80?<{?{??s???)?=V??N=??8=??*>??=?Gw=??>??-??/!???B?.#?*7Q?+ٱs????1>r???????=VF???P???O????S?.?=??=Vf?<;??l$???Eɽ?߀?R?=aqs񗽩i??L???K:J?=?1?FaW=?5=a??=,??=?x?=??6?7E??a(???:=¢R>OxI=񂨽i
>s?=>?:=f???K#?մ?%[]?C:???=N~?;,}(?$?{?~??|G???]7??m;??d??\ݽJ
??V?:=9cX=????????W?	>dEd?=?>??> ??=???/3,=????d<x?>^?3>??<,D?=2s?=n?&>?G>܀o>#K?>?j?>?1?=s????%Z??(H?/?T??!.?@???>?>?$?>?T???>?>?D}>t?Y>a???????),??&???v>8??=?zk??????bj??%O>?̾q???EĽYN??}?%??R?????w>u"A<ǻ?=?!?>???P?>|c?>?}1>??&;S#???G?>????-\??_?
??.B?J??
/?????r?Y>6???C?=???->|?>p{?>w
??j?>??j=????;??=???>??V>>"?>"??=?R.>\8>?]?>я=??<-?L=?-??3=K??	???_?>?=.?>C?.>3??n?>r|>QN?>~->?c>?d?>,?=?????>Dު>1?>???>??>??^>??;?????=|????}	?S穾???i?=\=?^??>TW?>???=#?>???>??l>q?d˲??????~????=#?W??uo????mr??'??\?<?=-?;Bٽ?q??P?y\??5?ͼ?eU???м?>?
F?bٽ?8??????J?=?˧>??=4??f?-;?//?j?@???]??V???^?%? >?i?1]?=hB?Ӳ=?J
=???>?{?M??;@???Ľ???U?^?XXp?"??ܟ+>??>??.??`=??>(IW]?X???!>??6>d]ܽs&?.=K??=?F??eR?=
?????<6??1(S=?Q?G?1>?~?=?A??g
??mڽ$	B??J?ͭ`>??;>??`?o>ڒ=}쮽S?j??(?ձJ??d >3?T??????=N+>A?>;?)W???I??=?5b>?n??HG=X?=ꔇ?Dn?P?^?)???Χ????k>?ݐ?HQ?=l\>ú?=f????O??CC?)??=??2>+????????ck[Υ??yz?q8?-?	??_?<3?E???? `??}????'?9?#iW?x^*?6Z=	n$?F?=K?<????1???G???F(?+?">~?=?^?=??2>??=p?s???3p?=?+?=??g=???&????jO	=Aʼ??	>??=z?>Ĕh>??<{?;?8->in?=?ȓ=G?>?:?=]^=???=/??=2??=&??^}>??K>AY>??>??????G?8?L????#?`ʻ?=?????>}@p>)>9ղ>M?.?9? >6??=??=??=?\~???Uټ7????H=???	??;?5?r???1y?>?A8?{?\?;!.>?m?=\>ҽW??A?~>^fX>???>??>!">???=?h>?T6??뽁??$	B???Ƚ?ͦ??H>29?=?k?_y???-@=6Z?=`>??н??s=?;?=?(2$??>?	?>|G>??>2u>?[?=-?=j??=??>O=>?=??f>??=)??-?T???2????????'h#>K;??U?????=DԼ?ꔽ?????U>6!-=???>?7?-?^>?\???l??Zg,?W
A=?M?=?ཫ?????W>~?>z?2?????zs?I
??p??Y?Խ"=O?>W?>	?;??????W???????i?????5&?=??>h\x={????IT=i8?<o?@??!?½C??]?5>6?<㨼??늼?	????T;?Ϟ˻?#??:?=?і???)>?/?=??4=?>=?HZ=Q0c?&~&?m>??????=?뻽???;OV>6!>??ZE=?g=~??=Pō=?bG????ҋ???!>?5??N??=?l>1??=?H????s=?[????????m>Zc >Ժ
=?>?9)=?t
=Ց?<3???TF?o??>?zX>??ͼ???=}?*?=????$??6??X?W>Ѯ?=i??=???bL???Ur<?Z????[I??m	M??=???=??C>???=^?T>.??k+>a?ü'JB=?,?>:@@>?q>?#>
??==F9=|e???g??)???Ѽ????b(>4?7s???Y=??=?@?=??=~>?k????rU>??Q=?_?=
????F?.U齕?>4?C>)?=?==???G????ʽ?(?%/??,P>?[???-=?/d>??J_?/l??V??5?=H6>@?u???????ャ6???˽V(>6?ڼu????t>I0ջfI<̆=ʇP?ıν3?[?????B?z==>D??=*?$?h>???I??L?,??[/=2?=:z??EԄ=sK+??a?0u?E?սz?m??z[?)??<,?;??ͽ?<;??G?f?
????Q=[$]>&?0>
`?yu>?4???uWF?
%???t;|????
?=I?B>TW???p?=x
Z>?:G^=[?`>?<>dɄ>eV?>g?=?D?????0g~?>c*};?Y?qư=?>û?=$?;%?@??>?\>T??>??>?&s>?o>Xq?>??,>?[U?q???(?d?>0f?>??>?;>-?^<??=?wo????F?ҌE=;??>~Q?=p??~r$>=??fV?ѱ?????=?=$>??8>?\=?Z?=qǓ>+n=x
:>?1k>p]?>b؁=???;??j2?>??3????=?X;?#2>????q>?
Z?ܠv???ν$B?=?YQ=?%>B?=?R#>X9?=r??<*??<????=??5???%???g>?j???s0=s???_=t?Ͻ.???$?j
>??>???=&?=e?????=O ?)??<˿??k>,?D>?kH?}>J;\?.?D??=?9?????=??v=?s?tz>?#??>=-??=?%>'??=D??nG>??,=b?!?Y??E??ù??E??p|???&???н?]>QM???g?=8?K>?/>-@+>x(
?M-ۼ}A?=?>mo7?=?????@¾]>???C??=MY<߇3>??E5?>a?=??J&???{@?W?>w?|?=??j=???=??N?g?ƽ?=
ƽ邽??N>?=>???u?v????d??N??=p$???S????<?=?$?=m?^=r!?^????/>?潘?^?=??=d?v=C?D>ۧc=?@?W???]h=?(?J&????
??? ?%??=?oo<??=
??=?2g>vŬ="???S=?F?6??
?x???-;E???nC=?-=Cǎ=/?x>>u??ӑ=[??_D=qt???j????=?x?=W??s??y?e?.?-ݼ?1L?bY9EG=z/??`M?є]=?B??5>?GD=p^??vN=??۽J????"T?='??撪??Ni?9}==??1????4???2?? i??D8??????J??+???޸=?GC???=?0?=Q?>#?=?=??????̽?~M??s~=??o??d?????Uގ??7??y????!ź>
=?!8?-N?ׇ??
?2?f???mpR??`??1>?S?=1 >hy?=?&?=?kt>B?=qr?=?Pe>?̈>?V?<^?????=0I%=8J=}?P?@?>-?X=???am?=X$>eo)?!?Cw?>P?
????>T?s>?=Q??=?)<?2???????W>
I&=?<[??}>? Q>?/??s??R????<?=?y?>ͼj???;??W?n?pCL??\ ?s????兽C?"??9)?9)(?==9?_?ԗ?=#|?=??????5?=O?O<??=?6???>&?=dU???0??O?=Q??=???L?a??6?r?DT?=?[=G%????5?;??=G?f=&XV??Nͼ[?o(_?ok??hik=S????=e??:?;?ҡ???????|??*?7=?)?<I;??=?\;Y޽tN???׽?혼?n$>?K߀=ܖ??~5?=?eZ?H=?j??߼??*<Ѫ???=?2z=?X?=떐=W)9=?P5?מ>\??=?R?nx=?N)=gɼ:=NĽ8e"??X-=?e?<?7????P??<{n?=???=5)??b???P??ނ?X?Z???1??Nn??\???i=?y>?@L?.??=8?M=?(>??=?,?=ǗysX?=??/=??	?Yu??Os8؅?p??‡???*?=??z??!;;?}?=m??0?????%?z?^????P??>?>??\?0??F??z_{??Y?s]????~???e7?Bz??C?=?U>'绽?::u?=?Ó=O?ܙ??6??5????\??r<0??=??C??n??????DZ[9q?????=?Y?_KA?&;Ҽ??X?9?4?Ch??3?
P;??ܽ•??5???'??C?[?=P??=?qh=???=?I5????\>/?^>eB>ֽ<>_ںg?;??l&??=b??=?Sb=Y???h?&?M;?
?(??k?)w???%?w???Z:;W?N??κ?c??;?H?=???=?š;'??;????????7=*?????=??V=䷰y?=4ɟ?g?;?????'t???Yᠽ??<?
?fG??p!????(X?;?
q?=w^
>???=?-B=?rar?d>??=۳???Ͻ??N?vN?0?>?_?>?ذ>l??>vig=}?(=r??=?H?0
???=K|?)Ƃ?X??=*??>A?>̚Y?J??k???????=?R<>?4?>?7
=?h???9>I4a;?????I>?"?>a?>????V?>??>ϕ?>N?<Jʽ????2?=??????͋1>+A=??ս??*??%????'WE?Ŝ
?Y?c>???>).?>?I??}&?"?=??F??????=%~;5?z?^??????1??>=ai=.??=;?Ż^.?&?D=??=?؝??5~=?	>j???5?C????h?;q?=???=?͈<;?<|??????ڽ&Խ??L?ϳH????WU?=????'???z|??8?7?a>?d????m<񫁽????;?q?<????0߽5񣽵??6]}?z?aԂ?=???=[d????&?pǼ???A?-?h?F<Չɻl?=?<-x?1?>?????@>?h?=kA?
I??j???Z?=?;?-??=1?>+?=???S]>v?潽U??9??&???4?ԓ=??X???=??R=????=?*????0????(=&l??=??0??+??1q?;?=G?={??=(???<1??`???H??????
ļ?ф=???O?<&?>Y2'???n??㎫?????hPL=Z-^=|???Z=;??Ϙ?f?i??:???a????^??ٌ??q?<:7?<:???"{j;VvϽweټ???????G??؄=?zI>}I?+?????F???*?!????==l?u?K=lǨ=?&???z???????;??ѽf?<,
?;;???X9???]??"i:???!t?FU????{?Ѷ?????='?5>5??9vS=L?ɽ?
½???RP&>6F>@|P	=젷?_>??3?A?[>?W
>j?V>?)?=^??=c?=-N?=Kd?=???=??>#e?=?j>??G?R?=??=??A=?Q2?`?lW7?ֽ?f	??؇??????Ys????]jC>*D4>?R?=?C?=
??>?ڐ>x?>?#>?>?i?.?????t???Q=z?,??ݽ??ƽyX?pB????ǘ??H???\/;O?q?ɽՒ??3>?U4>?$?u??Ta????=?j???????C?>?->?K???;r???!??g?;?f?򐕽O_?????=%b>?c?c???j=?~G>R?$=ֹ?????????>M?Ž?6???=?z >?.E>j$?=7?
=?r?ezf?-ظ?	}p>.f?>?Ո>Be>?d?=tW?	b??Q??ُ=Ψ?=9?9>u.M>?
>~????㽓OA??x=S?R>q8?=5? =?a?>?
?>???>A????u*>?NE>1??<3?v=(?;?KL?=?cB>?%!>V,><????+~?(??=?Q>??z>?u:>?N>?t=Vv?ν???>O?>[#b=?=??C??`?=???>j?>?b?=/?>??J>u??=?G?K[?????e|???)??xB!???C=?M=?V??\?N?????Ђ>4?f>?t>??=谊>??>?V?=??=?!u0???*??1$=,=H???q???E?}?U?^M^?H???G?<o?,?x?x???C4u=???O@?????ぽerI<K?=g?=V	?=z??=.0???&?@K??S?=???=EUP??f=???g????P뽂???9?t?3?@=?8=*/ѽ????sE???`?y4`=?t?=?qd=?#????
==?V?????v?x;?-=8q+>ό?=a??=/+???S;??;+3?gA?g???
$f?sՠ?ʳ:>6??d=??
???M<	\??{?r?4]???b0?=??=?e=. ???f=Ƚ\??+?N#? ?x=?'?=> ??P?????	??粽6U?=?'???
>??=a??`??3g????W??=z?t??????g=RH1?ʯ??.?g???н??b?;(N> ?{??}???q==l??٨y?G???????J???[$>¸=)??=??
=gV??sл??????Q???ս??*P
{=?q?.? W?????-?=??=??+=?:?=.<?=??g=s?p=
??<???&?%zN>{"?=آ=y?=?????
??_??????=??6?p!??ڀ
?????l?=?ջ=ϰ?=Xwo>??>???=R?<??=Wƛ=???9 ????Y9??np=2B?????!V;??)?n?<{~Ἷ???b?????:?1̼?+)?????A?7=??R=?8?Џd>'qx>?3=?a?w@/;?
???=|=
X=y3?>`*?>??>}?@>????74????{˽,???GY?????;??Yʙ???o<ͩ????8??a
?9-??? >??i=??>l>.?}<2?N????/?k???I?J?=??v>섇>?K?>??=M?3???_??%/>xM>?c/;??B??h;>p??=<4??]?????a????='O׻????>T?>?=>W??o?????֟??&d??5W2??E:?qe=J>?-K?-ޝ????=x?4?U???J=s8?>$??>?r?>?Q??M?[?s????H??????7?=?xB>???>????>??uo=?뱻??~="?????6m??>K?>,?=L
>q_1=P"N=?f?"??<^?3=?d>?? >B@@??L???=_?=F?S=F==I\1=??ڼ?3??M?????@>???=?0=R?<${???!r=P?ؽq?F?X??0@?=?=Ǻ???]?;?w׽??=-????Tʽ??R;??>?d??R>?+>a??=MU???=?.(=??0=??=?L)?????@?<3??w??=Q?4?S?#??j?<
OV?D?ݽ1q???r=?OϽ??N>?|?=??????=E??'d??&?ǽf?o=???=?L>(?=??#??z?<?;??
???=qT=V?=?v
???,(]??????A??)н[??=?g?=k̜=??L??N?N???l?????kKi????=???=???m=?<+?<?=􀛽??}??.????l??	0?e????z=??????S`??O?ב??v﬽Pؼ?&????:=4oɫ5=G???3뼋4ܽ???K??????>:?q?l??B<ս??:?>?|E:=Y?i??۽?!
?Rq???6???ᅻ)?Z???2=\????i?H????>to?=Ak?=c??=/tC>?>>?Y>Fz>??T?->8(?=[?'>?|a=#p
????=A??=?"=?˦<}??;??=>ؔT??н??>o>?
>d?>?]?>?u?=oܔ=?J>;%>?z+?????ɽ??=̿?=?!?S????3??*????;R?O?>1?u?.^=\ ?<\%=???=?w?=?7?=ꆢ=]?9z???0??PH=<6?????(p?x???????$?ӈ???=?ٙ?]?<_i?V??????dF?2???i?=?~??z?ۼ?^??۠x?p?;B??;?Ͼ??g;?{?>_?>???;㼘?V?w
??֧??F"ѽ???e?>
4>Ə;4?u??J?= >??)=?b?<|7>5?K>"??=?????&=?j=???:?j??ј<\??=??
>
*?=??#=~?=5?׼i?
?4?B??x????;??=?ȼ??`???>?9[??z??-w??????ԓ?2E?;n?ٻh|??Y"?;"b????-???o?)?T?ֵ?=P=?=A9?=?Y?e=:.E=??Ƚڦ???0?=?U=w?)=^ŀ;??N?gn#>??<=^???w>???a?Ƽ՗0?q0=????CB???M?h$??O?_;?6f?ŗ?`?u??	???Q;?_???7n=nʼ??=??
>б>oԍWw<=?8(=sN?=J4?=?gX,%>$,8>?
?=??=?d?=2c?=T?=?z??=O??<V?=rM@>??=???<ֲo=
?
?lw??B????=Kt??u?M?=??=?$6?7J=?s\˨?=z?2?4I?g?=???=?1w??#?=#?=˵?=?@?<㡿;Z?r??#?=??k;z?D;?w=S^?<@?*=?(????^?=}+?zڼ?x?????~r??\?=3N?M?;???)G=n??b?g?n|?<??q
=?2???????=y???5=???=P?????x=??~??N?<#?;?T??T?W?L??;???=:?????M!???];??-;X?	=?ż??-?xq?=*N??"??:)5?;)???@compute_hists_kernelcompute_hists_lut_kernel?@"??=)H>)?-D CPUnormalize_hists: histogram's size is too small or too bignormalize_histsnormalize_hists_kernelnormalize_hists_36_kernel"?@)5?@)?classify_hists_180_kernelclassify_hists_252_kernelclassify_hists_kernel"?XC))D)?extract_descrs_by_rows_kernel"?F)-?F)?extract_descrs_by_cols_kernel"?I)1?I)?compute_gradients_8UC1_kernel"?0L)1?L)?compute_gradients_8UC4_kernel"??N)	?N)@-DT?!	@img.type() == CV_8UC1 || img.type() == CV_8UC4"?@O)?O)XUnknown descriptor formatwin_stride.width % block_stride.width == 0 && win_stride.height % block_stride.height == 0"?DP)?P)?padding == Size(0, 0)"??Q)'?R)scale0 > 1"??S)?S)("?TT)\T) ?%'??(
????????(
?س?س?س?س?س?س?"??T)?T) "??T)?T) "??T)?T) "?U)4U) ?&'?0-
????????9
? ???&
??&
?'
??+
?'
?"?lU)?U) "??U)?U) D@"?V)V)0"? 0 && fy > 0)src.size().area() > 0interpolation == INTER_LINEAR || interpolation == INTER_NEARESTsrc.type() == CV_8UC1 || src.type() == CV_8UC3 || src.type() == CV_8UC4 || src.type() == CV_32FC1 || src.type() == CV_32FC3 || src.type() == CV_32FC4"?'Hl)O?m)?Non-supported filter lengthmedianFilter5medianFilter3medianFiltersrc.cols <= dst.cols && src.rows <= dst.rowsm <= 5 || src.depth() == CV_8Um % 2 == 1 && m > 1"?E?p)??r)?unknown depth-D GENTYPE=double -D %s-D GENTYPE=double4 -D %s-D GENTYPE=float -D %s-D GENTYPE=float4 -D %s-D GENTYPE=int -D %s-D GENTYPE=int2 -D %s-D GENTYPE=int4 -D %s-D GENTYPE=short -D %s-D GENTYPE=short4 -D %s-D GENTYPE=ushort -D %s-D GENTYPE=ushort4 -D %s-D GENTYPE=char -D %s-D GENTYPE=char4 -D %scopymakeborder_C1_D0-D GENTYPE=uchar -D %s-D GENTYPE=uchar4 -D %sunsupported channelscopymakeborder(src.cols > left) && (src.cols > right) && (src.rows > top) && (src.rows > bottom)(src.cols >= left) && (src.cols >= right) && (src.rows >= top) && (src.rows >= bottom)top >= 0 && bottom >= 0 && left >= 0 && right >= 0"? ?w)??x)?warpAffineCubicLinearNN"? ?{)??|)?warpPerspective"?
?~)L)0interpolation == INTER_NEAREST || interpolation == INTER_LINEAR || interpolation == INTER_CUBIC(src.depth() == CV_8U || src.depth() == CV_32F) && src.oclchannels() != 2 && src.oclchannels() != 3"?
L?)??)0"?D?);= blockSize / 2 && src.rows >= blockSize / 2"?
P?)??)HcalcMinEigenVal"?D?)=??)?meanshiftproc_kernel!(dstsp.step & 0x3)(src.cols == dstr.cols) && (src.rows == dstr.rows) && (src.rows == dstsp.rows) && (src.cols == dstsp.cols)"?
??)H?)P"???)1??)?calc_sub_hist_bordercalc_sub_hist"?	l?)??)?merge_hist"?\?)
??)?mat_src.type() == CV_8UC1"?L?)??)XcalLUT"???)+??)? -D WAVE_SIZE=%d -D CPUcalcLut"?̡)3??)?transform"?X?)
??)?p?C"?(??)Q4?)@bilateral2bilateral???(src.channels() == 1 || src.channels() == 3) && src.type() == dst.type() && src.size() == dst.size() && src.data != dst.data"??)	?)0Bilateral filtering is only implemented for 8uimages"?#Ъ)E?)?temp1.cols <= 17 && temp1.rows <= 17temp1.depth() == CV_32Fsrc.depth() == CV_32FC1"?0?)??)8convolvex.type() == y.type() && x.size() == y.size()t.depth() == CV_32Fx.depth() == CV_32F"???)??)?"?د)?)?"???)??) bad cast"???)??) "??)?) "??)?) "?D?)L?) "?|?)??)"?̱)Ա)"?4?)= 0 && dnum < (int)devices.size()"?\?)d?) "???)	??)@wb+Failed to allocate host memory."?$?))??)8localThreads[0] * localThreads[1] * localThreads[2] <= clCxt->impl->maxWorkGroupSizelocalThreads[0] * localThreads[1] * localThreads[2] <= kernelWorkGroupSizelocalThreads[2] <= clCxt->impl->maxWorkItemSizes[2]localThreads[1] <= clCxt->impl->maxWorkItemSizes[1]localThreads[0] <= clCxt->impl->maxWorkItemSizes[0]"?X?)h?) "???)??) "???)??) "???)??)??)("??)?) "?8?)@?) "???)	??)("??) ?)("?L?)T?)("?|?)??)("???)??) "???)??) map/set too long"??)?) "?T?)\?) "???)??)("??) ?)(p,'??t???"?`?)p?) "???)??) "???)??) invalid map/set iterator"??) ?)0"?D?)\?) "???)??) "???)??) "?(?)?)8?) "???)??)??)("??)D?) "???)	??) ./"?$?)
\?)0Error: Failed to open file %s
"???)??) "???)??)0"?H?)*8?)hWarning: code cache has been full.

			BUILD LOG
Failed to build the program and get the build info.1 == fread(binary, binarySize, 1, fp)rb.clb _programCache != NULL"???)?)p_D_C"???)??)x"???)L?)p??.A?C"???)??) "??)?) "?H?)P?) "???)??) "???)??) "???)??) "? ?)8?) "?x?)??)H"???)??)x"??)?) "?4?) 0"???)??)H"?8?)	X?)8kernel != NULL"???)	??)8"?D?)\?) "?8?)??)?memsetKernel"??)??)?normalizeKernel"?X?)1 ?)?forwardWarpKernel"?h?)%?)?blendFramesKernel"?T?);= templ.cols && image.rows >= templ.rowsimage.type() == templ.type()"?d
*?
*@0-'????????????????§?ȧ?Χ?ԧ?ڧ??????-'????????????????§?ȧ?Χ?ԧ?ڧ?????????????????
????????"??*	*0src.flags & cv::_InputArray::OCL_MAT..\..\..\..\opencv\modules\ocl\src\matrix_operations.cpp"?t*	?*0"?**?*8The total width is not divisible by the new number of channelsThe total number of matrix elements is not divisible by the new number of rowsBad new number of rowsThe matrix is not continuous, thus its number of rows can not be changedoclMat's number of rows can not be changed for current version"??*&,*?-D GENTYPE4=double4-D GENTYPE4=float4-D GENTYPE4=int4-D GENTYPE4=short4-D GENTYPE4=ushort4-D GENTYPE4=char4-D GENTYPE4=uchar4convertC3C4"??*&?*?convertC4C3"?+?*:T*?-D GENTYPE=%sdouble4short4ushort4char4double3float3int3short3ushort3char3uchar3double2int2short2ushort2char2"?<*D*0copy_to_with_mask"?$*8*?convert_to_S"?**0"?#T*Hl *?-D GENTYPE=double-D GENTYPE=double4-D GENTYPE=float-D GENTYPE=float4-D GENTYPE=int-D GENTYPE=int2-D GENTYPE=int4-D GENTYPE=short-D GENTYPE=short4-D GENTYPE=ushort-D GENTYPE=ushort4-D GENTYPE=char-D GENTYPE=char4-D GENTYPE=uchar-D GENTYPE=uchar4"?#?"*H?#*?"?L&*?&*8set_to_with_maskset_to_without_maskset_to_without_mask_C1_D0this->depth() >= 0 && this->depth() <= 6mask.type() == CV_8UC1"?D'*L'* "??'*?'* (.'??:??"?P(*?(*?Image format is not supportedImage forma is not supported..\..\..\..\opencv\modules\ocl\src\mcwutil.cpp"?<)*L)*("??)*?)*?)*Xtest_func__kernel void test_func(image2d_t img) {}"?8**?**p"? +*0+*x"?d+*t+*x@"??+*?+*0"?p,*8`-*`??????????UUUUUU??UUUUUU??UUUUUUſ??UUUUUU??UUUUUU??UUUUUU???>icvContourMomentsMoments - double is not supported by your GPU!..\..\..\..\opencv\modules\ocl\src\moments.cpp"?'?/*L?0*?dst_sumCvMomentsInvalid image typeThe passed sequence is not a valid contour"?|3*?3*p"??3*?3* "?4*4* "?84*@4*"?p4*x4* "??4*?4* "??4*?4* "? 5*(5*"?P5*X5* "??5*?5*"?(6*06*"??6*p6*?6* "??6*?6*"?t7*L7*?7*0"?8*?7*8* "??8*d8*?8* "??8*?8*"??9*?9*"??9*?9* "?l:*t:*"?$;*?:*4;*0"??;*?;*?;* "?@<*<*P<*0"??<*=*8Invalid DjSets constructor
..\..\..\..\opencv\modules\ocl\src\mssegmentation.cpp"??=*?=* "?>*>* "?x>*?>* "??>*?>*?*0"?X?*h?* "???**?@*?src.type() == CV_8UC4	 ? @? 0@??0@? 0	?.'????س?س? /'???????????(
?H/'????س??/?;??Iq?u?"??H*?H* ??L?
?#'??E????????(
??='?,?????????????????? "??R*?R* "?S*$S* "?DS*lS*?'??F????????(
?p>'?,????????"??(??????(>@i@"??S*?S* "??S*?S* "?T*,T*??'? H????????(
?(?'?,??4??:??@??F??L??????(y@@?@"?lT*|T* "??T*?T* "??T*?T*h@'???@)?p)??(???'?X??^??8??d?????? "?U*U* "?`U*hU* ?@'? ??v??|?????????????????????????????"??U*?U* "??U*?U* "??V*W* pA'??????????­?ȭ?έ?ԭ?ڭ?"?(W*0W* "?LW*TW* "?tW*|W* "??W*?W*("??W*X*(@B'????س?س?س?س?س?س?س?س?س?"??X*?X* "?Y* Y* "?HY*PY* "?xY*?Y* "??Y*?Y* "??Y*?Y* "?Z*Z* "?8Z*@Z* "?hZ*pZ* "??Z*?Z* "??Z*?Z* "??Z*[* "?([*0[* "?X[*`[* "??[*?[* "??]*?]* "??]*?]* "??]*?]*"?(^*0^*"?`^*h^*"??^*?^*"??^*?^*"?_*_*"?H_*P_*"??_*?_*"??_*?_*"??_*?_*"?(`*0`*"?``*h`*"??`*?`*"??`*?`*"?a*a*"?@a*Ha*"?xa*?a*"??a*?a*"??a*?a* "?(b*0b* "??b*?b*0"??b*?b*8"??b*?b*("?c*$c*8"?Lc*Tc*("??c*?c*("??c*?c*("??c*?c*("?d*,d*"?\d*td* ?B'????س????"??d*?d* 0C'??????????(
?س?س?س?"?$e*De* "??e*?e* "?f* f* "?tf*?f* "??f*?f* "?g*g* "?0g*8g* "?Xg*`g* "??g*?g* "??g*?g* "??g*?g* "??g*h* "? h*(h* "?Hh*Ph* "?ph*xh* "??h*?h* "??h*?h* "??h*?h* "?i*i* "?8i*Hi* "?hi*xi* "??i*?i* "??i*?i* "??i*j* "?(j*8j* "?Xj*`j* "??j*?j* "??j*?j*("?k*k*("?dims <= 2"??*	?*8"?	l?*
??* (G'?P?????Ʃ?̩?ҩ?"??*,?* "?X?*??* "?ȶ*?* "?0?*8?*"?P?*X?* "?p?*x?* "???*̷* ?G'??8???????­?ȭ?έ?ԭ?ڭ?"?$?*T?* "???*8?*00 <= cRange.start && cRange.start <= cRange.end && cRange.end <= m.cols0 <= rRange.start && rRange.start <= rRange.end && rRange.end <= m.rows"?ع*?*0"??*?*0"?8?*@?*8"?h?*p?*("???*??*8"?Ⱥ*к*("???*?*("?4?*	T?*0"?4?*?*D?*0"???*|?*??*0"???*̿* "?P?*(?*`?*0"???*??* "???*??* "? 0 && patch.x < 6 && patch.y > 0 && patch.y < 6prevImg.size() == nextImg.size() && prevImg.type() == nextImg.type()maxLevel >= 0 && winSize.width > 2 && winSize.height > 2derivLambda >= 0"???*9??*?lkDense"???*-d?*pwinSize.width > 2 && winSize.height > 2maxLevel >= 0prevImg.type() == CV_8UC1"???*/L?*?pyrUp"???*5h?*?merge_vector..\..\..\..\opencv\modules\ocl\src\split_merge.cpp"?8?*)??*@total_channels <= 4size == mat_src[i].size()depth == mat_src[i].depth()n > 0mat_src"???*9?+?split_vector"??+	?+0mat_dst@@"?T+l+"??+$+0winSize % 2 == 1ndisp % 8 == 00 < ndisp && ndisp <= max_supported_ndisp..\..\..\..\opencv\modules\ocl\src\stereobm.cpp"?
?+?+?prefilter_xsobel"??+7t+@-D radius=%d?????AstereoKernel"??
+/?+?textureness_kernel"?L
+\
+? A)\?=??????"??
+?
+ "?+?+0rthis.msg_type == CV_32F || (1 << (rthis.levels - 1)) * scale * rthis.max_data_term < numeric_limits::max()rthis.msg_type == CV_32F || rthis.msg_type == CV_16S0 < rthis.ndisp && 0 < rthis.iters && 0 < rthis.levels..\..\..\..\opencv\modules\ocl\src\stereobp.cpp A"?+)?+?%s -D CN=%d-D T_FLOAT-D T_SHORTcomp_data"??+%D+?data_step_down"?+%?+?level_up_message"??+5?+?one_iteration"?l+3<+?output"?
0+?+P"?
$+t+ "?
?+0 + "?
? +!+8min(lowest_cols, lowest_rows) > min_image_dim_sizeleft.type() == CV_8UC1 || left.type() == CV_8UC3 || left.type() == CV_8UC4left.size() == right.size() && left.type() == right.type()"?"+P"+8(data.type() == rthis.msg_type) && (data.rows % rthis.ndisp == 0)"??"+#+`"?X#+p#+`?A?? C A2?P=???H@"?
L$+?$+0msg_type_ == CV_32F || msg_type_ == CV_16S..\..\..\..\opencv\modules\ocl\src\stereo_csbp.cpp"?
?%+&+0"??&+	?&+pmsg_type == CV_32F || msg_type == CV_16S"?
X'+?'+810"?,(+D(+?init_data_cost_"??(+?(+?init_data_cost_reduce_"??(+?(+?get_first_k_initial_local_"? )+8)+?get_first_k_initial_global_"??)+?)+?compute_data_cost_"??)+?)+?compute_data_cost_reduce_"?8*+X*+?init_message_"??*+?*+?compute_message_"?++++?"?h++?++?compute_disp_"??++?++hrthis.levels <= 8 && (left.type() == CV_8UC1 || left.type() == CV_8UC3)"??,+?,+h"?`-+?-+"?$/+!?/+?centeredGradientKernel"??1+1X2+?estimateDualVariablesKernel"??4+1?5+?estimateUKernel"??7+5?8+?warpBackwardKernelisImgSupported..\..\..\..\opencv\modules\ocl\src\tvl1flow.cpp"??:+%;+?"?l<+)=+Hnscales > 0!useInitialFlow || (flowx.size() == I0.size() && flowx.type() == CV_32FC1 && flowy.size() == flowx.size() && flowy.type() == flowx.type())I0.type() == I1.type()I0.size() == I1.size()I0.type() == CV_8UC1 || I0.type() == CV_32FC1__kernel void centeredGradientKernel(__global const float* src, int src_col, int src_row, int src_step, 
__global float* dx, __global float* dy, int dx_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x < src_col)&&(y < src_row))
{
int src_x1 = (x + 1) < (src_col -1)? (x + 1) : (src_col - 1);
int src_x2 = (x - 1) > 0 ? (x -1) : 0;
dx[y * dx_step+ x] = 0.5f * (src[y * src_step + src_x1] - src[y * src_step+ src_x2]);
int src_y1 = (y+1) < (src_row - 1) ? (y + 1) : (src_row - 1);
int src_y2 = (y - 1) > 0 ? (y - 1) : 0;
dy[y * dx_step+ x] = 0.5f * (src[src_y1 * src_step + x] - src[src_y2 * src_step+ x]);
}
}
float bicubicCoeff(float x_)
{
float x = fabs(x_);
if (x <= 1.0f)
{
return x * x * (1.5f * x - 2.5f) + 1.0f;
}
else if (x < 2.0f)
{
return x * (x * (-0.5f * x + 2.5f) - 4.0f) + 2.0f;
}
else
{
return 0.0f;
}
}
__kernel void warpBackwardKernel(__global const float* I0, int I0_step, int I0_col, int I0_row,
image2d_t tex_I1, image2d_t tex_I1x, image2d_t tex_I1y,  
__global const float* u1, int u1_step, 
__global const float* u2,
__global float* I1w,
__global float* I1wx, 
__global float* I1wy, 
__global float* grad, 
__global float* rho,
int I1w_step,
int u2_step,
int u1_offset_x,
int u1_offset_y,
int u2_offset_x,
int u2_offset_y)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if(x < I0_col&&y < I0_row)
{
const float u1Val = u1[(y + u1_offset_y) * u1_step + x + u1_offset_x];
const float u2Val = u2[(y + u2_offset_y) * u2_step + x + u2_offset_x];
const float wx = x + u1Val;
const float wy = y + u2Val;
const int xmin = ceil(wx - 2.0f);
const int xmax = floor(wx + 2.0f);
const int ymin = ceil(wy - 2.0f);
const int ymax = floor(wy + 2.0f);
float sum  = 0.0f;
float sumx = 0.0f;
float sumy = 0.0f;
float wsum = 0.0f;
sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
for (int cy = ymin; cy <= ymax; ++cy)
{
for (int cx = xmin; cx <= xmax; ++cx)
{
const float w = bicubicCoeff(wx - cx) * bicubicCoeff(wy - cy);
int2 cood = (int2)(cx, cy);
sum += w * read_imagef(tex_I1, sampleri, cood).x;
sumx += w * read_imagef(tex_I1x, sampleri, cood).x;
sumy += w * read_imagef(tex_I1y, sampleri, cood).x;
wsum += w;
}
}
const float coeff = 1.0f / wsum;
const float I1wVal  = sum  * coeff;
const float I1wxVal = sumx * coeff;
const float I1wyVal = sumy * coeff;
I1w[y * I1w_step + x]  = I1wVal;
I1wx[y * I1w_step + x] = I1wxVal;
I1wy[y * I1w_step + x] = I1wyVal;
const float Ix2 = I1wxVal * I1wxVal;
const float Iy2 = I1wyVal * I1wyVal;
grad[y * I1w_step + x] = Ix2 + Iy2;
const float I0Val = I0[y * I0_step + x];
rho[y * I1w_step + x] = I1wVal - I1wxVal * u1Val - I1wyVal * u2Val - I0Val;
}
}
float readImage(__global const float *image,  const int x,  const int y,  const int rows,  const int cols, const int elemCntPerRow)
{
int i0 = clamp(x, 0, cols - 1);
int j0 = clamp(y, 0, rows - 1);
int i1 = clamp(x + 1, 0, cols - 1);
int j1 = clamp(y + 1, 0, rows - 1);
return image[j0 * elemCntPerRow + i0];
}
__kernel void warpBackwardKernelNoImage2d(__global const float* I0, int I0_step, int I0_col, int I0_row,
__global const float* tex_I1, __global const float* tex_I1x, __global const float* tex_I1y,  
__global const float* u1, int u1_step, 
__global const float* u2,
__global float* I1w,
__global float* I1wx, 
__global float* I1wy, 
__global float* grad, 
__global float* rho,
int I1w_step,
int u2_step,
int I1_step,
int I1x_step)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if(x < I0_col&&y < I0_row)
{
const float u1Val = u1[y * u1_step + x];
const float u2Val = u2[y * u2_step + x];
const float wx = x + u1Val;
const float wy = y + u2Val;
const int xmin = ceil(wx - 2.0f);
const int xmax = floor(wx + 2.0f);
const int ymin = ceil(wy - 2.0f);
const int ymax = floor(wy + 2.0f);
float sum  = 0.0f;
float sumx = 0.0f;
float sumy = 0.0f;
float wsum = 0.0f;
for (int cy = ymin; cy <= ymax; ++cy)
{
for (int cx = xmin; cx <= xmax; ++cx)
{
const float w = bicubicCoeff(wx - cx) * bicubicCoeff(wy - cy);
int2 cood = (int2)(cx, cy);
sum += w * readImage(tex_I1, cood.x, cood.y, I0_col, I0_row, I1_step);
sumx += w * readImage(tex_I1x, cood.x, cood.y, I0_col, I0_row, I1x_step);
sumy += w * readImage(tex_I1y, cood.x, cood.y, I0_col, I0_row, I1x_step);
wsum += w;
}
}
const float coeff = 1.0f / wsum;
const float I1wVal  = sum  * coeff;
const float I1wxVal = sumx * coeff;
const float I1wyVal = sumy * coeff;
I1w[y * I1w_step + x]  = I1wVal;
I1wx[y * I1w_step + x] = I1wxVal;
I1wy[y * I1w_step + x] = I1wyVal;
const float Ix2 = I1wxVal * I1wxVal;
const float Iy2 = I1wyVal * I1wyVal;
grad[y * I1w_step + x] = Ix2 + Iy2;
const float I0Val = I0[y * I0_step + x];
rho[y * I1w_step + x] = I1wVal - I1wxVal * u1Val - I1wyVal * u2Val - I0Val;
}
}
__kernel void estimateDualVariablesKernel(__global const float* u1, int u1_col, int u1_row, int u1_step, 
__global const float* u2, 
__global float* p11, int p11_step, 
__global float* p12,
__global float* p21,
__global float* p22, 
const float taut,
int u2_step,
int u1_offset_x,
int u1_offset_y,
int u2_offset_x,
int u2_offset_y)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if(x < u1_col && y < u1_row)
{
int src_x1 = (x + 1) < (u1_col - 1) ? (x + 1) : (u1_col - 1);
const float u1x = u1[(y + u1_offset_y) * u1_step + src_x1 + u1_offset_x] - u1[(y + u1_offset_y) * u1_step + x + u1_offset_x];
int src_y1 = (y + 1) < (u1_row - 1) ? (y + 1) : (u1_row - 1);
const float u1y = u1[(src_y1 + u1_offset_y) * u1_step + x + u1_offset_x] - u1[(y + u1_offset_y) * u1_step + x + u1_offset_x];
int src_x2 = (x + 1) < (u1_col - 1) ? (x + 1) : (u1_col - 1);
const float u2x = u2[(y + u2_offset_y) * u2_step + src_x2 + u2_offset_x] - u2[(y + u2_offset_y) * u2_step + x + u2_offset_x];
int src_y2 = (y + 1) <  (u1_row - 1) ? (y + 1) : (u1_row - 1);
const float u2y = u2[(src_y2 + u2_offset_y) * u2_step + x + u2_offset_x] - u2[(y + u2_offset_y) * u2_step + x + u2_offset_x];
const float g1 = hypot(u1x, u1y);
const float g2 = hypot(u2x, u2y);
const float ng1 = 1.0f + taut * g1;
const float ng2 = 1.0f + taut * g2;
p11[y * p11_step + x] = (p11[y * p11_step + x] + taut * u1x) / ng1;
p12[y * p11_step + x] = (p12[y * p11_step + x] + taut * u1y) / ng1;
p21[y * p11_step + x] = (p21[y * p11_step + x] + taut * u2x) / ng2;
p22[y * p11_step + x] = (p22[y * p11_step + x] + taut * u2y) / ng2;
}
}
float divergence(__global const float* v1, __global const float* v2, int y, int x, int v1_step, int v2_step)
{
if (x > 0 && y > 0)
{
const float v1x = v1[y * v1_step + x] - v1[y * v1_step + x - 1];
const float v2y = v2[y * v2_step + x] - v2[(y - 1) * v2_step + x];
return v1x + v2y;
}
else
{
if (y > 0)
return v1[y * v1_step + 0] + v2[y * v2_step + 0] - v2[(y - 1) * v2_step + 0];
else
{
if (x > 0)
return v1[0 * v1_step + x] - v1[0 * v1_step + x - 1] + v2[0 * v2_step + x];
else
return v1[0 * v1_step + 0] + v2[0 * v2_step + 0];
}
}
}
__kernel void estimateUKernel(__global const float* I1wx, int I1wx_col, int I1wx_row, int I1wx_step,
__global const float* I1wy, 
__global const float* grad,  
__global const float* rho_c, 
__global const float* p11, 
__global const float* p12, 
__global const float* p21, 
__global const float* p22, 
__global float* u1, int u1_step, 
__global float* u2, 
__global float* error, const float l_t, const float theta, int u2_step,
int u1_offset_x,
int u1_offset_y,
int u2_offset_x,
int u2_offset_y)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < I1wx_col && y < I1wx_row)
{
const float I1wxVal = I1wx[y * I1wx_step + x];
const float I1wyVal = I1wy[y * I1wx_step + x];
const float gradVal = grad[y * I1wx_step + x];
const float u1OldVal = u1[(y + u1_offset_y) * u1_step + x + u1_offset_x];
const float u2OldVal = u2[(y + u2_offset_y) * u2_step + x + u2_offset_x];
const float rho = rho_c[y * I1wx_step + x] + (I1wxVal * u1OldVal + I1wyVal * u2OldVal);
float d1 = 0.0f;
float d2 = 0.0f;
if (rho < -l_t * gradVal)
{
d1 = l_t * I1wxVal;
d2 = l_t * I1wyVal;
}
else if (rho > l_t * gradVal)
{
d1 = -l_t * I1wxVal;
d2 = -l_t * I1wyVal;
}
else if (gradVal > 1.192092896e-07f)
{
const float fi = -rho / gradVal;
d1 = fi * I1wxVal;
d2 = fi * I1wyVal;
}
const float v1 = u1OldVal + d1;
const float v2 = u2OldVal + d2;
const float div_p1 = divergence(p11, p12, y, x, I1wx_step, I1wx_step);
const float div_p2 = divergence(p21, p22, y, x, I1wx_step, I1wx_step);
const float u1NewVal = v1 + theta * div_p1;
const float u2NewVal = v2 + theta * div_p2;
u1[(y + u1_offset_y) * u1_step + x + u1_offset_x] = u1NewVal;
u2[(y + u2_offset_y) * u2_step + x + u2_offset_x] = u2NewVal;
const float n1 = (u1OldVal - u1NewVal) * (u1OldVal - u1NewVal);
const float n2 = (u2OldVal - u2NewVal) * (u2OldVal - u2NewVal);
error[y * I1wx_step + x] = n1 + n2;
}
}
#ifndef FLT_MAX
#define FLT_MAX  CL_FLT_MAX
#endif
#ifndef SHRT_MAX
#define SHRT_MAX  CL_SHORT_MAX
#endif
__kernel void get_first_k_initial_global_0(__global short *data_cost_selected_, __global short *selected_disp_pyr,
__global short *ctemp, int h, int w, int nr_plane,
int cmsg_step1, int cdisp_step1, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
__global short *selected_disparity = selected_disp_pyr      + y * cmsg_step1 + x;
__global short *data_cost_selected = data_cost_selected_    + y * cmsg_step1 + x;
__global short *data_cost          = ctemp + y * cmsg_step1 + x;
for(int i = 0; i < nr_plane; i++)
{
short minimum = SHRT_MAX;
int id = 0;
for(int d = 0; d < cndisp; d++)
{
short cur = data_cost[d * cdisp_step1];
if(cur < minimum)
{
minimum = cur;
id = d;
}
}
data_cost_selected[i  * cdisp_step1] = minimum;
selected_disparity[i  * cdisp_step1] = id;
data_cost         [id * cdisp_step1] = SHRT_MAX;
}
}
}
__kernel void get_first_k_initial_global_1(__global  float *data_cost_selected_, __global float *selected_disp_pyr,
__global  float *ctemp, int h, int w, int nr_plane,
int cmsg_step1, int cdisp_step1, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
__global   float *selected_disparity = selected_disp_pyr      + y * cmsg_step1 + x;
__global   float *data_cost_selected = data_cost_selected_    + y * cmsg_step1 + x;
__global   float *data_cost          = ctemp + y * cmsg_step1 + x;
for(int i = 0; i < nr_plane; i++)
{
float minimum = FLT_MAX;
int id = 0;
for(int d = 0; d < cndisp; d++)
{
float cur = data_cost[d * cdisp_step1];
if(cur < minimum)
{
minimum = cur;
id = d;
}
}
data_cost_selected[i  * cdisp_step1] = minimum;
selected_disparity[i  * cdisp_step1] = id;
data_cost         [id * cdisp_step1] = FLT_MAX;
}
}
}
__kernel void get_first_k_initial_local_0(__global  short *data_cost_selected_, __global short *selected_disp_pyr, 
__global  short *ctemp,int h, int w, int nr_plane,
int cmsg_step1, int cdisp_step1, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
__global short *selected_disparity = selected_disp_pyr   + y * cmsg_step1 + x;
__global short *data_cost_selected = data_cost_selected_ + y * cmsg_step1 + x;
__global short *data_cost = ctemp + y * cmsg_step1 + x;
int nr_local_minimum = 0;
short prev = data_cost[0 * cdisp_step1];
short cur  = data_cost[1 * cdisp_step1];
short next = data_cost[2 * cdisp_step1];
for (int d = 1; d < cndisp - 1 && nr_local_minimum < nr_plane; d++)
{
if (cur < prev && cur < next)
{
data_cost_selected[nr_local_minimum * cdisp_step1] = cur;
selected_disparity[nr_local_minimum * cdisp_step1] = d;
data_cost[d * cdisp_step1] = SHRT_MAX;
nr_local_minimum++;
}
prev = cur;
cur = next;
next = data_cost[(d + 1) * cdisp_step1];
}
for (int i = nr_local_minimum; i < nr_plane; i++)
{
short minimum = SHRT_MAX;
int id = 0;
for (int d = 0; d < cndisp; d++)
{
cur = data_cost[d * cdisp_step1];
if (cur < minimum)
{
minimum = cur;
id = d;
}
}
data_cost_selected[i * cdisp_step1] = minimum;
selected_disparity[i * cdisp_step1] = id;
data_cost[id * cdisp_step1] = SHRT_MAX;
}
}
}
__kernel void get_first_k_initial_local_1(__global float *data_cost_selected_, __global float *selected_disp_pyr, 
__global float *ctemp,int h, int w, int nr_plane,
int cmsg_step1,  int cdisp_step1, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
__global float *selected_disparity = selected_disp_pyr   + y * cmsg_step1 + x;
__global float *data_cost_selected = data_cost_selected_ + y * cmsg_step1 + x;
__global float *data_cost = ctemp + y * cmsg_step1 + x;
int nr_local_minimum = 0;
float prev = data_cost[0 * cdisp_step1];
float cur  = data_cost[1 * cdisp_step1];
float next = data_cost[2 * cdisp_step1];
for (int d = 1; d < cndisp - 1 && nr_local_minimum < nr_plane; d++)
{
if (cur < prev && cur < next)
{
data_cost_selected[nr_local_minimum * cdisp_step1] = cur;
selected_disparity[nr_local_minimum * cdisp_step1] = d;
data_cost[d * cdisp_step1] = FLT_MAX ;
nr_local_minimum++;
}
prev = cur;
cur = next;
next = data_cost[(d + 1) * cdisp_step1];
}
for (int i = nr_local_minimum; i < nr_plane; i++)
{
float minimum = FLT_MAX;
int id = 0;
for (int d = 0; d < cndisp; d++)
{
cur = data_cost[d * cdisp_step1];
if (cur < minimum)
{
minimum = cur;
id = d;
}
}
data_cost_selected[i * cdisp_step1] = minimum;
selected_disparity[i * cdisp_step1] = id;
data_cost[id * cdisp_step1] = FLT_MAX;
}
}
}
float compute_3(__global uchar* left, __global uchar* right,
float cdata_weight,  float cmax_data_term)
{
float tb = 0.114f * abs((int)left[0] - right[0]);
float tg = 0.587f * abs((int)left[1] - right[1]);
float tr = 0.299f * abs((int)left[2] - right[2]);
return fmin(cdata_weight * (tr + tg + tb), cdata_weight * cmax_data_term);
}
float compute_1(__global uchar* left, __global uchar* right, 
float cdata_weight,  float cmax_data_term)
{
return fmin(cdata_weight * abs((int)*left - (int)*right), cdata_weight * cmax_data_term);
}
short round_short(float v){
return convert_short_sat_rte(v); 
}
__kernel void init_data_cost_0(__global short *ctemp, __global uchar *cleft, __global uchar *cright, 
int h, int w, int level, int channels,
int cmsg_step1, float cdata_weight, float cmax_data_term, int cdisp_step1, 
int cth, int cimg_step, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
int y0 = y << level;
int yt = (y + 1) << level;
int x0 = x << level;
int xt = (x + 1) << level;
__global short *data_cost = ctemp + y * cmsg_step1 + x;
for(int d = 0; d < cndisp; ++d)
{
float val = 0.0f;
for(int yi = y0; yi < yt; yi++)
{
for(int xi = x0; xi < xt; xi++)
{
int xr = xi - d;
if(d < cth || xr < 0)
val += cdata_weight * cmax_data_term;
else
{
__global uchar *lle = cleft  + yi * cimg_step + xi * channels;
__global uchar *lri = cright + yi * cimg_step + xr * channels;
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
}
}
}
data_cost[cdisp_step1 * d] = round_short(val);
}
}
}
__kernel void init_data_cost_1(__global float *ctemp, __global uchar *cleft, __global uchar *cright, 
int h, int w, int level, int channels,
int cmsg_step1, float cdata_weight, float cmax_data_term, int cdisp_step1, 
int cth, int cimg_step, int cndisp)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
int y0 = y << level;
int yt = (y + 1) << level;
int x0 = x << level;
int xt = (x + 1) << level;
__global float *data_cost = ctemp + y * cmsg_step1 + x;
for(int d = 0; d < cndisp; ++d)
{
float val = 0.0f;
for(int yi = y0; yi < yt; yi++)
{
for(int xi = x0; xi < xt; xi++)
{
int xr = xi - d;
if(d < cth || xr < 0)
val += cdata_weight * cmax_data_term;
else
{
__global uchar* lle = cleft  + yi * cimg_step + xi * channels;
__global uchar* lri = cright + yi * cimg_step + xr * channels;
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
}
}
}
data_cost[cdisp_step1 * d] = val;
}
}
}
__kernel void init_data_cost_reduce_0(__global short *ctemp, __global uchar *cleft, __global uchar *cright,
__local float *smem, int level, int rows, int cols, int h, int winsz, int channels,
int cndisp,int cimg_step, float cdata_weight, float cmax_data_term, int cth, 
int cdisp_step1, int cmsg_step1)
{
int x_out = get_group_id(0);
int y_out = get_group_id(1) % h;
int d = (get_group_id(1) / h ) * get_local_size(2) + get_local_id(2); 
int tid = get_local_id(0);
if (d < cndisp)
{
int x0 = x_out << level;
int y0 = y_out << level;
int len = min(y0 + winsz, rows) - y0;
float val = 0.0f;
if (x0 + tid < cols)
{
if (x0 + tid - d < 0 || d < cth)
val = cdata_weight * cmax_data_term * len;
else
{
__global uchar* lle =  cleft + y0 * cimg_step + channels * (x0 + tid    );
__global uchar* lri = cright + y0 * cimg_step + channels * (x0 + tid - d);
for(int y = 0; y < len; ++y)
{
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
lle += cimg_step;
lri += cimg_step;
}
}
}
__local float* dline = smem + winsz * get_local_id(2);
dline[tid] = val;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < cndisp)
{
__local float* dline = smem + winsz * get_local_id(2);
if (winsz >= 256) 
{
if (tid < 128) 
dline[tid] += dline[tid + 128]; 
}
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local float* dline = smem + winsz * get_local_id(2);
if (winsz >= 128) 
{
if (tid <  64) 
dline[tid] += dline[tid + 64]; 
}
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 64) 
if (tid < 32) 
vdline[tid] += vdline[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 32) 
if (tid < 16) 
vdline[tid] += vdline[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d= 16)
if (tid <  8) 
vdline[tid] += vdline[tid + 8];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d= 8)
if (tid <  4) 
vdline[tid] += vdline[tid + 4];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d= 4)
if (tid <  2) 
vdline[tid] += vdline[tid + 2];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d= 2)
if (tid <  1) 
vdline[tid] += vdline[tid + 1];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < cndisp)
{
__local float* dline = smem + winsz * get_local_id(2);
__global short* data_cost = ctemp + y_out * cmsg_step1 + x_out;
if (tid == 0)
data_cost[cdisp_step1 * d] = convert_short_sat_rte(dline[0]);
}
}
__kernel void init_data_cost_reduce_1(__global float *ctemp, __global uchar *cleft, __global uchar *cright,
__local float *smem, int level, int rows, int cols, int h, int winsz, int channels,
int cndisp,int cimg_step, float cdata_weight, float cmax_data_term, int cth,
int cdisp_step1, int cmsg_step1)
{
int x_out = get_group_id(0);
int y_out = get_group_id(1) % h;
int d = (get_group_id(1) / h ) * get_local_size(2) + get_local_id(2); 
int tid = get_local_id(0);
if (d < cndisp)
{
int x0 = x_out << level;
int y0 = y_out << level;
int len = min(y0 + winsz, rows) - y0;
float val = 0.0f;
if (x0 + tid < cols)
{
if (x0 + tid - d < 0 || d < cth)
val = cdata_weight * cmax_data_term * len;
else
{
__global uchar* lle =  cleft + y0 * cimg_step + channels * (x0 + tid    );
__global uchar* lri = cright + y0 * cimg_step + channels * (x0 + tid - d);
for(int y = 0; y < len; ++y)
{
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
lle += cimg_step;
lri += cimg_step;
}
}
}
__local float* dline = smem + winsz * get_local_id(2);
dline[tid] = val;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < cndisp)
{
__local float* dline = smem + winsz * get_local_id(2);
if (winsz >= 256) 
if (tid < 128) 
dline[tid] += dline[tid + 128]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local float* dline = smem + winsz * get_local_id(2);
if (winsz >= 128) 
if (tid < 64) 
dline[tid] += dline[tid + 64]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 64) 
if (tid < 32) 
vdline[tid] += vdline[tid + 32]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 32) 
if (tid < 16) 
vdline[tid] += vdline[tid + 16]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 16) 
if (tid < 8) 
vdline[tid] += vdline[tid + 8]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 8) 
if (tid < 4) 
vdline[tid] += vdline[tid + 4]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 4) 
if (tid < 2) 
vdline[tid] += vdline[tid + 2]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 2) 
if (tid < 1) 
vdline[tid] += vdline[tid + 1]; 
}
barrier(CLK_LOCAL_MEM_FENCE); 
if(d < cndisp)
{
__global float *data_cost = ctemp + y_out * cmsg_step1 + x_out;
__local float* dline = smem + winsz * get_local_id(2);
if (tid == 0)
data_cost[cdisp_step1 * d] =  dline[0];
}
}
__kernel void compute_data_cost_0(__global const short *selected_disp_pyr, __global short *data_cost_, 
__global uchar *cleft, __global uchar *cright,
int h, int w, int level, int nr_plane, int channels,
int cmsg_step1, int cmsg_step2, int cdisp_step1, int cdisp_step2, float cdata_weight, 
float cmax_data_term, int cimg_step, int cth)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
int y0 = y << level;
int yt = (y + 1) << level;
int x0 = x << level;
int xt = (x + 1) << level;
__global const short *selected_disparity = selected_disp_pyr + y/2 * cmsg_step2 + x/2;
__global       short *data_cost          = data_cost_ + y * cmsg_step1 + x;
for(int d = 0; d < nr_plane; d++)
{
float val = 0.0f;
for(int yi = y0; yi < yt; yi++)
{
for(int xi = x0; xi < xt; xi++)
{
int sel_disp = selected_disparity[d * cdisp_step2];
int xr = xi - sel_disp;
if (xr < 0 || sel_disp < cth)
val += cdata_weight * cmax_data_term;
else
{
__global uchar* left_x  = cleft + yi * cimg_step + xi * channels;
__global uchar* right_x = cright + yi * cimg_step + xr * channels;
if(channels == 1)
val += compute_1(left_x, right_x, cdata_weight, cmax_data_term);
else
val += compute_3(left_x, right_x, cdata_weight, cmax_data_term);
}
}
}
data_cost[cdisp_step1 * d] = convert_short_sat_rte(val);
}
}
}
__kernel void compute_data_cost_1(__global const float *selected_disp_pyr, __global float *data_cost_, 
__global uchar *cleft, __global uchar *cright,
int h, int w, int level, int nr_plane, int channels,
int cmsg_step1, int cmsg_step2, int cdisp_step1, int cdisp_step2, float cdata_weight, 
float cmax_data_term, int cimg_step, int cth)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
int y0 = y << level;
int yt = (y + 1) << level;
int x0 = x << level;
int xt = (x + 1) << level;
__global const float *selected_disparity = selected_disp_pyr + y/2 * cmsg_step2 + x/2;
__global       float *data_cost          = data_cost_ + y * cmsg_step1 + x;
for(int d = 0; d < nr_plane; d++)
{
float val = 0.0f;
for(int yi = y0; yi < yt; yi++)
{
for(int xi = x0; xi < xt; xi++)
{
int sel_disp = selected_disparity[d * cdisp_step2];
int xr = xi - sel_disp;
if (xr < 0 || sel_disp < cth)
val += cdata_weight * cmax_data_term;
else
{
__global uchar* left_x  = cleft + yi * cimg_step + xi * channels;
__global uchar* right_x = cright + yi * cimg_step + xr * channels;
if(channels == 1)
val += compute_1(left_x, right_x, cdata_weight, cmax_data_term);
else
val += compute_3(left_x, right_x, cdata_weight, cmax_data_term);
}
}
}
data_cost[cdisp_step1 * d] = val;
}
}
}
__kernel void compute_data_cost_reduce_0(__global const short* selected_disp_pyr, __global short* data_cost_, 
__global uchar *cleft, __global uchar *cright,__local float *smem,
int level, int rows, int cols, int h, int nr_plane, 
int channels, int winsz,
int cmsg_step1, int cmsg_step2, int cdisp_step1, int cdisp_step2, 
float cdata_weight,  float cmax_data_term, int cimg_step,int cth)
{
int x_out = get_group_id(0);
int y_out = get_group_id(1) % h;
int d = (get_group_id(1)/ h) * get_local_size(2) + get_local_id(2);
int tid = get_local_id(0);
__global const short* selected_disparity = selected_disp_pyr + y_out/2 * cmsg_step2 + x_out/2;
__global short* data_cost = data_cost_ + y_out * cmsg_step1 + x_out;
if (d < nr_plane)
{
int sel_disp = selected_disparity[d * cdisp_step2];
int x0 = x_out << level;
int y0 = y_out << level;
int len = min(y0 + winsz, rows) - y0;
float val = 0.0f;
if (x0 + tid < cols)
{
if (x0 + tid - sel_disp < 0 || sel_disp < cth)
val = cdata_weight * cmax_data_term * len;
else
{
__global uchar* lle =  cleft + y0 * cimg_step + channels * (x0 + tid    );
__global uchar* lri = cright + y0 * cimg_step + channels * (x0 + tid - sel_disp);
for(int y = 0; y < len; ++y)
{
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
lle += cimg_step;
lri += cimg_step;
}
}
}
__local float* dline = smem + winsz * get_local_id(2);
dline[tid] = val;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 64) 
{
if (tid < 32) 
vdline[tid] += vdline[tid + 32];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 32) 
{
if (tid < 16) 
vdline[tid] += vdline[tid + 16];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 16) 
{
if (tid < 8) 
vdline[tid] += vdline[tid + 8];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 8) 
{
if (tid < 4) 
vdline[tid] += vdline[tid + 4];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 4) 
{
if (tid < 2) 
vdline[tid] += vdline[tid + 2];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 2) 
{
if (tid < 1) 
vdline[tid] += vdline[tid + 1];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (tid == 0)
data_cost[cdisp_step1 * d] = convert_short_sat_rte(vdline[0]);
}
}
__kernel void compute_data_cost_reduce_1(__global const float *selected_disp_pyr, __global float *data_cost_, 
__global uchar *cleft, __global uchar *cright, __local float *smem,
int level, int rows, int cols, int h, int nr_plane, 
int channels, int winsz,
int cmsg_step1, int cmsg_step2, int cdisp_step1,int cdisp_step2, float cdata_weight, 
float cmax_data_term, int cimg_step, int cth)
{
int x_out = get_group_id(0);
int y_out = get_group_id(1) % h;
int d = (get_group_id(1)/ h) * get_local_size(2) + get_local_id(2);
int tid = get_local_id(0);
__global const float *selected_disparity = selected_disp_pyr + y_out/2 * cmsg_step2 + x_out/2;
__global float *data_cost = data_cost_ + y_out * cmsg_step1 + x_out;
if (d < nr_plane)
{
int sel_disp = selected_disparity[d * cdisp_step2];
int x0 = x_out << level;
int y0 = y_out << level;
int len = min(y0 + winsz, rows) - y0;
float val = 0.0f;
if (x0 + tid < cols)
{
if (x0 + tid - sel_disp < 0 || sel_disp < cth)
val = cdata_weight * cmax_data_term * len;
else
{
__global uchar* lle =  cleft + y0 * cimg_step + channels * (x0 + tid    );
__global uchar* lri = cright + y0 * cimg_step + channels * (x0 + tid - sel_disp);
for(int y = 0; y < len; ++y)
{
if(channels == 1)
val += compute_1(lle, lri, cdata_weight, cmax_data_term);
else
val += compute_3(lle, lri, cdata_weight, cmax_data_term);
lle += cimg_step;
lri += cimg_step;
}
}
}
__local float* dline = smem + winsz * get_local_id(2);
dline[tid] = val;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 64) 
{
if (tid < 32) 
vdline[tid] += vdline[tid + 32];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)  
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 32) 
{
if (tid < 16) 
vdline[tid] += vdline[tid + 16];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >= 16) 
{
if (tid <  8) 
vdline[tid] += vdline[tid + 8];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >=  8) 
{
if (tid <  4) 
vdline[tid] += vdline[tid + 4];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >=  4) 
{
if (tid <  2) 
vdline[tid] += vdline[tid + 2];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (winsz >=  2) 
{
if (tid <  1) 
vdline[tid] += vdline[tid + 1];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(d < nr_plane)
{
__local volatile float* vdline = smem + winsz * get_local_id(2);
if (tid == 0)
data_cost[cdisp_step1 * d] = vdline[0];
}
}
void get_first_k_element_increase_0(__global short* u_new, __global short *d_new, __global short *l_new, 
__global short *r_new, __global const short *u_cur, __global const short *d_cur, 
__global const short *l_cur, __global const short *r_cur, 
__global short *data_cost_selected, __global short *disparity_selected_new, 
__global short *data_cost_new, __global const short* data_cost_cur, 
__global const short *disparity_selected_cur,
int nr_plane, int nr_plane2,
int cdisp_step1, int cdisp_step2)
{
for(int i = 0; i < nr_plane; i++)
{
short minimum = SHRT_MAX;
int id = 0;
for(int j = 0; j < nr_plane2; j++)
{
short cur = data_cost_new[j * cdisp_step1];
if(cur < minimum)
{
minimum = cur;
id = j;
}
}
data_cost_selected[i * cdisp_step1] = data_cost_cur[id * cdisp_step1];
disparity_selected_new[i * cdisp_step1] = disparity_selected_cur[id * cdisp_step2];
u_new[i * cdisp_step1] = u_cur[id * cdisp_step2];
d_new[i * cdisp_step1] = d_cur[id * cdisp_step2];
l_new[i * cdisp_step1] = l_cur[id * cdisp_step2];
r_new[i * cdisp_step1] = r_cur[id * cdisp_step2];
data_cost_new[id * cdisp_step1] = SHRT_MAX;
}
}
void get_first_k_element_increase_1(__global float *u_new, __global float *d_new, __global float *l_new, 
__global float *r_new, __global const float *u_cur, __global const float *d_cur, 
__global const float *l_cur, __global const float *r_cur,
__global float *data_cost_selected, __global float *disparity_selected_new, 
__global float *data_cost_new, __global const float *data_cost_cur, 
__global const float *disparity_selected_cur,
int nr_plane, int nr_plane2,
int cdisp_step1, int cdisp_step2)
{
for(int i = 0; i < nr_plane; i++)
{
float minimum = FLT_MAX;
int id = 0;
for(int j = 0; j < nr_plane2; j++)
{
float cur = data_cost_new[j * cdisp_step1];
if(cur < minimum)
{
minimum = cur;
id = j;
}
}
data_cost_selected[i * cdisp_step1] = data_cost_cur[id * cdisp_step1];
disparity_selected_new[i * cdisp_step1] = disparity_selected_cur[id * cdisp_step2];
u_new[i * cdisp_step1] = u_cur[id * cdisp_step2];
d_new[i * cdisp_step1] = d_cur[id * cdisp_step2];
l_new[i * cdisp_step1] = l_cur[id * cdisp_step2];
r_new[i * cdisp_step1] = r_cur[id * cdisp_step2];   
data_cost_new[id * cdisp_step1] = FLT_MAX;
}
}
__kernel void init_message_0(__global short *u_new_, __global short *d_new_, __global short *l_new_,
__global short *r_new_, __global  short *u_cur_, __global const short *d_cur_, 
__global const short *l_cur_, __global const short *r_cur_, __global short *ctemp,
__global short *selected_disp_pyr_new, __global const short *selected_disp_pyr_cur,
__global short *data_cost_selected_, __global const short *data_cost_,
int h, int w, int nr_plane, int h2, int w2, int nr_plane2,
int cdisp_step1, int cdisp_step2, int cmsg_step1, int cmsg_step2)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y < h && x < w)
{
__global const short *u_cur = u_cur_ + min(h2-1, y/2 + 1) * cmsg_step2 + x/2;
__global const short *d_cur = d_cur_ + max(0, y/2 - 1)    * cmsg_step2 + x/2;
__global const short *l_cur = l_cur_ + y/2                * cmsg_step2 + min(w2-1, x/2 + 1);
__global const short *r_cur = r_cur_ + y/2                * cmsg_step2 + max(0, x/2 - 1);
__global short *data_cost_new = ctemp + y * cmsg_step1 + x;
__global const short *disparity_selected_cur = selected_disp_pyr_cur + y/2 * cmsg_step2 + x/2;
__global const short *data_cost = data_cost_ + y * cmsg_step1 + x;
for(int d = 0; d < nr_plane2; d++)
{
int idx2 = d * cdisp_step2;
short val  = data_cost[d * cdisp_step1] + u_cur[idx2] + d_cur[idx2] + l_cur[idx2] + r_cur[idx2];
data_cost_new[d * cdisp_step1] = val;
}
__global short *data_cost_selected = data_cost_selected_ + y * cmsg_step1 + x;
__global short *disparity_selected_new = selected_disp_pyr_new + y * cmsg_step1 + x;
__global short *u_new = u_new_ + y * cmsg_step1 + x;
__global short *d_new = d_new_ + y * cmsg_step1 + x;
__global short *l_new = l_new_ + y * cmsg_step1 + x;
__global short *r_new = r_new_ + y * cmsg_step1 + x;
u_cur = u_cur_ + y/2 * cmsg_step2 + x/2;
d_cur = d_cur_ + y/2 * cmsg_step2 + x/2;
l_cur = l_cur_ + y/2 * cmsg_step2 + x/2;
r_cur = r_cur_ + y/2 * cmsg_step2 + x/2;
get_first_k_element_increase_0(u_new, d_new, l_new, r_new, u_cur, d_cur, l_cur, r_cur,
data_cost_selected, disparity_selected_new, data_cost_new,
data_cost, disparity_selected_cur, nr_plane, nr_plane2,
cdisp_step1, cdisp_step2);
}
}
__kernel void init_message_1(__global float *u_new_, __global float *d_new_, __global float *l_new_,
__global float *r_new_, __global const float *u_cur_, __global const float *d_cur_, 
__global const float *l_cur_, __global const float *r_cur_, __global float *ctemp,
__global float *selected_disp_pyr_new, __global const float *selected_disp_pyr_cur,
__global float *data_cost_selected_, __global const float *data_cost_,
int h, int w, int nr_plane, int h2, int w2, int nr_plane2,
int cdisp_step1, int cdisp_step2, int cmsg_step1, int cmsg_step2)
{
int x = get_global_id(0);
int y = get_global_id(1);
__global const float *u_cur = u_cur_ + min(h2-1, y/2 + 1) * cmsg_step2 + x/2;
__global const float *d_cur = d_cur_ + max(0, y/2 - 1)    * cmsg_step2 + x/2;
__global const float *l_cur = l_cur_ + y/2                * cmsg_step2 + min(w2-1, x/2 + 1);
__global const float *r_cur = r_cur_ + y/2                * cmsg_step2 + max(0, x/2 - 1);
__global float *data_cost_new = ctemp + y * cmsg_step1 + x;
__global const float *disparity_selected_cur = selected_disp_pyr_cur + y/2 * cmsg_step2 + x/2;
__global const float *data_cost = data_cost_ + y * cmsg_step1 + x;
if (y < h && x < w)
{
for(int d = 0; d < nr_plane2; d++)
{
int idx2 = d * cdisp_step2;
float val  = data_cost[d * cdisp_step1] + u_cur[idx2] + d_cur[idx2] + l_cur[idx2] + r_cur[idx2];
data_cost_new[d * cdisp_step1] = val;
}
}
__global float *data_cost_selected = data_cost_selected_ + y * cmsg_step1 + x;
__global float *disparity_selected_new = selected_disp_pyr_new + y * cmsg_step1 + x;
__global float *u_new = u_new_ + y * cmsg_step1 + x;
__global float *d_new = d_new_ + y * cmsg_step1 + x;
__global float *l_new = l_new_ + y * cmsg_step1 + x;
__global float *r_new = r_new_ + y * cmsg_step1 + x;
barrier(CLK_LOCAL_MEM_FENCE);
if(y < h && x < w)
{
u_cur = u_cur_ + y/2 * cmsg_step2 + x/2;
d_cur = d_cur_ + y/2 * cmsg_step2 + x/2;
l_cur = l_cur_ + y/2 * cmsg_step2 + x/2;
r_cur = r_cur_ + y/2 * cmsg_step2 + x/2;
for(int i = 0; i < nr_plane; i++)
{
float minimum = FLT_MAX;
int id = 0;
for(int j = 0; j < nr_plane2; j++)
{
float cur = data_cost_new[j * cdisp_step1];
if(cur < minimum)
{
minimum = cur;
id = j;
}
}
data_cost_selected[i * cdisp_step1] = data_cost[id * cdisp_step1];  
disparity_selected_new[i * cdisp_step1] = disparity_selected_cur[id * cdisp_step2];
u_new[i * cdisp_step1] = u_cur[id * cdisp_step2];
d_new[i * cdisp_step1] = d_cur[id * cdisp_step2];
l_new[i * cdisp_step1] = l_cur[id * cdisp_step2];
r_new[i * cdisp_step1] = r_cur[id * cdisp_step2]; 
data_cost_new[id * cdisp_step1] = FLT_MAX;
}  
}
}
void message_per_pixel_0(__global const short *data, __global short *msg_dst, __global const short *msg1, 
__global const short *msg2, __global const short *msg3,
__global const short *dst_disp, __global const short *src_disp, 
int nr_plane, __global short *temp,
float cmax_disc_term, int cdisp_step1, float cdisc_single_jump)
{
short minimum = SHRT_MAX;
for(int d = 0; d < nr_plane; d++)     
{
int idx = d * cdisp_step1;
short val  = data[idx] + msg1[idx] + msg2[idx] + msg3[idx];
if(val < minimum)
minimum = val;
msg_dst[idx] = val;
}
float sum = 0;
for(int d = 0; d < nr_plane; d++)
{
float cost_min = minimum + cmax_disc_term;
short src_disp_reg = src_disp[d * cdisp_step1];
for(int d2 = 0; d2 < nr_plane; d2++)
cost_min = fmin(cost_min, (msg_dst[d2 * cdisp_step1] + 
cdisc_single_jump * abs(dst_disp[d2 * cdisp_step1] - src_disp_reg)));
temp[d * cdisp_step1] = convert_short_sat_rte(cost_min);
sum += cost_min;
}
sum /= nr_plane;
for(int d = 0; d < nr_plane; d++)
msg_dst[d * cdisp_step1] = convert_short_sat_rte(temp[d * cdisp_step1] - sum);
}
void message_per_pixel_1(__global const float *data, __global float *msg_dst, __global const float *msg1, 
__global const float *msg2, __global const float *msg3,
__global const float *dst_disp, __global const float *src_disp, 
int nr_plane, __global float *temp,
float cmax_disc_term, int cdisp_step1, float cdisc_single_jump)
{
float minimum = FLT_MAX;
for(int d = 0; d < nr_plane; d++)     
{
int idx = d * cdisp_step1;
float val  = data[idx] + msg1[idx] + msg2[idx] + msg3[idx];
if(val < minimum)
minimum = val;
msg_dst[idx] = val;
}
float sum = 0;
for(int d = 0; d < nr_plane; d++)
{
float cost_min = minimum + cmax_disc_term;
float src_disp_reg = src_disp[d * cdisp_step1];
for(int d2 = 0; d2 < nr_plane; d2++)
cost_min = fmin(cost_min, (msg_dst[d2 * cdisp_step1] + 
cdisc_single_jump * fabs(dst_disp[d2 * cdisp_step1] - src_disp_reg)));
temp[d * cdisp_step1] = cost_min;
sum += cost_min;
}
sum /= nr_plane;
for(int d = 0; d < nr_plane; d++)
msg_dst[d * cdisp_step1] = temp[d * cdisp_step1] - sum;
}
__kernel void compute_message_0(__global short *u_, __global short *d_, __global short *l_, __global short *r_, 
__global const short *data_cost_selected, __global const short *selected_disp_pyr_cur, 
__global short *ctemp, int h, int w, int nr_plane, int i, 
float cmax_disc_term, int cdisp_step1, int cmsg_step1, float cdisc_single_jump)
{
int y = get_global_id(1);
int x = ((get_global_id(0)) << 1) + ((y + i) & 1);
if (y > 0 && y < h - 1 && x > 0 && x < w - 1)
{
__global const short *data = data_cost_selected + y * cmsg_step1 + x;
__global short *u = u_ + y * cmsg_step1 + x;
__global short *d = d_ + y * cmsg_step1 + x;
__global short *l = l_ + y * cmsg_step1 + x;
__global short *r = r_ + y * cmsg_step1 + x;
__global const short *disp = selected_disp_pyr_cur + y * cmsg_step1 + x;
__global short *temp = ctemp + y * cmsg_step1 + x;
message_per_pixel_0(data, u, r - 1, u + cmsg_step1, l + 1, disp, disp - cmsg_step1, nr_plane, temp, 
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_0(data, d, d - cmsg_step1, r - 1, l + 1, disp, disp + cmsg_step1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_0(data, l, u + cmsg_step1, d - cmsg_step1, l + 1, disp, disp - 1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_0(data, r, u + cmsg_step1, d - cmsg_step1, r - 1, disp, disp + 1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
}
}
__kernel void compute_message_1(__global float *u_, __global float *d_, __global float *l_, __global float *r_, 
__global const float *data_cost_selected, __global const float *selected_disp_pyr_cur, 
__global float *ctemp, int h, int w, int nr_plane, int i, 
float cmax_disc_term, int cdisp_step1, int cmsg_step1, float cdisc_single_jump)
{
int y = get_global_id(1);
int x = ((get_global_id(0)) << 1) + ((y + i) & 1);
if (y > 0 && y < h - 1 && x > 0 && x < w - 1)
{
__global const float *data = data_cost_selected + y * cmsg_step1 + x;
__global float *u = u_ + y * cmsg_step1 + x;
__global float *d = d_ + y * cmsg_step1 + x;
__global float *l = l_ + y * cmsg_step1 + x;
__global float *r = r_ + y * cmsg_step1 + x;
__global const float *disp = selected_disp_pyr_cur + y * cmsg_step1 + x;
__global float *temp = ctemp + y * cmsg_step1 + x;
message_per_pixel_1(data, u, r - 1, u + cmsg_step1, l + 1, disp, disp - cmsg_step1, nr_plane, temp, 
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_1(data, d, d - cmsg_step1, r - 1, l + 1, disp, disp + cmsg_step1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_1(data, l, u + cmsg_step1, d - cmsg_step1, l + 1, disp, disp - 1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
message_per_pixel_1(data, r, u + cmsg_step1, d - cmsg_step1, r - 1, disp, disp + 1, nr_plane, temp,
cmax_disc_term, cdisp_step1, cdisc_single_jump);
}
}
__kernel void compute_disp_0(__global const short *u_, __global const short *d_, __global const short *l_, 
__global const short *r_, __global const short * data_cost_selected, 
__global const short *disp_selected_pyr,
__global short* disp, 
int res_step, int cols, int rows, int nr_plane,
int cmsg_step1, int cdisp_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y > 0 && y < rows - 1 && x > 0 && x < cols - 1)
{
__global const short *data = data_cost_selected + y * cmsg_step1 + x;
__global const short *disp_selected = disp_selected_pyr + y * cmsg_step1 + x;
__global const short *u = u_ + (y+1) * cmsg_step1 + (x+0);
__global const short *d = d_ + (y-1) * cmsg_step1 + (x+0);
__global const short *l = l_ + (y+0) * cmsg_step1 + (x+1);
__global const short *r = r_ + (y+0) * cmsg_step1 + (x-1);
short best = 0;
short best_val = SHRT_MAX;
for (int i = 0; i < nr_plane; ++i)
{
int idx = i * cdisp_step1;
short val = data[idx]+ u[idx] + d[idx] + l[idx] + r[idx];
if (val < best_val)
{
best_val = val;
best = disp_selected[idx];
}
}
disp[res_step * y + x] = best;
}
}
__kernel void compute_disp_1(__global const float *u_, __global const float *d_, __global const float *l_, 
__global const float *r_, __global const float *data_cost_selected, 
__global const float *disp_selected_pyr,
__global short *disp, 
int res_step, int cols, int rows, int nr_plane,
int cmsg_step1, int cdisp_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y > 0 && y < rows - 1 && x > 0 && x < cols - 1)
{
__global const float *data = data_cost_selected + y * cmsg_step1 + x;
__global const float *disp_selected = disp_selected_pyr + y * cmsg_step1 + x;
__global const float *u = u_ + (y+1) * cmsg_step1 + (x+0);
__global const float *d = d_ + (y-1) * cmsg_step1 + (x+0);
__global const float *l = l_ + (y+0) * cmsg_step1 + (x+1);
__global const float *r = r_ + (y+0) * cmsg_step1 + (x-1);
short best = 0;
short best_val = SHRT_MAX;
for (int i = 0; i < nr_plane; ++i)
{
int idx = i * cdisp_step1;
float val = data[idx]+ u[idx] + d[idx] + l[idx] + r[idx];
if (val < best_val)
{
best_val = val;
best = convert_short_sat_rte(disp_selected[idx]);
}
}
disp[res_step * y + x] = best;
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifdef T_FLOAT
#define T float
#else
#define T short
#endif
T saturate_cast(float v){
#ifdef T_SHORT
return convert_short_sat_rte(v); 
#else
return v;
#endif
}
#define FLOAT_MAX 3.402823466e+38f
typedef struct
{
int   cndisp;
float cmax_data_term;
float cdata_weight;
float cmax_disc_term;
float cdisc_single_jump;
}con_srtuct_t;
float pix_diff_1(__global const uchar *ls, __global const uchar *rs)
{
return abs((int)(*ls) - *rs); 
}
float pix_diff_3(__global const uchar *ls, __global const uchar *rs)
{
const float tr = 0.299f;
const float tg = 0.587f;
const float tb = 0.114f;
float val;
val =  tb * abs((int)ls[0] - rs[0]);
val += tg * abs((int)ls[1] - rs[1]);
val += tr * abs((int)ls[2] - rs[2]);
return val;
}
float pix_diff_4(__global const uchar *ls, __global const uchar *rs)
{
uchar4 l, r;
l = *((__global uchar4 *)ls);
r = *((__global uchar4 *)rs);
const float tr = 0.299f;
const float tg = 0.587f;
const float tb = 0.114f;
float val;
val  = tb * abs((int)l.x - r.x);
val += tg * abs((int)l.y - r.y);
val += tr * abs((int)l.z - r.z);
return val;
}
#ifndef CN
#define CN 4
#endif
#define CAT(X,Y) X##Y
#define CAT2(X,Y) CAT(X,Y)
#define PIX_DIFF CAT2(pix_diff_, CN)
__kernel void comp_data(__global uchar *left,  int left_rows,  int left_cols,  int left_step,
__global uchar *right, int right_step,
__global T *data, int data_step,
__constant con_srtuct_t *con_st)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (y > 0 && y < (left_rows - 1) && x > 0 && x < (left_cols - 1))
{
data_step /= sizeof(T);
const __global uchar* ls = left  + y * left_step  + x * CN;
const __global uchar* rs = right + y * right_step + x * CN;
__global T *ds = data + y * data_step + x;
const unsigned int disp_step = data_step * left_rows;
for (int disp = 0; disp < con_st -> cndisp; disp++)
{
if (x - disp >= 1)
{
float val = 0;
val = PIX_DIFF(ls, rs - disp * CN);
ds[disp * disp_step] =  saturate_cast(fmin(con_st -> cdata_weight * val, 
con_st -> cdata_weight * con_st -> cmax_data_term));
}
else
{
ds[disp * disp_step] =  saturate_cast(con_st -> cdata_weight * con_st -> cmax_data_term);
}
}
}
}
__kernel void data_step_down(__global T *src, int src_rows, 
__global T *dst, int dst_rows, int dst_cols, 
int src_step, int dst_step,
int cndisp)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if (x < dst_cols && y < dst_rows)
{
src_step /= sizeof(T);
dst_step /= sizeof(T);
for (int d = 0; d < cndisp; ++d)
{
float dst_reg;
dst_reg  = src[(d * src_rows + min(2*y+0, src_rows-1)) * src_step + 2*x+0];
dst_reg += src[(d * src_rows + min(2*y+1, src_rows-1)) * src_step + 2*x+0];
dst_reg += src[(d * src_rows + min(2*y+0, src_rows-1)) * src_step + 2*x+1];
dst_reg += src[(d * src_rows + min(2*y+1, src_rows-1)) * src_step + 2*x+1];
dst[(d * dst_rows + y) * dst_step + x] = saturate_cast(dst_reg);
}
}
}
__kernel void level_up_message(__global T *src, int src_rows, int src_step,
__global T *dst, int dst_rows, int dst_cols, int dst_step,
int cndisp)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if (x < dst_cols && y < dst_rows)
{
src_step /= sizeof(T);
dst_step /= sizeof(T);
const int dst_disp_step = dst_step * dst_rows;
const int src_disp_step = src_step * src_rows;
__global T       *dstr = dst + y * dst_step + x;
__global const T *srcr = src + (y / 2 * src_step) + (x / 2);
for (int d = 0; d < cndisp; ++d)
dstr[d * dst_disp_step] = srcr[d * src_disp_step];
}
}
void calc_min_linear_penalty(__global T * dst, int disp_step, 
int cndisp, float cdisc_single_jump)
{
float prev = dst[0];
float cur;
for (int disp = 1; disp < cndisp; ++disp)
{
prev += cdisc_single_jump;
cur = dst[disp_step * disp];
if (prev < cur)
{
cur = prev;
dst[disp_step * disp] = saturate_cast(prev);
}
prev = cur;
}
prev = dst[(cndisp - 1) * disp_step];
for (int disp = cndisp - 2; disp >= 0; disp--)
{
prev += cdisc_single_jump;
cur = dst[disp_step * disp];
if (prev < cur)
{
cur = prev;
dst[disp_step * disp] = saturate_cast(prev);
}
prev = cur;
}
}
void message(const __global T *msg1, const __global T *msg2,
const __global T *msg3, const __global T *data, __global T *dst,
int msg_disp_step, int data_disp_step, int cndisp, float cmax_disc_term, float cdisc_single_jump)
{
float minimum = FLOAT_MAX;
for(int i = 0; i < cndisp; ++i)
{
float dst_reg;
dst_reg  = msg1[msg_disp_step * i];
dst_reg += msg2[msg_disp_step * i];
dst_reg += msg3[msg_disp_step * i];
dst_reg += data[data_disp_step * i];
if (dst_reg < minimum)
minimum = dst_reg;
dst[msg_disp_step * i] = saturate_cast(dst_reg);
}
calc_min_linear_penalty(dst, msg_disp_step, cndisp, cdisc_single_jump);
minimum += cmax_disc_term;
float sum = 0;
for(int i = 0; i < cndisp; ++i)
{
float dst_reg = dst[msg_disp_step * i];
if (dst_reg > minimum)
{
dst_reg = minimum;
dst[msg_disp_step * i] = saturate_cast(minimum);
}
sum += dst_reg;
}
sum /= cndisp;
for(int i = 0; i < cndisp; ++i)
dst[msg_disp_step * i] -= sum;
}
__kernel void one_iteration(__global T *u,    int u_step,
__global T *data, int data_step,
__global T *d,    __global T *l, __global T *r,
int t, int cols, int rows, 
int cndisp, float cmax_disc_term, float cdisc_single_jump)
{
const int y = get_global_id(1);
const int x = ((get_global_id(0)) << 1) + ((y + t) & 1);
if ((y > 0) && (y < rows - 1) && (x > 0) && (x < cols - 1))
{
u_step    /= sizeof(T);
data_step /= sizeof(T);
__global T *us = u + y * u_step + x;
__global T *ds = d + y * u_step + x;
__global T *ls = l + y * u_step + x;
__global T *rs = r + y * u_step + x;
const __global  T *dt = data + y * data_step + x;
int msg_disp_step = u_step * rows;
int data_disp_step = data_step * rows;
message(us + u_step, ls      + 1, rs - 1, dt, us, msg_disp_step, data_disp_step, cndisp, 
cmax_disc_term, cdisc_single_jump);
message(ds - u_step, ls      + 1, rs - 1, dt, ds, msg_disp_step, data_disp_step, cndisp,
cmax_disc_term, cdisc_single_jump);
message(us + u_step, ds - u_step, rs - 1, dt, rs, msg_disp_step, data_disp_step, cndisp,
cmax_disc_term, cdisc_single_jump);
message(us + u_step, ds - u_step, ls + 1, dt, ls, msg_disp_step, data_disp_step, cndisp,
cmax_disc_term, cdisc_single_jump);
}
}
__kernel void output(const __global T *u, int u_step,
const __global T *d, const __global T *l,
const __global T *r, const __global T *data,
__global T *disp, int disp_rows, int disp_cols, int disp_step,
int cndisp)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if (y > 0 && y < disp_rows - 1 && x > 0 && x < disp_cols - 1)
{
u_step    /= sizeof(T);
disp_step /= sizeof(T);
const __global T *us = u + (y + 1) * u_step + x;
const __global T *ds = d + (y - 1) * u_step + x;
const __global T *ls = l + y * u_step + (x + 1);
const __global T *rs = r + y * u_step + (x - 1);
const __global T *dt = data + y * u_step + x;
int disp_steps = disp_rows * u_step;
int best = 0;
float best_val = FLOAT_MAX;
for (int d = 0; d < cndisp; ++d)
{
float val;
val  = us[d * disp_steps];
val += ds[d * disp_steps];
val += ls[d * disp_steps];
val += rs[d * disp_steps];
val += dt[d * disp_steps];
if (val < best_val)
{
best_val = val;
best = d;
}
}
(disp + y * disp_step)[x] = convert_short_sat(best);
}
}
#define ROWSperTHREAD 21
#define BLOCK_W       128
#define N_DISPARITIES 8
#define STEREO_MIND 0
#define STEREO_DISP_STEP N_DISPARITIES
#ifndef radius
#define radius 64
#endif
unsigned int CalcSSD(__local unsigned int *col_ssd)
{
unsigned int cache = col_ssd[0];
#pragma unroll
for(int i = 1; i <= (radius << 1); i++)
cache += col_ssd[i];
return cache;
}
uint2 MinSSD(__local unsigned int *col_ssd)
{
unsigned int ssd[N_DISPARITIES];
const int win_size = (radius << 1);
ssd[0] = CalcSSD(col_ssd + 0 * (BLOCK_W + win_size));
ssd[1] = CalcSSD(col_ssd + 1 * (BLOCK_W + win_size));
ssd[2] = CalcSSD(col_ssd + 2 * (BLOCK_W + win_size));
ssd[3] = CalcSSD(col_ssd + 3 * (BLOCK_W + win_size));
ssd[4] = CalcSSD(col_ssd + 4 * (BLOCK_W + win_size));
ssd[5] = CalcSSD(col_ssd + 5 * (BLOCK_W + win_size));
ssd[6] = CalcSSD(col_ssd + 6 * (BLOCK_W + win_size));
ssd[7] = CalcSSD(col_ssd + 7 * (BLOCK_W + win_size));
unsigned int mssd = min(min(min(ssd[0], ssd[1]), min(ssd[4], ssd[5])), min(min(ssd[2], ssd[3]), min(ssd[6], ssd[7])));
int bestIdx = 0;
for (int i = 0; i < N_DISPARITIES; i++)
{
if (mssd == ssd[i])
bestIdx = i;
}
return (uint2)(mssd, bestIdx);
}
void StepDown(int idx1, int idx2, __global unsigned char* imageL,
__global unsigned char* imageR, int d,   __local unsigned int *col_ssd)
{
uint8 imgR1 = convert_uint8(vload8(0, imageR + (idx1 - d - 7)));
uint8 imgR2 = convert_uint8(vload8(0, imageR + (idx2 - d - 7)));
uint8 diff1 = (uint8)(imageL[idx1]) - imgR1;
uint8 diff2 = (uint8)(imageL[idx2]) - imgR2;
uint8 res = diff2 * diff2 - diff1 * diff1;
const int win_size = (radius << 1);
col_ssd[0 * (BLOCK_W + win_size)] += res.s7;
col_ssd[1 * (BLOCK_W + win_size)] += res.s6;
col_ssd[2 * (BLOCK_W + win_size)] += res.s5;
col_ssd[3 * (BLOCK_W + win_size)] += res.s4;
col_ssd[4 * (BLOCK_W + win_size)] += res.s3;
col_ssd[5 * (BLOCK_W + win_size)] += res.s2;
col_ssd[6 * (BLOCK_W + win_size)] += res.s1;
col_ssd[7 * (BLOCK_W + win_size)] += res.s0;
}
void InitColSSD(int x_tex, int y_tex, int im_pitch, __global unsigned char* imageL,
__global unsigned char* imageR, int d,
__local unsigned int *col_ssd)
{
uint8 leftPixel1;
uint8 diffa = 0;
int idx = y_tex * im_pitch + x_tex;
const int win_size = (radius << 1);
for(int i = 0; i < (win_size + 1); i++)
{
leftPixel1 = (uint8)(imageL[idx]);
uint8 imgR = convert_uint8(vload8(0, imageR + (idx - d - 7)));
uint8 res = leftPixel1 - imgR;
diffa += res * res;
idx += im_pitch;
}
col_ssd[0 * (BLOCK_W + win_size)] = diffa.s7;
col_ssd[1 * (BLOCK_W + win_size)] = diffa.s6;
col_ssd[2 * (BLOCK_W + win_size)] = diffa.s5;
col_ssd[3 * (BLOCK_W + win_size)] = diffa.s4;
col_ssd[4 * (BLOCK_W + win_size)] = diffa.s3;
col_ssd[5 * (BLOCK_W + win_size)] = diffa.s2;
col_ssd[6 * (BLOCK_W + win_size)] = diffa.s1;
col_ssd[7 * (BLOCK_W + win_size)] = diffa.s0;
}
__kernel void stereoKernel(__global unsigned char *left, __global unsigned char *right,
__global unsigned int *cminSSDImage, int cminSSD_step,
__global unsigned char *disp, int disp_step,int cwidth, int cheight,
int img_step, int maxdisp,
__local unsigned int *col_ssd_cache)
{
__local unsigned int *col_ssd = col_ssd_cache + get_local_id(0);
__local unsigned int *col_ssd_extra = get_local_id(0) < (radius << 1) ? col_ssd + BLOCK_W : 0;
int X = get_group_id(0) * BLOCK_W + get_local_id(0) + maxdisp + radius;
#define Y (get_group_id(1) * ROWSperTHREAD + radius)
__global unsigned int* minSSDImage = cminSSDImage + X + Y * cminSSD_step;
__global unsigned char* disparImage = disp + X + Y * disp_step;
int end_row = ROWSperTHREAD < (cheight - Y) ? ROWSperTHREAD:(cheight - Y);
int y_tex;
int x_tex = X - radius;
for(int d = STEREO_MIND; d < maxdisp; d += STEREO_DISP_STEP)
{
y_tex = Y - radius;
InitColSSD(x_tex, y_tex, img_step, left, right, d, col_ssd);
if (col_ssd_extra > 0)
if (x_tex + BLOCK_W < cwidth)
InitColSSD(x_tex + BLOCK_W, y_tex, img_step, left, right, d, col_ssd_extra);
barrier(CLK_LOCAL_MEM_FENCE);
uint2 minSSD = MinSSD(col_ssd);
if (X < cwidth - radius && Y < cheight - radius)
{
if (minSSD.x < minSSDImage[0])
{
disparImage[0] = (unsigned char)(d + minSSD.y);
minSSDImage[0] = minSSD.x;
}
}
for(int row = 1; row < end_row; row++)
{
int idx1 = y_tex * img_step + x_tex;
int idx2 = min(y_tex + ((radius << 1) + 1), cheight - 1) * img_step + x_tex;
barrier(CLK_LOCAL_MEM_FENCE);
StepDown(idx1, idx2, left, right, d, col_ssd);
if (col_ssd_extra > 0)
if (x_tex + BLOCK_W < cwidth)
StepDown(idx1, idx2, left + BLOCK_W, right + BLOCK_W, d, col_ssd_extra);
barrier(CLK_LOCAL_MEM_FENCE);
uint2 minSSD = MinSSD(col_ssd);
if (X < cwidth - radius && row < cheight - radius - Y)
{
int idx = row * cminSSD_step;
if (minSSD.x < minSSDImage[idx])
{
disparImage[disp_step * row] = (unsigned char)(d + minSSD.y);
minSSDImage[idx] = minSSD.x;
}
}
y_tex++;
}
}
}
__kernel void prefilter_xsobel(__global unsigned char *input, __global unsigned char *output,
int rows, int cols, int prefilterCap)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int cov = input[(y-1) * cols + (x-1)] * (-1) + input[(y-1) * cols + (x+1)] * (1) +
input[(y)   * cols + (x-1)] * (-2) + input[(y)   * cols + (x+1)] * (2) +
input[(y+1) * cols + (x-1)] * (-1) + input[(y+1) * cols + (x+1)] * (1);
cov = min(min(max(-prefilterCap, cov), prefilterCap) + prefilterCap, 255);
output[y * cols + x] = cov & 0xFF;
}
}
float sobel(__global unsigned char *input, int x, int y, int rows, int cols)
{
float conv = 0;
int y1 = y==0? 0 : y-1;
int x1 = x==0? 0 : x-1;
if(x < cols && y < rows && x > 0 && y > 0)
{
conv = (float)input[(y1)  * cols + (x1)] * (-1) + (float)input[(y1)  * cols + (x+1)] * (1) +
(float)input[(y)   * cols + (x1)] * (-2) + (float)input[(y)   * cols + (x+1)] * (2) +
(float)input[(y+1) * cols + (x1)] * (-1) + (float)input[(y+1) * cols + (x+1)] * (1);
}
return fabs(conv);
}
float CalcSums(__local float *cols, __local float *cols_cache, int winsz)
{
float cache = 0;
float cache2 = 0;
int winsz2 = winsz/2;
int x = get_local_id(0);
int group_size_x = get_local_size(0);
for(int i = 1; i <= winsz2; i++)
cache += cols[i];
cols_cache[0] = cache;
barrier(CLK_LOCAL_MEM_FENCE);
if (x < group_size_x - winsz2)
cache2 = cols_cache[winsz2];
else
for(int i = winsz2 + 1; i < winsz; i++)
cache2 += cols[i];
return cols[0] + cache + cache2;
}
#define RpT (2 * ROWSperTHREAD)
__kernel void textureness_kernel(__global unsigned char *disp, int disp_rows, int disp_cols,
int disp_step, __global unsigned char *input, int input_rows,
int input_cols,int winsz, float threshold,
__local float *cols_cache)
{
int winsz2 = winsz/2;
int n_dirty_pixels = (winsz2) * 2;
int local_id_x = get_local_id(0);
int group_size_x = get_local_size(0);
int group_id_y = get_group_id(1);
__local float *cols = cols_cache + group_size_x + local_id_x;
__local float *cols_extra = local_id_x < n_dirty_pixels ? cols + group_size_x : 0;
int x = get_global_id(0);
int beg_row = group_id_y * RpT;
int end_row = min(beg_row + RpT, disp_rows);
int y = beg_row;
float sum = 0;
float sum_extra = 0;
for(int i = y - winsz2; i <= y + winsz2; ++i)
{
sum += sobel(input, x - winsz2, i, input_rows, input_cols);
if (cols_extra)
sum_extra += sobel(input, x + group_size_x - winsz2, i, input_rows, input_cols);
}
*cols = sum;
if (cols_extra)
*cols_extra = sum_extra;
barrier(CLK_LOCAL_MEM_FENCE);
float sum_win = CalcSums(cols, cols_cache + local_id_x, winsz) * 255;
if (sum_win < threshold)
disp[y * disp_step + x] = 0;
barrier(CLK_LOCAL_MEM_FENCE);
for(int y = beg_row + 1; y < end_row; ++y)
{
sum = sum - sobel(input, x - winsz2, y - winsz2 - 1, input_rows, input_cols) +
sobel(input, x - winsz2, y + winsz2, input_rows, input_cols);
*cols = sum;
if (cols_extra)
{
sum_extra = sum_extra - sobel(input, x + group_size_x - winsz2, y - winsz2 - 1,input_rows, input_cols)
+ sobel(input, x + group_size_x - winsz2, y + winsz2, input_rows, input_cols);
*cols_extra = sum_extra;
}
barrier(CLK_LOCAL_MEM_FENCE);
float sum_win = CalcSums(cols, cols_cache + local_id_x, winsz) * 255;
if (sum_win < threshold)
disp[y * disp_step + x] = 0;
barrier(CLK_LOCAL_MEM_FENCE);
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void split_vector_C4_D0 (__global uchar *mat_src,  int src_step,  int src_offset,
__global uchar *mat_dst0, int dst0_step, int dst0_offset,
__global uchar *mat_dst1, int dst1_step, int dst1_offset,
__global uchar *mat_dst2, int dst2_step, int dst2_offset,
__global uchar *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
int src_idx  = mad24(y, src_step, src_offset + (x << 2));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x) & (int)0xfffffffc;
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x) & (int)0xfffffffc;
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + x) & (int)0xfffffffc;
int dst3_start = mad24(y, dst3_step, dst3_offset);
int dst3_end   = mad24(y, dst3_step, dst3_offset + dst_step1);
int dst3_idx   = mad24(y, dst3_step, dst3_offset + x) & (int)0xfffffffc;
uchar4 data_0 = *((global uchar4 *)(mat_src + (src_idx - 12 >= 0 ? src_idx - 12 : src_idx)));
uchar4 data_1 = *((global uchar4 *)(mat_src + (src_idx - 8  >= 0 ? src_idx - 8  : src_idx)));
uchar4 data_2 = *((global uchar4 *)(mat_src + (src_idx - 4  >= 0 ? src_idx - 4  : src_idx)));
uchar4 data_3 = *((global uchar4 *)(mat_src + src_idx + 0 ));
int total_bytes = src_offset + rows * src_step;
uchar4 data_4 = *((global uchar4 *)(mat_src + (src_idx + 4  < total_bytes ? src_idx + 4  : src_idx)));
uchar4 data_5 = *((global uchar4 *)(mat_src + (src_idx + 8  < total_bytes ? src_idx + 8  : src_idx)));
uchar4 data_6 = *((global uchar4 *)(mat_src + (src_idx + 12 < total_bytes ? src_idx + 12 : src_idx)));
uchar4 tmp_data0=1, tmp_data1=2, tmp_data2, tmp_data3;
if((dst0_offset & 3) == 3)
tmp_data0 = (uchar4)(data_0.x, data_1.x, data_2.x, data_3.x);
if((dst0_offset & 3) == 2)
tmp_data0 = (uchar4)(data_1.x, data_2.x, data_3.x, data_4.x);
if((dst0_offset & 3) == 1)
tmp_data0 = (uchar4)(data_2.x, data_3.x, data_4.x, data_5.x);
if((dst0_offset & 3) == 0)
tmp_data0 = (uchar4)(data_3.x, data_4.x, data_5.x, data_6.x);
if((dst1_offset & 3) == 3)
tmp_data1 = (uchar4)(data_0.y, data_1.y, data_2.y, data_3.y);
if((dst1_offset & 3) == 2)
tmp_data1 = (uchar4)(data_1.y, data_2.y, data_3.y, data_4.y);
if((dst1_offset & 3) == 1)
tmp_data1 = (uchar4)(data_2.y, data_3.y, data_4.y, data_5.y);
if((dst1_offset & 3) == 0)
tmp_data1 = (uchar4)(data_3.y, data_4.y, data_5.y, data_6.y);
if((dst2_offset & 3) == 3)
tmp_data2 = (uchar4)(data_0.z, data_1.z, data_2.z, data_3.z);
if((dst2_offset & 3) == 2)
tmp_data2 = (uchar4)(data_1.z, data_2.z, data_3.z, data_4.z);
if((dst2_offset & 3) == 1)
tmp_data2 = (uchar4)(data_2.z, data_3.z, data_4.z, data_5.z);
if((dst2_offset & 3) == 0)
tmp_data2 = (uchar4)(data_3.z, data_4.z, data_5.z, data_6.z);
if((dst3_offset & 3) == 3)
tmp_data3 = (uchar4)(data_0.w, data_1.w, data_2.w, data_3.w);
if((dst3_offset & 3) == 2)
tmp_data3 = (uchar4)(data_1.w, data_2.w, data_3.w, data_4.w);
if((dst3_offset & 3) == 1)
tmp_data3 = (uchar4)(data_2.w, data_3.w, data_4.w, data_5.w);
if((dst3_offset & 3) == 0)
tmp_data3 = (uchar4)(data_3.w, data_4.w, data_5.w, data_6.w);
uchar4 dst0_data  = *((__global uchar4 *)(mat_dst0 + dst0_idx));
uchar4 dst1_data  = *((__global uchar4 *)(mat_dst1 + dst1_idx));
uchar4 dst2_data  = *((__global uchar4 *)(mat_dst2 + dst2_idx));
uchar4 dst3_data  = *((__global uchar4 *)(mat_dst3 + dst3_idx));
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.z : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? tmp_data0.w : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.z : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? tmp_data1.w : dst1_data.w;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 1 >= dst2_start) && (dst2_idx + 1 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data2.z = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.z : dst2_data.z;
tmp_data2.w = ((dst2_idx + 3 >= dst2_start) && (dst2_idx + 3 < dst2_end)) ? tmp_data2.w : dst2_data.w;
tmp_data3.x = ((dst3_idx + 0 >= dst3_start) && (dst3_idx + 0 < dst3_end)) ? tmp_data3.x : dst3_data.x;
tmp_data3.y = ((dst3_idx + 1 >= dst3_start) && (dst3_idx + 1 < dst3_end)) ? tmp_data3.y : dst3_data.y;
tmp_data3.z = ((dst3_idx + 2 >= dst3_start) && (dst3_idx + 2 < dst3_end)) ? tmp_data3.z : dst3_data.z;
tmp_data3.w = ((dst3_idx + 3 >= dst3_start) && (dst3_idx + 3 < dst3_end)) ? tmp_data3.w : dst3_data.w;
*((__global uchar4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global uchar4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
*((__global uchar4 *)(mat_dst2 + dst2_idx)) = tmp_data2;
*((__global uchar4 *)(mat_dst3 + dst3_idx)) = tmp_data3;
}
}
__kernel void split_vector_C3_D0 (__global uchar *mat_src,  int src_step,  int src_offset,
__global uchar *mat_dst0, int dst0_step, int dst0_offset,
__global uchar *mat_dst1, int dst1_step, int dst1_offset,
__global uchar *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
int src_idx  = mad24(y, src_step, src_offset);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x  & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + x & (int)0xfffffffc);
uchar4 dst0_data  = *((__global uchar4 *)(mat_dst0 + dst0_idx));
uchar4 dst1_data  = *((__global uchar4 *)(mat_dst1 + dst1_idx));
uchar4 dst2_data  = *((__global uchar4 *)(mat_dst2 + dst2_idx));
uchar4 tmp_data0, tmp_data1, tmp_data2;
uchar src_data_0  =  *(mat_src + src_idx + 3 * x - 9);
uchar src_data_1  =  *(mat_src + src_idx + 3 * x - 8);
uchar src_data_2  =  *(mat_src + src_idx + 3 * x - 7);
uchar src_data_3  =  *(mat_src + src_idx + 3 * x - 6);
uchar src_data_4  =  *(mat_src + src_idx + 3 * x - 5);
uchar src_data_5  =  *(mat_src + src_idx + 3 * x - 4);
uchar src_data_6  =  *(mat_src + src_idx + 3 * x - 3);
uchar src_data_7  =  *(mat_src + src_idx + 3 * x - 2);
uchar src_data_8  =  *(mat_src + src_idx + 3 * x - 1);
uchar src_data_9  =  *(mat_src + src_idx + 3 * x + 0);
uchar src_data_10 =  *(mat_src + src_idx + 3 * x + 1);
uchar src_data_11 =  *(mat_src + src_idx + 3 * x + 2);
uchar src_data_12 =  *(mat_src + src_idx + 3 * x + 3);
uchar src_data_13 =  *(mat_src + src_idx + 3 * x + 4);
uchar src_data_14 =  *(mat_src + src_idx + 3 * x + 5);
uchar src_data_15 =  *(mat_src + src_idx + 3 * x + 6);
uchar src_data_16 =  *(mat_src + src_idx + 3 * x + 7);
uchar src_data_17 =  *(mat_src + src_idx + 3 * x + 8);
uchar src_data_18 =  *(mat_src + src_idx + 3 * x + 9);
uchar src_data_19 =  *(mat_src + src_idx + 3 * x + 10);
uchar src_data_20 =  *(mat_src + src_idx + 3 * x + 11);
uchar data[7] = {src_data_0, src_data_3, src_data_6, src_data_9, src_data_12, src_data_15, src_data_18};
int index = 3 - dst0_offset & 3;
tmp_data0 = (uchar4)(data[index], data[index + 1], data[index + 2], data[index + 3]);
uchar4 data0, data1, data2;
data0     = (uchar4)(src_data_1, src_data_4, src_data_7, src_data_10);
data1     = (dst1_offset & 3) == 2 ? (uchar4)(src_data_4, src_data_7, src_data_10, src_data_13)  : data0;
data2     = (dst1_offset & 3) == 1 ? (uchar4)(src_data_7, src_data_10, src_data_13, src_data_16) : data1;
tmp_data1 = (dst1_offset & 3) == 0 ? (uchar4)(src_data_10, src_data_13, src_data_16, src_data_19): data2;
data0     = (uchar4)(src_data_2, src_data_5, src_data_8, src_data_11);
data1     = (dst2_offset & 3) == 2 ? (uchar4)(src_data_5, src_data_8, src_data_11, src_data_14)   : data0;
data2     = (dst2_offset & 3) == 1 ? (uchar4)(src_data_8, src_data_11, src_data_14, src_data_17)  : data1;
tmp_data2 = (dst2_offset & 3) == 0 ? (uchar4)(src_data_11, src_data_14, src_data_17, src_data_20) : data2;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.z : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? tmp_data0.w : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.z : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? tmp_data1.w : dst1_data.w;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 1 >= dst2_start) && (dst2_idx + 1 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data2.z = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.z : dst2_data.z;
tmp_data2.w = ((dst2_idx + 3 >= dst2_start) && (dst2_idx + 3 < dst2_end)) ? tmp_data2.w : dst2_data.w;
*((__global uchar4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global uchar4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
*((__global uchar4 *)(mat_dst2 + dst2_idx)) = tmp_data2;
}
}
__kernel void split_vector_C2_D0 (__global uchar *mat_src,  int src_step,  int src_offset,
__global uchar *mat_dst0, int dst0_step, int dst0_offset,
__global uchar *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
#define dst0_align ((dst0_offset & 3) << 1)
#define dst1_align ((dst1_offset & 3) << 1)
int src_idx_0  = mad24(y, src_step, src_offset - dst0_align + (x << 1));
int src_idx_1  = mad24(y, src_step, src_offset - dst1_align + (x << 1));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
int src2_index_fix = src_idx_1 < 0 ? 0 : src_idx_1;
uchar8 src_data_0 = vload8(0, mat_src + src_idx_0);
uchar8 src_data_1 = vload8(0, mat_src + src_idx_1);
if(src_idx_0 == -6)
src_data_0.s01234567 = src_data_0.s67012345;
if(src_idx_0 == -4)
src_data_0.s01234567 = src_data_0.s45670123;
if(src_idx_0 == -2)
src_data_0.s01234567 = src_data_0.s23456701;
if(src_idx_1 == -6)
src_data_1.s01234567 = src_data_1.s67012345;
if(src_idx_1 == -4)
src_data_1.s01234567 = src_data_1.s45670123;
if(src_idx_1 == -2)
src_data_1.s01234567 = src_data_1.s23456701;
uchar4 dst0_data  = *((__global uchar4 *)(mat_dst0 + dst0_idx));
uchar4 dst1_data  = *((__global uchar4 *)(mat_dst1 + dst1_idx));
uchar4 tmp_data0, tmp_data1;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? src_data_0.s0 : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? src_data_0.s2 : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? src_data_0.s4 : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? src_data_0.s6 : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? src_data_1.s1 : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? src_data_1.s3 : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? src_data_1.s5 : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? src_data_1.s7 : dst1_data.w;
*((__global uchar4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global uchar4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
}
}
__kernel void split_vector_C4_D1 (__global char *mat_src,  int src_step,  int src_offset,
__global char *mat_dst0, int dst0_step, int dst0_offset,
__global char *mat_dst1, int dst1_step, int dst1_offset,
__global char *mat_dst2, int dst2_step, int dst2_offset,
__global char *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
int src_idx  = mad24(y, src_step, src_offset + (x << 2));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + x & (int)0xfffffffc);
int dst3_start = mad24(y, dst3_step, dst3_offset);
int dst3_end   = mad24(y, dst3_step, dst3_offset + dst_step1);
int dst3_idx   = mad24(y, dst3_step, dst3_offset + x & (int)0xfffffffc);
char4 data_0 = *((global char4 *)(mat_src + src_idx - 12));
char4 data_1 = *((global char4 *)(mat_src + src_idx - 8 ));
char4 data_2 = *((global char4 *)(mat_src + src_idx - 4 ));
char4 data_3 = *((global char4 *)(mat_src + src_idx + 0 ));
char4 data_4 = *((global char4 *)(mat_src + src_idx + 4 ));
char4 data_5 = *((global char4 *)(mat_src + src_idx + 8 ));
char4 data_6 = *((global char4 *)(mat_src + src_idx + 12));
char4 tmp_data0=1, tmp_data1=2, tmp_data2, tmp_data3;
if((dst0_offset & 3) == 3)
tmp_data0 = (char4)(data_0.x, data_1.x, data_2.x, data_3.x);
if((dst0_offset & 3) == 2)
tmp_data0 = (char4)(data_1.x, data_2.x, data_3.x, data_4.x);
if((dst0_offset & 3) == 1)
tmp_data0 = (char4)(data_2.x, data_3.x, data_4.x, data_5.x);
if((dst0_offset & 3) == 0)
tmp_data0 = (char4)(data_3.x, data_4.x, data_5.x, data_6.x);
if((dst1_offset & 3) == 3)
tmp_data1 = (char4)(data_0.y, data_1.y, data_2.y, data_3.y);
if((dst1_offset & 3) == 2)
tmp_data1 = (char4)(data_1.y, data_2.y, data_3.y, data_4.y);
if((dst1_offset & 3) == 1)
tmp_data1 = (char4)(data_2.y, data_3.y, data_4.y, data_5.y);
if((dst1_offset & 3) == 0)
tmp_data1 = (char4)(data_3.y, data_4.y, data_5.y, data_6.y);
if((dst2_offset & 3) == 3)
tmp_data2 = (char4)(data_0.z, data_1.z, data_2.z, data_3.z);
if((dst2_offset & 3) == 2)
tmp_data2 = (char4)(data_1.z, data_2.z, data_3.z, data_4.z);
if((dst2_offset & 3) == 1)
tmp_data2 = (char4)(data_2.z, data_3.z, data_4.z, data_5.z);
if((dst2_offset & 3) == 0)
tmp_data2 = (char4)(data_3.z, data_4.z, data_5.z, data_6.z);
if((dst3_offset & 3) == 3)
tmp_data3 = (char4)(data_0.w, data_1.w, data_2.w, data_3.w);
if((dst3_offset & 3) == 2)
tmp_data3 = (char4)(data_1.w, data_2.w, data_3.w, data_4.w);
if((dst3_offset & 3) == 1)
tmp_data3 = (char4)(data_2.w, data_3.w, data_4.w, data_5.w);
if((dst3_offset & 3) == 0)
tmp_data3 = (char4)(data_3.w, data_4.w, data_5.w, data_6.w);
char4 dst0_data  = *((__global char4 *)(mat_dst0 + dst0_idx));
char4 dst1_data  = *((__global char4 *)(mat_dst1 + dst1_idx));
char4 dst2_data  = *((__global char4 *)(mat_dst2 + dst2_idx));
char4 dst3_data  = *((__global char4 *)(mat_dst3 + dst3_idx));
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.z : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? tmp_data0.w : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.z : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? tmp_data1.w : dst1_data.w;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 1 >= dst2_start) && (dst2_idx + 1 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data2.z = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.z : dst2_data.z;
tmp_data2.w = ((dst2_idx + 3 >= dst2_start) && (dst2_idx + 3 < dst2_end)) ? tmp_data2.w : dst2_data.w;
tmp_data3.x = ((dst3_idx + 0 >= dst3_start) && (dst3_idx + 0 < dst3_end)) ? tmp_data3.x : dst3_data.x;
tmp_data3.y = ((dst3_idx + 1 >= dst3_start) && (dst3_idx + 1 < dst3_end)) ? tmp_data3.y : dst3_data.y;
tmp_data3.z = ((dst3_idx + 2 >= dst3_start) && (dst3_idx + 2 < dst3_end)) ? tmp_data3.z : dst3_data.z;
tmp_data3.w = ((dst3_idx + 3 >= dst3_start) && (dst3_idx + 3 < dst3_end)) ? tmp_data3.w : dst3_data.w;
*((__global char4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global char4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
*((__global char4 *)(mat_dst2 + dst2_idx)) = tmp_data2;
*((__global char4 *)(mat_dst3 + dst3_idx)) = tmp_data3;
}
}
__kernel void split_vector_C3_D1 (__global char *mat_src,  int src_step,  int src_offset,
__global char *mat_dst0, int dst0_step, int dst0_offset,
__global char *mat_dst1, int dst1_step, int dst1_offset,
__global char *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
int src_idx  = mad24(y, src_step, src_offset);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x  & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + x & (int)0xfffffffc);
char4 dst0_data  = *((__global char4 *)(mat_dst0 + dst0_idx));
char4 dst1_data  = *((__global char4 *)(mat_dst1 + dst1_idx));
char4 dst2_data  = *((__global char4 *)(mat_dst2 + dst2_idx));
char4 tmp_data0, tmp_data1, tmp_data2;
char src_data_0  =  *(mat_src + src_idx + 3 * x - 9);
char src_data_1  =  *(mat_src + src_idx + 3 * x - 8);
char src_data_2  =  *(mat_src + src_idx + 3 * x - 7);
char src_data_3  =  *(mat_src + src_idx + 3 * x - 6);
char src_data_4  =  *(mat_src + src_idx + 3 * x - 5);
char src_data_5  =  *(mat_src + src_idx + 3 * x - 4);
char src_data_6  =  *(mat_src + src_idx + 3 * x - 3);
char src_data_7  =  *(mat_src + src_idx + 3 * x - 2);
char src_data_8  =  *(mat_src + src_idx + 3 * x - 1);
char src_data_9  =  *(mat_src + src_idx + 3 * x + 0);
char src_data_10 =  *(mat_src + src_idx + 3 * x + 1);
char src_data_11 =  *(mat_src + src_idx + 3 * x + 2);
char src_data_12 =  *(mat_src + src_idx + 3 * x + 3);
char src_data_13 =  *(mat_src + src_idx + 3 * x + 4);
char src_data_14 =  *(mat_src + src_idx + 3 * x + 5);
char src_data_15 =  *(mat_src + src_idx + 3 * x + 6);
char src_data_16 =  *(mat_src + src_idx + 3 * x + 7);
char src_data_17 =  *(mat_src + src_idx + 3 * x + 8);
char src_data_18 =  *(mat_src + src_idx + 3 * x + 9);
char src_data_19 =  *(mat_src + src_idx + 3 * x + 10);
char src_data_20 =  *(mat_src + src_idx + 3 * x + 11);
char data[7] = {src_data_0, src_data_3, src_data_6, src_data_9, src_data_12, src_data_15, src_data_18};
int index = 3 - dst0_offset & 3;
tmp_data0 = (char4)(data[index], data[index + 1], data[index + 2], data[index + 3]);
char4 data0, data1, data2;
data0     = (char4)(src_data_1, src_data_4, src_data_7, src_data_10);
data1     = (dst1_offset & 3) == 2 ? (char4)(src_data_4, src_data_7, src_data_10, src_data_13)  : data0;
data2     = (dst1_offset & 3) == 1 ? (char4)(src_data_7, src_data_10, src_data_13, src_data_16) : data1;
tmp_data1 = (dst1_offset & 3) == 0 ? (char4)(src_data_10, src_data_13, src_data_16, src_data_19): data2;
data0     = (char4)(src_data_2, src_data_5, src_data_8, src_data_11);
data1     = (dst2_offset & 3) == 2 ? (char4)(src_data_5, src_data_8, src_data_11, src_data_14)   : data0;
data2     = (dst2_offset & 3) == 1 ? (char4)(src_data_8, src_data_11, src_data_14, src_data_17)  : data1;
tmp_data2 = (dst2_offset & 3) == 0 ? (char4)(src_data_11, src_data_14, src_data_17, src_data_20) : data2;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.z : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? tmp_data0.w : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.z : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? tmp_data1.w : dst1_data.w;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 1 >= dst2_start) && (dst2_idx + 1 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data2.z = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.z : dst2_data.z;
tmp_data2.w = ((dst2_idx + 3 >= dst2_start) && (dst2_idx + 3 < dst2_end)) ? tmp_data2.w : dst2_data.w;
*((__global char4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global char4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
*((__global char4 *)(mat_dst2 + dst2_idx)) = tmp_data2;
}
}
__kernel void split_vector_C2_D1 (__global char *mat_src,  int src_step,  int src_offset,
__global char *mat_dst0, int dst0_step, int dst0_offset,
__global char *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 2;
#define dst0_align ((dst0_offset & 3) << 1)
#define dst1_align ((dst1_offset & 3) << 1)
int src_idx_0  = mad24(y, src_step, src_offset - dst0_align + (x << 1));
int src_idx_1  = mad24(y, src_step, src_offset - dst1_align + (x << 1));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + x & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + x & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
int src2_index_fix = src_idx_1 < 0 ? 0 : src_idx_1;
char8 src_data_0 = vload8(0, mat_src + src_idx_0);
char8 src_data_1 = vload8(0, mat_src + src_idx_1);
if(src_idx_0 == -6)
src_data_0.s01234567 = src_data_0.s67012345;
if(src_idx_0 == -4)
src_data_0.s01234567 = src_data_0.s45670123;
if(src_idx_0 == -2)
src_data_0.s01234567 = src_data_0.s23456701;
if(src_idx_1 == -6)
src_data_1.s01234567 = src_data_1.s67012345;
if(src_idx_1 == -4)
src_data_1.s01234567 = src_data_1.s45670123;
if(src_idx_1 == -2)
src_data_1.s01234567 = src_data_1.s23456701;
char4 dst0_data  = *((__global char4 *)(mat_dst0 + dst0_idx));
char4 dst1_data  = *((__global char4 *)(mat_dst1 + dst1_idx));
char4 tmp_data0, tmp_data1;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? src_data_0.s0 : dst0_data.x;
tmp_data0.y = ((dst0_idx + 1 >= dst0_start) && (dst0_idx + 1 < dst0_end)) ? src_data_0.s2 : dst0_data.y;
tmp_data0.z = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? src_data_0.s4 : dst0_data.z;
tmp_data0.w = ((dst0_idx + 3 >= dst0_start) && (dst0_idx + 3 < dst0_end)) ? src_data_0.s6 : dst0_data.w;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? src_data_1.s1 : dst1_data.x;
tmp_data1.y = ((dst1_idx + 1 >= dst1_start) && (dst1_idx + 1 < dst1_end)) ? src_data_1.s3 : dst1_data.y;
tmp_data1.z = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? src_data_1.s5 : dst1_data.z;
tmp_data1.w = ((dst1_idx + 3 >= dst1_start) && (dst1_idx + 3 < dst1_end)) ? src_data_1.s7 : dst1_data.w;
*((__global char4 *)(mat_dst0 + dst0_idx)) = tmp_data0;
*((__global char4 *)(mat_dst1 + dst1_idx)) = tmp_data1;
}
}
__kernel void split_vector_C4_D2 (__global ushort *mat_src,  int src_step,  int src_offset,
__global ushort *mat_dst0, int dst0_step, int dst0_offset,
__global ushort *mat_dst1, int dst1_step, int dst1_offset,
__global ushort *mat_dst2, int dst2_step, int dst2_offset,
__global ushort *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
int src_idx_0  = mad24(y, src_step, src_offset + (x << 3) - 8);
int src_idx_1  = mad24(y, src_step, src_offset + (x << 3) + 8);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + (x << 1) & (int)0xfffffffc);
int dst3_start = mad24(y, dst3_step, dst3_offset);
int dst3_end   = mad24(y, dst3_step, dst3_offset + dst_step1);
int dst3_idx   = mad24(y, dst3_step, dst3_offset + (x << 1) & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
ushort8 src_data0 = vload8(0,(__global ushort *)((__global char *)mat_src + src_idx_0));
if(src_idx_0 == -6)
src_data0.s01234567 = src_data0.s67012345;
if(src_idx_0 == -4)
src_data0.s01234567 = src_data0.s45670123;
if(src_idx_0 == -2)
src_data0.s01234567 = src_data0.s23456701;
ushort4 src_data1 = *((__global ushort4 *)((__global char *)mat_src + src_idx_1));
ushort2 dst0_data  = *((__global ushort2 *)((__global char *)mat_dst0 + dst0_idx));
ushort2 dst1_data  = *((__global ushort2 *)((__global char *)mat_dst1 + dst1_idx));
ushort2 dst2_data  = *((__global ushort2 *)((__global char *)mat_dst2 + dst2_idx));
ushort2 dst3_data  = *((__global ushort2 *)((__global char *)mat_dst3 + dst3_idx));
ushort2 tmp_data0, tmp_data1, tmp_data2, tmp_data3;
tmp_data0 = (dst0_offset & 3) == 0 ? (ushort2)(src_data0.s4, src_data1.s0) : (ushort2)(src_data0.s0, src_data0.s4);
tmp_data1 = (dst1_offset & 3) == 0 ? (ushort2)(src_data0.s5, src_data1.s1) : (ushort2)(src_data0.s1, src_data0.s5);
tmp_data2 = (dst2_offset & 3) == 0 ? (ushort2)(src_data0.s6, src_data1.s2) : (ushort2)(src_data0.s2, src_data0.s6);
tmp_data3 = (dst3_offset & 3) == 0 ? (ushort2)(src_data0.s7, src_data1.s3) : (ushort2)(src_data0.s3, src_data0.s7);
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data3.x = ((dst3_idx + 0 >= dst3_start) && (dst3_idx + 0 < dst3_end)) ? tmp_data3.x : dst3_data.x;
tmp_data3.y = ((dst3_idx + 2 >= dst3_start) && (dst3_idx + 2 < dst3_end)) ? tmp_data3.y : dst3_data.y;
*((global ushort2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((global ushort2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
*((global ushort2 *)((__global char *)mat_dst2 + dst2_idx)) = tmp_data2;
*((global ushort2 *)((__global char *)mat_dst3 + dst3_idx)) = tmp_data3;
}
}
__kernel void split_vector_C3_D2 (__global ushort *mat_src,  int src_step,  int src_offset,
__global ushort *mat_dst0, int dst0_step, int dst0_offset,
__global ushort *mat_dst1, int dst1_step, int dst1_offset,
__global ushort *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
int src_idx  = mad24(y, src_step, src_offset);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + (x << 1) & (int)0xfffffffc);
ushort2 dst0_data  = *((__global ushort2 *)((__global char *)mat_dst0 + dst0_idx));
ushort2 dst1_data  = *((__global ushort2 *)((__global char *)mat_dst1 + dst1_idx));
ushort2 dst2_data  = *((__global ushort2 *)((__global char *)mat_dst2 + dst2_idx));
ushort2 tmp_data0, tmp_data1, tmp_data2;
ushort src_data_0 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x - 3];
ushort src_data_1 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x - 2];
ushort src_data_2 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x - 1];
ushort src_data_3 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 0];
ushort src_data_4 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 1];
ushort src_data_5 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 2];
ushort src_data_6 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 3];
ushort src_data_7 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 4];
ushort src_data_8 = ((__global ushort *)((__global char *)mat_src + src_idx))[3 * x + 5];
tmp_data0 = (dst0_offset & 3) == 0 ? (ushort2)(src_data_3, src_data_6) : (ushort2)(src_data_0, src_data_3);
tmp_data1 = (dst1_offset & 3) == 0 ? (ushort2)(src_data_4, src_data_7) : (ushort2)(src_data_1, src_data_4);
tmp_data2 = (dst2_offset & 3) == 0 ? (ushort2)(src_data_5, src_data_8) : (ushort2)(src_data_2, src_data_5);
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.y : dst2_data.y;
*((__global ushort2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((__global ushort2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
*((__global ushort2 *)((__global char *)mat_dst2 + dst2_idx)) = tmp_data2;
}
}
__kernel void split_vector_C2_D2 (__global ushort *mat_src,  int src_step,  int src_offset,
__global ushort *mat_dst0, int dst0_step, int dst0_offset,
__global ushort *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
#define dst0_align ((dst0_offset & 3) << 1)
#define dst1_align ((dst1_offset & 3) << 1)
int src_idx_0  = mad24(y, src_step, src_offset - dst0_align + (x << 2));
int src_idx_1  = mad24(y, src_step, src_offset - dst1_align + (x << 2));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
int src2_index_fix = src_idx_1 < 0 ? 0 : src_idx_1;
ushort4 src_data_0 = vload4(0, (__global ushort *)((__global char *)mat_src + src1_index_fix));
ushort4 src_data_1 = vload4(0, (__global ushort *)((__global char *)mat_src + src2_index_fix));
if(src_idx_0 < 0)
{
ushort4 tmp;
tmp.xyzw = (src_idx_0 == -2) ? src_data_0.zwxy : src_data_0.yzwx;
src_data_0.xyzw = (src_idx_1 == -1) ? src_data_0.wxyz:tmp.xyzw;
}
if(src_idx_1 < 0)
{
ushort4 tmp;
tmp.xyzw = (src_idx_1 == -2) ? src_data_1.zwxy : src_data_1.yzwx;
src_data_1.xyzw = (src_idx_1 == -1) ? src_data_1.wxyz : tmp.xyzw;
}
ushort2 dst0_data  = *((__global ushort2 *)((__global char *)mat_dst0 + dst0_idx));
ushort2 dst1_data  = *((__global ushort2 *)((__global char *)mat_dst1 + dst1_idx));
ushort2 tmp_data0, tmp_data1;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? src_data_0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? src_data_0.z : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? src_data_1.y : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? src_data_1.w : dst1_data.y;
*((global ushort2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((global ushort2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
}
}
__kernel void split_vector_C4_D3 (__global short *mat_src,  int src_step,  int src_offset,
__global short *mat_dst0, int dst0_step, int dst0_offset,
__global short *mat_dst1, int dst1_step, int dst1_offset,
__global short *mat_dst2, int dst2_step, int dst2_offset,
__global short *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
int src_idx_0  = mad24(y, src_step, src_offset + (x << 3) - 8);
int src_idx_1  = mad24(y, src_step, src_offset + (x << 3) + 8);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + (x << 1) & (int)0xfffffffc);
int dst3_start = mad24(y, dst3_step, dst3_offset);
int dst3_end   = mad24(y, dst3_step, dst3_offset + dst_step1);
int dst3_idx   = mad24(y, dst3_step, dst3_offset + (x << 1) & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
short8 src_data0 = vload8(0,(__global short *)((__global char *)mat_src + src_idx_0));
if(src_idx_0 == -6)
src_data0.s01234567 = src_data0.s67012345;
if(src_idx_0 == -4)
src_data0.s01234567 = src_data0.s45670123;
if(src_idx_0 == -2)
src_data0.s01234567 = src_data0.s23456701;
short4 src_data1 = *((__global short4 *)((__global char *)mat_src + src_idx_1));
short2 dst0_data  = *((__global short2 *)((__global char *)mat_dst0 + dst0_idx));
short2 dst1_data  = *((__global short2 *)((__global char *)mat_dst1 + dst1_idx));
short2 dst2_data  = *((__global short2 *)((__global char *)mat_dst2 + dst2_idx));
short2 dst3_data  = *((__global short2 *)((__global char *)mat_dst3 + dst3_idx));
short2 tmp_data0, tmp_data1, tmp_data2, tmp_data3;
tmp_data0 = (dst0_offset & 3) == 0 ? (short2)(src_data0.s4, src_data1.s0) : (short2)(src_data0.s0, src_data0.s4);
tmp_data1 = (dst1_offset & 3) == 0 ? (short2)(src_data0.s5, src_data1.s1) : (short2)(src_data0.s1, src_data0.s5);
tmp_data2 = (dst2_offset & 3) == 0 ? (short2)(src_data0.s6, src_data1.s2) : (short2)(src_data0.s2, src_data0.s6);
tmp_data3 = (dst3_offset & 3) == 0 ? (short2)(src_data0.s7, src_data1.s3) : (short2)(src_data0.s3, src_data0.s7);
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.y : dst2_data.y;
tmp_data3.x = ((dst3_idx + 0 >= dst3_start) && (dst3_idx + 0 < dst3_end)) ? tmp_data3.x : dst3_data.x;
tmp_data3.y = ((dst3_idx + 2 >= dst3_start) && (dst3_idx + 2 < dst3_end)) ? tmp_data3.y : dst3_data.y;
*((global short2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((global short2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
*((global short2 *)((__global char *)mat_dst2 + dst2_idx)) = tmp_data2;
*((global short2 *)((__global char *)mat_dst3 + dst3_idx)) = tmp_data3;
}
}
__kernel void split_vector_C3_D3 (__global short *mat_src,  int src_step,  int src_offset,
__global short *mat_dst0, int dst0_step, int dst0_offset,
__global short *mat_dst1, int dst1_step, int dst1_offset,
__global short *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
int src_idx  = mad24(y, src_step, src_offset);
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int dst2_start = mad24(y, dst2_step, dst2_offset);
int dst2_end   = mad24(y, dst2_step, dst2_offset + dst_step1);
int dst2_idx   = mad24(y, dst2_step, dst2_offset + (x << 1) & (int)0xfffffffc);
short2 dst0_data  = *((__global short2 *)((__global char *)mat_dst0 + dst0_idx));
short2 dst1_data  = *((__global short2 *)((__global char *)mat_dst1 + dst1_idx));
short2 dst2_data  = *((__global short2 *)((__global char *)mat_dst2 + dst2_idx));
short2 tmp_data0, tmp_data1, tmp_data2;
short src_data_0 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x - 3];
short src_data_1 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x - 2];
short src_data_2 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x - 1];
short src_data_3 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 0];
short src_data_4 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 1];
short src_data_5 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 2];
short src_data_6 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 3];
short src_data_7 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 4];
short src_data_8 = ((__global short *)((__global char *)mat_src + src_idx))[3 * x + 5];
tmp_data0 = (dst0_offset & 3) == 0 ? (short2)(src_data_3, src_data_6) : (short2)(src_data_0, src_data_3);
tmp_data1 = (dst1_offset & 3) == 0 ? (short2)(src_data_4, src_data_7) : (short2)(src_data_1, src_data_4);
tmp_data2 = (dst2_offset & 3) == 0 ? (short2)(src_data_5, src_data_8) : (short2)(src_data_2, src_data_5);
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? tmp_data0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? tmp_data0.y : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? tmp_data1.x : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? tmp_data1.y : dst1_data.y;
tmp_data2.x = ((dst2_idx + 0 >= dst2_start) && (dst2_idx + 0 < dst2_end)) ? tmp_data2.x : dst2_data.x;
tmp_data2.y = ((dst2_idx + 2 >= dst2_start) && (dst2_idx + 2 < dst2_end)) ? tmp_data2.y : dst2_data.y;
*((__global short2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((__global short2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
*((__global short2 *)((__global char *)mat_dst2 + dst2_idx)) = tmp_data2;
}
}
__kernel void split_vector_C2_D3 (__global short *mat_src,  int src_step,  int src_offset,
__global short *mat_dst0, int dst0_step, int dst0_offset,
__global short *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
x = x << 1;
#define dst0_align ((dst0_offset & 3) << 1)
#define dst1_align ((dst1_offset & 3) << 1)
int src_idx_0  = mad24(y, src_step, src_offset - dst0_align + (x << 2));
int src_idx_1  = mad24(y, src_step, src_offset - dst1_align + (x << 2));
int dst0_start = mad24(y, dst0_step, dst0_offset);
int dst0_end   = mad24(y, dst0_step, dst0_offset + dst_step1);
int dst0_idx   = mad24(y, dst0_step, dst0_offset + (x << 1) & (int)0xfffffffc);
int dst1_start = mad24(y, dst1_step, dst1_offset);
int dst1_end   = mad24(y, dst1_step, dst1_offset + dst_step1);
int dst1_idx   = mad24(y, dst1_step, dst1_offset + (x << 1) & (int)0xfffffffc);
int src1_index_fix = src_idx_0 < 0 ? 0 : src_idx_0;
int src2_index_fix = src_idx_1 < 0 ? 0 : src_idx_1;
short4 src_data_0 = vload4(0, (__global short *)((__global char *)mat_src + src_idx_0));
short4 src_data_1 = vload4(0, (__global short *)((__global char *)mat_src + src_idx_1));
if(src_idx_0 < 0)
{
short4 tmp;
tmp.xyzw = (src_idx_0 == -2) ? src_data_0.zwxy : src_data_0.yzwx;
src_data_0.xyzw = (src_idx_0 == -1) ? src_data_0.wxyz:tmp.xyzw;
}
if(src_idx_1< 0)
{
short4 tmp;
tmp.xyzw = ( src_idx_1== -2) ? src_data_1.zwxy : src_data_1.yzwx;
src_data_1.xyzw = ( src_idx_1== -1) ? src_data_1.wxyz : tmp.xyzw;
}
short2 dst0_data  = *((__global short2 *)((__global char *)mat_dst0 + dst0_idx));
short2 dst1_data  = *((__global short2 *)((__global char *)mat_dst1 + dst1_idx));
short2 tmp_data0, tmp_data1;
tmp_data0.x = ((dst0_idx + 0 >= dst0_start) && (dst0_idx + 0 < dst0_end)) ? src_data_0.x : dst0_data.x;
tmp_data0.y = ((dst0_idx + 2 >= dst0_start) && (dst0_idx + 2 < dst0_end)) ? src_data_0.z : dst0_data.y;
tmp_data1.x = ((dst1_idx + 0 >= dst1_start) && (dst1_idx + 0 < dst1_end)) ? src_data_1.y : dst1_data.x;
tmp_data1.y = ((dst1_idx + 2 >= dst1_start) && (dst1_idx + 2 < dst1_end)) ? src_data_1.w : dst1_data.y;
*((global short2 *)((__global char *)mat_dst0 + dst0_idx)) = tmp_data0;
*((global short2 *)((__global char *)mat_dst1 + dst1_idx)) = tmp_data1;
}
}
__kernel void split_vector_C4_D4 (__global int *mat_src,  int src_step,  int src_offset,
__global int *mat_dst0, int dst0_step, int dst0_offset,
__global int *mat_dst1, int dst1_step, int dst1_offset,
__global int *mat_dst2, int dst2_step, int dst2_offset,
__global int *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
int dst3_idx = mad24(y, dst3_step, dst3_offset);
int4 src_data = ((__global int4 *)((__global char *)mat_src + src_idx))[x];
((__global int *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global int *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
((__global int *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data.z;
((__global int *)((__global char *)mat_dst3 + dst3_idx))[x] = src_data.w;
}
}
__kernel void split_vector_C3_D4 (__global int *mat_src,  int src_step,  int src_offset,
__global int *mat_dst0, int dst0_step, int dst0_offset,
__global int *mat_dst1, int dst1_step, int dst1_offset,
__global int *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
int src_data_0 = ((__global int *)((__global char *)mat_src + src_idx))[3 * x + 0];
int src_data_1 = ((__global int *)((__global char *)mat_src + src_idx))[3 * x + 1];
int src_data_2 = ((__global int *)((__global char *)mat_src + src_idx))[3 * x + 2];
((__global int *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data_0;
((__global int *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data_1;
((__global int *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data_2;
}
}
__kernel void split_vector_C2_D4 (__global int *mat_src,  int src_step,  int src_offset,
__global int *mat_dst0, int dst0_step, int dst0_offset,
__global int *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int2 src_data = ((__global int2 *)((__global char *)mat_src + src_idx))[x];
((__global int *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global int *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
}
}
__kernel void split_vector_C4_D5 (__global float *mat_src,  int src_step,  int src_offset,
__global float *mat_dst0, int dst0_step, int dst0_offset,
__global float *mat_dst1, int dst1_step, int dst1_offset,
__global float *mat_dst2, int dst2_step, int dst2_offset,
__global float *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
int dst3_idx = mad24(y, dst3_step, dst3_offset);
float4 src_data = ((__global float4 *)((__global char *)mat_src + src_idx))[x];
((__global float *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global float *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
((__global float *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data.z;
((__global float *)((__global char *)mat_dst3 + dst3_idx))[x] = src_data.w;
}
}
__kernel void split_vector_C3_D5 (__global float *mat_src,  int src_step,  int src_offset,
__global float *mat_dst0, int dst0_step, int dst0_offset,
__global float *mat_dst1, int dst1_step, int dst1_offset,
__global float *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
float src_data_0 = ((__global float *)((__global char *)mat_src + src_idx))[3 * x + 0];
float src_data_1 = ((__global float *)((__global char *)mat_src + src_idx))[3 * x + 1];
float src_data_2 = ((__global float *)((__global char *)mat_src + src_idx))[3 * x + 2];
((__global float *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data_0;
((__global float *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data_1;
((__global float *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data_2;
}
}
__kernel void split_vector_C2_D5 (__global float *mat_src,  int src_step,  int src_offset,
__global float *mat_dst0, int dst0_step, int dst0_offset,
__global float *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
float2 src_data = ((__global float2 *)((__global char *)mat_src + src_idx))[x];
((__global float *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global float *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void split_vector_C4_D6 (__global double *mat_src,  int src_step,  int src_offset,
__global double *mat_dst0, int dst0_step, int dst0_offset,
__global double *mat_dst1, int dst1_step, int dst1_offset,
__global double *mat_dst2, int dst2_step, int dst2_offset,
__global double *mat_dst3, int dst3_step, int dst3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
int dst3_idx = mad24(y, dst3_step, dst3_offset);
double4 src_data = ((__global double4 *)((__global char *)mat_src + src_idx))[x];
((__global double *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global double *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
((__global double *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data.z;
((__global double *)((__global char *)mat_dst3 + dst3_idx))[x] = src_data.w;
}
}
__kernel void split_vector_C3_D6 (__global double *mat_src,  int src_step,  int src_offset,
__global double *mat_dst0, int dst0_step, int dst0_offset,
__global double *mat_dst1, int dst1_step, int dst1_offset,
__global double *mat_dst2, int dst2_step, int dst2_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
int dst2_idx = mad24(y, dst2_step, dst2_offset);
double src_data_0 = ((__global double *)((__global char *)mat_src + src_idx))[3 * x + 0];
double src_data_1 = ((__global double *)((__global char *)mat_src + src_idx))[3 * x + 1];
double src_data_2 = ((__global double *)((__global char *)mat_src + src_idx))[3 * x + 2];
((__global double *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data_0;
((__global double *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data_1;
((__global double *)((__global char *)mat_dst2 + dst2_idx))[x] = src_data_2;
}
}
__kernel void split_vector_C2_D6 (__global double *mat_src,  int src_step,  int src_offset,
__global double *mat_dst0, int dst0_step, int dst0_offset,
__global double *mat_dst1, int dst1_step, int dst1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if((x  < cols) && (y < rows))
{
int src_idx  = mad24(y, src_step,  src_offset);
int dst0_idx = mad24(y, dst0_step, dst0_offset);
int dst1_idx = mad24(y, dst1_step, dst1_offset);
double2 src_data = ((__global double2 *)((__global char *)mat_src + src_idx))[x];
((__global double *)((__global char *)mat_dst0 + dst0_idx))[x] = src_data.x;
((__global double *)((__global char *)mat_dst1 + dst1_idx))[x] = src_data.y;
}
}
#endif
uchar get_valid_uchar(float data)
{
return (uchar)(data <= 255 ? data : data > 0 ? 255 : 0);
}
__kernel void pyrUp_C1_D0(__global uchar* src,__global uchar* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
__local float s_srcPatch[10][10];
__local float s_dstPatch[20][16];
const int tidx = get_local_id(0);
const int tidy = get_local_id(1);
const int lsizex = get_local_size(0);
const int lsizey = get_local_size(1);
if( tidx < 10 && tidy < 10 )
{
int srcx = mad24((int)get_group_id(0), (lsizex>>1), tidx) - 1;
int srcy = mad24((int)get_group_id(1), (lsizey>>1), tidy) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[tidy][tidx] = (float)(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float sum = 0;
const int evenFlag = (int)((tidx & 1) == 0);
const int oddFlag = (int)((tidx & 1) != 0);
const bool  eveny = ((tidy & 1) == 0);
if(eveny)
{
sum = (evenFlag * 0.0625f) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + get_local_id(1)][get_local_id(0)] = sum;
if (get_local_id(1) < 2)
{
sum = 0;
if (eveny)
{
sum = (evenFlag * 0.0625f) * s_srcPatch[lsizey - 16][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 16][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[lsizey - 16][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 16][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[lsizey - 16][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[get_local_id(1)][get_local_id(0)] = sum;
}
if (get_local_id(1) > 13)
{
sum = 0;
if (eveny)
{
sum = (evenFlag * 0.0625f) * s_srcPatch[lsizey - 7][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 7][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[lsizey - 7][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 7][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[9][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + tidy][tidx] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = 0;
sum = 0.0625f * s_dstPatch[2 + tidy - 2][tidx];
sum = sum + 0.25f   * s_dstPatch[2 + tidy - 1][tidx];
sum = sum + 0.375f  * s_dstPatch[2 + tidy    ][tidx];
sum = sum + 0.25f   * s_dstPatch[2 + tidy + 1][tidx];
sum = sum + 0.0625f * s_dstPatch[2 + tidy + 2][tidx];
if ((x < dstCols) && (y < dstRows))
dst[x + y * dstStep] = convert_uchar_sat_rte(4.0f * sum);
}
__kernel void pyrUp_C1_D2(__global ushort* src,__global ushort* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
__local float s_srcPatch[10][10];
__local float s_dstPatch[20][16];
srcStep = srcStep >> 1;
dstStep = dstStep >> 1;
srcOffset = srcOffset >> 1;
dstOffset = dstOffset >> 1;
if( get_local_id(0) < 10 && get_local_id(1) < 10 )
{
int srcx = (int)(get_group_id(0) * get_local_size(0) / 2 + get_local_id(0)) - 1;
int srcy = (int)(get_group_id(1) * get_local_size(1) / 2 + get_local_id(1)) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[get_local_id(1)][get_local_id(0)] = (float)(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float sum = 0;
const int evenFlag = (int)((get_local_id(0) & 1) == 0);
const int oddFlag = (int)((get_local_id(0) & 1) != 0);
const bool  eveny = ((get_local_id(1) & 1) == 0);
const int tidx = get_local_id(0);
if(eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + get_local_id(1)][get_local_id(0)] = sum;
if (get_local_id(1) < 2)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[0][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[0][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[0][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[0][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[0][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[get_local_id(1)][get_local_id(0)] = sum;
}
if (get_local_id(1) > 13)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[9][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[9][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[9][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[9][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[9][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + get_local_id(1)][get_local_id(0)] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = 0;
const int tidy = get_local_id(1);
sum = sum + 0.0625f * s_dstPatch[2 + tidy - 2][get_local_id(0)];
sum = sum + 0.25f   * s_dstPatch[2 + tidy - 1][get_local_id(0)];
sum = sum + 0.375f  * s_dstPatch[2 + tidy    ][get_local_id(0)];
sum = sum + 0.25f   * s_dstPatch[2 + tidy + 1][get_local_id(0)];
sum = sum + 0.0625f * s_dstPatch[2 + tidy + 2][get_local_id(0)];
if ((x < dstCols) && (y < dstRows))
dst[x + y * dstStep] = convert_short_sat_rte(4.0f * sum);
}
__kernel void pyrUp_C1_D5(__global float* src,__global float* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
const int tidx = get_local_id(0);
const int tidy = get_local_id(1);
const int lsizex = get_local_size(0);
const int lsizey = get_local_size(1);
__local float s_srcPatch[10][10];
__local float s_dstPatch[20][16];
srcOffset = srcOffset >> 2;
dstOffset = dstOffset >> 2;
srcStep = srcStep >> 2;
dstStep = dstStep >> 2;
if( tidx < 10 && tidy < 10 )
{
int srcx = mad24((int)get_group_id(0), lsizex>>1, tidx) - 1;
int srcy = mad24((int)get_group_id(1), lsizey>>1, tidy) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[tidy][tidx] = (float)(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float sum = 0;
const int evenFlag = (int)((tidx & 1) == 0);
const int oddFlag = (int)((tidx & 1) != 0);
const bool  eveny = ((tidy & 1) == 0);
if(eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + tidy][tidx] = sum;
if (tidy < 2)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[lsizey - 16][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 16][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[lsizey - 16][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 16][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[lsizey - 16][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[tidy][tidx] = sum;
}
if (tidy > 13)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[lsizey - 7][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 7][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * 0.375f ) * s_srcPatch[lsizey - 7][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * 0.25f  ) * s_srcPatch[lsizey - 7][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * 0.0625f) * s_srcPatch[lsizey - 7][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + tidy][tidx] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = 0.0625f * s_dstPatch[2 + tidy - 2][tidx];
sum = sum + 0.25f   * s_dstPatch[2 + tidy - 1][tidx];
sum = sum + 0.375f  * s_dstPatch[2 + tidy    ][tidx];
sum = sum + 0.25f   * s_dstPatch[2 + tidy + 1][tidx];
sum = sum + 0.0625f * s_dstPatch[2 + tidy + 2][tidx];
if ((x < dstCols) && (y < dstRows))
dst[x + y * dstStep] = (float)(4.0f * sum);
}
__kernel void pyrUp_C4_D0(__global uchar4* src,__global uchar4* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
const int tidx = get_local_id(0);
const int tidy = get_local_id(1);
const int lsizex = get_local_size(0);
const int lsizey = get_local_size(1);
__local float4 s_srcPatch[10][10];
__local float4 s_dstPatch[20][16];
srcOffset >>= 2;
dstOffset >>= 2;
srcStep >>= 2;
dstStep >>= 2;
if( tidx < 10 && tidy < 10 )
{
int srcx = mad24((int)get_group_id(0), lsizex>>1, tidx) - 1;
int srcy = mad24((int)get_group_id(1), lsizey>>1, tidy) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[tidy][tidx] = convert_float4(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float4 sum = (float4)(0,0,0,0);
const float4 evenFlag = (float4)((tidx & 1) == 0);
const float4 oddFlag = (float4)((tidx & 1) != 0);
const bool  eveny = ((tidy & 1) == 0);
float4 co1 = (float4)(0.375f, 0.375f, 0.375f, 0.375f);
float4 co2 = (float4)(0.25f, 0.25f, 0.25f, 0.25f);
float4 co3 = (float4)(0.0625f, 0.0625f, 0.0625f, 0.0625f);
if(eveny)
{
sum = sum + ( evenFlag * co3) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + ( evenFlag * co1) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + ( evenFlag * co3) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + tidy][tidx] = sum;
if (tidy < 2)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-16][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-16][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1) * s_srcPatch[lsizey-16][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-16][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-16][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[tidy][tidx] = sum;
}
if (tidy > 13)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-7][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-7][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1) * s_srcPatch[lsizey-7][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-7][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-7][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + tidy][tidx] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = co3 * s_dstPatch[2 + tidy - 2][tidx];
sum = sum + co2 * s_dstPatch[2 + tidy - 1][tidx];
sum = sum + co1 * s_dstPatch[2 + tidy    ][tidx];
sum = sum + co2 * s_dstPatch[2 + tidy + 1][tidx];
sum = sum + co3 * s_dstPatch[2 + tidy + 2][tidx];
if ((x < dstCols) && (y < dstRows))
{
dst[x + y * dstStep] = convert_uchar4_sat_rte(4.0f * sum);
}
}
__kernel void pyrUp_C4_D2(__global ushort4* src,__global ushort4* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
__local float4 s_srcPatch[10][10];
__local float4 s_dstPatch[20][16];
srcOffset >>= 3;
dstOffset >>= 3;
srcStep >>= 3;
dstStep >>= 3;
if( get_local_id(0) < 10 && get_local_id(1) < 10 )
{
int srcx = (int)(get_group_id(0) * get_local_size(0) / 2 + get_local_id(0)) - 1;
int srcy = (int)(get_group_id(1) * get_local_size(1) / 2 + get_local_id(1)) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[get_local_id(1)][get_local_id(0)] = convert_float4(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float4 sum = (float4)(0,0,0,0);
const float4 evenFlag = (float4)((get_local_id(0) & 1) == 0);
const float4 oddFlag = (float4)((get_local_id(0) & 1) != 0);
const bool  eveny = ((get_local_id(1) & 1) == 0);
const int tidx = get_local_id(0);
float4 co1 = (float4)(0.375f, 0.375f, 0.375f, 0.375f);
float4 co2 = (float4)(0.25f, 0.25f, 0.25f, 0.25f);
float4 co3 = (float4)(0.0625f, 0.0625f, 0.0625f, 0.0625f);
if(eveny)
{
sum = sum + ( evenFlag* co3 ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + ( evenFlag* co1 ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + ( evenFlag* co3 ) * s_srcPatch[1 + (get_local_id(1) >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + get_local_id(1)][get_local_id(0)] = sum;
if (get_local_id(1) < 2)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3 ) * s_srcPatch[0][1 + ((tidx - 2) >> 1)];
sum = sum + (oddFlag * co2  ) * s_srcPatch[0][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1 ) * s_srcPatch[0][1 + ((tidx    ) >> 1)];
sum = sum + (oddFlag * co2  ) * s_srcPatch[0][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3 ) * s_srcPatch[0][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[get_local_id(1)][get_local_id(0)] = sum;
}
if (get_local_id(1) > 13)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3) * s_srcPatch[9][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[9][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1) * s_srcPatch[9][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[9][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3) * s_srcPatch[9][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + get_local_id(1)][get_local_id(0)] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = 0;
const int tidy = get_local_id(1);
sum = sum + co3 * s_dstPatch[2 + tidy - 2][get_local_id(0)];
sum = sum + co2 * s_dstPatch[2 + tidy - 1][get_local_id(0)];
sum = sum + co1 * s_dstPatch[2 + tidy    ][get_local_id(0)];
sum = sum + co2 * s_dstPatch[2 + tidy + 1][get_local_id(0)];
sum = sum + co3 * s_dstPatch[2 + tidy + 2][get_local_id(0)];
if ((x < dstCols) && (y < dstRows))
{
dst[x + y * dstStep] = convert_ushort4_sat_rte(4.0f * sum);
}
}
__kernel void pyrUp_C4_D5(__global float4* src,__global float4* dst,
int srcRows,int dstRows,int srcCols,int dstCols,
int srcOffset,int dstOffset,int srcStep,int dstStep)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
const int tidx = get_local_id(0);
const int tidy = get_local_id(1);
const int lsizex = get_local_size(0);
const int lsizey = get_local_size(1);
__local float4 s_srcPatch[10][10];
__local float4 s_dstPatch[20][16];
srcOffset >>= 4;
dstOffset >>= 4;
srcStep >>= 4;
dstStep >>= 4;
if( tidx < 10 && tidy < 10 )
{
int srcx = (int)(get_group_id(0) * get_local_size(0) / 2 + tidx) - 1;
int srcy = (int)(get_group_id(1) * get_local_size(1) / 2 + tidy) - 1;
srcx = abs(srcx);
srcx = min(srcCols - 1,srcx);
srcy = abs(srcy);
srcy = min(srcRows -1 ,srcy);
s_srcPatch[tidy][tidx] = (float4)(src[srcx + srcy * srcStep]);
}
barrier(CLK_LOCAL_MEM_FENCE);
float4 sum = (float4)(0,0,0,0);
const float4 evenFlag = (float4)((tidx & 1) == 0);
const float4 oddFlag = (float4)((tidx & 1) != 0);
const bool  eveny = ((tidy & 1) == 0);
float4 co1 = (float4)(0.375f, 0.375f, 0.375f, 0.375f);
float4 co2 = (float4)(0.25f, 0.25f, 0.25f, 0.25f);
float4 co3 = (float4)(0.0625f, 0.0625f, 0.0625f, 0.0625f);
if(eveny)
{
sum = sum + ( evenFlag* co3 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx - 1) >> 1)];
sum = sum + ( evenFlag* co1 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 1) >> 1)];
sum = sum + ( evenFlag* co3 ) * s_srcPatch[1 + (tidy >> 1)][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[2 + tidy][tidx] = sum;
if (tidy < 2)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3 ) * s_srcPatch[lsizey-16][1 + ((tidx - 2) >> 1)];
sum = sum + (oddFlag * co2  ) * s_srcPatch[lsizey-16][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1 ) * s_srcPatch[lsizey-16][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2 ) * s_srcPatch[lsizey-16][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3 ) * s_srcPatch[lsizey-16][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[tidy][tidx] = sum;
}
if (tidy > 13)
{
sum = 0;
if (eveny)
{
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-7][1 + ((tidx - 2) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-7][1 + ((tidx - 1) >> 1)];
sum = sum + (evenFlag * co1) * s_srcPatch[lsizey-7][1 + ((tidx    ) >> 1)];
sum = sum + ( oddFlag * co2) * s_srcPatch[lsizey-7][1 + ((tidx + 1) >> 1)];
sum = sum + (evenFlag * co3) * s_srcPatch[lsizey-7][1 + ((tidx + 2) >> 1)];
}
s_dstPatch[4 + tidy][tidx] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
sum = co3 * s_dstPatch[2 + tidy - 2][tidx];
sum = sum + co2 * s_dstPatch[2 + tidy - 1][tidx];
sum = sum + co1 * s_dstPatch[2 + tidy    ][tidx];
sum = sum + co2 * s_dstPatch[2 + tidy + 1][tidx];
sum = sum + co3 * s_dstPatch[2 + tidy + 2][tidx];
if ((x < dstCols) && (y < dstRows))
{
dst[x + y * dstStep] = 4.0f * sum;
}
}
uchar round_uchar_int(int v)
{
return (uchar)((uint)v <= 255 ? v : v > 0 ? 255 : 0);
}
uchar round_uchar_float(float v)
{
return round_uchar_int(convert_int_sat_rte(v));
}
uchar4 round_uchar4_int4(int4 v)
{
uchar4 result;
result.x = (uchar)(v.x <= 255 ? v.x : v.x > 0 ? 255 : 0);
result.y = (uchar)(v.y <= 255 ? v.y : v.y > 0 ? 255 : 0);
result.z = (uchar)(v.z <= 255 ? v.z : v.z > 0 ? 255 : 0);
result.w = (uchar)(v.w <= 255 ? v.w : v.w > 0 ? 255 : 0);
return result;
}
uchar4 round_uchar4_float4(float4 v)
{
return round_uchar4_int4(convert_int4_sat_rte(v));
}
int idx_row_low(int y, int last_row)
{
return abs(y) % (last_row + 1);
}
int idx_row_high(int y, int last_row)
{
return abs(last_row - (int)abs(last_row - y)) % (last_row + 1);
}
int idx_row(int y, int last_row)
{
return idx_row_low(idx_row_high(y, last_row), last_row);
}
int idx_col_low(int x, int last_col)
{
return abs(x) % (last_col + 1);
}
int idx_col_high(int x, int last_col)
{
return abs(last_col - (int)abs(last_col - x)) % (last_col + 1);
}
int idx_col(int x, int last_col)
{
return idx_col_low(idx_col_high(x, last_col), last_col);
}
__kernel void pyrDown_C1_D0(__global uchar * srcData, int srcStep, int srcRows, int srcCols, __global uchar *dst, int dstStep, int dstCols)
{
const int x = get_global_id(0);
const int y = get_group_id(1);
__local float smem[256 + 4];
float sum;
const int src_y = 2*y;
const int last_row = srcRows - 1;
const int last_col = srcCols - 1;
if (src_y >= 2 && src_y < srcRows - 2 && x >= 2 && x < srcCols - 2)
{
sum =       0.0625f * (((srcData + (src_y - 2) * srcStep))[x]);
sum = sum + 0.25f   * (((srcData + (src_y - 1) * srcStep))[x]);
sum = sum + 0.375f  * (((srcData + (src_y    ) * srcStep))[x]);
sum = sum + 0.25f   * (((srcData + (src_y + 1) * srcStep))[x]);
sum = sum + 0.0625f * (((srcData + (src_y + 2) * srcStep))[x]);
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
sum =       0.0625f * (((srcData + (src_y - 2) * srcStep))[left_x]);
sum = sum + 0.25f   * (((srcData + (src_y - 1) * srcStep))[left_x]);
sum = sum + 0.375f  * (((srcData + (src_y    ) * srcStep))[left_x]);
sum = sum + 0.25f   * (((srcData + (src_y + 1) * srcStep))[left_x]);
sum = sum + 0.0625f * (((srcData + (src_y + 2) * srcStep))[left_x]);
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
sum =       0.0625f * (((srcData + (src_y - 2) * srcStep))[right_x]);
sum = sum + 0.25f   * (((srcData + (src_y - 1) * srcStep))[right_x]);
sum = sum + 0.375f  * (((srcData + (src_y    ) * srcStep))[right_x]);
sum = sum + 0.25f   * (((srcData + (src_y + 1) * srcStep))[right_x]);
sum = sum + 0.0625f * (((srcData + (src_y + 2) * srcStep))[right_x]);
smem[4 + get_local_id(0)] = sum;
}
}
else
{
int col = idx_col(x, last_col);
sum =       0.0625f * (((srcData + idx_row(src_y - 2, last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y - 1, last_row) * srcStep))[col]);
sum = sum + 0.375f  * (((srcData + idx_row(src_y    , last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y + 1, last_row) * srcStep))[col]);
sum = sum + 0.0625f * (((srcData + idx_row(src_y + 2, last_row) * srcStep))[col]);
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
col = idx_col(left_x, last_col);
sum =       0.0625f * (((srcData + idx_row(src_y - 2, last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y - 1, last_row) * srcStep))[col]);
sum = sum + 0.375f  * (((srcData + idx_row(src_y    , last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y + 1, last_row) * srcStep))[col]);
sum = sum + 0.0625f * (((srcData + idx_row(src_y + 2, last_row) * srcStep))[col]);
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
col = idx_col(right_x, last_col);
sum =       0.0625f * (((srcData + idx_row(src_y - 2, last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y - 1, last_row) * srcStep))[col]);
sum = sum + 0.375f  * (((srcData + idx_row(src_y    , last_row) * srcStep))[col]);
sum = sum + 0.25f   * (((srcData + idx_row(src_y + 1, last_row) * srcStep))[col]);
sum = sum + 0.0625f * (((srcData + idx_row(src_y + 2, last_row) * srcStep))[col]);
smem[4 + get_local_id(0)] = sum;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if (get_local_id(0) < 128)
{
const int tid2 = get_local_id(0) * 2;
sum =       0.0625f * smem[2 + tid2 - 2];
sum = sum + 0.25f   * smem[2 + tid2 - 1];
sum = sum + 0.375f  * smem[2 + tid2    ];
sum = sum + 0.25f   * smem[2 + tid2 + 1];
sum = sum + 0.0625f * smem[2 + tid2 + 2];
const int dst_x = (get_group_id(0) * get_local_size(0) + tid2) / 2;
if (dst_x < dstCols)
dst[y * dstStep + dst_x] = round_uchar_float(sum);
}
}
__kernel void pyrDown_C4_D0(__global uchar4 * srcData, int srcStep, int srcRows, int srcCols, __global uchar4 *dst, int dstStep, int dstCols)
{
const int x = get_global_id(0);
const int y = get_group_id(1);
__local float4 smem[256 + 4];
float4 sum;
const int src_y = 2*y;
const int last_row = srcRows - 1;
const int last_col = srcCols - 1;
float4 co1 = 0.375f;
float4 co2 = 0.25f;
float4 co3 = 0.0625f;
if (src_y >= 2 && src_y < srcRows - 2 && x >= 2 && x < srcCols - 2)
{
sum =       co3 * convert_float4((((srcData + (src_y - 2) * srcStep / 4))[x]));
sum = sum + co2   * convert_float4((((srcData + (src_y - 1) * srcStep / 4))[x]));
sum = sum + co1  * convert_float4((((srcData + (src_y    ) * srcStep / 4))[x]));
sum = sum + co2   * convert_float4((((srcData + (src_y + 1) * srcStep / 4))[x]));
sum = sum + co3 * convert_float4((((srcData + (src_y + 2) * srcStep / 4))[x]));
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
sum =       co3 * convert_float4((((srcData + (src_y - 2) * srcStep / 4))[left_x]));
sum = sum + co2   * convert_float4((((srcData + (src_y - 1) * srcStep / 4))[left_x]));
sum = sum + co1  * convert_float4((((srcData + (src_y    ) * srcStep / 4))[left_x]));
sum = sum + co2   * convert_float4((((srcData + (src_y + 1) * srcStep / 4))[left_x]));
sum = sum + co3 * convert_float4((((srcData + (src_y + 2) * srcStep / 4))[left_x]));
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
sum =       co3 * convert_float4((((srcData + (src_y - 2) * srcStep / 4))[right_x]));
sum = sum + co2   * convert_float4((((srcData + (src_y - 1) * srcStep / 4))[right_x]));
sum = sum + co1  * convert_float4((((srcData + (src_y    ) * srcStep / 4))[right_x]));
sum = sum + co2   * convert_float4((((srcData + (src_y + 1) * srcStep / 4))[right_x]));
sum = sum + co3 * convert_float4((((srcData + (src_y + 2) * srcStep / 4))[right_x]));
smem[4 + get_local_id(0)] = sum;
}
}
else
{
int col = idx_col(x, last_col);
sum =       co3 * convert_float4((((srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col]));
sum = sum + co1  * convert_float4((((srcData + idx_row(src_y    , last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col]));
sum = sum + co3 * convert_float4((((srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col]));
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
col = idx_col(left_x, last_col);
sum =       co3 * convert_float4((((srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col]));
sum = sum + co1  * convert_float4((((srcData + idx_row(src_y    , last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col]));
sum = sum + co3 * convert_float4((((srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col]));
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
col = idx_col(right_x, last_col);
sum =       co3 * convert_float4((((srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col]));
sum = sum + co1  * convert_float4((((srcData + idx_row(src_y    , last_row) * srcStep / 4))[col]));
sum = sum + co2   * convert_float4((((srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col]));
sum = sum + co3 * convert_float4((((srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col]));
smem[4 + get_local_id(0)] = sum;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if (get_local_id(0) < 128)
{
const int tid2 = get_local_id(0) * 2;
sum =       co3 * smem[2 + tid2 - 2];
sum = sum + co2   * smem[2 + tid2 - 1];
sum = sum + co1  * smem[2 + tid2    ];
sum = sum + co2   * smem[2 + tid2 + 1];
sum = sum + co3 * smem[2 + tid2 + 2];
const int dst_x = (get_group_id(0) * get_local_size(0) + tid2) / 2;
if (dst_x < dstCols)
dst[y * dstStep / 4 + dst_x] = round_uchar4_float4(sum);
}
}
__kernel void pyrDown_C1_D5(__global float * srcData, int srcStep, int srcRows, int srcCols, __global float *dst, int dstStep, int dstCols)
{
const int x = get_global_id(0);
const int y = get_group_id(1);
__local float smem[256 + 4];
float sum;
const int src_y = 2*y;
const int last_row = srcRows - 1;
const int last_col = srcCols - 1;
if (src_y >= 2 && src_y < srcRows - 2 && x >= 2 && x < srcCols - 2)
{
sum =       0.0625f * ((__global float*)((__global char*)srcData + (src_y - 2) * srcStep))[x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y - 1) * srcStep))[x];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + (src_y    ) * srcStep))[x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y + 1) * srcStep))[x];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + (src_y + 2) * srcStep))[x];
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
sum =       0.0625f * ((__global float*)((__global char*)srcData + (src_y - 2) * srcStep))[left_x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y - 1) * srcStep))[left_x];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + (src_y    ) * srcStep))[left_x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y + 1) * srcStep))[left_x];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + (src_y + 2) * srcStep))[left_x];
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
sum =       0.0625f * ((__global float*)((__global char*)srcData + (src_y - 2) * srcStep))[right_x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y - 1) * srcStep))[right_x];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + (src_y    ) * srcStep))[right_x];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + (src_y + 1) * srcStep))[right_x];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + (src_y + 2) * srcStep))[right_x];
smem[4 + get_local_id(0)] = sum;
}
}
else
{
int col = idx_col(x, last_col);
sum =       0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y - 2, last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y - 1, last_row) * srcStep))[col];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + idx_row(src_y    , last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y + 1, last_row) * srcStep))[col];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y + 2, last_row) * srcStep))[col];
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
col = idx_col(left_x, last_col);
sum =       0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y - 2, last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y - 1, last_row) * srcStep))[col];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + idx_row(src_y    , last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y + 1, last_row) * srcStep))[col];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y + 2, last_row) * srcStep))[col];
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
col = idx_col(right_x, last_col);
sum =       0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y - 2, last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y - 1, last_row) * srcStep))[col];
sum = sum + 0.375f  * ((__global float*)((__global char*)srcData + idx_row(src_y    , last_row) * srcStep))[col];
sum = sum + 0.25f   * ((__global float*)((__global char*)srcData + idx_row(src_y + 1, last_row) * srcStep))[col];
sum = sum + 0.0625f * ((__global float*)((__global char*)srcData + idx_row(src_y + 2, last_row) * srcStep))[col];
smem[4 + get_local_id(0)] = sum;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if (get_local_id(0) < 128)
{
const int tid2 = get_local_id(0) * 2;
sum =       0.0625f * smem[2 + tid2 - 2];
sum = sum + 0.25f   * smem[2 + tid2 - 1];
sum = sum + 0.375f  * smem[2 + tid2    ];
sum = sum + 0.25f   * smem[2 + tid2 + 1];
sum = sum + 0.0625f * smem[2 + tid2 + 2];
const int dst_x = (get_group_id(0) * get_local_size(0) + tid2) / 2;
if (dst_x < dstCols)
dst[y * dstStep / 4 + dst_x] = sum;
}
}
__kernel void pyrDown_C4_D5(__global float4 * srcData, int srcStep, int srcRows, int srcCols, __global float4 *dst, int dstStep, int dstCols)
{
const int x = get_global_id(0);
const int y = get_group_id(1);
__local float4 smem[256 + 4];
float4 sum;
const int src_y = 2*y;
const int last_row = srcRows - 1;
const int last_col = srcCols - 1;
float4 co1 = 0.375f;
float4 co2 = 0.25f;
float4 co3 = 0.0625f;
if (src_y >= 2 && src_y < srcRows - 2 && x >= 2 && x < srcCols - 2)
{
sum =       co3 * ((__global float4*)((__global char4*)srcData + (src_y - 2) * srcStep / 4))[x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y - 1) * srcStep / 4))[x];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + (src_y    ) * srcStep / 4))[x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y + 1) * srcStep / 4))[x];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + (src_y + 2) * srcStep / 4))[x];
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
sum =       co3 * ((__global float4*)((__global char4*)srcData + (src_y - 2) * srcStep / 4))[left_x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y - 1) * srcStep / 4))[left_x];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + (src_y    ) * srcStep / 4))[left_x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y + 1) * srcStep / 4))[left_x];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + (src_y + 2) * srcStep / 4))[left_x];
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
sum =       co3 * ((__global float4*)((__global char4*)srcData + (src_y - 2) * srcStep / 4))[right_x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y - 1) * srcStep / 4))[right_x];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + (src_y    ) * srcStep / 4))[right_x];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + (src_y + 1) * srcStep / 4))[right_x];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + (src_y + 2) * srcStep / 4))[right_x];
smem[4 + get_local_id(0)] = sum;
}
}
else
{
int col = idx_col(x, last_col);
sum =       co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + idx_row(src_y    , last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col];
smem[2 + get_local_id(0)] = sum;
if (get_local_id(0) < 2)
{
const int left_x = x - 2;
col = idx_col(left_x, last_col);
sum =       co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + idx_row(src_y    , last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col];
smem[get_local_id(0)] = sum;
}
if (get_local_id(0) > 253)
{
const int right_x = x + 2;
col = idx_col(right_x, last_col);
sum =       co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 2, last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y - 1, last_row) * srcStep / 4))[col];
sum = sum + co1  * ((__global float4*)((__global char4*)srcData + idx_row(src_y    , last_row) * srcStep / 4))[col];
sum = sum + co2   * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 1, last_row) * srcStep / 4))[col];
sum = sum + co3 * ((__global float4*)((__global char4*)srcData + idx_row(src_y + 2, last_row) * srcStep / 4))[col];
smem[4 + get_local_id(0)] = sum;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if (get_local_id(0) < 128)
{
const int tid2 = get_local_id(0) * 2;
sum =       co3 * smem[2 + tid2 - 2];
sum = sum + co2   * smem[2 + tid2 - 1];
sum = sum + co1  * smem[2 + tid2    ];
sum = sum + co2   * smem[2 + tid2 + 1];
sum = sum + co3 * smem[2 + tid2 + 2];
const int dst_x = (get_group_id(0) * get_local_size(0) + tid2) / 2;
if (dst_x < dstCols)
dst[y * dstStep / 16 + dst_x] = sum;
}
}
#define  BUFFER  256
void reduce3(float val1, float val2, float val3, __local float *smem1, __local float *smem2, __local float *smem3, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
smem3[tid] = val3;
barrier(CLK_LOCAL_MEM_FENCE);
#if  BUFFER > 128
if (tid < 128)
{
smem1[tid] = val1 += smem1[tid + 128];
smem2[tid] = val2 += smem2[tid + 128];
smem3[tid] = val3 += smem3[tid + 128];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
#if  BUFFER > 64
if (tid < 64)
{
smem1[tid] = val1 += smem1[tid + 64];
smem2[tid] = val2 += smem2[tid + 64];
smem3[tid] = val3 += smem3[tid + 64];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
if (tid < 32)
{
smem1[tid] = val1 += smem1[tid + 32];
smem2[tid] = val2 += smem2[tid + 32];
smem3[tid] = val3 += smem3[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem1[tid] = val1 += smem1[tid + 16];
smem2[tid] = val2 += smem2[tid + 16];
smem3[tid] = val3 += smem3[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
volatile __local float *vmem1 = smem1;
volatile __local float *vmem2 = smem2;
volatile __local float *vmem3 = smem3;
vmem1[tid] = val1 += vmem1[tid + 8];
vmem2[tid] = val2 += vmem2[tid + 8];
vmem3[tid] = val3 += vmem3[tid + 8];
vmem1[tid] = val1 += vmem1[tid + 4];
vmem2[tid] = val2 += vmem2[tid + 4];
vmem3[tid] = val3 += vmem3[tid + 4];
vmem1[tid] = val1 += vmem1[tid + 2];
vmem2[tid] = val2 += vmem2[tid + 2];
vmem3[tid] = val3 += vmem3[tid + 2];
vmem1[tid] = val1 += vmem1[tid + 1];
vmem2[tid] = val2 += vmem2[tid + 1];
vmem3[tid] = val3 += vmem3[tid + 1];
}
}
void reduce2(float val1, float val2, __local float *smem1, __local float *smem2, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
barrier(CLK_LOCAL_MEM_FENCE);
#if  BUFFER > 128
if (tid < 128)
{
smem1[tid] = val1 += smem1[tid + 128];
smem2[tid] = val2 += smem2[tid + 128];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
#if  BUFFER > 64
if (tid < 64)
{
smem1[tid] = val1 += smem1[tid + 64];
smem2[tid] = val2 += smem2[tid + 64];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
if (tid < 32)
{
smem1[tid] = val1 += smem1[tid + 32];
smem2[tid] = val2 += smem2[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem1[tid] = val1 += smem1[tid + 16];
smem2[tid] = val2 += smem2[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
volatile __local float *vmem1 = smem1;
volatile __local float *vmem2 = smem2;
vmem1[tid] = val1 += vmem1[tid + 8];
vmem2[tid] = val2 += vmem2[tid + 8];
vmem1[tid] = val1 += vmem1[tid + 4];
vmem2[tid] = val2 += vmem2[tid + 4];
vmem1[tid] = val1 += vmem1[tid + 2];
vmem2[tid] = val2 += vmem2[tid + 2];
vmem1[tid] = val1 += vmem1[tid + 1];
vmem2[tid] = val2 += vmem2[tid + 1];
}
}
void reduce1(float val1, __local float *smem1, int tid)
{
smem1[tid] = val1;
barrier(CLK_LOCAL_MEM_FENCE);
#if  BUFFER > 128
if (tid < 128)
{
smem1[tid] = val1 += smem1[tid + 128];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
#if  BUFFER > 64
if (tid < 64)
{
smem1[tid] = val1 += smem1[tid + 64];
}
barrier(CLK_LOCAL_MEM_FENCE);
#endif
if (tid < 32)
{
smem1[tid] = val1 += smem1[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
volatile __local float *vmem1 = smem1;
vmem1[tid] = val1 += vmem1[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
volatile __local float *vmem1 = smem1;
vmem1[tid] = val1 += vmem1[tid + 8];
vmem1[tid] = val1 += vmem1[tid + 4];
vmem1[tid] = val1 += vmem1[tid + 2];
vmem1[tid] = val1 += vmem1[tid + 1];
}
}
#define SCALE (1.0f / (1 << 20))
#define  THRESHOLD  0.01f
#define  DIMENSION  21
float readImage2Df_C1(__global const float *image,  const float x,  const float y,  const int rows,  const int cols, const int elemCntPerRow)
{
float2 coor = (float2)(x, y);
int i0 = clamp((int)floor(coor.x), 0, cols - 1);
int j0 = clamp((int)floor(coor.y), 0, rows - 1);
int i1 = clamp((int)floor(coor.x) + 1, 0, cols - 1);
int j1 = clamp((int)floor(coor.y) + 1, 0, rows - 1);
float a = coor.x - floor(coor.x);
float b = coor.y - floor(coor.y);
return (1 - a) * (1 - b) * image[mad24(j0, elemCntPerRow, i0)]
+ a * (1 - b) * image[mad24(j0, elemCntPerRow, i1)]
+ (1 - a) * b * image[mad24(j1, elemCntPerRow, i0)]
+ a * b * image[mad24(j1, elemCntPerRow, i1)];
}
__kernel void lkSparse_C1_D5(__global const float *I, __global const float *J,
__global const float2 *prevPts, int prevPtsStep, __global float2 *nextPts, int nextPtsStep, __global uchar *status, __global float *err,
const int level, const int rows, const int cols, const int elemCntPerRow,
int PATCH_X, int PATCH_Y, int cn, int c_winSize_x, int c_winSize_y, int c_iters, char calcErr)
{
__local float smem1[BUFFER];
__local float smem2[BUFFER];
__local float smem3[BUFFER];
float2 c_halfWin = (float2)((c_winSize_x - 1) >> 1, (c_winSize_y - 1) >> 1);
const int tid = mad24(get_local_id(1), get_local_size(0), get_local_id(0));
float2 prevPt = prevPts[get_group_id(0)] * (1.0f / (1 << level));
if (prevPt.x < 0 || prevPt.x >= cols || prevPt.y < 0 || prevPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
prevPt -= c_halfWin;
float A11 = 0;
float A12 = 0;
float A22 = 0;
float I_patch[1][3];
float dIdx_patch[1][3];
float dIdy_patch[1][3];
for (int yBase = get_local_id(1), i = 0; yBase < c_winSize_y; yBase += get_local_size(1), ++i)
{
for (int xBase = get_local_id(0), j = 0; xBase < c_winSize_x; xBase += get_local_size(0), ++j)
{
float x = (prevPt.x + xBase);
float y = (prevPt.y + yBase);
I_patch[i][j] = readImage2Df_C1(I, x, y, rows, cols, elemCntPerRow);
float dIdx = 3.0f * readImage2Df_C1(I, x + 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C1(I, x + 1, y, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C1(I, x + 1, y + 1, rows, cols, elemCntPerRow) -
(3.0f * readImage2Df_C1(I, x - 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C1(I, x - 1, y, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C1(I, x - 1, y + 1, rows, cols, elemCntPerRow));
float dIdy = 3.0f * readImage2Df_C1(I, x - 1, y + 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C1(I, x, y + 1, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C1(I, x + 1, y + 1, rows, cols, elemCntPerRow) -
(3.0f * readImage2Df_C1(I, x - 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C1(I, x, y - 1, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C1(I, x + 1, y - 1, rows, cols, elemCntPerRow));
dIdx_patch[i][j] = dIdx;
dIdy_patch[i][j] = dIdy;
A11 += dIdx * dIdx;
A12 += dIdx * dIdy;
A22 += dIdy * dIdy;
}
}
reduce3(A11, A12, A22, smem1, smem2, smem3, tid);
barrier(CLK_LOCAL_MEM_FENCE);
A11 = smem1[0];
A12 = smem2[0];
A22 = smem3[0];
float D = A11 * A22 - A12 * A12;
if (D < 1.192092896e-07f)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
D = 1.f / D;
A11 *= D;
A12 *= D;
A22 *= D;
float2 nextPt = nextPts[get_group_id(0)];
nextPt = nextPt * 2.0f - c_halfWin;
for (int k = 0; k < c_iters; ++k)
{
if (nextPt.x < -c_halfWin.x || nextPt.x >= cols || nextPt.y < -c_halfWin.y || nextPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
float b1 = 0;
float b2 = 0;
for (int y = get_local_id(1), i = 0; y < c_winSize_y; y += get_local_size(1), ++i)
{
for (int x = get_local_id(0), j = 0; x < c_winSize_x; x += get_local_size(0), ++j)
{
float diff = (readImage2Df_C1(J, nextPt.x + x, nextPt.y + y, rows, cols, elemCntPerRow) - I_patch[i][j]) * 32.0f;
b1 += diff * dIdx_patch[i][j];
b2 += diff * dIdy_patch[i][j];
}
}
reduce2(b1, b2, smem1, smem2, tid);
barrier(CLK_LOCAL_MEM_FENCE);
b1 = smem1[0];
b2 = smem2[0];
float2 delta;
delta.x = A12 * b2 - A22 * b1;
delta.y = A12 * b1 - A11 * b2;
nextPt += delta;
}
float errval = 0.0f;
if (calcErr)
{
for (int y = get_local_id(1), i = 0; y < c_winSize_y; y += get_local_size(1), ++i)
{
for (int x = get_local_id(0), j = 0; x < c_winSize_x; x += get_local_size(0), ++j)
{
float diff = readImage2Df_C1(J, nextPt.x + x, nextPt.y + y, rows, cols, elemCntPerRow) - I_patch[i][j];
errval += fabs(diff);
}
}
reduce1(errval, smem1, tid);
}
if (tid == 0)
{
nextPt += c_halfWin;
nextPts[get_group_id(0)] = nextPt;
if (calcErr)
{
err[get_group_id(0)] = smem1[0] / (c_winSize_x * c_winSize_y);
}
}
}
float4 readImage2Df_C4(__global const float4 *image,  const float x,  const float y,  const int rows,  const int cols, const int elemCntPerRow)
{
float2 coor = (float2)(x, y);
int i0 = clamp((int)floor(coor.x), 0, cols - 1);
int j0 = clamp((int)floor(coor.y), 0, rows - 1);
int i1 = clamp((int)floor(coor.x) + 1, 0, cols - 1);
int j1 = clamp((int)floor(coor.y) + 1, 0, rows - 1);
float a = coor.x - floor(coor.x);
float b = coor.y - floor(coor.y);
return (1 - a) * (1 - b) * image[mad24(j0, elemCntPerRow, i0)]
+ a * (1 - b) * image[mad24(j0, elemCntPerRow, i1)]
+ (1 - a) * b * image[mad24(j1, elemCntPerRow, i0)]
+ a * b * image[mad24(j1, elemCntPerRow, i1)];
}
__kernel void lkSparse_C4_D5(__global const float *I, __global const float *J,
__global const float2 *prevPts, int prevPtsStep, __global float2 *nextPts, int nextPtsStep, __global uchar *status, __global float *err,
const int level, const int rows, const int cols, const int elemCntPerRow,
int PATCH_X, int PATCH_Y, int cn, int c_winSize_x, int c_winSize_y, int c_iters, char calcErr)
{
__local float smem1[BUFFER];
__local float smem2[BUFFER];
__local float smem3[BUFFER];
float2 c_halfWin = (float2)((c_winSize_x - 1) >> 1, (c_winSize_y - 1) >> 1);
const int tid = mad24(get_local_id(1), get_local_size(0), get_local_id(0));
float2 prevPt = prevPts[get_group_id(0)] * (1.0f / (1 << level));
if (prevPt.x < 0 || prevPt.x >= cols || prevPt.y < 0 || prevPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
prevPt -= c_halfWin;
float A11 = 0;
float A12 = 0;
float A22 = 0;
float4 I_patch[1][3];
float4 dIdx_patch[1][3];
float4 dIdy_patch[1][3];
__global float4 *ptrI = (__global float4 *)I;
for (int yBase = get_local_id(1), i = 0; yBase < c_winSize_y; yBase += get_local_size(1), ++i)
{
for (int xBase = get_local_id(0), j = 0; xBase < c_winSize_x; xBase += get_local_size(0), ++j)
{
float x = (prevPt.x + xBase);
float y = (prevPt.y + yBase);
I_patch[i][j] = readImage2Df_C4(ptrI, x, y, rows, cols, elemCntPerRow);
float4 dIdx = 3.0f * readImage2Df_C4(ptrI, x + 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C4(ptrI, x + 1, y, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C4(ptrI, x + 1, y + 1, rows, cols, elemCntPerRow) -
(3.0f * readImage2Df_C4(ptrI, x - 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C4(ptrI, x - 1, y, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C4(ptrI, x - 1, y + 1, rows, cols, elemCntPerRow));
float4 dIdy = 3.0f * readImage2Df_C4(ptrI, x - 1, y + 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C4(ptrI, x, y + 1, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C4(ptrI, x + 1, y + 1, rows, cols, elemCntPerRow) -
(3.0f * readImage2Df_C4(ptrI, x - 1, y - 1, rows, cols, elemCntPerRow) + 10.0f * readImage2Df_C4(ptrI, x, y - 1, rows, cols, elemCntPerRow) + 3.0f * readImage2Df_C4(ptrI, x + 1, y - 1, rows, cols, elemCntPerRow));
dIdx_patch[i][j] = dIdx;
dIdy_patch[i][j] = dIdy;
A11 += (dIdx * dIdx).x + (dIdx * dIdx).y + (dIdx * dIdx).z;
A12 += (dIdx * dIdy).x + (dIdx * dIdy).y + (dIdx * dIdy).z;
A22 += (dIdy * dIdy).x + (dIdy * dIdy).y + (dIdy * dIdy).z;
}
}
reduce3(A11, A12, A22, smem1, smem2, smem3, tid);
barrier(CLK_LOCAL_MEM_FENCE);
A11 = smem1[0];
A12 = smem2[0];
A22 = smem3[0];
float D = A11 * A22 - A12 * A12;
if (D < 1.192092896e-07f)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
D = 1.f / D;
A11 *= D;
A12 *= D;
A22 *= D;
float2 nextPt = nextPts[get_group_id(0)];
nextPt = nextPt * 2.0f - c_halfWin;
__global float4 *ptrJ = (__global float4 *)J;
for (int k = 0; k < c_iters; ++k)
{
if (nextPt.x < -c_halfWin.x || nextPt.x >= cols || nextPt.y < -c_halfWin.y || nextPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[get_group_id(0)] = 0;
}
return;
}
float b1 = 0;
float b2 = 0;
for (int y = get_local_id(1), i = 0; y < c_winSize_y; y += get_local_size(1), ++i)
{
for (int x = get_local_id(0), j = 0; x < c_winSize_x; x += get_local_size(0), ++j)
{
float4 diff = (readImage2Df_C4(ptrJ, nextPt.x + x, nextPt.y + y, rows, cols, elemCntPerRow) - I_patch[i][j]) * 32.0f;
b1 += (diff * dIdx_patch[i][j]).x + (diff * dIdx_patch[i][j]).y + (diff * dIdx_patch[i][j]).z;
b2 += (diff * dIdy_patch[i][j]).x + (diff * dIdy_patch[i][j]).y + (diff * dIdy_patch[i][j]).z;
}
}
reduce2(b1, b2, smem1, smem2, tid);
barrier(CLK_LOCAL_MEM_FENCE);
b1 = smem1[0];
b2 = smem2[0];
float2 delta;
delta.x = A12 * b2 - A22 * b1;
delta.y = A12 * b1 - A11 * b2;
nextPt += delta;
}
float errval = 0.0f;
if (calcErr)
{
for (int y = get_local_id(1), i = 0; y < c_winSize_y; y += get_local_size(1), ++i)
{
for (int x = get_local_id(0), j = 0; x < c_winSize_x; x += get_local_size(0), ++j)
{
float4 diff = readImage2Df_C4(ptrJ, nextPt.x + x, nextPt.y + y, rows, cols, elemCntPerRow) - I_patch[i][j];
errval += fabs(diff.x) + fabs(diff.y) + fabs(diff.z);
}
}
reduce1(errval, smem1, tid);
}
if (tid == 0)
{
nextPt += c_halfWin;
nextPts[get_group_id(0)] = nextPt;
if (calcErr)
{
err[get_group_id(0)] = smem1[0] / (3 * c_winSize_x * c_winSize_y);
}
}
}
int readImage2Di_C1(__global const int *image, float2 coor,  int2 size, const int elemCntPerRow)
{
int i = clamp((int)floor(coor.x), 0, size.x - 1);
int j = clamp((int)floor(coor.y), 0, size.y - 1);
return image[mad24(j, elemCntPerRow, i)];
}
__kernel void lkDense_C1_D0(__global const int *I, __global const int *J, __global float *u, int uStep, __global float *v, int vStep, __global const float *prevU, int prevUStep, __global const float *prevV, int prevVStep,
const int rows, const int cols, 
const int elemCntPerRow, int c_winSize_x, int c_winSize_y, int c_iters, char calcErr)
{
int c_halfWin_x = (c_winSize_x - 1) / 2;
int c_halfWin_y = (c_winSize_y - 1) / 2;
const int patchWidth  = get_local_size(0) + 2 * c_halfWin_x;
const int patchHeight = get_local_size(1) + 2 * c_halfWin_y;
__local int smem[8192];
__local int *I_patch = smem;
__local int *dIdx_patch = I_patch + patchWidth * patchHeight;
__local int *dIdy_patch = dIdx_patch + patchWidth * patchHeight;
const int xBase = get_group_id(0) * get_local_size(0);
const int yBase = get_group_id(1) * get_local_size(1);
int2 size = (int2)(cols, rows);
for (int i = get_local_id(1); i < patchHeight; i += get_local_size(1))
{
for (int j = get_local_id(0); j < patchWidth; j += get_local_size(0))
{
float x = xBase - c_halfWin_x + j + 0.5f;
float y = yBase - c_halfWin_y + i + 0.5f;
I_patch[i * patchWidth + j] = readImage2Di_C1(I, (float2)(x, y), size, elemCntPerRow);
dIdx_patch[i * patchWidth + j] = 3 * readImage2Di_C1(I, (float2)(x + 1, y - 1), size, elemCntPerRow) + 10 * readImage2Di_C1(I, (float2)(x + 1, y), size, elemCntPerRow) + 3 * readImage2Di_C1(I, (float2)(x + 1, y + 1), size, elemCntPerRow) -
(3 * readImage2Di_C1(I, (float2)(x - 1, y - 1), size, elemCntPerRow) + 10 * readImage2Di_C1(I, (float2)(x - 1, y), size, elemCntPerRow) + 3 * readImage2Di_C1(I, (float2)(x - 1, y + 1), size, elemCntPerRow));
dIdy_patch[i * patchWidth + j] = 3 * readImage2Di_C1(I, (float2)(x - 1, y + 1), size, elemCntPerRow) + 10 * readImage2Di_C1(I, (float2)(x, y + 1), size, elemCntPerRow) + 3 * readImage2Di_C1(I, (float2)(x + 1, y + 1), size, elemCntPerRow) -
(3 * readImage2Di_C1(I, (float2)(x - 1, y - 1), size, elemCntPerRow) + 10 * readImage2Di_C1(I, (float2)(x, y - 1), size, elemCntPerRow) + 3 * readImage2Di_C1(I, (float2)(x + 1, y - 1), size, elemCntPerRow));
}
}
barrier(CLK_LOCAL_MEM_FENCE);
const int x = get_global_id(0);
const int y = get_global_id(1);
if (x >= cols || y >= rows)
{
return;
}
int A11i = 0;
int A12i = 0;
int A22i = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int dIdx = dIdx_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
int dIdy = dIdy_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
A11i += dIdx * dIdx;
A12i += dIdx * dIdy;
A22i += dIdy * dIdy;
}
}
float A11 = A11i;
float A12 = A12i;
float A22 = A22i;
float D = A11 * A22 - A12 * A12;
if (D < 1.192092896e-07f)
{
return;
}
D = 1.f / D;
A11 *= D;
A12 *= D;
A22 *= D;
float2 nextPt;
nextPt.x = x + prevU[y / 2 * prevUStep / 4 + x / 2] * 2.0f;
nextPt.y = y + prevV[y / 2 * prevVStep / 4 + x / 2] * 2.0f;
for (int k = 0; k < c_iters; ++k)
{
if (nextPt.x < 0 || nextPt.x >= cols || nextPt.y < 0 || nextPt.y >= rows)
{
return;
}
int b1 = 0;
int b2 = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int iI = I_patch[(get_local_id(1) + i) * patchWidth + get_local_id(0) + j];
int iJ = readImage2Di_C1(J, (float2)(nextPt.x - c_halfWin_x + j + 0.5f, nextPt.y - c_halfWin_y + i + 0.5f), size, elemCntPerRow);
int diff = (iJ - iI) * 32;
int dIdx = dIdx_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
int dIdy = dIdy_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
b1 += diff * dIdx;
b2 += diff * dIdy;
}
}
float2 delta;
delta.x = A12 * b2 - A22 * b1;
delta.y = A12 * b1 - A11 * b2;
nextPt.x += delta.x;
nextPt.y += delta.y;
if (fabs(delta.x) < 0.01f && fabs(delta.y) < 0.01f)
{
break;
}
}
u[y * uStep / 4 + x] = nextPt.x - x;
v[y * vStep / 4 + x] = nextPt.y - y;
if (calcErr)
{
int errval = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int iI = I_patch[(get_local_id(1) + i) * patchWidth + get_local_id(0) + j];
int iJ = readImage2Di_C1(J, (float2)(nextPt.x - c_halfWin_x + j + 0.5f, nextPt.y - c_halfWin_y + i + 0.5f), size, elemCntPerRow);
errval += abs(iJ - iI);
}
}
}
}
#define  BUFFER  64
#ifndef WAVE_SIZE
#define WAVE_SIZE 1
#endif
#ifdef CPU
void reduce3(float val1, float val2, float val3,  __local float* smem1,  __local float* smem2,  __local float* smem3, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
smem3[tid] = val3;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
smem2[tid] += smem2[tid + 32];
smem3[tid] += smem3[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem1[tid] += smem1[tid + 16];
smem2[tid] += smem2[tid + 16];
smem3[tid] += smem3[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
smem1[tid] += smem1[tid + 8];
smem2[tid] += smem2[tid + 8];
smem3[tid] += smem3[tid + 8];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 4)
{
smem1[tid] += smem1[tid + 4];
smem2[tid] += smem2[tid + 4];
smem3[tid] += smem3[tid + 4];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 2)
{
smem1[tid] += smem1[tid + 2];
smem2[tid] += smem2[tid + 2];
smem3[tid] += smem3[tid + 2];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 1)
{
smem1[BUFFER] = smem1[tid] + smem1[tid + 1];
smem2[BUFFER] = smem2[tid] + smem2[tid + 1];
smem3[BUFFER] = smem3[tid] + smem3[tid + 1];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
void reduce2(float val1, float val2, volatile __local float* smem1, volatile __local float* smem2, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
smem2[tid] += smem2[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem1[tid] += smem1[tid + 16];
smem2[tid] += smem2[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
smem1[tid] += smem1[tid + 8];
smem2[tid] += smem2[tid + 8];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 4)
{
smem1[tid] += smem1[tid + 4];
smem2[tid] += smem2[tid + 4];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 2)
{
smem1[tid] += smem1[tid + 2];
smem2[tid] += smem2[tid + 2];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 1)
{
smem1[BUFFER] = smem1[tid] + smem1[tid + 1];
smem2[BUFFER] = smem2[tid] + smem2[tid + 1];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
void reduce1(float val1, volatile __local float* smem1, int tid)
{
smem1[tid] = val1;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem1[tid] += smem1[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
smem1[tid] += smem1[tid + 8];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 4)
{
smem1[tid] += smem1[tid + 4];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 2)
{
smem1[tid] += smem1[tid + 2];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 1)
{
smem1[BUFFER] = smem1[tid] + smem1[tid + 1];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
#else
void reduce3(float val1, float val2, float val3, 
__local volatile float* smem1, __local volatile float* smem2, __local volatile float* smem3, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
smem3[tid] = val3;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
smem2[tid] += smem2[tid + 32];
smem3[tid] += smem3[tid + 32];
#if WAVE_SIZE < 32
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16) {
#endif
smem1[tid] += smem1[tid + 16];
smem2[tid] += smem2[tid + 16];
smem3[tid] += smem3[tid + 16];
#if WAVE_SIZE <16
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8) {
#endif
smem1[tid] += smem1[tid + 8];
smem2[tid] += smem2[tid + 8];
smem3[tid] += smem3[tid + 8];
smem1[tid] += smem1[tid + 4];
smem2[tid] += smem2[tid + 4];
smem3[tid] += smem3[tid + 4];
smem1[tid] += smem1[tid + 2];
smem2[tid] += smem2[tid + 2];
smem3[tid] += smem3[tid + 2];
smem1[tid] += smem1[tid + 1];
smem2[tid] += smem2[tid + 1];
smem3[tid] += smem3[tid + 1];
}
}
void reduce2(float val1, float val2, __local volatile float* smem1, __local volatile float* smem2, int tid)
{
smem1[tid] = val1;
smem2[tid] = val2;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
smem2[tid] += smem2[tid + 32];
#if WAVE_SIZE < 32
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16) {
#endif
smem1[tid] += smem1[tid + 16];
smem2[tid] += smem2[tid + 16];
#if WAVE_SIZE <16
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8) {
#endif
smem1[tid] += smem1[tid + 8];
smem2[tid] += smem2[tid + 8];
smem1[tid] += smem1[tid + 4];
smem2[tid] += smem2[tid + 4];
smem1[tid] += smem1[tid + 2];
smem2[tid] += smem2[tid + 2];
smem1[tid] += smem1[tid + 1];
smem2[tid] += smem2[tid + 1];
}
}
void reduce1(float val1, __local volatile float* smem1, int tid)
{
smem1[tid] = val1;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem1[tid] += smem1[tid + 32];
#if WAVE_SIZE < 32
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16) {
#endif
smem1[tid] += smem1[tid + 16];
#if WAVE_SIZE <16
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8) {
#endif
smem1[tid] += smem1[tid + 8];
smem1[tid] += smem1[tid + 4];
smem1[tid] += smem1[tid + 2];
smem1[tid] += smem1[tid + 1];
}
}
#endif
#define SCALE (1.0f / (1 << 20))
#define  THRESHOLD  0.01f
__constant sampler_t sampler    = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_LINEAR;
void SetPatch(image2d_t I, float x, float y,
float* Pch, float* Dx, float* Dy,
float* A11, float* A12, float* A22)
{
*Pch = read_imagef(I, sampler, (float2)(x, y)).x;
float dIdx = 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1)).x + 10.0f * read_imagef(I, sampler, (float2)(x + 1, y)).x + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)).x -
(3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)).x + 10.0f * read_imagef(I, sampler, (float2)(x - 1, y)).x + 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1)).x);
float dIdy = 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1)).x + 10.0f * read_imagef(I, sampler, (float2)(x, y + 1)).x + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)).x -
(3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)).x + 10.0f * read_imagef(I, sampler, (float2)(x, y - 1)).x + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1)).x);
*Dx = dIdx;
*Dy = dIdy;
*A11 += dIdx * dIdx;
*A12 += dIdx * dIdy;
*A22 += dIdy * dIdy;
}
void GetPatch(image2d_t J, float x, float y,
float* Pch, float* Dx, float* Dy,
float* b1, float* b2)
{
float J_val = read_imagef(J, sampler, (float2)(x, y)).x;
float diff = (J_val - *Pch) * 32.0f;
*b1 += diff**Dx;
*b2 += diff**Dy;
}
void GetError(image2d_t J, const float x, const float y, const float* Pch, float* errval)
{
float diff = read_imagef(J, sampler, (float2)(x,y)).x-*Pch;
*errval += fabs(diff);
}
void SetPatch4(image2d_t I, const float x, const float y,
float4* Pch, float4* Dx, float4* Dy,
float* A11, float* A12, float* A22)
{
*Pch = read_imagef(I, sampler, (float2)(x, y));
float4 dIdx = 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x + 1, y)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)) -
(3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x - 1, y)) + 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1)));
float4 dIdy = 3.0f * read_imagef(I, sampler, (float2)(x - 1, y + 1)) + 10.0f * read_imagef(I, sampler, (float2)(x, y + 1)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y + 1)) -
(3.0f * read_imagef(I, sampler, (float2)(x - 1, y - 1)) + 10.0f * read_imagef(I, sampler, (float2)(x, y - 1)) + 3.0f * read_imagef(I, sampler, (float2)(x + 1, y - 1)));
*Dx = dIdx;
*Dy = dIdy;
float4 sqIdx = dIdx * dIdx;
*A11 += sqIdx.x + sqIdx.y + sqIdx.z;
sqIdx = dIdx * dIdy;
*A12 += sqIdx.x + sqIdx.y + sqIdx.z;
sqIdx = dIdy * dIdy;
*A22 += sqIdx.x + sqIdx.y + sqIdx.z;
}
void GetPatch4(image2d_t J, const float x, const float y,
const float4* Pch, const float4* Dx, const float4* Dy,
float* b1, float* b2)
{
float4 J_val = read_imagef(J, sampler, (float2)(x, y));
float4 diff = (J_val - *Pch) * 32.0f;
float4 xdiff = diff* *Dx;
*b1 += xdiff.x + xdiff.y + xdiff.z;
xdiff = diff* *Dy;
*b2 += xdiff.x + xdiff.y + xdiff.z;
}
void GetError4(image2d_t J, const float x, const float y, const float4* Pch, float* errval)
{
float4 diff = read_imagef(J, sampler, (float2)(x,y))-*Pch;
*errval += fabs(diff.x) + fabs(diff.y) + fabs(diff.z);
}
#define  GRIDSIZE  3
__kernel void lkSparse_C1_D5(image2d_t I, image2d_t J,
__global const float2* prevPts, int prevPtsStep, __global float2* nextPts, int nextPtsStep, __global uchar* status, __global float* err,
const int level, const int rows, const int cols, int PATCH_X, int PATCH_Y, int cn, int c_winSize_x, int c_winSize_y, int c_iters, char calcErr)
{
#ifdef CPU
__local float smem1[BUFFER+1];
__local float smem2[BUFFER+1];
__local float smem3[BUFFER+1];
#else
__local float smem1[BUFFER];
__local float smem2[BUFFER];
__local float smem3[BUFFER];
#endif
unsigned int xid=get_local_id(0);
unsigned int yid=get_local_id(1);
unsigned int gid=get_group_id(0);
unsigned int xsize=get_local_size(0);
unsigned int ysize=get_local_size(1);
int xBase, yBase, i, j, k;
float2 c_halfWin = (float2)((c_winSize_x - 1)>>1, (c_winSize_y - 1)>>1);
const int tid = mad24(yid, xsize, xid);
float2 prevPt = prevPts[gid] / (float2)(1 << level);
if (prevPt.x < 0 || prevPt.x >= cols || prevPt.y < 0 || prevPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[gid] = 0;
}
return;
}
prevPt -= c_halfWin;
float A11 = 0;
float A12 = 0;
float A22 = 0;
float I_patch[GRIDSIZE][GRIDSIZE];
float dIdx_patch[GRIDSIZE][GRIDSIZE];
float dIdy_patch[GRIDSIZE][GRIDSIZE];
yBase=yid;
{
xBase=xid;
SetPatch(I, prevPt.x + xBase + 0.5f, prevPt.y + yBase + 0.5f,
&I_patch[0][0], &dIdx_patch[0][0], &dIdy_patch[0][0],
&A11, &A12, &A22);
xBase+=xsize;
SetPatch(I, prevPt.x + xBase + 0.5f, prevPt.y + yBase + 0.5f,
&I_patch[0][1], &dIdx_patch[0][1], &dIdy_patch[0][1],
&A11, &A12, &A22);
xBase+=xsize;
if(xBase= cols || prevPt.y < -c_halfWin.y || prevPt.y >= rows)
{
if (tid == 0 && level == 0)
status[gid] = 0;
return;
}
float b1 = 0;
float b2 = 0;
yBase=yid;
{
xBase=xid;
GetPatch(J, prevPt.x + xBase + 0.5f, prevPt.y + yBase + 0.5f,
&I_patch[0][0], &dIdx_patch[0][0], &dIdy_patch[0][0],
&b1, &b2);
xBase+=xsize;
GetPatch(J, prevPt.x + xBase + 0.5f, prevPt.y + yBase + 0.5f,
&I_patch[0][1], &dIdx_patch[0][1], &dIdy_patch[0][1],
&b1, &b2);
xBase+=xsize;
if(xBase>1, (c_winSize_y - 1)>>1);
const int tid = mad24(yid, xsize, xid);
float2 nextPt = prevPts[gid]/(float2)(1<= cols || nextPt.y < 0 || nextPt.y >= rows)
{
if (tid == 0 && level == 0)
{
status[gid] = 0;
}
return;
}
nextPt -= c_halfWin;
float A11 = 0.0f;
float A12 = 0.0f;
float A22 = 0.0f;
float4 I_patch[8];
float4 dIdx_patch[8];
float4 dIdy_patch[8];
float4 I_add,Dx_add,Dy_add;
yBase=yid;
{
xBase=xid;
SetPatch4(I, nextPt.x + xBase + 0.5f, nextPt.y + yBase + 0.5f,
&I_patch[0], &dIdx_patch[0], &dIdy_patch[0],
&A11, &A12, &A22);
xBase+=xsize;
SetPatch4(I, nextPt.x + xBase + 0.5f, nextPt.y + yBase + 0.5f,
&I_patch[1], &dIdx_patch[1], &dIdy_patch[1],
&A11, &A12, &A22);
xBase+=xsize;
if(xBase= cols || nextPt.y < -c_halfWin.y || nextPt.y >= rows)
{
if (tid == 0 && level == 0)
status[gid] = 0;
return;
}
float b1 = 0;
float b2 = 0;
yBase=yid;
{
xBase=xid;
GetPatch4(J, nextPt.x + xBase + 0.5f, nextPt.y + yBase + 0.5f,
&I_patch[0], &dIdx_patch[0], &dIdy_patch[0],
&b1, &b2);
xBase+=xsize;
GetPatch4(J, nextPt.x + xBase + 0.5f, nextPt.y + yBase + 0.5f,
&I_patch[1], &dIdx_patch[1], &dIdy_patch[1],
&b1, &b2);
xBase+=xsize;
if(xBase= cols || y >= rows)
return;
int A11i = 0;
int A12i = 0;
int A22i = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int dIdx = dIdx_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
int dIdy = dIdy_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
A11i += dIdx * dIdx;
A12i += dIdx * dIdy;
A22i += dIdy * dIdy;
}
}
float A11 = A11i;
float A12 = A12i;
float A22 = A22i;
float D = A11 * A22 - A12 * A12;
if (D < 1.192092896e-07f)
{
return;
}
D = 1.f / D;
A11 *= D;
A12 *= D;
A22 *= D;
float2 nextPt;
nextPt.x = x + prevU[y/2 * prevUStep / 4 + x/2] * 2.0f;
nextPt.y = y + prevV[y/2 * prevVStep / 4 + x/2] * 2.0f;
for (int k = 0; k < c_iters; ++k)
{
if (nextPt.x < 0 || nextPt.x >= cols || nextPt.y < 0 || nextPt.y >= rows)
{
return;
}
int b1 = 0;
int b2 = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int iI = I_patch[(get_local_id(1) + i) * patchWidth + get_local_id(0) + j];
int iJ = read_imagei(J, sampler, (float2)(nextPt.x - c_halfWin_x + j + 0.5f, nextPt.y - c_halfWin_y + i + 0.5f)).x;
int diff = (iJ - iI) * 32;
int dIdx = dIdx_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
int dIdy = dIdy_patch[(get_local_id(1) + i) * patchWidth + (get_local_id(0) + j)];
b1 += diff * dIdx;
b2 += diff * dIdy;
}
}
float2 delta;
delta.x = A12 * b2 - A22 * b1;
delta.y = A12 * b1 - A11 * b2;
nextPt.x += delta.x;
nextPt.y += delta.y;
if (fabs(delta.x) < 0.01f && fabs(delta.y) < 0.01f)
break;
}
u[y * uStep / 4 + x] = nextPt.x - x;
v[y * vStep / 4 + x] = nextPt.y - y;
if (calcErr)
{
int errval = 0;
for (int i = 0; i < c_winSize_y; ++i)
{
for (int j = 0; j < c_winSize_x; ++j)
{
int iI = I_patch[(get_local_id(1) + i) * patchWidth + get_local_id(0) + j];
int iJ = read_imagei(J, sampler, (float2)(nextPt.x - c_halfWin_x + j + 0.5f, nextPt.y - c_halfWin_y + i + 0.5f)).x;
errval += abs(iJ - iI);
}
}
}
}
__kernel void set_to_with_mask(
GENTYPE scalar,
__global GENTYPE * dstMat,
int cols,
int rows,
int dstStep_in_pixel,
int dstoffset_in_pixel,
__global const uchar * restrict maskMat,
int maskStep,
int maskoffset)
{
int x=get_global_id(0);
int y=get_global_id(1);
x = x< cols ? x: cols-1;
y = y< rows ? y: rows-1;
int dstidx = mad24(y,dstStep_in_pixel,x+ dstoffset_in_pixel);
int maskidx = mad24(y,maskStep,x+ maskoffset);
uchar mask = maskMat[maskidx];
if (mask)
{
dstMat[dstidx] = scalar;
}
}
__kernel void set_to_without_mask_C1_D0(uchar scalar,__global uchar * dstMat,
int cols,int rows,int dstStep_in_pixel,int offset_in_pixel)
{
int x=get_global_id(0)<<2;
int y=get_global_id(1);
int idx = mad24(y,dstStep_in_pixel,x+ offset_in_pixel);
uchar4 out;
out.x = out.y = out.z = out.w = scalar;
if ( (x+3 < cols) && (y < rows)&& ((offset_in_pixel&3) == 0))
{
*(__global uchar4*)(dstMat+idx) = out;
}
else
{
if((x+3 < cols) && (y < rows))
{
dstMat[idx] = out.x;
dstMat[idx+1] = out.y;
dstMat[idx+2] = out.z;
dstMat[idx+3] = out.w;
}
if((x+2 < cols) && (y < rows))
{
dstMat[idx] = out.x;
dstMat[idx+1] = out.y;
dstMat[idx+2] = out.z;
}
else if((x+1 < cols) && (y < rows))
{
dstMat[idx] = out.x;
dstMat[idx+1] = out.y;
}
else if((x < cols) && (y < rows))
{
dstMat[idx] = out.x;
}
}
}
__kernel void set_to_without_mask(GENTYPE scalar,__global GENTYPE * dstMat,
int cols,int rows,int dstStep_in_pixel,int offset_in_pixel)
{
int x=get_global_id(0);
int y=get_global_id(1);
if ( (x < cols) & (y < rows))
{
int idx = mad24(y,dstStep_in_pixel,x+ offset_in_pixel);
dstMat[idx] = scalar;
}
}
__kernel void copy_to_with_mask(
__global const GENTYPE* restrict srcMat,
__global GENTYPE* dstMat,
__global const uchar* restrict maskMat,
int cols,
int rows,
int srcStep_in_pixel,
int srcoffset_in_pixel,
int dstStep_in_pixel,
int dstoffset_in_pixel,
int maskStep,
int maskoffset)
{
int x=get_global_id(0);
int y=get_global_id(1);
x = x< cols ? x: cols-1;
y = y< rows ? y: rows-1;
int srcidx = mad24(y,srcStep_in_pixel,x+ srcoffset_in_pixel);
int dstidx = mad24(y,dstStep_in_pixel,x+ dstoffset_in_pixel);
int maskidx = mad24(y,maskStep,x+ maskoffset);
uchar mask = maskMat[maskidx];
if (mask)
{
dstMat[dstidx] = srcMat[srcidx];
}
}
#define F float
#define F2 float2
#define F4 float4
__kernel void convert_to_S4_C1_D0(
__global const int* restrict srcMat,
__global uchar* dstMat,
int cols,
int rows,
int srcStep_in_pixel,
int srcoffset_in_pixel,
int dstStep_in_pixel,
int dstoffset_in_pixel,
F alpha,
F beta)
{
int x=get_global_id(0)<<2;
int y=get_global_id(1);
int off_src = (dstoffset_in_pixel & 3);
int srcidx = mad24(y,srcStep_in_pixel,x+ srcoffset_in_pixel - off_src);
int dst_addr_start = mad24(y,dstStep_in_pixel,dstoffset_in_pixel);
int dst_addr_end = mad24(y,dstStep_in_pixel,cols+dstoffset_in_pixel);
int dstidx = mad24(y,dstStep_in_pixel,x+ dstoffset_in_pixel & (int)0xfffffffc);
if(x+3= 512) { if (tid < 256) smem[tid] = sum = sum + smem[tid + 256]; 
barrier(CLK_LOCAL_MEM_FENCE); }
if (size >= 256) { if (tid < 128) smem[tid] = sum = sum + smem[tid + 128]; 
barrier(CLK_LOCAL_MEM_FENCE); }
if (size >= 128) { if (tid < 64) smem[tid] = sum = sum + smem[tid + 64]; 
barrier(CLK_LOCAL_MEM_FENCE); }
#ifdef CPU
if (size >= 64) { if (tid < 32) smem[tid] = sum = sum + smem[tid + 32]; 
barrier(CLK_LOCAL_MEM_FENCE); }
if (size >= 32) { if (tid < 16) smem[tid] = sum = sum + smem[tid + 16]; 
barrier(CLK_LOCAL_MEM_FENCE); }  
if (size >= 16) { if (tid < 8) smem[tid] = sum = sum + smem[tid + 8]; 
barrier(CLK_LOCAL_MEM_FENCE); }
if (size >= 8) { if (tid < 4) smem[tid] = sum = sum + smem[tid + 4]; 
barrier(CLK_LOCAL_MEM_FENCE); }
if (size >= 4) { if (tid < 2) smem[tid] = sum = sum + smem[tid + 2]; 
barrier(CLK_LOCAL_MEM_FENCE); }    
if (size >= 2) { if (tid < 1) smem[tid] = sum = sum + smem[tid + 1]; 
barrier(CLK_LOCAL_MEM_FENCE); }
#else
if (tid < 32)
{
if (size >= 64) smem[tid] = sum = sum + smem[tid + 32];
if (size >= 32) smem[tid] = sum = sum + smem[tid + 16];
if (size >= 16) smem[tid] = sum = sum + smem[tid + 8];
if (size >= 8) smem[tid] = sum = sum + smem[tid + 4];
if (size >= 4) smem[tid] = sum = sum + smem[tid + 2];
if (size >= 2) smem[tid] = sum = sum + smem[tid + 1];
}
#endif
return sum;
}
__kernel void normalize_hists_kernel(
const int nthreads, const int block_hist_size, const int img_block_width,
__global float* block_hists, const float threshold, __local float *squares)
{
const int tid = get_local_id(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global float* hist = block_hists + (gidY * img_block_width + gidX) * 
block_hist_size + tid;
float elem = 0.f;
if (tid < block_hist_size)
elem = hist[0];
squares[tid] = elem * elem;
barrier(CLK_LOCAL_MEM_FENCE);
float sum = reduce_smem(squares, nthreads);
float scale = 1.0f / (sqrt(sum) + 0.1f * block_hist_size);
elem = min(elem * scale, threshold);
barrier(CLK_LOCAL_MEM_FENCE);
squares[tid] = elem * elem;
barrier(CLK_LOCAL_MEM_FENCE);
sum = reduce_smem(squares, nthreads);
scale = 1.0f / (sqrt(sum) + 1e-3f);
if (tid < block_hist_size)
hist[0] = elem * scale;
}
__kernel void classify_hists_180_kernel(
const int cdescr_width, const int cdescr_height, const int cblock_hist_size,
const int img_win_width, const int img_block_width,
const int win_block_stride_x, const int win_block_stride_y,
__global const float * block_hists, __global const float* coefs,
float free_coef, float threshold, __global uchar* labels)
{
const int tid = get_local_id(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global const float* hist = block_hists + (gidY * win_block_stride_y * 
img_block_width + gidX * win_block_stride_x) * cblock_hist_size;
float product = 0.f;
for (int i = 0; i < cdescr_height; i++)
{
product += coefs[i * cdescr_width + tid] * 
hist[i * img_block_width * cblock_hist_size + tid];
}
__local float products[180];
products[tid] = product;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 90) products[tid] = product = product + products[tid + 90];
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 45) products[tid] = product = product + products[tid + 45];
barrier(CLK_LOCAL_MEM_FENCE);
volatile __local float* smem = products;
#ifdef CPU
if (tid < 13) smem[tid] = product = product + smem[tid + 32];
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16) smem[tid] = product = product + smem[tid + 16];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<8) smem[tid] = product = product + smem[tid + 8];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<4) smem[tid] = product = product + smem[tid + 4];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<2) smem[tid] = product = product + smem[tid + 2];
barrier(CLK_LOCAL_MEM_FENCE);
#else
if (tid < 13)
{
smem[tid] = product = product + smem[tid + 32];
}
if (tid < 16)
{
smem[tid] = product = product + smem[tid + 16];
smem[tid] = product = product + smem[tid + 8];
smem[tid] = product = product + smem[tid + 4];
smem[tid] = product = product + smem[tid + 2];
}
#endif
if (tid == 0){
product = product + smem[tid + 1];
labels[gidY * img_win_width + gidX] = (product + free_coef >= threshold);
}
}
__kernel void classify_hists_252_kernel(
const int cdescr_width, const int cdescr_height, const int cblock_hist_size,
const int img_win_width, const int img_block_width,
const int win_block_stride_x, const int win_block_stride_y,
__global const float * block_hists, __global const float* coefs,
float free_coef, float threshold, __global uchar* labels)
{
const int tid = get_local_id(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global const float* hist = block_hists + (gidY * win_block_stride_y * 
img_block_width + gidX * win_block_stride_x) * cblock_hist_size;
float product = 0.f;
if (tid < cdescr_width)
{
for (int i = 0; i < cdescr_height; i++)
product += coefs[i * cdescr_width + tid] * 
hist[i * img_block_width * cblock_hist_size + tid];
}
__local float products[NTHREADS];
products[tid] = product;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 128) products[tid] = product = product + products[tid + 128];
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 64) products[tid] = product = product + products[tid + 64];
barrier(CLK_LOCAL_MEM_FENCE);
volatile __local float* smem = products;
#ifdef CPU
if(tid<32) smem[tid] = product = product + smem[tid + 32];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<16) smem[tid] = product = product + smem[tid + 16];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<8) smem[tid] = product = product + smem[tid + 8];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<4) smem[tid] = product = product + smem[tid + 4];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<2) smem[tid] = product = product + smem[tid + 2];
barrier(CLK_LOCAL_MEM_FENCE);
#else
if (tid < 32)
{      
smem[tid] = product = product + smem[tid + 32];
smem[tid] = product = product + smem[tid + 16];
smem[tid] = product = product + smem[tid + 8];
smem[tid] = product = product + smem[tid + 4];
smem[tid] = product = product + smem[tid + 2];
}
#endif
if (tid == 0){
product = product + smem[tid + 1];
labels[gidY * img_win_width + gidX] = (product + free_coef >= threshold);
}
}
__kernel void classify_hists_kernel(
const int cdescr_size, const int cdescr_width, const int cblock_hist_size,
const int img_win_width, const int img_block_width,
const int win_block_stride_x, const int win_block_stride_y,
__global const float * block_hists, __global const float* coefs,
float free_coef, float threshold, __global uchar* labels)
{
const int tid = get_local_id(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global const float* hist = block_hists + (gidY * win_block_stride_y * 
img_block_width + gidX * win_block_stride_x) * cblock_hist_size;
float product = 0.f;
for (int i = tid; i < cdescr_size; i += NTHREADS)
{
int offset_y = i / cdescr_width;
int offset_x = i - offset_y * cdescr_width;
product += coefs[i] * 
hist[offset_y * img_block_width * cblock_hist_size + offset_x];
}
__local float products[NTHREADS];
products[tid] = product;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 128) products[tid] = product = product + products[tid + 128];
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 64) products[tid] = product = product + products[tid + 64];
barrier(CLK_LOCAL_MEM_FENCE);
volatile __local float* smem = products;
#ifdef CPU
if(tid<32) smem[tid] = product = product + smem[tid + 32];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<16) smem[tid] = product = product + smem[tid + 16];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<8) smem[tid] = product = product + smem[tid + 8];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<4) smem[tid] = product = product + smem[tid + 4];
barrier(CLK_LOCAL_MEM_FENCE);
if(tid<2) smem[tid] = product = product + smem[tid + 2];
barrier(CLK_LOCAL_MEM_FENCE);
#else
if (tid < 32)
{       
smem[tid] = product = product + smem[tid + 32];
smem[tid] = product = product + smem[tid + 16];
smem[tid] = product = product + smem[tid + 8];
smem[tid] = product = product + smem[tid + 4];
smem[tid] = product = product + smem[tid + 2];
}
#endif
if (tid == 0){
smem[tid] = product = product + smem[tid + 1];
labels[gidY * img_win_width + gidX] = (product + free_coef >= threshold);
}
}
__kernel void extract_descrs_by_rows_kernel(
const int cblock_hist_size, const int descriptors_quadstep, 
const int cdescr_size, const int cdescr_width, const int img_block_width, 
const int win_block_stride_x, const int win_block_stride_y,
__global const float* block_hists, __global float* descriptors)
{
int tid = get_local_id(0);
int gidX = get_group_id(0);
int gidY = get_group_id(1);
__global const float* hist = block_hists + (gidY * win_block_stride_y * 
img_block_width + gidX * win_block_stride_x) * cblock_hist_size;
__global float* descriptor = descriptors + 
(gidY * get_num_groups(0) + gidX) * descriptors_quadstep;
for (int i = tid; i < cdescr_size; i += NTHREADS)
{
int offset_y = i / cdescr_width;
int offset_x = i - offset_y * cdescr_width;
descriptor[i] = hist[offset_y * img_block_width * cblock_hist_size + offset_x];
}
}
__kernel void extract_descrs_by_cols_kernel(
const int cblock_hist_size, const int descriptors_quadstep, const int cdescr_size,
const int cnblocks_win_x, const int cnblocks_win_y, const int img_block_width, 
const int win_block_stride_x, const int win_block_stride_y, 
__global const float* block_hists, __global float* descriptors)
{
int tid = get_local_id(0);
int gidX = get_group_id(0);
int gidY = get_group_id(1);
__global const float* hist = block_hists +  (gidY * win_block_stride_y * 
img_block_width + gidX * win_block_stride_x) * cblock_hist_size;
__global float* descriptor = descriptors + 
(gidY * get_num_groups(0) + gidX) * descriptors_quadstep;
for (int i = tid; i < cdescr_size; i += NTHREADS)
{
int block_idx = i / cblock_hist_size;
int idx_in_block = i - block_idx * cblock_hist_size;
int y = block_idx / cnblocks_win_x;
int x = block_idx - y * cnblocks_win_x;
descriptor[(x * cnblocks_win_y + y) * cblock_hist_size + idx_in_block] = 
hist[(y * img_block_width  + x) * cblock_hist_size + idx_in_block];
}
}
__kernel void compute_gradients_8UC4_kernel(
const int height, const int width, 
const int img_step, const int grad_quadstep, const int qangle_step,
const __global uchar4 * img, __global float * grad, __global uchar * qangle,
const float angle_scale, const char correct_gamma, const int cnbins)
{
const int x = get_global_id(0);
const int tid = get_local_id(0);
const int gSizeX = get_local_size(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global const uchar4* row = img + gidY * img_step;
__local float sh_row[(NTHREADS + 2) * 3];
uchar4 val;
if (x < width)
val = row[x];
else
val = row[width - 2];
sh_row[tid + 1] = val.x;
sh_row[tid + 1 + (NTHREADS + 2)] = val.y;
sh_row[tid + 1 + 2 * (NTHREADS + 2)] = val.z;
if (tid == 0)
{
val = row[max(x - 1, 1)];
sh_row[0] = val.x;
sh_row[(NTHREADS + 2)] = val.y;
sh_row[2 * (NTHREADS + 2)] = val.z;
}
if (tid == gSizeX - 1)
{
val = row[min(x + 1, width - 2)];
sh_row[gSizeX + 1] = val.x;
sh_row[gSizeX + 1 + (NTHREADS + 2)] = val.y;
sh_row[gSizeX + 1 + 2 * (NTHREADS + 2)] = val.z;
}
barrier(CLK_LOCAL_MEM_FENCE);
if (x < width)
{
float3 a = (float3) (sh_row[tid], sh_row[tid + (NTHREADS + 2)], 
sh_row[tid + 2 * (NTHREADS + 2)]);
float3 b = (float3) (sh_row[tid + 2], sh_row[tid + 2 + (NTHREADS + 2)], 
sh_row[tid + 2 + 2 * (NTHREADS + 2)]);
float3 dx;
if (correct_gamma == 1)
dx = sqrt(b) - sqrt(a);
else
dx = b - a;
float3 dy = (float3) 0.f;
if (gidY > 0 && gidY < height - 1)
{
a = convert_float3(img[(gidY - 1) * img_step + x].xyz);
b = convert_float3(img[(gidY + 1) * img_step + x].xyz);
if (correct_gamma == 1)
dy = sqrt(b) - sqrt(a);
else
dy = b - a;
}
float best_dx = dx.x;
float best_dy = dy.x;
float mag0 = dx.x * dx.x + dy.x * dy.x;
float mag1 = dx.y * dx.y + dy.y * dy.y;
if (mag0 < mag1)
{
best_dx = dx.y;
best_dy = dy.y;
mag0 = mag1;
}
mag1 = dx.z * dx.z + dy.z * dy.z;
if (mag0 < mag1)
{
best_dx = dx.z;
best_dy = dy.z;
mag0 = mag1;
}
mag0 = sqrt(mag0);
float ang = (atan2(best_dy, best_dx) + CV_PI_F) * angle_scale - 0.5f;
int hidx = (int)floor(ang);
ang -= hidx;
hidx = (hidx + cnbins) % cnbins;
qangle[(gidY * qangle_step + x) << 1] = hidx;
qangle[((gidY * qangle_step + x) << 1) + 1] = (hidx + 1) % cnbins;
grad[(gidY * grad_quadstep + x) << 1] = mag0 * (1.f - ang);
grad[((gidY * grad_quadstep + x) << 1) + 1] = mag0 * ang;
}
}
__kernel void compute_gradients_8UC1_kernel(
const int height, const int width, 
const int img_step, const int grad_quadstep, const int qangle_step,
__global const uchar * img, __global float * grad, __global uchar * qangle,
const float angle_scale, const char correct_gamma, const int cnbins)
{
const int x = get_global_id(0);
const int tid = get_local_id(0);
const int gSizeX = get_local_size(0);
const int gidX = get_group_id(0);
const int gidY = get_group_id(1);
__global const uchar* row = img + gidY * img_step;
__local float sh_row[NTHREADS + 2];
if (x < width)
sh_row[tid + 1] = row[x];
else
sh_row[tid + 1] = row[width - 2];
if (tid == 0)
sh_row[0] = row[max(x - 1, 1)];
if (tid == gSizeX - 1)
sh_row[gSizeX + 1] = row[min(x + 1, width - 2)];
barrier(CLK_LOCAL_MEM_FENCE);
if (x < width)
{
float dx;
if (correct_gamma == 1)
dx = sqrt(sh_row[tid + 2]) - sqrt(sh_row[tid]);
else
dx = sh_row[tid + 2] - sh_row[tid];
float dy = 0.f;
if (gidY > 0 && gidY < height - 1)
{
float a = (float) img[ (gidY + 1) * img_step + x ];
float b = (float) img[ (gidY - 1) * img_step + x ];
if (correct_gamma == 1)
dy = sqrt(a) - sqrt(b);
else
dy = a - b;
}
float mag = sqrt(dx * dx + dy * dy);
float ang = (atan2(dy, dx) + CV_PI_F) * angle_scale - 0.5f;
int hidx = (int)floor(ang);
ang -= hidx;
hidx = (hidx + cnbins) % cnbins;
qangle[ (gidY * qangle_step + x) << 1 ]     = hidx;
qangle[ ((gidY * qangle_step + x) << 1) + 1 ] = (hidx + 1) % cnbins;
grad[ (gidY * grad_quadstep + x) << 1 ]       = mag * (1.f - ang);
grad[ ((gidY * grad_quadstep + x) << 1) + 1 ]   = mag * ang;
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
typedef double T;
typedef double F;
typedef double4 F4;
#define convert_F4 convert_double4
#else
typedef float F;
typedef float4 F4;
typedef long T;
#define convert_F4 convert_float4
#endif
#define DST_ROW_00     0
#define DST_ROW_10     1
#define DST_ROW_01     2
#define DST_ROW_20     3
#define DST_ROW_11     4
#define DST_ROW_02     5
#define DST_ROW_30     6
#define DST_ROW_21     7
#define DST_ROW_12     8
#define DST_ROW_03     9
__kernel void icvContourMoments(int contour_total,
__global float* reader_oclmat_data,
__global T* dst_a,
int dst_step)
{
T xi_1, yi_1, xi_12, yi_12, xi, yi, xi2, yi2, dxy, xii_1, yii_1;
int idx = get_global_id(0);
if (idx < 0 || idx >= contour_total)
return;
xi_1 = (T)(*(reader_oclmat_data + (get_global_id(0) << 1)));
yi_1 = (T)(*(reader_oclmat_data + (get_global_id(0) << 1) + 1));
xi_12 = xi_1 * xi_1;
yi_12 = yi_1 * yi_1;
if(idx == contour_total - 1)
{
xi = (T)(*(reader_oclmat_data));
yi = (T)(*(reader_oclmat_data + 1));
}
else
{
xi = (T)(*(reader_oclmat_data + (idx + 1) * 2));
yi = (T)(*(reader_oclmat_data + (idx + 1) * 2 + 1));
}
xi2 = xi * xi;
yi2 = yi * yi;
dxy = xi_1 * yi - xi * yi_1;
xii_1 = xi_1 + xi;
yii_1 = yi_1 + yi;
dst_step /= sizeof(T);
*( dst_a + DST_ROW_00 * dst_step + idx) = dxy;
*( dst_a + DST_ROW_10 * dst_step + idx) = dxy * xii_1;
*( dst_a + DST_ROW_01 * dst_step + idx) = dxy * yii_1;
*( dst_a + DST_ROW_20 * dst_step + idx) = dxy * (xi_1 * xii_1 + xi2);
*( dst_a + DST_ROW_11 * dst_step + idx) = dxy * (xi_1 * (yii_1 + yi_1) + xi * (yii_1 + yi));
*( dst_a + DST_ROW_02 * dst_step + idx) = dxy * (yi_1 * yii_1 + yi2);
*( dst_a + DST_ROW_30 * dst_step + idx) = dxy * xii_1 * (xi_12 + xi2);
*( dst_a + DST_ROW_03 * dst_step + idx) = dxy * yii_1 * (yi_12 + yi2);
*( dst_a + DST_ROW_21 * dst_step + idx) =
dxy * (xi_12 * (3 * yi_1 + yi) + 2 * xi * xi_1 * yii_1 +
xi2 * (yi_1 + 3 * yi));
*( dst_a + DST_ROW_12 * dst_step + idx) =
dxy * (yi_12 * (3 * xi_1 + xi) + 2 * yi * yi_1 * xii_1 +
yi2 * (xi_1 + 3 * xi));
}
__kernel void dst_sum(int src_rows, int src_cols, int tile_height, int tile_width, int TILE_SIZE,
__global F* sum, __global F* dst_m, int dst_step)
{
int gidy = get_global_id(0);
int gidx = get_global_id(1);
int block_y = src_rows/tile_height;
int block_x = src_cols/tile_width;
int block_num;
if(src_rows > TILE_SIZE && src_rows % TILE_SIZE != 0)
block_y ++;
if(src_cols > TILE_SIZE && src_cols % TILE_SIZE != 0)
block_x ++;
block_num = block_y * block_x;
__local F dst_sum[10][128];
if(gidy<128-block_num)
for(int i=0; i<10; i++)
dst_sum[i][gidy+block_num]=0;
barrier(CLK_LOCAL_MEM_FENCE);
dst_step /= sizeof(F);
if(gidy0; lsize>>=1)
{
if(gidy 0 )
for(int i = 0; i < tileSize_width; i += VLEN_C)
{
for(int j=0; j= TILE_SIZE/2&&lidy > bheight-1&&lidy < tileSize_height)
{
m[9][lidy-bheight] = ((int)py) * sy;
m[8][lidy-bheight] = ((int)x1.s0) * sy;
m[7][lidy-bheight] = ((int)x2.s0) * lidy;
m[6][lidy-bheight] = x3.s0;
m[5][lidy-bheight] = x0.s0 * sy;
m[4][lidy-bheight] = x1.s0 * lidy;
m[3][lidy-bheight] = x2.s0;
m[2][lidy-bheight] = py;
m[1][lidy-bheight] = x1.s0;
m[0][lidy-bheight] = x0.s0;
}
else if(lidy < bheight)
{
lm[9] = ((int)py) * sy;
lm[8] = ((int)x1.s0) * sy;
lm[7] = ((int)x2.s0) * lidy;
lm[6] = x3.s0;
lm[5] = x0.s0 * sy;
lm[4] = x1.s0 * lidy;
lm[3] = x2.s0;
lm[2] = py;
lm[1] = x1.s0;
lm[0] = x0.s0;
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = bheight; j >= 1; j = j/2 )
{
if(lidy < j)
for( int i = 0; i < 10; i++ )
lm[i] = lm[i] + m[i][lidy];
barrier(CLK_LOCAL_MEM_FENCE);
if(lidy >= j/2&&lidy < j)
for( int i = 0; i < 10; i++ )
m[i][lidy-j/2] = lm[i];
barrier(CLK_LOCAL_MEM_FENCE);
}
if(lidy == 0&&lidx == 0)
{
for( int mt = 0; mt < 10; mt++ )
mom[mt] = (F)lm[mt];
if(binary)
{
F s = 1./255;
for( int mt = 0; mt < 10; mt++ )
mom[mt] *= s;
}
F xm = x * mom[0], ym = y * mom[0];
dst_step /= sizeof(F);
*(dst_m + mad24(DST_ROW_00 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[0];
*(dst_m + mad24(DST_ROW_10 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[1] + xm;
*(dst_m + mad24(DST_ROW_01 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[2] + ym;
*(dst_m + mad24(DST_ROW_20 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[3] + x * (mom[1] * 2 + xm);
*(dst_m + mad24(DST_ROW_11 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[4] + x * (mom[2] + ym) + y * mom[1];
*(dst_m + mad24(DST_ROW_02 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[5] + y * (mom[2] * 2 + ym);
*(dst_m + mad24(DST_ROW_30 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[6] + x * (3. * mom[3] + x * (3. * mom[1] + xm));
*(dst_m + mad24(DST_ROW_21 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[7] + x * (2 * (mom[4] + y * mom[1]) + x * (mom[2] + ym)) + y * mom[3];
*(dst_m + mad24(DST_ROW_12 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[8] + y * (2 * (mom[4] + x * mom[2]) + y * (mom[1] + xm)) + x * mom[5];
*(dst_m + mad24(DST_ROW_03 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[9] + y * (3. * mom[5] + y * (3. * mom[2] + ym));
}
}
__kernel void CvMoments_D2(__global ushort8* src_data, int src_rows, int src_cols, int src_step,
__global F* dst_m,
int dst_cols, int dst_step, int blocky,
int depth, int cn, int coi, int binary, const int TILE_SIZE)
{
ushort tmp_coi[8];
ushort8 tmp[32];
int VLEN_US = 8;
int gidy = get_global_id(0);
int gidx = get_global_id(1);
int wgidy = get_group_id(0);
int wgidx = get_group_id(1);
int lidy = get_local_id(0);
int lidx = get_local_id(1);
int y = wgidy*TILE_SIZE;
int x = wgidx*TILE_SIZE;
int kcn = (cn==2)?2:4;
int rstep = min(src_step/2, TILE_SIZE);
int tileSize_height = min(TILE_SIZE, src_rows - y);
int tileSize_width = min(TILE_SIZE, src_cols -x);
if ( y+lidy < src_rows )
{
if(src_cols > TILE_SIZE && tileSize_width < TILE_SIZE)
for(int i=tileSize_width; i < rstep && (x+i) < src_cols; i++ )
*((__global ushort*)src_data+(y+lidy)*src_step/2+x+i) = 0;
if( coi > 0 )
for(int i=0; i < tileSize_width; i+=VLEN_US)
{
for(int j=0; j= TILE_SIZE/2&&lidy > bheight-1&&lidy < tileSize_height)
{
m[9][lidy-bheight] = ((long)py) * sy;
m[8][lidy-bheight] = ((long)x1.s0) * sy;
m[7][lidy-bheight] = ((long)x2.s0) * lidy;
m[6][lidy-bheight] = x3.s0;
m[5][lidy-bheight] = x0.s0 * sy;
m[4][lidy-bheight] = x1.s0 * lidy;
m[3][lidy-bheight] = x2.s0;
m[2][lidy-bheight] = py;
m[1][lidy-bheight] = x1.s0;
m[0][lidy-bheight] = x0.s0;
}
else if(lidy < bheight)
{
lm[9] = ((long)py) * sy;
lm[8] = ((long)x1.s0) * sy;
lm[7] = ((long)x2.s0) * lidy;
lm[6] = x3.s0;
lm[5] = x0.s0 * sy;
lm[4] = x1.s0 * lidy;
lm[3] = x2.s0;
lm[2] = py;
lm[1] = x1.s0;
lm[0] = x0.s0;
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = TILE_SIZE/2; j >= 1; j = j/2 )
{
if(lidy < j)
for( int i = 0; i < 10; i++ )
lm[i] = lm[i] + m[i][lidy];
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = TILE_SIZE/2; j >= 1; j = j/2 )
{
if(lidy >= j/2&&lidy < j)
for( int i = 0; i < 10; i++ )
m[i][lidy-j/2] = lm[i];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lidy == 0&&lidx == 0)
{
for(int mt = 0; mt < 10; mt++ )
mom[mt] = (F)lm[mt];
if(binary)
{
F s = 1./255;
for( int mt = 0; mt < 10; mt++ )
mom[mt] *= s;
}
F xm = x  *mom[0], ym = y * mom[0];
dst_step /= sizeof(F);
*(dst_m + mad24(DST_ROW_00 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[0];
*(dst_m + mad24(DST_ROW_10 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[1] + xm;
*(dst_m + mad24(DST_ROW_01 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[2] + ym;
*(dst_m + mad24(DST_ROW_20 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[3] + x * (mom[1] * 2 + xm);
*(dst_m + mad24(DST_ROW_11 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[4] + x * (mom[2] + ym) + y * mom[1];
*(dst_m + mad24(DST_ROW_02 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[5] + y * (mom[2] * 2 + ym);
*(dst_m + mad24(DST_ROW_30 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[6] + x * (3. * mom[3] + x * (3. * mom[1] + xm));
*(dst_m + mad24(DST_ROW_21 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[7] + x * (2 * (mom[4] + y * mom[1]) + x * (mom[2] + ym)) + y * mom[3];
*(dst_m + mad24(DST_ROW_12 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[8] + y * (2 * (mom[4] + x * mom[2]) + y * (mom[1] + xm)) + x * mom[5];
*(dst_m + mad24(DST_ROW_03 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[9] + y * (3. * mom[5] + y * (3. * mom[2] + ym));
}
}
__kernel void CvMoments_D3(__global short8* src_data, int src_rows, int src_cols, int src_step,
__global F* dst_m,
int dst_cols, int dst_step, int blocky,
int depth, int cn, int coi, int binary, const int TILE_SIZE)
{
short tmp_coi[8];
short8 tmp[32];
int VLEN_S =8;
int gidy = get_global_id(0);
int gidx = get_global_id(1);
int wgidy = get_group_id(0);
int wgidx = get_group_id(1);
int lidy = get_local_id(0);
int lidx = get_local_id(1);
int y = wgidy*TILE_SIZE;
int x = wgidx*TILE_SIZE;
int kcn = (cn==2)?2:4;
int rstep = min(src_step/2, TILE_SIZE);
int tileSize_height = min(TILE_SIZE, src_rows - y);
int tileSize_width = min(TILE_SIZE, src_cols -x);
if ( y+lidy < src_rows )
{
if(tileSize_width < TILE_SIZE)
for(int i = tileSize_width; i < rstep && (x+i) < src_cols; i++ )
*((__global short*)src_data+(y+lidy)*src_step/2+x+i) = 0;
if( coi > 0 )
for(int i=0; i < tileSize_width; i+=VLEN_S)
{
for(int j=0; j= TILE_SIZE/2&&lidy > bheight-1&&lidy < tileSize_height)
{
m[9][lidy-bheight] = ((long)py) * sy;
m[8][lidy-bheight] = ((long)x1.s0) * sy;
m[7][lidy-bheight] = ((long)x2.s0) * lidy;
m[6][lidy-bheight] = x3.s0;
m[5][lidy-bheight] = x0.s0 * sy;
m[4][lidy-bheight] = x1.s0 * lidy;
m[3][lidy-bheight] = x2.s0;
m[2][lidy-bheight] = py;
m[1][lidy-bheight] = x1.s0;
m[0][lidy-bheight] = x0.s0;
}
else if(lidy < bheight)
{
lm[9] = ((long)py) * sy;
lm[8] = ((long)(x1.s0)) * sy;
lm[7] = ((long)(x2.s0)) * lidy;
lm[6] = x3.s0;
lm[5] = x0.s0 * sy;
lm[4] = x1.s0 * lidy;
lm[3] = x2.s0;
lm[2] = py;
lm[1] = x1.s0;
lm[0] = x0.s0;
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = TILE_SIZE/2; j >=1; j = j/2 )
{
if(lidy < j)
for( int i = 0; i < 10; i++ )
lm[i] = lm[i] + m[i][lidy];
barrier(CLK_LOCAL_MEM_FENCE);
if(lidy >= j/2&&lidy < j)
for( int i = 0; i < 10; i++ )
m[i][lidy-j/2] = lm[i];
barrier(CLK_LOCAL_MEM_FENCE);
}
if(lidy ==0 &&lidx ==0)
{
for(int mt = 0; mt < 10; mt++ )
mom[mt] = (F)lm[mt];
if(binary)
{
F s = 1./255;
for( int mt = 0; mt < 10; mt++ )
mom[mt] *= s;
}
F xm = x * mom[0], ym = y*mom[0];
dst_step /= sizeof(F);
*(dst_m + mad24(DST_ROW_00 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[0];
*(dst_m + mad24(DST_ROW_10 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[1] + xm;
*(dst_m + mad24(DST_ROW_01 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[2] + ym;
*(dst_m + mad24(DST_ROW_20 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[3] + x * (mom[1] * 2 + xm);
*(dst_m + mad24(DST_ROW_11 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[4] + x * (mom[2] + ym) + y * mom[1];
*(dst_m + mad24(DST_ROW_02 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[5] + y * (mom[2] * 2 + ym);
*(dst_m + mad24(DST_ROW_30 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[6] + x * (3. * mom[3] + x * (3. * mom[1] + xm));
*(dst_m + mad24(DST_ROW_21 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[7] + x * (2 * (mom[4] + y * mom[1]) + x * (mom[2] + ym)) + y * mom[3];
*(dst_m + mad24(DST_ROW_12 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[8] + y * (2 * (mom[4] + x * mom[2]) + y * (mom[1] + xm)) + x * mom[5];
*(dst_m + mad24(DST_ROW_03 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[9] + y * (3. * mom[5] + y * (3. * mom[2] + ym));
}
}
__kernel void CvMoments_D5( __global float* src_data, int src_rows, int src_cols, int src_step,
__global F* dst_m,
int dst_cols, int dst_step, int blocky,
int depth, int cn, int coi, int binary, const int TILE_SIZE)
{
float tmp_coi[4];
float4 tmp[64] ;
int VLEN_F = 4;
int gidy = get_global_id(0);
int gidx = get_global_id(1);
int wgidy = get_group_id(0);
int wgidx = get_group_id(1);
int lidy = get_local_id(0);
int lidx = get_local_id(1);
int y = wgidy*TILE_SIZE;
int x = wgidx*TILE_SIZE;
int kcn = (cn==2)?2:4;
int rstep = min(src_step/4, TILE_SIZE);
int tileSize_height = min(TILE_SIZE, src_rows - y);
int tileSize_width = min(TILE_SIZE, src_cols -x);
int maxIdx = mul24(src_rows, src_cols);
int yOff = (y+lidy)*src_step;
int index;
if ( y+lidy < src_rows )
{
if(tileSize_width < TILE_SIZE)
for(int i = tileSize_width; i < rstep && (x+i) < src_cols; i++ )
*((__global float*)src_data+(y+lidy)*src_step/4+x+i) = 0;
if( coi > 0 )
for(int i=0; i < tileSize_width; i+=VLEN_F)
{
for(int j=0; j<4; j++)
tmp_coi[j] = *(src_data+(y+lidy)*src_step/4+(x+i+j)*kcn+coi-1);
tmp[i/VLEN_F] = (float4)(tmp_coi[0],tmp_coi[1],tmp_coi[2],tmp_coi[3]);
}
else
for(int i=0; i < tileSize_width; i+=VLEN_F)
tmp[i/VLEN_F] = (float4)(*(src_data+(y+lidy)*src_step/4+x+i),*(src_data+(y+lidy)*src_step/4+x+i+1),*(src_data+(y+lidy)*src_step/4+x+i+2),*(src_data+(y+lidy)*src_step/4+x+i+3));
}
float4 zero = (float4)(0);
float4 full = (float4)(255);
if( binary )
for(int i=0; i < tileSize_width; i+=4)
tmp[i/VLEN_F] = (tmp[i/VLEN_F]!=zero)?full:zero;
F mom[10];
__local F m[10][128];
if(lidy < 128)
for(int i = 0; i < 10; i ++)
m[i][lidy] = 0;
barrier(CLK_LOCAL_MEM_FENCE);
F lm[10] = {0};
F4 x0 = (F4)(0);
F4 x1 = (F4)(0);
F4 x2 = (F4)(0);
F4 x3 = (F4)(0);
for( int xt = 0 ; xt < tileSize_width; xt+=VLEN_F )
{
F4 v_xt = (F4)(xt, xt+1, xt+2, xt+3);
F4 p = convert_F4(tmp[xt/VLEN_F]);
F4 xp = v_xt * p, xxp = xp * v_xt;
x0 += p;
x1 += xp;
x2 += xxp;
x3 += xxp * v_xt;
}
x0.s0 += x0.s1 + x0.s2 + x0.s3;
x1.s0 += x1.s1 + x1.s2 + x1.s3;
x2.s0 += x2.s1 + x2.s2 + x2.s3;
x3.s0 += x3.s1 + x3.s2 + x3.s3;
F py = lidy * x0.s0, sy = lidy*lidy;
int bheight = min(tileSize_height, TILE_SIZE/2);
if(bheight >= TILE_SIZE/2&&lidy > bheight-1&&lidy < tileSize_height)
{
m[9][lidy-bheight] = ((F)py) * sy;
m[8][lidy-bheight] = ((F)x1.s0) * sy;
m[7][lidy-bheight] = ((F)x2.s0) * lidy;
m[6][lidy-bheight] = x3.s0;
m[5][lidy-bheight] = x0.s0 * sy;
m[4][lidy-bheight] = x1.s0 * lidy;
m[3][lidy-bheight] = x2.s0;
m[2][lidy-bheight] = py;
m[1][lidy-bheight] = x1.s0;
m[0][lidy-bheight] = x0.s0;
}
else if(lidy < bheight)
{
lm[9] = ((F)py) * sy;
lm[8] = ((F)x1.s0) * sy;
lm[7] = ((F)x2.s0) * lidy;
lm[6] = x3.s0;
lm[5] = x0.s0 * sy;
lm[4] = x1.s0 * lidy;
lm[3] = x2.s0;
lm[2] = py;
lm[1] = x1.s0;
lm[0] = x0.s0;
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = TILE_SIZE/2; j >= 1; j = j/2 )
{
if(lidy < j)
for( int i = 0; i < 10; i++ )
lm[i] = lm[i] + m[i][lidy];
barrier(CLK_LOCAL_MEM_FENCE);
if(lidy >= j/2&&lidy < j)
for( int i = 0; i < 10; i++ )
m[i][lidy-j/2] = lm[i];
barrier(CLK_LOCAL_MEM_FENCE);
}
if(lidy == 0&&lidx == 0)
{
for( int mt = 0; mt < 10; mt++ )
mom[mt] = (F)lm[mt];
if(binary)
{
F s = 1./255;
for( int mt = 0; mt < 10; mt++ )
mom[mt] *= s;
}
F xm = x * mom[0], ym = y * mom[0];
dst_step /= sizeof(F);
*(dst_m + mad24(DST_ROW_00 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[0];
*(dst_m + mad24(DST_ROW_10 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[1] + xm;
*(dst_m + mad24(DST_ROW_01 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[2] + ym;
*(dst_m + mad24(DST_ROW_20 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[3] + x * (mom[1] * 2 + xm);
*(dst_m + mad24(DST_ROW_11 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[4] + x * (mom[2] + ym) + y * mom[1];
*(dst_m + mad24(DST_ROW_02 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[5] + y * (mom[2] * 2 + ym);
*(dst_m + mad24(DST_ROW_30 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[6] + x * (3. * mom[3] + x * (3. * mom[1] + xm));
*(dst_m + mad24(DST_ROW_21 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[7] + x * (2 * (mom[4] + y * mom[1]) + x * (mom[2] + ym)) + y * mom[3];
*(dst_m + mad24(DST_ROW_12 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[8] + y * (2 * (mom[4] + x * mom[2]) + y * (mom[1] + xm)) + x * mom[5];
*(dst_m + mad24(DST_ROW_03 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[9] + y * (3. * mom[5] + y * (3. * mom[2] + ym));
}
}
__kernel void CvMoments_D6(__global F* src_data,  int src_rows, int src_cols, int src_step,
__global F* dst_m,
int dst_cols, int dst_step, int blocky,
int depth, int cn, int coi, int binary, const int TILE_SIZE)
{
F tmp_coi[4];
F4 tmp[64];
int VLEN_D = 4;
int gidy = get_global_id(0);
int gidx = get_global_id(1);
int wgidy = get_group_id(0);
int wgidx = get_group_id(1);
int lidy = get_local_id(0);
int lidx = get_local_id(1);
int y = wgidy*TILE_SIZE;
int x = wgidx*TILE_SIZE;
int kcn = (cn==2)?2:4;
int rstep = min(src_step/8, TILE_SIZE);
int tileSize_height = min(TILE_SIZE,  src_rows - y);
int tileSize_width = min(TILE_SIZE, src_cols - x);
if ( y+lidy < src_rows )
{
if(tileSize_width < TILE_SIZE)
for(int i = tileSize_width; i < rstep && (x+i) < src_cols; i++ )
*((__global F*)src_data+(y+lidy)*src_step/8+x+i) = 0;
if( coi > 0 )
for(int i=0; i < tileSize_width; i+=VLEN_D)
{
for(int j=0; j<4 && ((x+i+j)*kcn+coi-1)= TILE_SIZE/2&&lidy > bheight-1&&lidy < tileSize_height)
{
m[9][lidy-bheight] = ((F)py) * sy;
m[8][lidy-bheight] = ((F)x1.s0) * sy;
m[7][lidy-bheight] = ((F)x2.s0) * lidy;
m[6][lidy-bheight] = x3.s0;
m[5][lidy-bheight] = x0.s0 * sy;
m[4][lidy-bheight] = x1.s0 * lidy;
m[3][lidy-bheight] = x2.s0;
m[2][lidy-bheight] = py;
m[1][lidy-bheight] = x1.s0;
m[0][lidy-bheight] = x0.s0;
}
else if(lidy < bheight)
{
lm[9] = ((F)py) * sy;
lm[8] = ((F)x1.s0) * sy;
lm[7] = ((F)x2.s0) * lidy;
lm[6] = x3.s0;
lm[5] = x0.s0 * sy;
lm[4] = x1.s0 * lidy;
lm[3] = x2.s0;
lm[2] = py;
lm[1] = x1.s0;
lm[0] = x0.s0;
}
barrier(CLK_LOCAL_MEM_FENCE);
for( int j = TILE_SIZE/2; j >= 1; j = j/2 )
{
if(lidy < j)
for( int i = 0; i < 10; i++ )
lm[i] = lm[i] + m[i][lidy];
barrier(CLK_LOCAL_MEM_FENCE);
if(lidy >= j/2&&lidy < j)
for( int i = 0; i < 10; i++ )
m[i][lidy-j/2] = lm[i];
barrier(CLK_LOCAL_MEM_FENCE);
}
if(lidy == 0&&lidx == 0)
{
for( int mt = 0; mt < 10; mt++ )
mom[mt] = (F)lm[mt];
if(binary)
{
F s = 1./255;
for( int mt = 0; mt < 10; mt++ )
mom[mt] *= s;
}
F xm = x * mom[0], ym = y * mom[0];
dst_step /= sizeof(F);
*(dst_m + mad24(DST_ROW_00 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[0];
*(dst_m + mad24(DST_ROW_10 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[1] + xm;
*(dst_m + mad24(DST_ROW_01 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[2] + ym;
*(dst_m + mad24(DST_ROW_20 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[3] + x * (mom[1] * 2 + xm);
*(dst_m + mad24(DST_ROW_11 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[4] + x * (mom[2] + ym) + y * mom[1];
*(dst_m + mad24(DST_ROW_02 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[5] + y * (mom[2] * 2 + ym);
*(dst_m + mad24(DST_ROW_30 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[6] + x * (3. * mom[3] + x * (3. * mom[1] + xm));
*(dst_m + mad24(DST_ROW_21 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[7] + x * (2 * (mom[4] + y * mom[1]) + x * (mom[2] + ym)) + y * mom[3];
*(dst_m + mad24(DST_ROW_12 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[8] + y * (2 * (mom[4] + x * mom[2]) + y * (mom[1] + xm)) + x * mom[5];
*(dst_m + mad24(DST_ROW_03 * blocky, dst_step, mad24(wgidy, dst_cols, wgidx))) = mom[9] + y * (3. * mom[5] + y * (3. * mom[2] + ym));
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void merge_vector_C2_D0(__global uchar *mat_dst,  int dst_step,  int dst_offset,
__global uchar *mat_src0, int src0_step, int src0_offset,
__global uchar *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 1;
#define dst_align  ((dst_offset & 3) >> 1)
int src0_index = mad24(y, src0_step, src0_offset + x - dst_align);
int src1_index = mad24(y, src1_step, src1_offset + x - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
__global uchar4 * dst  = (__global uchar4 *)(mat_dst + dst_index);
__global uchar  * src0 = mat_src0 + src0_index;
__global uchar  * src1 = src0     + 1;
__global uchar  * src2 = mat_src1 + src1_index;
__global uchar  * src3 = src2     + 1;
uchar4 dst_data = *dst;
uchar  data_0   = *(src0);
uchar  data_1   = *(src1);
uchar  data_2   = *(src2);
uchar  data_3   = *(src3);
uchar4 tmp_data = (uchar4)(data_0, data_2, data_1, data_3);
tmp_data.xy = dst_index + 0 >= dst_start ? tmp_data.xy : dst_data.xy;
tmp_data.zw = dst_index + 2 <  dst_end   ? tmp_data.zw : dst_data.zw;
*dst = tmp_data;
}
}
__kernel void merge_vector_C2_D1(__global char *mat_dst,  int dst_step,  int dst_offset,
__global char *mat_src0, int src0_step, int src0_offset,
__global char *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 1;
#define dst_align  ((dst_offset & 3) >> 1)
int src0_index = mad24(y, src0_step, src0_offset + x - dst_align);
int src1_index = mad24(y, src1_step, src1_offset + x - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
__global char4 * dst  = (__global char4 *)(mat_dst + dst_index);
__global char  * src0 = mat_src0 + src0_index;
__global char  * src1 = src0     + 1;
__global char  * src2 = mat_src1 + src1_index;
__global char  * src3 = src2     + 1;
char4 dst_data = *dst;
char  data_0   = *(src0);
char  data_1   = *(src1);
char  data_2   = *(src2);
char  data_3   = *(src3);
char4 tmp_data = (char4)(data_0, data_2, data_1, data_3);
tmp_data.xy = dst_index + 0 >= dst_start ? tmp_data.xy : dst_data.xy;
tmp_data.zw = dst_index + 2 <  dst_end   ? tmp_data.zw : dst_data.zw;
*dst = tmp_data;
}
}
__kernel void merge_vector_C2_D2(__global ushort *mat_dst,  int dst_step,  int dst_offset,
__global ushort *mat_src0, int src0_step, int src0_offset,
__global ushort *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
__global ushort*  src0 = (__global ushort * )((__global uchar *)mat_src0 + src0_index + (x << 1));
__global ushort*  src1 = (__global ushort * )((__global uchar *)mat_src1 + src1_index + (x << 1));
__global ushort2* dist = (__global ushort2 *)((__global uchar *)mat_dst  + dst_index  + (x << 2));
ushort  src0_data = *src0;
ushort  src1_data = *src1;
*dist = (ushort2)(src0_data, src1_data);
}
}
__kernel void merge_vector_C2_D3(__global short *mat_dst,  int dst_step,  int dst_offset,
__global short *mat_src0, int src0_step, int src0_offset,
__global short *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
__global short*  src0 = (__global short * )((__global uchar *)mat_src0 + src0_index + (x << 1));
__global short*  src1 = (__global short * )((__global uchar *)mat_src1 + src1_index + (x << 1));
__global short2* dist = (__global short2 *)((__global uchar *)mat_dst  + dst_index   + (x << 2));
short  src0_data = *src0;
short  src1_data = *src1;
*dist = (short2)(src0_data, src1_data);
}
}
__kernel void merge_vector_C2_D4(__global int *mat_dst,  int dst_step,  int dst_offset,
__global int *mat_src0, int src0_step, int src0_offset,
__global int *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
int src0 = *((__global int *)((__global uchar *)mat_src0 + src0_index + (x << 2)));
int src1 = *((__global int *)((__global uchar *)mat_src1 + src1_index + (x << 2)));
*((__global int2 *)((__global uchar *)mat_dst  + dst_index + (x << 4))) = (int2)(src0, src1);
}
}
__kernel void merge_vector_C2_D5(__global float *mat_dst,  int dst_step,  int dst_offset,
__global float *mat_src0, int src0_step, int src0_offset,
__global float *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
float src0 = *((__global float *)((__global uchar *)mat_src0 + src0_index + (x << 2)));
float src1 = *((__global float *)((__global uchar *)mat_src1 + src1_index + (x << 2)));
*((__global float2 *)((__global uchar *)mat_dst  + dst_index + (x << 4))) = (float2)(src0, src1);
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C2_D6(__global double *mat_dst,  int dst_step,  int dst_offset,
__global double *mat_src0, int src0_step, int src0_offset,
__global double *mat_src1, int src1_step, int src1_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
double src0 = *((__global double *)((__global uchar *)mat_src0 + src0_index + (x << 3)));
double src1 = *((__global double *)((__global uchar *)mat_src1 + src1_index + (x << 3)));
*((__global double2 *)((__global uchar *)mat_dst  + dst_index + (x << 4))) = (double2)(src0, src1);
}
}
#endif
__kernel void merge_vector_C3_D0(__global uchar *mat_dst,  int dst_step,  int dst_offset,
__global uchar *mat_src0, int src0_step, int src0_offset,
__global uchar *mat_src1, int src1_step, int src1_offset,
__global uchar *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 2;
int src0_index = mad24(y, src0_step, x + src0_offset - offset_cols);
int src1_index = mad24(y, src1_step, x + src1_offset - offset_cols);
int src2_index = mad24(y, src2_step, x + src2_offset - offset_cols);
int dst_start = mad24(y, dst_step, dst_offset);
int dst_end   = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + 3 * x - offset_cols * 3);
uchar data0_0 = *(mat_src0 + src0_index + 0);
uchar data0_1 = *(mat_src0 + src0_index + 1);
uchar data0_2 = *(mat_src0 + src0_index + 2);
uchar data0_3 = *(mat_src0 + src0_index + 3);
uchar data1_0 = *(mat_src1 + src1_index + 0);
uchar data1_1 = *(mat_src1 + src1_index + 1);
uchar data1_2 = *(mat_src1 + src1_index + 2);
uchar data1_3 = *(mat_src1 + src1_index + 3);
uchar data2_0 = *(mat_src2 + src2_index + 0);
uchar data2_1 = *(mat_src2 + src2_index + 1);
uchar data2_2 = *(mat_src2 + src2_index + 2);
uchar data2_3 = *(mat_src2 + src2_index + 3);
uchar4 tmp_data0 = (uchar4)(data0_0, data1_0, data2_0, data0_1);
uchar4 tmp_data1 = (uchar4)(data1_1, data2_1, data0_2, data1_2);
uchar4 tmp_data2 = (uchar4)(data2_2, data0_3, data1_3, data2_3);
uchar4 dst_data0 = *((__global uchar4*)(mat_dst + dst_index + 0));
uchar4 dst_data1 = *((__global uchar4*)(mat_dst + dst_index + 4));
uchar4 dst_data2 = *((__global uchar4*)(mat_dst + dst_index + 8));
tmp_data0.x = ((dst_index + 0  >= dst_start) && (dst_index + 0  < dst_end)) ? tmp_data0.x : dst_data0.x;
tmp_data0.y = ((dst_index + 1  >= dst_start) && (dst_index + 1  < dst_end)) ? tmp_data0.y : dst_data0.y;
tmp_data0.z = ((dst_index + 2  >= dst_start) && (dst_index + 2  < dst_end)) ? tmp_data0.z : dst_data0.z;
tmp_data0.w = ((dst_index + 3  >= dst_start) && (dst_index + 3  < dst_end)) ? tmp_data0.w : dst_data0.w;
tmp_data1.x = ((dst_index + 4  >= dst_start) && (dst_index + 4  < dst_end)) ? tmp_data1.x : dst_data1.x;
tmp_data1.y = ((dst_index + 5  >= dst_start) && (dst_index + 5  < dst_end)) ? tmp_data1.y : dst_data1.y;
tmp_data1.z = ((dst_index + 6  >= dst_start) && (dst_index + 6  < dst_end)) ? tmp_data1.z : dst_data1.z;
tmp_data1.w = ((dst_index + 7  >= dst_start) && (dst_index + 7  < dst_end)) ? tmp_data1.w : dst_data1.w;
tmp_data2.x = ((dst_index + 8  >= dst_start) && (dst_index + 8  < dst_end)) ? tmp_data2.x : dst_data2.x;
tmp_data2.y = ((dst_index + 9  >= dst_start) && (dst_index + 9  < dst_end)) ? tmp_data2.y : dst_data2.y;
tmp_data2.z = ((dst_index + 10 >= dst_start) && (dst_index + 10 < dst_end)) ? tmp_data2.z : dst_data2.z;
tmp_data2.w = ((dst_index + 11 >= dst_start) && (dst_index + 11 < dst_end)) ? tmp_data2.w : dst_data2.w;
*((__global uchar4*)(mat_dst + dst_index + 0)) = tmp_data0;
*((__global uchar4*)(mat_dst + dst_index + 4)) = tmp_data1;
*((__global uchar4*)(mat_dst + dst_index + 8)) = tmp_data2;
}
}
__kernel void merge_vector_C3_D1(__global char *mat_dst,  int dst_step,  int dst_offset,
__global char *mat_src0, int src0_step, int src0_offset,
__global char *mat_src1, int src1_step, int src1_offset,
__global char *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 2;
int src0_index = mad24(y, src0_step, x + src0_offset - offset_cols);
int src1_index = mad24(y, src1_step, x + src1_offset - offset_cols);
int src2_index = mad24(y, src2_step, x + src2_offset - offset_cols);
int dst_start = mad24(y, dst_step, dst_offset);
int dst_end   = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + 3 * x - offset_cols * 3);
char data0_0 = *(mat_src0 + src0_index + 0);
char data0_1 = *(mat_src0 + src0_index + 1);
char data0_2 = *(mat_src0 + src0_index + 2);
char data0_3 = *(mat_src0 + src0_index + 3);
char data1_0 = *(mat_src1 + src1_index + 0);
char data1_1 = *(mat_src1 + src1_index + 1);
char data1_2 = *(mat_src1 + src1_index + 2);
char data1_3 = *(mat_src1 + src1_index + 3);
char data2_0 = *(mat_src2 + src2_index + 0);
char data2_1 = *(mat_src2 + src2_index + 1);
char data2_2 = *(mat_src2 + src2_index + 2);
char data2_3 = *(mat_src2 + src2_index + 3);
char4 tmp_data0 = (char4)(data0_0, data1_0, data2_0, data0_1);
char4 tmp_data1 = (char4)(data1_1, data2_1, data0_2, data1_2);
char4 tmp_data2 = (char4)(data2_2, data0_3, data1_3, data2_3);
char4 dst_data0 = *((__global char4*)(mat_dst + dst_index + 0));
char4 dst_data1 = *((__global char4*)(mat_dst + dst_index + 4));
char4 dst_data2 = *((__global char4*)(mat_dst + dst_index + 8));
tmp_data0.x = ((dst_index + 0  >= dst_start) && (dst_index + 0  < dst_end)) ? tmp_data0.x : dst_data0.x;
tmp_data0.y = ((dst_index + 1  >= dst_start) && (dst_index + 1  < dst_end)) ? tmp_data0.y : dst_data0.y;
tmp_data0.z = ((dst_index + 2  >= dst_start) && (dst_index + 2  < dst_end)) ? tmp_data0.z : dst_data0.z;
tmp_data0.w = ((dst_index + 3  >= dst_start) && (dst_index + 3  < dst_end)) ? tmp_data0.w : dst_data0.w;
tmp_data1.x = ((dst_index + 4  >= dst_start) && (dst_index + 4  < dst_end)) ? tmp_data1.x : dst_data1.x;
tmp_data1.y = ((dst_index + 5  >= dst_start) && (dst_index + 5  < dst_end)) ? tmp_data1.y : dst_data1.y;
tmp_data1.z = ((dst_index + 6  >= dst_start) && (dst_index + 6  < dst_end)) ? tmp_data1.z : dst_data1.z;
tmp_data1.w = ((dst_index + 7  >= dst_start) && (dst_index + 7  < dst_end)) ? tmp_data1.w : dst_data1.w;
tmp_data2.x = ((dst_index + 8  >= dst_start) && (dst_index + 8  < dst_end)) ? tmp_data2.x : dst_data2.x;
tmp_data2.y = ((dst_index + 9  >= dst_start) && (dst_index + 9  < dst_end)) ? tmp_data2.y : dst_data2.y;
tmp_data2.z = ((dst_index + 10 >= dst_start) && (dst_index + 10 < dst_end)) ? tmp_data2.z : dst_data2.z;
tmp_data2.w = ((dst_index + 11 >= dst_start) && (dst_index + 11 < dst_end)) ? tmp_data2.w : dst_data2.w;
*((__global char4*)(mat_dst + dst_index + 0)) = tmp_data0;
*((__global char4*)(mat_dst + dst_index + 4)) = tmp_data1;
*((__global char4*)(mat_dst + dst_index + 8)) = tmp_data2;
}
}
__kernel void merge_vector_C3_D2(__global ushort *mat_dst,  int dst_step,  int dst_offset,
__global ushort *mat_src0, int src0_step, int src0_offset,
__global ushort *mat_src1, int src1_step, int src1_offset,
__global ushort *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 1;
int src0_index = mad24(y, src0_step, (x << 1) + src0_offset - offset_cols);
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - offset_cols);
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - offset_cols);
int dst_start = mad24(y, dst_step, dst_offset);
int dst_end   = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + 6 * x - offset_cols * 6);
ushort data0_0 = *((__global ushort *)((__global char *)mat_src0 + src0_index + 0));
ushort data0_1 = *((__global ushort *)((__global char *)mat_src0 + src0_index + 2));
ushort data1_0 = *((__global ushort *)((__global char *)mat_src1 + src1_index + 0));
ushort data1_1 = *((__global ushort *)((__global char *)mat_src1 + src1_index + 2));
ushort data2_0 = *((__global ushort *)((__global char *)mat_src2 + src2_index + 0));
ushort data2_1 = *((__global ushort *)((__global char *)mat_src2 + src2_index + 2));
ushort2 tmp_data0 = (ushort2)(data0_0, data1_0);
ushort2 tmp_data1 = (ushort2)(data2_0, data0_1);
ushort2 tmp_data2 = (ushort2)(data1_1, data2_1);
ushort2 dst_data0 = *((__global ushort2*)((__global char *)mat_dst + dst_index + 0));
ushort2 dst_data1 = *((__global ushort2*)((__global char *)mat_dst + dst_index + 4));
ushort2 dst_data2 = *((__global ushort2*)((__global char *)mat_dst + dst_index + 8));
tmp_data0.x = ((dst_index + 0  >= dst_start) && (dst_index + 0  < dst_end)) ? tmp_data0.x : dst_data0.x;
tmp_data0.y = ((dst_index + 2  >= dst_start) && (dst_index + 2  < dst_end)) ? tmp_data0.y : dst_data0.y;
tmp_data1.x = ((dst_index + 4  >= dst_start) && (dst_index + 4  < dst_end)) ? tmp_data1.x : dst_data1.x;
tmp_data1.y = ((dst_index + 6  >= dst_start) && (dst_index + 6  < dst_end)) ? tmp_data1.y : dst_data1.y;
tmp_data2.x = ((dst_index + 8  >= dst_start) && (dst_index + 8  < dst_end)) ? tmp_data2.x : dst_data2.x;
tmp_data2.y = ((dst_index + 10 >= dst_start) && (dst_index + 10 < dst_end)) ? tmp_data2.y : dst_data2.y;
*((__global ushort2*)((__global char *)mat_dst + dst_index + 0)) = tmp_data0;
*((__global ushort2*)((__global char *)mat_dst + dst_index + 4)) = tmp_data1;
*((__global ushort2*)((__global char *)mat_dst + dst_index + 8)) = tmp_data2;
}
}
__kernel void merge_vector_C3_D3(__global short *mat_dst,  int dst_step,  int dst_offset,
__global short *mat_src0, int src0_step, int src0_offset,
__global short *mat_src1, int src1_step, int src1_offset,
__global short *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
x = x << 1;
int src0_index = mad24(y, src0_step, (x << 1) + src0_offset - offset_cols);
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - offset_cols);
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - offset_cols);
int dst_start = mad24(y, dst_step, dst_offset);
int dst_end   = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index = mad24(y, dst_step, dst_offset + 6 * x - offset_cols * 6);
short data0_0 = *((__global short *)((__global char *)mat_src0 + src0_index + 0));
short data0_1 = *((__global short *)((__global char *)mat_src0 + src0_index + 2));
short data1_0 = *((__global short *)((__global char *)mat_src1 + src1_index + 0));
short data1_1 = *((__global short *)((__global char *)mat_src1 + src1_index + 2));
short data2_0 = *((__global short *)((__global char *)mat_src2 + src2_index + 0));
short data2_1 = *((__global short *)((__global char *)mat_src2 + src2_index + 2));
short2 tmp_data0 = (short2)(data0_0, data1_0);
short2 tmp_data1 = (short2)(data2_0, data0_1);
short2 tmp_data2 = (short2)(data1_1, data2_1);
short2 dst_data0 = *((__global short2*)((__global char *)mat_dst + dst_index + 0));
short2 dst_data1 = *((__global short2*)((__global char *)mat_dst + dst_index + 4));
short2 dst_data2 = *((__global short2*)((__global char *)mat_dst + dst_index + 8));
tmp_data0.x = ((dst_index + 0  >= dst_start) && (dst_index + 0  < dst_end)) ? tmp_data0.x : dst_data0.x;
tmp_data0.y = ((dst_index + 2  >= dst_start) && (dst_index + 2  < dst_end)) ? tmp_data0.y : dst_data0.y;
tmp_data1.x = ((dst_index + 4  >= dst_start) && (dst_index + 4  < dst_end)) ? tmp_data1.x : dst_data1.x;
tmp_data1.y = ((dst_index + 6  >= dst_start) && (dst_index + 6  < dst_end)) ? tmp_data1.y : dst_data1.y;
tmp_data2.x = ((dst_index + 8  >= dst_start) && (dst_index + 8  < dst_end)) ? tmp_data2.x : dst_data2.x;
tmp_data2.y = ((dst_index + 10 >= dst_start) && (dst_index + 10 < dst_end)) ? tmp_data2.y : dst_data2.y;
*((__global short2*)((__global char *)mat_dst + dst_index + 0)) = tmp_data0;
*((__global short2*)((__global char *)mat_dst + dst_index + 4)) = tmp_data1;
*((__global short2*)((__global char *)mat_dst + dst_index + 8)) = tmp_data2;
}
}
__kernel void merge_vector_C3_D4(__global int *mat_dst,  int dst_step,  int dst_offset,
__global int *mat_src0, int src0_step, int src0_offset,
__global int *mat_src1, int src1_step, int src1_offset,
__global int *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
__global int* src0 = (__global int * )((__global uchar *)mat_src0 + src0_index + (x << 2));
__global int* src1 = (__global int * )((__global uchar *)mat_src1 + src1_index + (x << 2));
__global int* src2 = (__global int * )((__global uchar *)mat_src2 + src2_index + (x << 2));
__global int* dist0 = (__global int *)((__global uchar *)mat_dst  + dst_index  + 3 * (x << 2));
__global int* dist1 = dist0 + 1;
__global int* dist2 = dist0 + 2;
int  src0_data = *src0;
int  src1_data = *src1;
int  src2_data = *src2;
*dist0 = src0_data;
*dist1 = src1_data;
*dist2 = src2_data;
}
}
__kernel void merge_vector_C3_D5(__global float *mat_dst,  int dst_step,  int dst_offset,
__global float *mat_src0, int src0_step, int src0_offset,
__global float *mat_src1, int src1_step, int src1_offset,
__global float *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
__global float* src0 = (__global float * )((__global uchar *)mat_src0 + src0_index + (x << 2));
__global float* src1 = (__global float * )((__global uchar *)mat_src1 + src1_index + (x << 2));
__global float* src2 = (__global float * )((__global uchar *)mat_src2 + src2_index + (x << 2));
__global float* dist0 = (__global float *)((__global uchar *)mat_dst  + dst_index  + 3 * (x << 2));
__global float* dist1 = dist0 + 1;
__global float* dist2 = dist0 + 2;
float  src0_data = *src0;
float  src1_data = *src1;
float  src2_data = *src2;
*dist0 = src0_data;
*dist1 = src1_data;
*dist2 = src2_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C3_D6(__global double *mat_dst,  int dst_step,  int dst_offset,
__global double *mat_src0, int src0_step, int src0_offset,
__global double *mat_src1, int src1_step, int src1_offset,
__global double *mat_src2, int src2_step, int src2_offset, int offset_cols,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
__global double* src0 = (__global double * )((__global uchar *)mat_src0 + src0_index + (x << 3));
__global double* src1 = (__global double * )((__global uchar *)mat_src1 + src1_index + (x << 3));
__global double* src2 = (__global double * )((__global uchar *)mat_src2 + src2_index + (x << 3));
__global double* dist0 = (__global double *)((__global uchar *)mat_dst  + dst_index  + 3 * (x << 3));
__global double* dist1 = dist0 + 1;
__global double* dist2 = dist0 + 2;
double  src0_data = *src0;
double  src1_data = *src1;
double  src2_data = *src2;
*dist0 = src0_data;
*dist1 = src1_data;
*dist2 = src2_data;
}
}
#endif
__kernel void merge_vector_C4_D0(__global uchar *mat_dst,  int dst_step,  int dst_offset,
__global uchar *mat_src0, int src0_step, int src0_offset,
__global uchar *mat_src1, int src1_step, int src1_offset,
__global uchar *mat_src2, int src2_step, int src2_offset,
__global uchar *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
uchar src0 = *(mat_src0 + src0_index + x );
uchar src1 = *(mat_src1 + src1_index + x);
uchar src2 = *(mat_src2 + src2_index + x);
uchar src3 = *(mat_src3 + src3_index + x);
*((__global uchar4 *)(mat_dst  + dst_index + (x << 2))) = (uchar4)(src0, src1, src2, src3);
}
}
__kernel void merge_vector_C4_D1(__global char *mat_dst,  int dst_step,  int dst_offset,
__global char *mat_src0, int src0_step, int src0_offset,
__global char *mat_src1, int src1_step, int src1_offset,
__global char *mat_src2, int src2_step, int src2_offset,
__global char *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
char src0 = *(mat_src0 + src0_index + x );
char src1 = *(mat_src1 + src1_index + x);
char src2 = *(mat_src2 + src2_index + x);
char src3 = *(mat_src3 + src3_index + x);
*((__global char4 *)(mat_dst  + dst_index + (x << 2))) = (char4)(src0, src1, src2, src3);
}
}
__kernel void merge_vector_C4_D2(__global ushort *mat_dst,  int dst_step,  int dst_offset,
__global ushort *mat_src0, int src0_step, int src0_offset,
__global ushort *mat_src1, int src1_step, int src1_offset,
__global ushort *mat_src2, int src2_step, int src2_offset,
__global ushort *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
ushort src0 = *((__global ushort *)((__global uchar *)mat_src0 + src0_index + (x << 1)));
ushort src1 = *((__global ushort *)((__global uchar *)mat_src1 + src1_index + (x << 1)));
ushort src2 = *((__global ushort *)((__global uchar *)mat_src2 + src2_index + (x << 1)));
ushort src3 = *((__global ushort *)((__global uchar *)mat_src3 + src3_index + (x << 1)));
*((__global ushort4 *)((__global uchar *)mat_dst  + dst_index + (x << 3))) = (ushort4)(src0, src1, src2, src3);
}
}
__kernel void merge_vector_C4_D3(__global short *mat_dst,  int dst_step,  int dst_offset,
__global short *mat_src0, int src0_step, int src0_offset,
__global short *mat_src1, int src1_step, int src1_offset,
__global short *mat_src2, int src2_step, int src2_offset,
__global short *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
short src0 = *((__global short *)((__global uchar *)mat_src0 + src0_index + (x << 1)));
short src1 = *((__global short *)((__global uchar *)mat_src1 + src1_index + (x << 1)));
short src2 = *((__global short *)((__global uchar *)mat_src2 + src2_index + (x << 1)));
short src3 = *((__global short *)((__global uchar *)mat_src3 + src3_index + (x << 1)));
*((__global short4 *)((__global uchar *)mat_dst  + dst_index + (x << 3))) = (short4)(src0, src1, src2, src3);
}
}
__kernel void merge_vector_C4_D4(__global int *mat_dst,  int dst_step,  int dst_offset,
__global int *mat_src0, int src0_step, int src0_offset,
__global int *mat_src1, int src1_step, int src1_offset,
__global int *mat_src2, int src2_step, int src2_offset,
__global int *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
int src0 = *((__global int *)((__global uchar *)mat_src0 + src0_index + (x << 2)));
int src1 = *((__global int *)((__global uchar *)mat_src1 + src1_index + (x << 2)));
int src2 = *((__global int *)((__global uchar *)mat_src2 + src2_index + (x << 2)));
int src3 = *((__global int *)((__global uchar *)mat_src3 + src3_index + (x << 2)));
*((__global int4 *)((__global uchar *)mat_dst  + dst_index + (x << 4))) = (int4)(src0, src1, src2, src3);
}
}
__kernel void merge_vector_C4_D5(__global float *mat_dst,  int dst_step,  int dst_offset,
__global float *mat_src0, int src0_step, int src0_offset,
__global float *mat_src1, int src1_step, int src1_offset,
__global float *mat_src2, int src2_step, int src2_offset,
__global float *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
float src0 = *((__global float *)((__global uchar *)mat_src0 + src0_index + (x << 2)));
float src1 = *((__global float *)((__global uchar *)mat_src1 + src1_index + (x << 2)));
float src2 = *((__global float *)((__global uchar *)mat_src2 + src2_index + (x << 2)));
float src3 = *((__global float *)((__global uchar *)mat_src3 + src3_index + (x << 2)));
*((__global float4 *)((__global uchar *)mat_dst  + dst_index + (x << 4))) = (float4)(src0, src1, src2, src3);
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C4_D6(__global double *mat_dst,  int dst_step,  int dst_offset,
__global double *mat_src0, int src0_step, int src0_offset,
__global double *mat_src1, int src1_step, int src1_offset,
__global double *mat_src2, int src2_step, int src2_offset,
__global double *mat_src3, int src3_step, int src3_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
int src0_index = mad24(y, src0_step, src0_offset);
int src1_index = mad24(y, src1_step, src1_offset);
int src2_index = mad24(y, src2_step, src2_offset);
int src3_index = mad24(y, src3_step, src3_offset);
int dst_index  = mad24(y, dst_step , dst_offset);
double src0 = *((__global double *)((__global uchar *)mat_src0 + src0_index + (x << 3)));
double src1 = *((__global double *)((__global uchar *)mat_src1 + src1_index + (x << 3)));
double src2 = *((__global double *)((__global uchar *)mat_src2 + src2_index + (x << 3)));
double src3 = *((__global double *)((__global uchar *)mat_src3 + src3_index + (x << 3)));
*((__global double4 *)((__global uchar *)mat_dst  + dst_index + (x << 5))) = (double4)(src0, src1, src2, src3);
}
}
#endif
__kernel void merge_vector_C2_D0_1(int rows, int cols,
__global uchar *mat_dst,  int dst_step,
__global uchar *mat_src0, int src0_step,
__global uchar *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global uchar4  *src0_y = (__global uchar4 * )(mat_src0 + y * src0_step);
__global uchar4  *src1_y = (__global uchar4 * )(mat_src1 + y * src1_step);
__global uchar8 *dst_y  = (__global uchar8 *)(mat_dst  + y * dst_step);
uchar4 value1 = src0_y[x];
uchar4 value2 = src1_y[x];
uchar8 value;
value.even = value1;
value.odd = value2;
dst_y[x] = value;
}
}
__kernel void merge_vector_C2_D1_1(int rows, int cols,
__global char *mat_dst,  int dst_step,
__global char *mat_src0, int src0_step,
__global char *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global char4  *src0_y = (__global char4 * )(mat_src0 + y * src0_step);
__global char4  *src1_y = (__global char4 * )(mat_src1 + y * src1_step);
__global char8 *dst_y  = (__global char8 *)(mat_dst  + y * dst_step);
char4 value1 = src0_y[x];
char4 value2 = src1_y[x];
char8 value;
value.even = value1;
value.odd = value2;
dst_y[x] = value;
}
}
__kernel void merge_vector_C2_D2_1(int rows, int cols,
__global ushort *mat_dst,  int dst_step,
__global ushort *mat_src0, int src0_step,
__global ushort *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global ushort2  *src0_y = (__global ushort2 *)((__global uchar *)mat_src0 + y * src0_step);
__global ushort2  *src1_y = (__global ushort2 *)((__global uchar *)mat_src1 + y * src1_step);
__global ushort4  *dst_y  = (__global ushort4 *)((__global uchar *)mat_dst  + y * dst_step);
ushort2 value1 = src0_y[x];
ushort2 value2 = src1_y[x];
ushort4 value;
value.even = value1;
value.odd = value2;
dst_y[x] = value;
}
}
__kernel void merge_vector_C2_D3_1(int rows, int cols,
__global short *mat_dst,  int dst_step,
__global short *mat_src0, int src0_step,
__global short *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global short2  *src0_y = (__global short2 *)((__global uchar *)mat_src0 + y * src0_step);
__global short2  *src1_y = (__global short2 *)((__global uchar *)mat_src1 + y * src1_step);
__global short4 *dst_y   = (__global short4 *)((__global uchar *)mat_dst  + y * dst_step);
short2 value1 = src0_y[x];
short2 value2 = src1_y[x];
short4 value;
value.even = value1;
value.odd = value2;
dst_y[x] = value;
}
}
__kernel void merge_vector_C2_D4_1(int rows, int cols,
__global int *mat_dst,  int dst_step,
__global int *mat_src0, int src0_step,
__global int *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global int  *src0_y = (__global int *)((__global uchar *)mat_src0 + y * src0_step);
__global int  *src1_y = (__global int *)((__global uchar *)mat_src1 + y * src1_step);
__global int2  *dst_y  = (__global int2 *)((__global uchar *)mat_dst  + y * dst_step);
int value1 = src0_y[x];
int value2 = src1_y[x];
int2 value;
value.even = value1;
value.odd = value2;
dst_y[x] = value;
}
}
__kernel void merge_vector_C2_D5_1(int rows, int cols,
__global float *mat_dst,  int dst_step,
__global float *mat_src0, int src0_step,
__global float *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global float  *src0_y = (__global float *)((__global uchar *)mat_src0 + y * src0_step);
__global float  *src1_y = (__global float *)((__global uchar *)mat_src1 + y * src1_step);
__global float2  *dst_y  = (__global float2 *)((__global uchar *)mat_dst  + y * dst_step);
float value1 = src0_y[x];
float value2 = src1_y[x];
dst_y[x] = (float2)(value1, value2);
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C2_D6_1(int rows, int cols,
__global double *mat_dst,  int dst_step,
__global double *mat_src0, int src0_step,
__global double *mat_src1, int src1_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global double  *src0_y = (__global double *)((__global uchar *)mat_src0 + y * src0_step);
__global double  *src1_y = (__global double *)((__global uchar *)mat_src1 + y * src1_step);
__global double2 *dst_y  = (__global double2 *)((__global uchar *)mat_dst  + y * dst_step);
double value1 = src0_y[x];
double value2 = src1_y[x];
dst_y[x] = (double2)(value1, value2);
}
}
#endif
__kernel void merge_vector_C3_D0_1(int rows, int cols,
__global uchar *mat_dst,  int dst_step,
__global uchar *mat_src0, int src0_step,
__global uchar *mat_src1, int src1_step,
__global uchar *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global uchar4  *src0_y = (__global uchar4 * )(mat_src0 + y * src0_step);
__global uchar4  *src1_y = (__global uchar4 * )(mat_src1 + y * src1_step);
__global uchar4  *src2_y = (__global uchar4 * )(mat_src2 + y * src0_step);
__global uchar4 *dst_y  = (__global uchar4 *)(mat_dst  + y * dst_step);
uchar4 value0 = src0_y[x];
uchar4 value1 = src1_y[x];
uchar4 value2 = src2_y[x];
dst_y[3 * x + 0] = (uchar4)(value0.s0, value1.s0, value2.s0,
value0.s1);
dst_y[3 * x + 1] = (uchar4)(value1.s1, value2.s1,
value0.s2, value1.s2);
dst_y[3 * x + 2] = (uchar4)(value2.s2,
value0.s3, value1.s3, value2.s3);
}
}
__kernel void merge_vector_C3_D1_1(int rows, int cols,
__global char *mat_dst,  int dst_step,
__global char *mat_src0, int src0_step,
__global char *mat_src1, int src1_step,
__global char *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global char4  *src0_y = (__global char4 * )(mat_src0 + y * src0_step);
__global char4  *src1_y = (__global char4 * )(mat_src1 + y * src1_step);
__global char4  *src2_y = (__global char4 * )(mat_src2 + y * src0_step);
__global char4 *dst_y  = (__global char4 *)(mat_dst  + y * dst_step);
char4 value0 = src0_y[x];
char4 value1 = src1_y[x];
char4 value2 = src2_y[x];
dst_y[3 * x + 0] = (char4)(value0.s0, value1.s0, value2.s0,
value0.s1);
dst_y[3 * x + 1] = (char4)(value1.s1, value2.s1,
value0.s2, value1.s2);
dst_y[3 * x + 2] = (char4)(value2.s2,
value0.s3, value1.s3, value2.s3);
}
}
__kernel void merge_vector_C3_D2_1(int rows, int cols,
__global ushort *mat_dst,  int dst_step,
__global ushort *mat_src0, int src0_step,
__global ushort *mat_src1, int src1_step,
__global ushort *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global ushort2  *src0_y = (__global ushort2 * )((__global char *)mat_src0 + y * src0_step);
__global ushort2  *src1_y = (__global ushort2 * )((__global char *)mat_src1 + y * src1_step);
__global ushort2  *src2_y = (__global ushort2 * )((__global char *)mat_src2 + y * src0_step);
__global ushort2 *dst_y  = (__global ushort2 *)((__global char *)mat_dst  + y * dst_step);
ushort2 value0 = src0_y[x];
ushort2 value1 = src1_y[x];
ushort2 value2 = src2_y[x];
dst_y[3 * x + 0] = (ushort2)(value0.x, value1.x);
dst_y[3 * x + 1] = (ushort2)(value2.x, value0.y);
dst_y[3 * x + 2] = (ushort2)(value1.y, value2.y);
}
}
__kernel void merge_vector_C3_D3_1(int rows, int cols,
__global short *mat_dst,  int dst_step,
__global short *mat_src0, int src0_step,
__global short *mat_src1, int src1_step,
__global short *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global short2  *src0_y = (__global short2 * )((__global char *)mat_src0 + y * src0_step);
__global short2  *src1_y = (__global short2 * )((__global char *)mat_src1 + y * src1_step);
__global short2  *src2_y = (__global short2 * )((__global char *)mat_src2 + y * src0_step);
__global short2 *dst_y  = (__global short2 *)((__global char *)mat_dst  + y * dst_step);
short2 value0 = src0_y[x];
short2 value1 = src1_y[x];
short2 value2 = src2_y[x];
dst_y[3 * x + 0] = (short2)(value0.x, value1.x);
dst_y[3 * x + 1] = (short2)(value2.x, value0.y);
dst_y[3 * x + 2] = (short2)(value1.y, value2.y);
}
}
__kernel void merge_vector_C3_D4_1(int rows, int cols,
__global int *mat_dst,  int dst_step,
__global int *mat_src0, int src0_step,
__global int *mat_src1, int src1_step,
__global int *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global int  *src0_y = (__global int * )((__global char *)mat_src0 + y * src0_step);
__global int  *src1_y = (__global int * )((__global char *)mat_src1 + y * src1_step);
__global int  *src2_y = (__global int * )((__global char *)mat_src2 + y * src0_step);
__global int *dst_y  = (__global int *)((__global char *)mat_dst  + y * dst_step);
int value0 = src0_y[x];
int value1 = src1_y[x];
int value2 = src2_y[x];
dst_y[3 * x + 0] = value0;
dst_y[3 * x + 1] = value1;
dst_y[3 * x + 2] = value2;
}
}
__kernel void merge_vector_C3_D5_1(int rows, int cols,
__global float *mat_dst,  int dst_step,
__global float *mat_src0, int src0_step,
__global float *mat_src1, int src1_step,
__global float *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global float  *src0_y = (__global float * )((__global char *)mat_src0 + y * src0_step);
__global float  *src1_y = (__global float * )((__global char *)mat_src1 + y * src1_step);
__global float  *src2_y = (__global float * )((__global char *)mat_src2 + y * src0_step);
__global float *dst_y  = (__global float *)((__global char *)mat_dst  + y * dst_step);
float value0 = src0_y[x];
float value1 = src1_y[x];
float value2 = src2_y[x];
dst_y[3 * x + 0] = value0;
dst_y[3 * x + 1] = value1;
dst_y[3 * x + 2] = value2;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C3_D6_1(int rows, int cols,
__global double *mat_dst,  int dst_step,
__global double *mat_src0, int src0_step,
__global double *mat_src1, int src1_step,
__global double *mat_src2, int src2_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global double  *src0_y = (__global double * )((__global char *)mat_src0 + y * src0_step);
__global double  *src1_y = (__global double * )((__global char *)mat_src1 + y * src1_step);
__global double  *src2_y = (__global double * )((__global char *)mat_src2 + y * src0_step);
__global double *dst_y  = (__global double *)((__global char *)mat_dst  + y * dst_step);
double value0 = src0_y[x];
double value1 = src1_y[x];
double value2 = src2_y[x];
dst_y[3 * x + 0] = value0;
dst_y[3 * x + 1] = value1;
dst_y[3 * x + 2] = value2;
}
}
#endif
__kernel void merge_vector_C4_D0_1(int rows, int cols,
__global uchar *mat_dst,  int dst_step,
__global uchar *mat_src0, int src0_step,
__global uchar *mat_src1, int src1_step,
__global uchar *mat_src2, int src2_step,
__global uchar *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global uchar4  *src0_y = (__global uchar4 * )(mat_src0 + y * src0_step);
__global uchar4  *src1_y = (__global uchar4 * )(mat_src1 + y * src1_step);
__global uchar4  *src2_y = (__global uchar4 * )(mat_src2 + y * src0_step);
__global uchar4  *src3_y = (__global uchar4 * )(mat_src3 + y * src1_step);
__global uchar16 *dst_y  = (__global uchar16 *)(mat_dst  + y * dst_step);
uchar4 value0 = src0_y[x];
uchar4 value1 = src1_y[x];
uchar4 value2 = src2_y[x];
uchar4 value3 = src3_y[x];
dst_y[x] = (uchar16)(value0.x, value1.x, value2.x, value3.x,
value0.y, value1.y, value2.y, value3.y,
value0.z, value1.z, value2.z, value3.z,
value0.w, value1.w, value2.w, value3.w);
}
}
__kernel void merge_vector_C4_D1_1(int rows, int cols,
__global char *mat_dst,  int dst_step,
__global char *mat_src0, int src0_step,
__global char *mat_src1, int src1_step,
__global char *mat_src2, int src2_step,
__global char *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global char4  *src0_y = (__global char4 * )(mat_src0 + y * src0_step);
__global char4  *src1_y = (__global char4 * )(mat_src1 + y * src1_step);
__global char4  *src2_y = (__global char4 * )(mat_src2 + y * src0_step);
__global char4  *src3_y = (__global char4 * )(mat_src3 + y * src1_step);
__global char16 *dst_y  = (__global char16 *)(mat_dst  + y * dst_step);
char4 value0 = src0_y[x];
char4 value1 = src1_y[x];
char4 value2 = src2_y[x];
char4 value3 = src3_y[x];
dst_y[x] = (char16)(value0.x, value1.x, value2.x, value3.x,
value0.y, value1.y, value2.y, value3.y,
value0.z, value1.z, value2.z, value3.z,
value0.w, value1.w, value2.w, value3.w);
}
}
__kernel void merge_vector_C4_D2_1(int rows, int cols,
__global ushort *mat_dst,  int dst_step,
__global ushort *mat_src0, int src0_step,
__global ushort *mat_src1, int src1_step,
__global ushort *mat_src2, int src2_step,
__global ushort *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global ushort2  *src0_y = (__global ushort2 * )((__global uchar*)mat_src0 + y * src0_step);
__global ushort2  *src1_y = (__global ushort2 * )((__global uchar*)mat_src1 + y * src1_step);
__global ushort2  *src2_y = (__global ushort2 * )((__global uchar*)mat_src2 + y * src0_step);
__global ushort2  *src3_y = (__global ushort2 * )((__global uchar*)mat_src3 + y * src1_step);
__global ushort8 *dst_y  = (__global ushort8 *)((__global uchar*)mat_dst  + y * dst_step);
ushort2 value0 = src0_y[x];
ushort2 value1 = src1_y[x];
ushort2 value2 = src2_y[x];
ushort2 value3 = src3_y[x];
dst_y[x] = (ushort8)(value0.x, value1.x, value2.x, value3.x,
value0.y, value1.y, value2.y, value3.y);
}
}
__kernel void merge_vector_C4_D3_1(int rows, int cols,
__global short *mat_dst,  int dst_step,
__global short *mat_src0, int src0_step,
__global short *mat_src1, int src1_step,
__global short *mat_src2, int src2_step,
__global short *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global short2  *src0_y = (__global short2 * )((__global uchar*)mat_src0 + y * src0_step);
__global short2  *src1_y = (__global short2 * )((__global uchar*)mat_src1 + y * src1_step);
__global short2  *src2_y = (__global short2 * )((__global uchar*)mat_src2 + y * src0_step);
__global short2  *src3_y = (__global short2 * )((__global uchar*)mat_src3 + y * src1_step);
__global short8 *dst_y  = (__global short8 *)((__global uchar*)mat_dst  + y * dst_step);
short2 value0 = src0_y[x];
short2 value1 = src1_y[x];
short2 value2 = src2_y[x];
short2 value3 = src3_y[x];
dst_y[x] = (short8)(value0.x, value1.x, value2.x, value3.x,
value0.y, value1.y, value2.y, value3.y);
}
}
__kernel void merge_vector_C4_D4_1(int rows, int cols,
__global int *mat_dst,  int dst_step,
__global int *mat_src0, int src0_step,
__global int *mat_src1, int src1_step,
__global int *mat_src2, int src2_step,
__global int *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global int *src0_y = (__global int * )((__global uchar*)mat_src0 + y * src0_step);
__global int *src1_y = (__global int * )((__global uchar*)mat_src1 + y * src1_step);
__global int *src2_y = (__global int * )((__global uchar*)mat_src2 + y * src0_step);
__global int *src3_y = (__global int * )((__global uchar*)mat_src3 + y * src1_step);
__global int4 *dst_y  = (__global int4 *)((__global uchar*)mat_dst  + y * dst_step);
int value0 = src0_y[x];
int value1 = src1_y[x];
int value2 = src2_y[x];
int value3 = src3_y[x];
dst_y[x] = (int4)(value0, value1, value2, value3);
}
}
__kernel void merge_vector_C4_D5_1(int rows, int cols,
__global float *mat_dst,  int dst_step,
__global float *mat_src0, int src0_step,
__global float *mat_src1, int src1_step,
__global float *mat_src2, int src2_step,
__global float *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global float *src0_y = (__global float * )((__global uchar*)mat_src0 + y * src0_step);
__global float *src1_y = (__global float * )((__global uchar*)mat_src1 + y * src1_step);
__global float *src2_y = (__global float * )((__global uchar*)mat_src2 + y * src0_step);
__global float *src3_y = (__global float * )((__global uchar*)mat_src3 + y * src1_step);
__global float4 *dst_y  = (__global float4 *)((__global uchar*)mat_dst  + y * dst_step);
float value0 = src0_y[x];
float value1 = src1_y[x];
float value2 = src2_y[x];
float value3 = src3_y[x];
dst_y[x] = (float4)(value0, value1, value2, value3);
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void merge_vector_C4_D6_1(int rows, int cols,
__global double *mat_dst,  int dst_step,
__global double *mat_src0, int src0_step,
__global double *mat_src1, int src1_step,
__global double *mat_src2, int src2_step,
__global double *mat_src3, int src3_step)
{
int x = get_global_id(0);
int y = get_global_id(1);
if ((x < cols) && (y < rows))
{
__global double *src0_y = (__global double * )((__global uchar*)mat_src0 + y * src0_step);
__global double *src1_y = (__global double * )((__global uchar*)mat_src1 + y * src1_step);
__global double *src2_y = (__global double * )((__global uchar*)mat_src2 + y * src0_step);
__global double *src3_y = (__global double * )((__global uchar*)mat_src3 + y * src1_step);
__global double4 *dst_y  = (__global double4 *)((__global uchar*)mat_dst  + y * dst_step);
double value0 = src0_y[x];
double value1 = src1_y[x];
double value2 = src2_y[x];
double value3 = src3_y[x];
dst_y[x] = (double4)(value0, value1, value2, value3);
}
}
#endif
short2 do_mean_shift(int x0, int y0, __global uchar4* out,int out_step,
__global uchar4* in, int in_step, int dst_off, int src_off,
int cols, int rows, int sp, int sr, int maxIter, float eps)
{
int isr2 = sr*sr;
in_step = in_step >> 2;
out_step = out_step >> 2;
src_off = src_off >> 2;
dst_off = dst_off >> 2;
int idx = src_off + y0 * in_step + x0;
uchar4 c = in[idx];
int base = dst_off + get_global_id(1)*out_step + get_global_id(0) ;
for( int iter = 0; iter < maxIter; iter++ )
{
int count = 0;
int4 s = (int4)0;
int sx = 0, sy = 0;
int minx = (x0-sp)>0 ? x0-sp : 0;
int miny = (y0-sp)>0 ? y0-sp : 0;
int maxx = (x0+sp)>= 2;
outspstep >>= 2;
int basesp = outsp_off + y0 * outspstep + x0;
outsp[basesp] = do_mean_shift(x0, y0, outr, outrstep, in, instep, outr_off, in_off, cols, rows, sp, sr, maxIter, eps);
}
}
#pragma OPENCL EXTENSION cl_amd_printf : enable
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#define TYPE_IMAGE_SQSUM double
#else
#define TYPE_IMAGE_SQSUM float
#endif
#ifndef CN4
#define CN4 1
#else
#define CN4 4
#endif
#define SQSUMS_PTR(ox, oy) mad24(gidy + oy, img_sqsums_step, (gidx + img_sqsums_offset + ox) * CN4)
#define SUMS_PTR(ox, oy) mad24(gidy + oy, img_sums_step, gidx + img_sums_offset + ox)
float normAcc(float num, float denum)
{
if(fabs(num) < denum)
{
return num / denum;
}
if(fabs(num) < denum * 1.125f)
{
return num > 0 ? 1 : -1;
}
return 0;
}
float normAcc_SQDIFF(float num, float denum)
{
if(fabs(num) < denum)
{
return num / denum;
}
if(fabs(num) < denum * 1.125f)
{
return num > 0 ? 1 : -1;
}
return 1;
}
__kernel
void normalizeKernel_C1_D0
(
__global const float * img_sqsums,
__global float * res,
ulong tpl_sqsum,
int res_rows,
int res_cols,
int tpl_rows,
int tpl_cols,
int img_sqsums_offset,
int img_sqsums_step,
int res_offset,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
img_sqsums_step /= sizeof(*img_sqsums);
img_sqsums_offset /= sizeof(*img_sqsums);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float image_sqsum_ = (float)(
(img_sqsums[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums[SQSUMS_PTR(0, tpl_rows)] - img_sqsums[SQSUMS_PTR(0, 0)]));
res[res_idx] = normAcc(res[res_idx], sqrt(image_sqsum_ * tpl_sqsum));
}
}
__kernel
void matchTemplate_Prepared_SQDIFF_C1_D0
(
__global const TYPE_IMAGE_SQSUM * img_sqsums,
__global float * res,
ulong tpl_sqsum,
int res_rows,
int res_cols,
int tpl_rows,
int tpl_cols,
int img_sqsums_offset,
int img_sqsums_step,
int res_offset,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
img_sqsums_step /= sizeof(*img_sqsums);
img_sqsums_offset /= sizeof(*img_sqsums);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float image_sqsum_ = (float)(
(img_sqsums[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums[SQSUMS_PTR(0, tpl_rows)] - img_sqsums[SQSUMS_PTR(0, 0)]));
res[res_idx] = image_sqsum_ - 2.f * res[res_idx] + tpl_sqsum;
}
}
__kernel
void matchTemplate_Prepared_SQDIFF_NORMED_C1_D0
(
__global const float * img_sqsums,
__global float * res,
ulong tpl_sqsum,
int res_rows,
int res_cols,
int tpl_rows,
int tpl_cols,
int img_sqsums_offset,
int img_sqsums_step,
int res_offset,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
img_sqsums_step /= sizeof(*img_sqsums);
img_sqsums_offset /= sizeof(*img_sqsums);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float image_sqsum_ = (float)(
(img_sqsums[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums[SQSUMS_PTR(0, tpl_rows)] - img_sqsums[SQSUMS_PTR(0, 0)]));
res[res_idx] = normAcc_SQDIFF(image_sqsum_ - 2.f * res[res_idx] + tpl_sqsum,
sqrt(image_sqsum_ * tpl_sqsum));
}
}
__kernel
void matchTemplate_Naive_SQDIFF_C1_D0
(
__global const uchar * img,
__global const uchar * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
int delta;
int sum = 0;
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const uchar * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const uchar * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
delta = img_ptr[j] - tpl_ptr[j];
sum   = mad24(delta, delta, sum);
}
}
res[res_idx] = sum;
}
}
__kernel
void matchTemplate_Naive_SQDIFF_C1_D5
(
__global const float * img,
__global const float * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
float delta;
float sum = 0;
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const float * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const float * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
delta = img_ptr[j] - tpl_ptr[j];
sum   = mad(delta, delta, sum);
}
}
res[res_idx] = sum;
}
}
__kernel
void matchTemplate_Naive_SQDIFF_C4_D0
(
__global const uchar4 * img,
__global const uchar4 * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
int4 delta;
int4 sum = (int4)(0, 0, 0, 0);
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const uchar4 * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const uchar4 * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
delta.x = img_ptr[j].x - tpl_ptr[j].x;
delta.y = img_ptr[j].y - tpl_ptr[j].y;
delta.z = img_ptr[j].z - tpl_ptr[j].z;
delta.w = img_ptr[j].w - tpl_ptr[j].w;
sum   = mad24(delta, delta, sum);
}
}
res[res_idx] = sum.x + sum.y + sum.z + sum.w;
}
}
__kernel
void matchTemplate_Naive_SQDIFF_C4_D5
(
__global const float4 * img,
__global const float4 * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
float4 delta;
float4 sum = (float4)(0, 0, 0, 0);
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const float4 * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const float4 * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
delta.x = img_ptr[j].x - tpl_ptr[j].x;
delta.y = img_ptr[j].y - tpl_ptr[j].y;
delta.z = img_ptr[j].z - tpl_ptr[j].z;
delta.w = img_ptr[j].w - tpl_ptr[j].w;
sum   = mad(delta, delta, sum);
}
}
res[res_idx] = sum.x + sum.y + sum.z + sum.w;
}
}
__kernel
void matchTemplate_Naive_CCORR_C1_D0
(
__global const uchar * img,
__global const uchar * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
int sum = 0;
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const uchar * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const uchar * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
sum = mad24(convert_int(img_ptr[j]), convert_int(tpl_ptr[j]), sum);
}
}
res[res_idx] = (float)sum;
}
}
__kernel
void matchTemplate_Naive_CCORR_C1_D5
(
__global const float * img,
__global const float * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
float sum = 0;
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const float * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const float * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
sum = mad(img_ptr[j], tpl_ptr[j], sum);
}
}
res[res_idx] = sum;
}
}
__kernel
void matchTemplate_Naive_CCORR_C4_D0
(
__global const uchar4 * img,
__global const uchar4 * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
int4 sum = (int4)(0, 0, 0, 0);
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const uchar4 * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const uchar4 * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
sum   = mad24(convert_int4(img_ptr[j]), convert_int4(tpl_ptr[j]), sum);
}
}
res[res_idx] = (float)(sum.x + sum.y + sum.z + sum.w);
}
}
__kernel
void matchTemplate_Naive_CCORR_C4_D5
(
__global const float4 * img,
__global const float4 * tpl,
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int img_offset,
int tpl_offset,
int res_offset,
int img_step,
int tpl_step,
int res_step
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int i,j;
float4 sum = (float4)(0, 0, 0, 0);
img_step   /= sizeof(*img);
img_offset /= sizeof(*img);
tpl_step   /= sizeof(*tpl);
tpl_offset /= sizeof(*tpl);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
for(i = 0; i < tpl_rows; i ++)
{
__global const float4 * img_ptr = img + mad24(gidy + i, img_step, gidx + img_offset);
__global const float4 * tpl_ptr = tpl + mad24(i, tpl_step, tpl_offset);
for(j = 0; j < tpl_cols; j ++)
{
sum = mad(convert_float4(img_ptr[j]), convert_float4(tpl_ptr[j]), sum);
}
}
res[res_idx] = sum.x + sum.y + sum.z + sum.w;
}
}
__kernel
void matchTemplate_Prepared_CCOFF_C1_D0
(
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int res_offset,
int res_step,
__global const uint * img_sums,
int img_sums_offset,
int img_sums_step,
float tpl_sum
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
img_sums_offset   /= sizeof(*img_sums);
img_sums_step     /= sizeof(*img_sums);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float sum = (float)((img_sums[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums[SUMS_PTR(tpl_cols, 0)])
-(img_sums[SUMS_PTR(0, tpl_rows)] - img_sums[SUMS_PTR(0, 0)]));
res[res_idx] -= sum * tpl_sum;
}
}
__kernel
void matchTemplate_Prepared_CCOFF_C4_D0
(
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int res_offset,
int res_step,
__global const uint * img_sums_c0,
__global const uint * img_sums_c1,
__global const uint * img_sums_c2,
__global const uint * img_sums_c3,
int img_sums_offset,
int img_sums_step,
float tpl_sum_c0,
float tpl_sum_c1,
float tpl_sum_c2,
float tpl_sum_c3
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
img_sums_offset   /= sizeof(*img_sums_c0);
img_sums_step     /= sizeof(*img_sums_c0);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float ccorr = res[res_idx];
ccorr -= tpl_sum_c0*(float)(
(img_sums_c0[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c0[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c0[SUMS_PTR(0, tpl_rows)] - img_sums_c0[SUMS_PTR(0, 0)]));
ccorr -= tpl_sum_c1*(float)(
(img_sums_c1[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c1[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c1[SUMS_PTR(0, tpl_rows)] - img_sums_c1[SUMS_PTR(0, 0)]));
ccorr -= tpl_sum_c2*(float)(
(img_sums_c2[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c2[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c2[SUMS_PTR(0, tpl_rows)] - img_sums_c2[SUMS_PTR(0, 0)]));
ccorr -= tpl_sum_c3*(float)(
(img_sums_c3[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c3[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c3[SUMS_PTR(0, tpl_rows)] - img_sums_c3[SUMS_PTR(0, 0)]));
res[res_idx] = ccorr;
}
}
__kernel
void matchTemplate_Prepared_CCOFF_NORMED_C1_D0
(
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int res_offset,
int res_step,
float weight,
__global const uint * img_sums,
int img_sums_offset,
int img_sums_step,
__global const float * img_sqsums,
int img_sqsums_offset,
int img_sqsums_step,
float tpl_sum,
float tpl_sqsum
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
img_sqsums_step   /= sizeof(*img_sqsums);
img_sqsums_offset /= sizeof(*img_sqsums);
img_sums_offset   /= sizeof(*img_sums);
img_sums_step     /= sizeof(*img_sums);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float image_sum_ =  (float)(
(img_sums[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums[SUMS_PTR(tpl_cols, 0)])
- (img_sums[SUMS_PTR(0, tpl_rows)] - img_sums[SUMS_PTR(0, 0)]));
float image_sqsum_ = (float)(
(img_sqsums[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums[SQSUMS_PTR(0, tpl_rows)] - img_sqsums[SQSUMS_PTR(0, 0)]));
res[res_idx] = normAcc(res[res_idx] - image_sum_ * tpl_sum,
sqrt(tpl_sqsum * (image_sqsum_ - weight * image_sum_ * image_sum_)));
}
}
__kernel
void matchTemplate_Prepared_CCOFF_NORMED_C4_D0
(
__global float * res,
int img_rows,
int img_cols,
int tpl_rows,
int tpl_cols,
int res_rows,
int res_cols,
int res_offset,
int res_step,
float weight,
__global const uint * img_sums_c0,
__global const uint * img_sums_c1,
__global const uint * img_sums_c2,
__global const uint * img_sums_c3,
int img_sums_offset,
int img_sums_step,
__global const float * img_sqsums_c0,
__global const float * img_sqsums_c1,
__global const float * img_sqsums_c2,
__global const float * img_sqsums_c3,
int img_sqsums_offset,
int img_sqsums_step,
float tpl_sum_c0,
float tpl_sum_c1,
float tpl_sum_c2,
float tpl_sum_c3,
float tpl_sqsum
)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
img_sqsums_step   /= sizeof(*img_sqsums_c0);
img_sqsums_offset /= sizeof(*img_sqsums_c0);
img_sums_offset   /= sizeof(*img_sums_c0);
img_sums_step     /= sizeof(*img_sums_c0);
res_step   /= sizeof(*res);
res_offset /= sizeof(*res);
int res_idx = mad24(gidy, res_step, res_offset + gidx);
if(gidx < res_cols && gidy < res_rows)
{
float image_sum_c0 =  (float)(
(img_sums_c0[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c0[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c0[SUMS_PTR(0, tpl_rows)] - img_sums_c0[SUMS_PTR(0, 0)]));
float image_sum_c1 =  (float)(
(img_sums_c1[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c1[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c1[SUMS_PTR(0, tpl_rows)] - img_sums_c1[SUMS_PTR(0, 0)]));
float image_sum_c2 =  (float)(
(img_sums_c2[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c2[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c2[SUMS_PTR(0, tpl_rows)] - img_sums_c2[SUMS_PTR(0, 0)]));
float image_sum_c3 =  (float)(
(img_sums_c3[SUMS_PTR(tpl_cols, tpl_rows)] - img_sums_c3[SUMS_PTR(tpl_cols, 0)])
- (img_sums_c3[SUMS_PTR(0, tpl_rows)] - img_sums_c3[SUMS_PTR(0, 0)]));
float image_sqsum_c0 = (float)(
(img_sqsums_c0[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums_c0[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums_c0[SQSUMS_PTR(0, tpl_rows)] - img_sqsums_c0[SQSUMS_PTR(0, 0)]));
float image_sqsum_c1 = (float)(
(img_sqsums_c1[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums_c1[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums_c1[SQSUMS_PTR(0, tpl_rows)] - img_sqsums_c1[SQSUMS_PTR(0, 0)]));
float image_sqsum_c2 = (float)(
(img_sqsums_c2[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums_c2[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums_c2[SQSUMS_PTR(0, tpl_rows)] - img_sqsums_c2[SQSUMS_PTR(0, 0)]));
float image_sqsum_c3 = (float)(
(img_sqsums_c3[SQSUMS_PTR(tpl_cols, tpl_rows)] - img_sqsums_c3[SQSUMS_PTR(tpl_cols, 0)]) -
(img_sqsums_c3[SQSUMS_PTR(0, tpl_rows)] - img_sqsums_c3[SQSUMS_PTR(0, 0)]));
float num = res[res_idx] -
image_sum_c0 * tpl_sum_c0 -
image_sum_c1 * tpl_sum_c1 -
image_sum_c2 * tpl_sum_c2 -
image_sum_c3 * tpl_sum_c3;
float denum = sqrt( tpl_sqsum * (
image_sqsum_c0 - weight * image_sum_c0 * image_sum_c0 +
image_sqsum_c1 - weight * image_sum_c1 * image_sum_c1 +
image_sqsum_c2 - weight * image_sum_c2 * image_sum_c2 +
image_sqsum_c3 - weight * image_sum_c0 * image_sum_c3)
);
res[res_idx] = normAcc(num, denum);
}
}
__kernel
void extractFirstChannel
(
const __global float4* img,
__global float* res,
int rows,
int cols,
int img_offset,
int res_offset,
int img_step,
int res_step
)
{
img_step   /= sizeof(float4);
res_step   /= sizeof(float);
img_offset /= sizeof(float4);
res_offset /= sizeof(float);
img += img_offset;
res += res_offset;
int gidx = get_global_id(0);
int gidy = get_global_id(1);
if(gidx < cols && gidy < rows)
{
res[gidx + gidy * res_step] = img[gidx + gidy * img_step].x;
}
}
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
__constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_LINEAR;
inline void atomic_addf(volatile __global float *source, const float operand) {
union {
unsigned int intVal;
float floatVal;
} newVal;
union {
unsigned int intVal;
float floatVal;
} prevVal;
do {
prevVal.floatVal = *source;
newVal.floatVal = prevVal.floatVal + operand;
} while (atomic_cmpxchg((volatile __global unsigned int *)source, prevVal.intVal, newVal.intVal) != prevVal.intVal);
}
__kernel void memsetKernel(
float val,
__global float * image,
int width,
int height,
int step,
int offset
)
{
if(get_global_id(0) >= width || get_global_id(1) >= height)
{
return;
}
image += offset;
image[get_global_id(0) + get_global_id(1) * step] = val;
}
__kernel void normalizeKernel(
__global float * buffer,
int width,
int height,
int step,
int f_offset,
int d_offset
)
{
__global float * factors = buffer + f_offset;
__global float * dst     = buffer + d_offset;
int j = get_global_id(0);
int i = get_global_id(1);
if(j >= width || i >= height)
{
return;
}
float scale = factors[step * i + j];
float invScale = (scale == 0.0f) ? 1.0f : (1.0f / scale);
dst[step * i + j] *= invScale;
}
__kernel void forwardWarpKernel(
__global const float * src,
__global float * buffer,
__global const float * u,
__global const float * v,
const int w,
const int h,
const int flow_stride,
const int image_stride,
const int factor_offset,
const int dst_offset,
const float time_scale
)
{
int j = get_global_id(0);
int i = get_global_id(1);
if (i >= h || j >= w) return;
volatile __global float * normalization_factor = (volatile __global float *) buffer + factor_offset;
volatile __global float * dst = (volatile __global float *)buffer + dst_offset;
int flow_row_offset  = i * flow_stride;
int image_row_offset = i * image_stride;
float cx = u[flow_row_offset + j] * time_scale + (float)j + 1.0f;
float cy = v[flow_row_offset + j] * time_scale + (float)i + 1.0f;
float px;
float py;
float dx = modf(cx, &px);
float dy = modf(cy, &py);
int tx;
int ty;
tx = (int) px;
ty = (int) py;
float value = src[image_row_offset + j];
float weight;
if (!((tx >= w) || (tx < 0) || (ty >= h) || (ty < 0)))
{
weight = dx * dy;
atomic_addf(dst + ty * image_stride + tx, value * weight);
atomic_addf(normalization_factor + ty * image_stride + tx, weight);
}
tx -= 1;
if (!((tx >= w) || (tx < 0) || (ty >= h) || (ty < 0)))
{
weight = (1.0f - dx) * dy;
atomic_addf(dst + ty * image_stride + tx, value * weight);
atomic_addf(normalization_factor + ty * image_stride + tx, weight);
}
ty -= 1;
if (!((tx >= w) || (tx < 0) || (ty >= h) || (ty < 0)))
{
weight = (1.0f - dx) * (1.0f - dy);
atomic_addf(dst + ty * image_stride + tx, value * weight);
atomic_addf(normalization_factor + ty * image_stride + tx, weight);
}
tx += 1;
if (!((tx >= w) || (tx < 0) || (ty >= h) || (ty < 0)))
{
weight = dx * (1.0f - dy);
atomic_addf(dst + ty * image_stride + tx, value * weight);
atomic_addf(normalization_factor + ty * image_stride + tx, weight);
}
}
enum
{
O0_OS = 0,
O1_OS,
U_OS,
V_OS,
UR_OS,
VR_OS
};
__kernel void blendFramesKernel(
image2d_t tex_src0,
image2d_t tex_src1,
__global float * buffer,
__global float * out,
int w,
int h,
int step,
float theta
)
{
__global float * u  = buffer + h * step * U_OS;
__global float * v  = buffer + h * step * V_OS;
__global float * ur = buffer + h * step * UR_OS;
__global float * vr = buffer + h * step * VR_OS;
__global float * o0 = buffer + h * step * O0_OS;
__global float * o1 = buffer + h * step * O1_OS;
int ix = get_global_id(0);
int iy = get_global_id(1);
if(ix >= w || iy >= h) return;
int pos = ix + step * iy;
float _u  = u[pos];
float _v  = v[pos];
float _ur = ur[pos];
float _vr = vr[pos];
float x = (float)ix + 0.5f;
float y = (float)iy + 0.5f;
bool b0 = o0[pos] > 1e-4f;
bool b1 = o1[pos] > 1e-4f;
float2 coord0 = (float2)(x - _u * theta, y - _v * theta);
float2 coord1 = (float2)(x + _u * (1.0f - theta), y + _v * (1.0f - theta));
if (b0 && b1)
{
out[pos] = read_imagef(tex_src0, sampler, coord0).x * (1.0f - theta) +
read_imagef(tex_src1, sampler, coord1).x * theta;
}
else if (b0)
{
out[pos] = read_imagef(tex_src0, sampler, coord0).x;
}
else
{
out[pos] = read_imagef(tex_src1, sampler, coord1).x;
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
typedef double F;
typedef double4 F4;
#define convert_F4 convert_double4
#else
typedef float F;
typedef float4 F4;
#define convert_F4 convert_float4
#endif
#define INTER_BITS 5
#define INTER_TAB_SIZE (1 << INTER_BITS)
#define INTER_SCALE 1.f/INTER_TAB_SIZE
#define AB_BITS max(10, (int)INTER_BITS)
#define AB_SCALE (1 << AB_BITS)
#define INTER_REMAP_COEF_BITS 15
#define INTER_REMAP_COEF_SCALE (1 << INTER_REMAP_COEF_BITS)
inline void interpolateCubic( float x, float* coeffs )
{
const float A = -0.75f;
coeffs[0] = ((A*(x + 1.f) - 5.0f*A)*(x + 1.f) + 8.0f*A)*(x + 1.f) - 4.0f*A;
coeffs[1] = ((A + 2.f)*x - (A + 3.f))*x*x + 1.f;
coeffs[2] = ((A + 2.f)*(1.f - x) - (A + 3.f))*(1.f - x)*(1.f - x) + 1.f;
coeffs[3] = 1.f - coeffs[0] - coeffs[1] - coeffs[2];
}
__kernel void warpPerspectiveNN_C1_D0(__global uchar const * restrict src, __global uchar * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
dx = (dx<<2) - (dst_offset&3);
F4 DX = (F4)(dx, dx+1, dx+2, dx+3);
F4 X0 = M[0]*DX + M[1]*dy + M[2];
F4 Y0 = M[3]*DX + M[4]*dy + M[5];
F4 W = M[6]*DX + M[7]*dy + M[8],one=1,zero=0;
W = (W!=zero) ? one/W : zero;
short4 X = convert_short4(rint(X0*W));
short4 Y = convert_short4(rint(Y0*W));
int4 sx = convert_int4(X);
int4 sy = convert_int4(Y);
int4 DXD = (int4)(dx, dx+1, dx+2, dx+3);
__global uchar4 * d = (__global uchar4 *)(dst+dst_offset+dy*dstStep+dx);
uchar4 dval = *d;
int4 dcon = DXD >= 0 && DXD < dst_cols && dy >= 0 && dy < dst_rows;
int4 scon = sx >= 0 && sx < src_cols && sy >= 0 && sy < src_rows;
int4 spos = src_offset + sy * srcStep + sx;
uchar4 sval;
sval.s0 = scon.s0 ? src[spos.s0] : 0;
sval.s1 = scon.s1 ? src[spos.s1] : 0;
sval.s2 = scon.s2 ? src[spos.s2] : 0;
sval.s3 = scon.s3 ? src[spos.s3] : 0;
dval = convert_uchar4(dcon) != (uchar4)(0,0,0,0) ? sval : dval;  
*d = dval;
}
}
__kernel void warpPerspectiveLinear_C1_D0(__global const uchar * restrict src, __global uchar * dst,
int src_cols, int src_rows, int dst_cols, int dst_rows, int srcStep,
int dstStep, int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
int sx = (short)(X >> INTER_BITS);
int sy = (short)(Y >> INTER_BITS);
int ay = (short)(Y & (INTER_TAB_SIZE-1));
int ax = (short)(X & (INTER_TAB_SIZE-1));
uchar v[4];
int i;
#pragma unroll 4
for(i=0; i<4;  i++)
v[i] = (sx+(i&1) >= 0 && sx+(i&1) < src_cols && sy+(i>>1) >= 0 && sy+(i>>1) < src_rows) ? src[src_offset + (sy+(i>>1)) * srcStep + (sx+(i&1))] : (uchar)0;
short itab[4];
float tab1y[2], tab1x[2];
tab1y[0] = 1.0 - 1.f/INTER_TAB_SIZE*ay;
tab1y[1] = 1.f/INTER_TAB_SIZE*ay;
tab1x[0] = 1.0 - 1.f/INTER_TAB_SIZE*ax;
tab1x[1] = 1.f/INTER_TAB_SIZE*ax;
#pragma unroll 4
for(i=0; i<4;  i++)
{
float v = tab1y[(i>>1)] * tab1x[(i&1)];
itab[i] = convert_short_sat(rint( v * INTER_REMAP_COEF_SCALE ));
}
if(dx >=0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
int sum = 0;
for ( i =0; i<4; i++ )
{
sum += v[i] * itab[i] ;
}
dst[dst_offset+dy*dstStep+dx] = convert_uchar_sat ( (sum + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
}
__kernel void warpPerspectiveCubic_C1_D0(__global uchar * src, __global uchar * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS) - 1;
short sy = (short)(Y >> INTER_BITS) - 1;
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
uchar v[16];
int i, j;
#pragma unroll 4
for(i=0; i<4;  i++)
for(j=0; j<4;  j++)
{
v[i*4+j] = (sx+j >= 0 && sx+j < src_cols && sy+i >= 0 && sy+i < src_rows) ? src[src_offset+(sy+i) * srcStep + (sx+j)] : (uchar)0;
}
short itab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
int isum = 0;
#pragma unroll 16
for( i=0; i<16; i++ )
{
F v = tab1y[(i>>2)] * tab1x[(i&3)];
isum += itab[i] = convert_short_sat( rint( v * INTER_REMAP_COEF_SCALE ) );
}
if( isum != INTER_REMAP_COEF_SCALE )
{
int k1, k2;
int diff = isum - INTER_REMAP_COEF_SCALE;
int Mk1=2, Mk2=2, mk1=2, mk2=2;
for( k1 = 2; k1 < 4; k1++ )
for( k2 = 2; k2 < 4; k2++ )
{
if( itab[(k1<<2)+k2] < itab[(mk1<<2)+mk2] )
mk1 = k1, mk2 = k2;
else if( itab[(k1<<2)+k2] > itab[(Mk1<<2)+Mk2] )
Mk1 = k1, Mk2 = k2;
}
diff<0 ? (itab[(Mk1<<2)+Mk2]=(short)(itab[(Mk1<<2)+Mk2]-diff)) : (itab[(mk1<<2)+mk2]=(short)(itab[(mk1<<2)+mk2]-diff));
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
int sum=0;
for ( i =0; i<16; i++ )
{
sum += v[i] * itab[i] ;
}
dst[dst_offset+dy*dstStep+dx] = convert_uchar_sat( (sum + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
}
__kernel void warpPerspectiveNN_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst,
int src_cols, int src_rows, int dst_cols, int dst_rows, int srcStep,
int dstStep, int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? 1./W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)X;
short sy = (short)Y;
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*(dstStep>>2)+dx]= (sx>=0 && sx=0 && sy>2)+sy*(srcStep>>2)+sx] : (uchar4)0;
}
}
__kernel void warpPerspectiveLinear_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst,
int src_cols, int src_rows, int dst_cols, int dst_rows, int srcStep,
int dstStep, int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
src_offset = (src_offset>>2);
srcStep = (srcStep>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS);
short sy = (short)(Y >> INTER_BITS);
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
int4 v0, v1, v2, v3;
v0 = (sx >= 0 && sx < src_cols && sy >= 0 && sy < src_rows) ? convert_int4(src[src_offset+sy * srcStep + sx]) : (int4)0;
v1 = (sx+1 >= 0 && sx+1 < src_cols && sy >= 0 && sy < src_rows) ? convert_int4(src[src_offset+sy * srcStep + sx+1]) : (int4)0;
v2 = (sx >= 0 && sx < src_cols && sy+1 >= 0 && sy+1 < src_rows) ? convert_int4(src[src_offset+(sy+1) * srcStep + sx]) : (int4)0;
v3 = (sx+1 >= 0 && sx+1 < src_cols && sy+1 >= 0 && sy+1 < src_rows) ? convert_int4(src[src_offset+(sy+1) * srcStep + sx+1]) : (int4)0;
int itab0, itab1, itab2, itab3;
float taby, tabx;
taby = 1.f/INTER_TAB_SIZE*ay;
tabx = 1.f/INTER_TAB_SIZE*ax;
itab0 = convert_short_sat(rint( (1.0f-taby)*(1.0f-tabx) * INTER_REMAP_COEF_SCALE ));
itab1 = convert_short_sat(rint( (1.0f-taby)*tabx * INTER_REMAP_COEF_SCALE ));
itab2 = convert_short_sat(rint( taby*(1.0f-tabx) * INTER_REMAP_COEF_SCALE ));
itab3 = convert_short_sat(rint( taby*tabx * INTER_REMAP_COEF_SCALE ));
int4 val;
val = v0 * itab0 +  v1 * itab1 + v2 * itab2 + v3 * itab3;
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*(dstStep>>2)+dx] =  convert_uchar4_sat ( (val + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
__kernel void warpPerspectiveCubic_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst,
int src_cols, int src_rows, int dst_cols, int dst_rows, int srcStep,
int dstStep, int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
src_offset = (src_offset>>2);
srcStep = (srcStep>>2);
dst_offset = (dst_offset>>2);
dstStep = (dstStep>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS) - 1;
short sy = (short)(Y >> INTER_BITS) - 1;
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
uchar4 v[16];
int i,j;
#pragma unroll 4
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
v[i*4+j] = (sx+j >= 0 && sx+j < src_cols && sy+i >= 0 && sy+i < src_rows) ? (src[src_offset+(sy+i) * srcStep + (sx+j)])  : (uchar4)0;
}
int itab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = INTER_SCALE * ay;
axx = INTER_SCALE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
int isum = 0;
#pragma unroll 16
for( i=0; i<16; i++ )
{
float tmp;
tmp = tab1y[(i>>2)] * tab1x[(i&3)] * INTER_REMAP_COEF_SCALE;
itab[i] = rint(tmp);
isum += itab[i];
}
if( isum != INTER_REMAP_COEF_SCALE )
{
int k1, k2;
int diff = isum - INTER_REMAP_COEF_SCALE;
int Mk1=2, Mk2=2, mk1=2, mk2=2;
for( k1 = 2; k1 < 4; k1++ )
for( k2 = 2; k2 < 4; k2++ )
{
if( itab[(k1<<2)+k2] < itab[(mk1<<2)+mk2] )
mk1 = k1, mk2 = k2;
else if( itab[(k1<<2)+k2] > itab[(Mk1<<2)+Mk2] )
Mk1 = k1, Mk2 = k2;
}
diff<0 ? (itab[(Mk1<<2)+Mk2]=(short)(itab[(Mk1<<2)+Mk2]-diff)) : (itab[(mk1<<2)+mk2]=(short)(itab[(mk1<<2)+mk2]-diff));
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
int4 sum=0;
for ( i =0; i<16; i++ )
{
sum += convert_int4(v[i]) * itab[i];
}
dst[dst_offset+dy*dstStep+dx] = convert_uchar4_sat( (sum + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
}
__kernel void warpPerspectiveNN_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? 1./W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)X;
short sy = (short)Y;
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*dstStep+dx]= (sx>=0 && sx=0 && sy>2)+sy*srcStep+sx] : 0;
}
}
__kernel void warpPerspectiveLinear_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
src_offset = (src_offset>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS);
short sy = (short)(Y >> INTER_BITS);
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
float v0, v1, v2, v3;
v0 = (sx >= 0 && sx < src_cols && sy >= 0 && sy < src_rows) ? src[src_offset+sy * srcStep + sx] : (float)0;
v1 = (sx+1 >= 0 && sx+1 < src_cols && sy >= 0 && sy < src_rows) ? src[src_offset+sy * srcStep + sx+1] : (float)0;
v2 = (sx >= 0 && sx < src_cols && sy+1 >= 0 && sy+1 < src_rows) ? src[src_offset+(sy+1) * srcStep + sx] : (float)0;
v3 = (sx+1 >= 0 && sx+1 < src_cols && sy+1 >= 0 && sy+1 < src_rows) ? src[src_offset+(sy+1) * srcStep + sx+1] : (float)0;
float tab[4];
float taby[2], tabx[2];
taby[0] = 1.0 - 1.f/INTER_TAB_SIZE*ay;
taby[1] = 1.f/INTER_TAB_SIZE*ay;
tabx[0] = 1.0 - 1.f/INTER_TAB_SIZE*ax;
tabx[1] = 1.f/INTER_TAB_SIZE*ax;
tab[0] = taby[0] * tabx[0];
tab[1] = taby[0] * tabx[1];
tab[2] = taby[1] * tabx[0];
tab[3] = taby[1] * tabx[1];
float sum = 0;
sum += v0 * tab[0] +  v1 * tab[1] +  v2 * tab[2] +  v3 * tab[3];
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*dstStep+dx] = sum;
}
}
__kernel void warpPerspectiveCubic_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
src_offset = (src_offset>>2);
dst_offset = (dst_offset>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS) - 1;
short sy = (short)(Y >> INTER_BITS) - 1;
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
float v[16];
int i;
for(i=0; i<16;  i++)
v[i] = (sx+(i&3) >= 0 && sx+(i&3) < src_cols && sy+(i>>2) >= 0 && sy+(i>>2) < src_rows) ? src[src_offset+(sy+(i>>2)) * srcStep + (sx+(i&3))] : (float)0;
float tab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
#pragma unroll 4
for( i=0; i<16; i++ )
{
tab[i] = tab1y[(i>>2)] * tab1x[(i&3)];
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
float sum = 0;
#pragma unroll 4
for ( i =0; i<16; i++ )
{
sum += v[i] * tab[i];
}
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
}
__kernel void warpPerspectiveNN_C4_D5(__global float4 * src, __global float4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W =(W != 0.0)? 1./W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)X;
short sy = (short)Y;
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>4)+dy*(dstStep>>2)+dx]= (sx>=0 && sx=0 && sy>4)+sy*(srcStep>>2)+sx] : (float)0;
}
}
__kernel void warpPerspectiveLinear_C4_D5(__global float4 * src, __global float4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
src_offset = (src_offset>>4);
dst_offset = (dst_offset>>4);
srcStep = (srcStep>>2);
dstStep = (dstStep>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx0 = (short)(X >> INTER_BITS);
short sy0 = (short)(Y >> INTER_BITS);
short ay0 = (short)(Y & (INTER_TAB_SIZE-1));
short ax0 = (short)(X & (INTER_TAB_SIZE-1));
float4 v0, v1, v2, v3;
v0 = (sx0 >= 0 && sx0 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0] : (float4)0;
v1 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0+1] : (float4)0;
v2 = (sx0 >= 0 && sx0 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0] : (float4)0;
v3 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0+1] : (float4)0;
float tab[4];
float taby[2], tabx[2];
taby[0] = 1.0 - 1.f/INTER_TAB_SIZE*ay0;
taby[1] = 1.f/INTER_TAB_SIZE*ay0;
tabx[0] = 1.0 - 1.f/INTER_TAB_SIZE*ax0;
tabx[1] = 1.f/INTER_TAB_SIZE*ax0;
tab[0] = taby[0] * tabx[0];
tab[1] = taby[0] * tabx[1];
tab[2] = taby[1] * tabx[0];
tab[3] = taby[1] * tabx[1];
float4 sum = 0;
sum += v0 * tab[0] +  v1 * tab[1] +  v2 * tab[2] +  v3 * tab[3];
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
__kernel void warpPerspectiveCubic_C4_D5(__global float4 * src, __global float4 * dst,
int src_cols, int src_rows, int dst_cols, int dst_rows, int srcStep,
int dstStep, int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows )
{
src_offset = (src_offset>>4);
dst_offset = (dst_offset>>4);
srcStep = (srcStep>>2);
dstStep = (dstStep>>2);
F X0 = M[0]*dx + M[1]*dy + M[2];
F Y0 = M[3]*dx + M[4]*dy + M[5];
F W = M[6]*dx + M[7]*dy + M[8];
W = (W != 0.0) ? INTER_TAB_SIZE/W : 0.0;
int X = rint(X0*W);
int Y = rint(Y0*W);
short sx = (short)(X >> INTER_BITS)-1;
short sy = (short)(Y >> INTER_BITS)-1;
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
float4 v[16];
int i;
for(i=0; i<16;  i++)
v[i] = (sx+(i&3) >= 0 && sx+(i&3) < src_cols && sy+(i>>2) >= 0 && sy+(i>>2) < src_rows) ? src[src_offset+(sy+(i>>2)) * srcStep + (sx+(i&3))] : (float4)0;
float tab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
#pragma unroll 4
for( i=0; i<16; i++ )
{
tab[i] = tab1y[(i>>2)] * tab1x[(i&3)];
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
float4 sum = 0;
#pragma unroll 4
for ( i =0; i<16; i++ )
{
sum += v[i] * tab[i];
}
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
typedef double F;
typedef double4 F4;
#define convert_F4 convert_double4
#else
typedef float F;
typedef float4 F4;
#define convert_F4 convert_float4
#endif
#define INTER_BITS 5
#define INTER_TAB_SIZE (1 << INTER_BITS)
#define INTER_SCALE 1.f/INTER_TAB_SIZE
#define AB_BITS max(10, (int)INTER_BITS)
#define AB_SCALE (1 << AB_BITS)
#define INTER_REMAP_COEF_BITS 15
#define INTER_REMAP_COEF_SCALE (1 << INTER_REMAP_COEF_BITS)
inline void interpolateCubic( float x, float* coeffs )
{
const float A = -0.75f;
coeffs[0] = ((A*(x + 1.f) - 5.0f*A)*(x + 1.f) + 8.0f*A)*(x + 1.f) - 4.0f*A;
coeffs[1] = ((A + 2.f)*x - (A + 3.f))*x*x + 1.f;
coeffs[2] = ((A + 2.f)*(1.f - x) - (A + 3.f))*(1.f - x)*(1.f - x) + 1.f;
coeffs[3] = 1.f - coeffs[0] - coeffs[1] - coeffs[2];
}
__kernel void warpAffineNN_C1_D0(__global uchar const * restrict src, __global uchar * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
dx = (dx<<2) - (dst_offset&3);
int round_delta = (AB_SCALE>>1);
int4 X, Y;
int4 sx, sy;
int4 DX = (int4)(dx, dx+1, dx+2, dx+3);
DX = (DX << AB_BITS);
F4 M0DX, M3DX;
M0DX = M[0] * convert_F4(DX);
M3DX = M[3] * convert_F4(DX);
X = convert_int4(rint(M0DX));
Y = convert_int4(rint(M3DX));
int tmp1, tmp2;
tmp1 = rint((M[1]*dy + M[2]) * AB_SCALE);
tmp2 = rint((M[4]*dy + M[5]) * AB_SCALE);
X += tmp1 + round_delta;
Y += tmp2 + round_delta;
sx = convert_int4(convert_short4(X >> AB_BITS));
sy = convert_int4(convert_short4(Y >> AB_BITS));
__global uchar4 * d = (__global uchar4 *)(dst+dst_offset+dy*dstStep+dx);
uchar4 dval = *d;
DX = (int4)(dx, dx+1, dx+2, dx+3);
int4 dcon = DX >= 0 && DX < dst_cols && dy >= 0 && dy < dst_rows;
int4 scon = sx >= 0 && sx < src_cols && sy >= 0 && sy < src_rows;
int4 spos = src_offset + sy * srcStep + sx;
uchar4 sval;
sval.s0 = scon.s0 ? src[spos.s0] : 0;
sval.s1 = scon.s1 ? src[spos.s1] : 0;
sval.s2 = scon.s2 ? src[spos.s2] : 0;
sval.s3 = scon.s3 ? src[spos.s3] : 0;
dval = convert_uchar4(dcon) != (uchar4)(0,0,0,0) ? sval : dval;
*d = dval;
}
}
__kernel void warpAffineLinear_C1_D0(__global const uchar * restrict src, __global uchar * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
dx = (dx<<2) - (dst_offset&3);
int round_delta = ((AB_SCALE >> INTER_BITS) >> 1);
int4 X, Y;
short4  ax, ay;
int4 sx, sy;
int4 DX = (int4)(dx, dx+1, dx+2, dx+3);
DX = (DX << AB_BITS);
F4 M0DX, M3DX;
M0DX = M[0] * convert_F4(DX);
M3DX = M[3] * convert_F4(DX);
X = convert_int4(rint(M0DX));
Y = convert_int4(rint(M3DX));
int tmp1, tmp2;
tmp1 = rint((M[1]*dy + M[2]) * AB_SCALE);
tmp2 = rint((M[4]*dy + M[5]) * AB_SCALE);
X += tmp1 + round_delta;
Y += tmp2 + round_delta;
X = X >> (AB_BITS - INTER_BITS);
Y = Y >> (AB_BITS - INTER_BITS);
sx = convert_int4(convert_short4(X >> INTER_BITS));
sy = convert_int4(convert_short4(Y >> INTER_BITS));
ax = convert_short4(X & (INTER_TAB_SIZE-1));
ay = convert_short4(Y & (INTER_TAB_SIZE-1));
uchar4 v0, v1, v2,v3;
int4 scon0, scon1, scon2, scon3;
int4 spos0, spos1, spos2, spos3;
scon0 = (sx >= 0 && sx < src_cols && sy >= 0 && sy < src_rows);
scon1 = (sx+1 >= 0 && sx+1 < src_cols && sy >= 0 && sy < src_rows);
scon2 = (sx >= 0 && sx < src_cols && sy+1 >= 0 && sy+1 < src_rows);
scon3 = (sx+1 >= 0 && sx+1 < src_cols && sy+1 >= 0 && sy+1 < src_rows);
spos0 = src_offset + sy * srcStep + sx;
spos1 = src_offset + sy * srcStep + sx + 1;
spos2 = src_offset + (sy+1) * srcStep + sx;
spos3 = src_offset + (sy+1) * srcStep + sx + 1;
v0.s0 = scon0.s0 ? src[spos0.s0] : 0;
v1.s0 = scon1.s0 ? src[spos1.s0] : 0;
v2.s0 = scon2.s0 ? src[spos2.s0] : 0;
v3.s0 = scon3.s0 ? src[spos3.s0] : 0;
v0.s1 = scon0.s1 ? src[spos0.s1] : 0;
v1.s1 = scon1.s1 ? src[spos1.s1] : 0;
v2.s1 = scon2.s1 ? src[spos2.s1] : 0;
v3.s1 = scon3.s1 ? src[spos3.s1] : 0;
v0.s2 = scon0.s2 ? src[spos0.s2] : 0;
v1.s2 = scon1.s2 ? src[spos1.s2] : 0;
v2.s2 = scon2.s2 ? src[spos2.s2] : 0;
v3.s2 = scon3.s2 ? src[spos3.s2] : 0;
v0.s3 = scon0.s3 ? src[spos0.s3] : 0;
v1.s3 = scon1.s3 ? src[spos1.s3] : 0;
v2.s3 = scon2.s3 ? src[spos2.s3] : 0;
v3.s3 = scon3.s3 ? src[spos3.s3] : 0;
short4 itab0, itab1, itab2, itab3;
float4 taby, tabx;
taby = INTER_SCALE * convert_float4(ay);
tabx = INTER_SCALE * convert_float4(ax);
itab0 = convert_short4_sat(( (1.0f-taby)*(1.0f-tabx) * (float4)INTER_REMAP_COEF_SCALE ));
itab1 = convert_short4_sat(( (1.0f-taby)*tabx * (float4)INTER_REMAP_COEF_SCALE ));
itab2 = convert_short4_sat(( taby*(1.0f-tabx) * (float4)INTER_REMAP_COEF_SCALE ));
itab3 = convert_short4_sat(( taby*tabx * (float4)INTER_REMAP_COEF_SCALE ));
int4 val;
uchar4 tval;
val = convert_int4(v0) * convert_int4(itab0) + convert_int4(v1) * convert_int4(itab1)
+ convert_int4(v2) * convert_int4(itab2) + convert_int4(v3) * convert_int4(itab3);
tval = convert_uchar4_sat ( (val + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
__global uchar4 * d =(__global uchar4 *)(dst+dst_offset+dy*dstStep+dx);
uchar4 dval = *d;
DX = (int4)(dx, dx+1, dx+2, dx+3);
int4 dcon = DX >= 0 && DX < dst_cols && dy >= 0 && dy < dst_rows;
dval = convert_uchar4(dcon != 0) ? tval : dval;
*d = dval;
}
}
__kernel void warpAffineCubic_C1_D0(__global uchar * src, __global uchar * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = ((AB_SCALE>>INTER_BITS)>>1);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
int X = X0 >> (AB_BITS - INTER_BITS);
int Y = Y0 >> (AB_BITS - INTER_BITS);
short sx = (short)(X >> INTER_BITS) - 1;
short sy = (short)(Y >> INTER_BITS) - 1;
short ay = (short)(Y & (INTER_TAB_SIZE-1));
short ax = (short)(X & (INTER_TAB_SIZE-1));
uchar v[16];
int i, j;
#pragma unroll 4
for(i=0; i<4;  i++)
for(j=0; j<4;  j++)
{
v[i*4+j] = (sx+j >= 0 && sx+j < src_cols && sy+i >= 0 && sy+i < src_rows) ? src[src_offset+(sy+i) * srcStep + (sx+j)] : 0;
}
short itab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
int isum = 0;
#pragma unroll 16
for( i=0; i<16; i++ )
{
F v = tab1y[(i>>2)] * tab1x[(i&3)];
isum += itab[i] = convert_short_sat( rint( v * INTER_REMAP_COEF_SCALE ) );
}
if( isum != INTER_REMAP_COEF_SCALE )
{
int k1, k2;
int diff = isum - INTER_REMAP_COEF_SCALE;
int Mk1=2, Mk2=2, mk1=2, mk2=2;
for( k1 = 2; k1 < 4; k1++ )
for( k2 = 2; k2 < 4; k2++ )
{
if( itab[(k1<<2)+k2] < itab[(mk1<<2)+mk2] )
mk1 = k1, mk2 = k2;
else if( itab[(k1<<2)+k2] > itab[(Mk1<<2)+Mk2] )
Mk1 = k1, Mk2 = k2;
}
diff<0 ? (itab[(Mk1<<2)+Mk2]=(short)(itab[(Mk1<<2)+Mk2]-diff)) : (itab[(mk1<<2)+mk2]=(short)(itab[(mk1<<2)+mk2]-diff));
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
int sum=0;
for ( i =0; i<16; i++ )
{
sum += v[i] * itab[i] ;
}
dst[dst_offset+dy*dstStep+dx] = convert_uchar_sat( (sum + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
}
__kernel void warpAffineNN_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = (AB_SCALE >> 1);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
int sx0 = (short)(X0 >> AB_BITS);
int sy0 = (short)(Y0 >> AB_BITS);
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*(dstStep>>2)+dx]= (sx0>=0 && sx0=0 && sy0>2)+sy0*(srcStep>>2)+sx0] : (uchar4)0;
}
}
__kernel void warpAffineLinear_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/INTER_TAB_SIZE/2;
src_offset = (src_offset>>2);
srcStep = (srcStep>>2);
int tmp = (dx << AB_BITS);
int X0 = rint(M[0] * tmp);
int Y0 = rint(M[3] * tmp);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
short sx0 = (short)(X0 >> INTER_BITS);
short sy0 = (short)(Y0 >> INTER_BITS);
short ax0 = (short)(X0 & (INTER_TAB_SIZE-1));
short ay0 = (short)(Y0 & (INTER_TAB_SIZE-1));
int4 v0, v1, v2, v3;
v0 = (sx0 >= 0 && sx0 < src_cols && sy0 >= 0 && sy0 < src_rows) ? convert_int4(src[src_offset+sy0 * srcStep + sx0]) : 0;
v1 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0 >= 0 && sy0 < src_rows) ? convert_int4(src[src_offset+sy0 * srcStep + sx0+1]) : 0;
v2 = (sx0 >= 0 && sx0 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? convert_int4(src[src_offset+(sy0+1) * srcStep + sx0]) : 0;
v3 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? convert_int4(src[src_offset+(sy0+1) * srcStep + sx0+1]) : 0;
int itab0, itab1, itab2, itab3;
float taby, tabx;
taby = 1.f/INTER_TAB_SIZE*ay0;
tabx = 1.f/INTER_TAB_SIZE*ax0;
itab0 = convert_short_sat(rint( (1.0f-taby)*(1.0f-tabx) * INTER_REMAP_COEF_SCALE ));
itab1 = convert_short_sat(rint( (1.0f-taby)*tabx * INTER_REMAP_COEF_SCALE ));
itab2 = convert_short_sat(rint( taby*(1.0f-tabx) * INTER_REMAP_COEF_SCALE ));
itab3 = convert_short_sat(rint( taby*tabx * INTER_REMAP_COEF_SCALE ));
int4 val;
val = v0 * itab0 +  v1 * itab1 + v2 * itab2 + v3 * itab3;
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*(dstStep>>2)+dx] =  convert_uchar4_sat ( (val + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
__kernel void warpAffineCubic_C4_D0(__global uchar4 const * restrict src, __global uchar4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = ((AB_SCALE>>INTER_BITS)>>1);
src_offset = (src_offset>>2);
srcStep = (srcStep>>2);
dst_offset = (dst_offset>>2);
dstStep = (dstStep>>2);
int tmp = (dx << AB_BITS);
int X0 = rint(M[0] * tmp);
int Y0 = rint(M[3] * tmp);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
int sx = (short)(X0 >> INTER_BITS) - 1;
int sy = (short)(Y0 >> INTER_BITS) - 1;
int ay = (short)(Y0 & (INTER_TAB_SIZE-1));
int ax = (short)(X0 & (INTER_TAB_SIZE-1));
uchar4 v[16];
int i,j;
#pragma unroll 4
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
v[i*4+j] = (sx+j >= 0 && sx+j < src_cols && sy+i >= 0 && sy+i < src_rows) ? (src[src_offset+(sy+i) * srcStep + (sx+j)])  : (uchar4)0;
}
int itab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = INTER_SCALE * ay;
axx = INTER_SCALE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
int isum = 0;
#pragma unroll 16
for( i=0; i<16; i++ )
{
float tmp;
tmp = tab1y[(i>>2)] * tab1x[(i&3)] * INTER_REMAP_COEF_SCALE;
itab[i] = rint(tmp);
isum += itab[i];
}
if( isum != INTER_REMAP_COEF_SCALE )
{
int k1, k2;
int diff = isum - INTER_REMAP_COEF_SCALE;
int Mk1=2, Mk2=2, mk1=2, mk2=2;
for( k1 = 2; k1 < 4; k1++ )
for( k2 = 2; k2 < 4; k2++ )
{
if( itab[(k1<<2)+k2] < itab[(mk1<<2)+mk2] )
mk1 = k1, mk2 = k2;
else if( itab[(k1<<2)+k2] > itab[(Mk1<<2)+Mk2] )
Mk1 = k1, Mk2 = k2;
}
diff<0 ? (itab[(Mk1<<2)+Mk2]=(short)(itab[(Mk1<<2)+Mk2]-diff)) : (itab[(mk1<<2)+mk2]=(short)(itab[(mk1<<2)+mk2]-diff));
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
int4 sum=0;
for ( i =0; i<16; i++ )
{
sum += convert_int4(v[i]) * itab[i];
}
dst[dst_offset+dy*dstStep+dx] = convert_uchar4_sat( (sum + (1 << (INTER_REMAP_COEF_BITS-1))) >> INTER_REMAP_COEF_BITS ) ;
}
}
}
__kernel void warpAffineNN_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/2;
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
short sx0 = (short)(X0 >> AB_BITS);
short sy0 = (short)(Y0 >> AB_BITS);
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*dstStep+dx]= (sx0>=0 && sx0=0 && sy0>2)+sy0*srcStep+sx0] : 0;
}
}
__kernel void warpAffineLinear_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/INTER_TAB_SIZE/2;
src_offset = (src_offset>>2);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
short sx0 = (short)(X0 >> INTER_BITS);
short sy0 = (short)(Y0 >> INTER_BITS);
short ax0 = (short)(X0 & (INTER_TAB_SIZE-1));
short ay0 = (short)(Y0 & (INTER_TAB_SIZE-1));
float v0, v1, v2, v3;
v0 = (sx0 >= 0 && sx0 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0] : 0;
v1 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0+1] : 0;
v2 = (sx0 >= 0 && sx0 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0] : 0;
v3 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0+1] : 0;
float tab[4];
float taby[2], tabx[2];
taby[0] = 1.0 - 1.f/INTER_TAB_SIZE*ay0;
taby[1] = 1.f/INTER_TAB_SIZE*ay0;
tabx[0] = 1.0 - 1.f/INTER_TAB_SIZE*ax0;
tabx[1] = 1.f/INTER_TAB_SIZE*ax0;
tab[0] = taby[0] * tabx[0];
tab[1] = taby[0] * tabx[1];
tab[2] = taby[1] * tabx[0];
tab[3] = taby[1] * tabx[1];
float sum = 0;
sum += v0 * tab[0] +  v1 * tab[1] +  v2 * tab[2] +  v3 * tab[3];
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>2)+dy*dstStep+dx] = sum;
}
}
__kernel void warpAffineCubic_C1_D5(__global float * src, __global float * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/INTER_TAB_SIZE/2;
src_offset = (src_offset>>2);
dst_offset = (dst_offset>>2);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
short sx = (short)(X0 >> INTER_BITS) - 1;
short sy = (short)(Y0 >> INTER_BITS) - 1;
short ay = (short)(Y0 & (INTER_TAB_SIZE-1));
short ax = (short)(X0 & (INTER_TAB_SIZE-1));
float v[16];
int i;
for(i=0; i<16;  i++)
v[i] = (sx+(i&3) >= 0 && sx+(i&3) < src_cols && sy+(i>>2) >= 0 && sy+(i>>2) < src_rows) ? src[src_offset+(sy+(i>>2)) * srcStep + (sx+(i&3))] : 0;
float tab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
#pragma unroll 4
for( i=0; i<16; i++ )
{
tab[i] = tab1y[(i>>2)] * tab1x[(i&3)];
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
float sum = 0;
#pragma unroll 4
for ( i =0; i<16; i++ )
{
sum += v[i] * tab[i];
}
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
}
__kernel void warpAffineNN_C4_D5(__global float4 * src, __global float4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/2;
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
short sx0 = (short)(X0 >> AB_BITS);
short sy0 = (short)(Y0 >> AB_BITS);
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[(dst_offset>>4)+dy*(dstStep>>2)+dx]= (sx0>=0 && sx0=0 && sy0>4)+sy0*(srcStep>>2)+sx0] : (float4)0;
}
}
__kernel void warpAffineLinear_C4_D5(__global float4 * src, __global float4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/INTER_TAB_SIZE/2;
src_offset = (src_offset>>4);
dst_offset = (dst_offset>>4);
srcStep = (srcStep>>2);
dstStep = (dstStep>>2);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
short sx0 = (short)(X0 >> INTER_BITS);
short sy0 = (short)(Y0 >> INTER_BITS);
short ax0 = (short)(X0 & (INTER_TAB_SIZE-1));
short ay0 = (short)(Y0 & (INTER_TAB_SIZE-1));
float4 v0, v1, v2, v3;
v0 = (sx0 >= 0 && sx0 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0] : (float4)0;
v1 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0 >= 0 && sy0 < src_rows) ? src[src_offset+sy0 * srcStep + sx0+1] : (float4)0;
v2 = (sx0 >= 0 && sx0 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0] : (float4)0;
v3 = (sx0+1 >= 0 && sx0+1 < src_cols && sy0+1 >= 0 && sy0+1 < src_rows) ? src[src_offset+(sy0+1) * srcStep + sx0+1] : (float4)0;
float tab[4];
float taby[2], tabx[2];
taby[0] = 1.0 - 1.f/INTER_TAB_SIZE*ay0;
taby[1] = 1.f/INTER_TAB_SIZE*ay0;
tabx[0] = 1.0 - 1.f/INTER_TAB_SIZE*ax0;
tabx[1] = 1.f/INTER_TAB_SIZE*ax0;
tab[0] = taby[0] * tabx[0];
tab[1] = taby[0] * tabx[1];
tab[2] = taby[1] * tabx[0];
tab[3] = taby[1] * tabx[1];
float4 sum = 0;
sum += v0 * tab[0] +  v1 * tab[1] +  v2 * tab[2] +  v3 * tab[3];
if(dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
__kernel void warpAffineCubic_C4_D5(__global float4 * src, __global float4 * dst, int src_cols, int src_rows,
int dst_cols, int dst_rows, int srcStep, int dstStep,
int src_offset, int dst_offset,  __constant F * M, int threadCols )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
if( dx < threadCols && dy < dst_rows)
{
int round_delta = AB_SCALE/INTER_TAB_SIZE/2;
src_offset = (src_offset>>4);
dst_offset = (dst_offset>>4);
srcStep = (srcStep>>2);
dstStep = (dstStep>>2);
int X0 = rint(M[0] * dx * AB_SCALE);
int Y0 = rint(M[3] * dx * AB_SCALE);
X0 += rint((M[1]*dy + M[2]) * AB_SCALE) + round_delta;
Y0 += rint((M[4]*dy + M[5]) * AB_SCALE) + round_delta;
X0 = X0 >> (AB_BITS - INTER_BITS);
Y0 = Y0 >> (AB_BITS - INTER_BITS);
short sx = (short)(X0 >> INTER_BITS) - 1;
short sy = (short)(Y0 >> INTER_BITS) - 1;
short ay = (short)(Y0 & (INTER_TAB_SIZE-1));
short ax = (short)(X0 & (INTER_TAB_SIZE-1));
float4 v[16];
int i;
for(i=0; i<16;  i++)
v[i] = (sx+(i&3) >= 0 && sx+(i&3) < src_cols && sy+(i>>2) >= 0 && sy+(i>>2) < src_rows) ? src[src_offset+(sy+(i>>2)) * srcStep + (sx+(i&3))] : (float4)0;
float tab[16];
float tab1y[4], tab1x[4];
float axx, ayy;
ayy = 1.f/INTER_TAB_SIZE * ay;
axx = 1.f/INTER_TAB_SIZE * ax;
interpolateCubic(ayy, tab1y);
interpolateCubic(axx, tab1x);
#pragma unroll 4
for( i=0; i<16; i++ )
{
tab[i] = tab1y[(i>>2)] * tab1x[(i&3)];
}
if( dx >= 0 && dx < dst_cols && dy >= 0 && dy < dst_rows)
{
float4 sum = 0;
#pragma unroll 4
for ( i =0; i<16; i++ )
{
sum += v[i] * tab[i];
}
dst[dst_offset+dy*dstStep+dx] = sum;
}
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void threshold_C1_D0(__global const uchar * restrict src, __global uchar *dst,
int src_offset, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step,
uchar thresh, uchar max_val, int thresh_type
)
{
int gx = get_global_id(0);
const int gy = get_global_id(1);
int offset = (dst_offset & 15);
src_offset -= offset;
int dstart = (gx << 4) - offset;
if(dstart < dst_cols && gy < dst_rows)
{
uchar16 sdata = vload16(gx, src+src_offset+gy*src_step);
uchar16 ddata;
uchar16 zero = 0;
switch (thresh_type)
{
case 0:
ddata = ((sdata > thresh) ) ? (uchar16)(max_val) : (uchar16)(0);
break;
case 1:
ddata = ((sdata > thresh)) ? zero  : (uchar16)(max_val);
break;
case 2:
ddata = ((sdata > thresh)) ? (uchar16)(thresh) : sdata;
break;
case 3:
ddata = ((sdata > thresh)) ? sdata : zero;
break;
case 4:
ddata = ((sdata > thresh)) ? zero : sdata;
break;
default:
ddata = sdata;
}
int16 dpos = (int16)(dstart, dstart+1, dstart+2, dstart+3, dstart+4, dstart+5, dstart+6, dstart+7, dstart+8,
dstart+9, dstart+10, dstart+11, dstart+12, dstart+13, dstart+14, dstart+15);
uchar16 dVal = *(__global uchar16*)(dst+dst_offset+gy*dst_step+dstart);
int16 con = dpos >= 0 && dpos < dst_cols;
ddata = convert_uchar16(con != 0) ? ddata : dVal;
if(dstart < dst_cols)
{
*(__global uchar16*)(dst+dst_offset+gy*dst_step+dstart) = ddata;
}
}
}
__kernel void threshold_C1_D5(__global const float * restrict src, __global float *dst,
int src_offset, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step,
float thresh, float max_val, int thresh_type
)
{
const int gx = get_global_id(0);
const int gy = get_global_id(1);
int offset = (dst_offset & 3);
src_offset -= offset;
int dstart = (gx << 2) - offset;
if(dstart < dst_cols && gy < dst_rows)
{
float4 sdata = vload4(gx, src+src_offset+gy*src_step);
float4 ddata;
float4 zero = 0;
switch (thresh_type)
{
case 0:
ddata = sdata > thresh ? (float4)(max_val) : (float4)(0.f);
break;
case 1:
ddata = sdata > thresh ? zero : (float4)max_val;
break;
case 2:
ddata = sdata > thresh ? (float4)thresh : sdata;
break;
case 3:
ddata = sdata > thresh ? sdata : (float4)(0.f);
break;
case 4:
ddata = sdata > thresh ? (float4)(0.f) : sdata;
break;
default:
ddata = sdata;
}
int4 dpos = (int4)(dstart, dstart+1, dstart+2, dstart+3);
float4 dVal = *(__global float4*)(dst+dst_offset+gy*dst_step+dstart);
int4 con = dpos >= 0 && dpos < dst_cols;
ddata = convert_float4(con) != (float4)(0) ? ddata : dVal;
if(dstart < dst_cols)
{
*(__global float4*)(dst+dst_offset+gy*dst_step+dstart) = ddata;
}
}
}
#if defined DOUBLE_SUPPORT
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#define F double
#else
#define F float
#endif
#define INTER_RESIZE_COEF_BITS 11
#define INTER_RESIZE_COEF_SCALE (1 << INTER_RESIZE_COEF_BITS)
#define CAST_BITS (INTER_RESIZE_COEF_BITS << 1)
#define CAST_SCALE (1.0f/(1<= (l) ? (x):((x)+1))
__kernel void resizeLN_C1_D0(__global uchar * dst, __global uchar const * restrict src,
int dstoffset_in_pixel, int srcoffset_in_pixel,int dststep_in_pixel, int srcstep_in_pixel,
int src_cols, int src_rows, int dst_cols, int dst_rows, float ifx, float ify )
{
int gx = get_global_id(0);
int dy = get_global_id(1);
float4  sx, u, xf;
int4 x, DX;
gx = (gx<<2) - (dstoffset_in_pixel&3);
DX = (int4)(gx, gx+1, gx+2, gx+3);
sx = (convert_float4(DX) + 0.5f) * ifx - 0.5f;
xf = floor(sx);
x = convert_int4(xf);
u = sx - xf;
float sy = ((dy+0.5f) * ify - 0.5f);
int y = floor(sy);
float v = sy - y;
u = x < 0 ? 0 : u;
u = (x >= src_cols) ? 0 : u;
x = x < 0 ? 0 : x;
x = (x >= src_cols) ? src_cols-1 : x;
y<0 ? y=0,v=0 : y;
y>=src_rows ? y=src_rows-1,v=0 : y;
int4 U, U1;
int V, V1;
float4 utmp1, utmp2;
float vtmp;
float4 scale_vec = INTER_RESIZE_COEF_SCALE;
utmp1 = u * scale_vec;
utmp2 = scale_vec - utmp1;
U = convert_int4(rint(utmp1));
U1 = convert_int4(rint(utmp2));
vtmp = v * INTER_RESIZE_COEF_SCALE;
V = rint(vtmp);
V1= rint(INTER_RESIZE_COEF_SCALE - vtmp);
int y_ = INC(y,src_rows);
int4 x_;
x_ =  ((x+1 >= src_cols) != 0) ? x : x+1;
int4 val1, val2, val;
int4 sdata1, sdata2, sdata3, sdata4;
int4 pos1 = mad24((int4)y, (int4)srcstep_in_pixel, x+(int4)srcoffset_in_pixel);
int4 pos2 = mad24((int4)y, (int4)srcstep_in_pixel, x_+(int4)srcoffset_in_pixel);
int4 pos3 = mad24((int4)y_, (int4)srcstep_in_pixel, x+(int4)srcoffset_in_pixel);
int4 pos4 = mad24((int4)y_, (int4)srcstep_in_pixel, x_+(int4)srcoffset_in_pixel);
sdata1.s0 = src[pos1.s0];
sdata1.s1 = src[pos1.s1];
sdata1.s2 = src[pos1.s2];
sdata1.s3 = src[pos1.s3];
sdata2.s0 = src[pos2.s0];
sdata2.s1 = src[pos2.s1];
sdata2.s2 = src[pos2.s2];
sdata2.s3 = src[pos2.s3];
sdata3.s0 = src[pos3.s0];
sdata3.s1 = src[pos3.s1];
sdata3.s2 = src[pos3.s2];
sdata3.s3 = src[pos3.s3];
sdata4.s0 = src[pos4.s0];
sdata4.s1 = src[pos4.s1];
sdata4.s2 = src[pos4.s2];
sdata4.s3 = src[pos4.s3];
val1 = mul24(U1 , sdata1) + mul24(U , sdata2);
val2 = mul24(U1 , sdata3) + mul24(U , sdata4);
val = mul24((int4)V1 , val1) + mul24((int4)V , val2);
val = ((val + (1<<(CAST_BITS-1))) >> CAST_BITS);
pos4 = mad24(dy, dststep_in_pixel, gx+dstoffset_in_pixel);
pos4.y++;
pos4.z+=2;
pos4.w+=3;
uchar4 uval = convert_uchar4_sat(val);
int con = (gx >= 0 && gx+3 < dst_cols && dy >= 0 && dy < dst_rows && (dstoffset_in_pixel&3)==0);
if(con)
{
*(__global uchar4*)(dst + pos4.x)=uval;
}
else
{
if(gx >= 0 && gx < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos4.x]=uval.x;
}
if(gx+1 >= 0 && gx+1 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos4.y]=uval.y;
}
if(gx+2 >= 0 && gx+2 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos4.z]=uval.z;
}
if(gx+3 >= 0 && gx+3 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos4.w]=uval.w;
}
}
}
__kernel void resizeLN_C4_D0(__global uchar4 * dst, __global uchar4 * src,
int dstoffset_in_pixel, int srcoffset_in_pixel,int dststep_in_pixel, int srcstep_in_pixel,
int src_cols, int src_rows, int dst_cols, int dst_rows, float ifx, float ify )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
float sx = ((dx+0.5f) * ifx - 0.5f), sy = ((dy+0.5f) * ify - 0.5f);
int x = floor(sx), y = floor(sy);
float u = sx - x, v = sy - y;
x<0 ? x=0,u=0 : x,u;
x>=src_cols ? x=src_cols-1,u=0 : x,u;
y<0 ? y=0,v=0 : y,v;
y>=src_rows ? y=src_rows-1,v=0 : y,v;
u = u * INTER_RESIZE_COEF_SCALE;
v = v * INTER_RESIZE_COEF_SCALE;
int U = rint(u);
int V = rint(v);
int U1= rint(INTER_RESIZE_COEF_SCALE - u);
int V1= rint(INTER_RESIZE_COEF_SCALE - v);
int y_ = INC(y,src_rows);
int x_ = INC(x,src_cols);
int4 srcpos;
srcpos.x = mad24(y, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.y = mad24(y, srcstep_in_pixel, x_+srcoffset_in_pixel);
srcpos.z = mad24(y_, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.w = mad24(y_, srcstep_in_pixel, x_+srcoffset_in_pixel);
int4 data0 = convert_int4(src[srcpos.x]);
int4 data1 = convert_int4(src[srcpos.y]);
int4 data2 = convert_int4(src[srcpos.z]);
int4 data3 = convert_int4(src[srcpos.w]);
int4 val = mul24((int4)mul24(U1, V1) ,  data0) + mul24((int4)mul24(U, V1) ,  data1)
+mul24((int4)mul24(U1, V) ,  data2)+mul24((int4)mul24(U, V) ,  data3);
int dstpos = mad24(dy, dststep_in_pixel, dx+dstoffset_in_pixel);
uchar4 uval =   convert_uchar4((val + (1<<(CAST_BITS-1)))>>CAST_BITS);
if(dx>=0 && dx=0 && dy=src_cols ? x=src_cols-1,u=0 : x,u;
y<0 ? y=0,v=0 : y,v;
y>=src_rows ? y=src_rows-1,v=0 : y,v;
int y_ = INC(y,src_rows);
int x_ = INC(x,src_cols);
float u1 = 1.f-u;
float v1 = 1.f-v;
int4 srcpos;
srcpos.x = mad24(y, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.y = mad24(y, srcstep_in_pixel, x_+srcoffset_in_pixel);
srcpos.z = mad24(y_, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.w = mad24(y_, srcstep_in_pixel, x_+srcoffset_in_pixel);
float data0 = src[srcpos.x];
float data1 = src[srcpos.y];
float data2 = src[srcpos.z];
float data3 = src[srcpos.w];
float val1 = u1 *  data0 +
u  *  data1 ;
float val2 = u1 *  data2 +
u *  data3;
float val = v1 * val1 + v * val2;
int dstpos = mad24(dy, dststep_in_pixel, dx+dstoffset_in_pixel);
if(dx>=0 && dx=0 && dy=src_cols ? x=src_cols-1,u=0 : x;
y<0 ? y=0,v=0 : y;
y>=src_rows ? y=src_rows-1,v=0 : y;
int y_ = INC(y,src_rows);
int x_ = INC(x,src_cols);
float u1 = 1.f-u;
float v1 = 1.f-v;
int4 srcpos;
srcpos.x = mad24(y, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.y = mad24(y, srcstep_in_pixel, x_+srcoffset_in_pixel);
srcpos.z = mad24(y_, srcstep_in_pixel, x+srcoffset_in_pixel);
srcpos.w = mad24(y_, srcstep_in_pixel, x_+srcoffset_in_pixel);
float4 s_data1, s_data2, s_data3, s_data4;
s_data1 = src[srcpos.x];
s_data2 = src[srcpos.y];
s_data3 = src[srcpos.z];
s_data4 = src[srcpos.w];
float4 val = u1 * v1 * s_data1 + u * v1 * s_data2
+u1 * v *s_data3 + u * v *s_data4;
int dstpos = mad24(dy, dststep_in_pixel, dx+dstoffset_in_pixel);
if(dx>=0 && dx=0 && dy= 0 && gx+3 < dst_cols && dy >= 0 && dy < dst_rows && (dstoffset_in_pixel&3)==0);
if(con)
{
*(__global uchar4*)(dst + pos.x)=val;
}
else
{
if(gx >= 0 && gx < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos.x]=val.x;
}
if(gx+1 >= 0 && gx+1 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos.y]=val.y;
}
if(gx+2 >= 0 && gx+2 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos.z]=val.z;
}
if(gx+3 >= 0 && gx+3 < dst_cols && dy >= 0 && dy < dst_rows)
{
dst[pos.w]=val.w;
}
}
}
__kernel void resizeNN_C4_D0(__global uchar4 * dst, __global uchar4 * src,
int dstoffset_in_pixel, int srcoffset_in_pixel,int dststep_in_pixel, int srcstep_in_pixel,
int src_cols, int src_rows, int dst_cols, int dst_rows, F ifx, F ify )
{
int dx = get_global_id(0);
int dy = get_global_id(1);
F s1 = dx*ifx;
F s2 = dy*ify;
int sx = fmin((float)floor(s1), (float)src_cols-1);
int sy = fmin((float)floor(s2), (float)src_rows-1);
int dpos = mad24(dy, dststep_in_pixel, dx + dstoffset_in_pixel);
int spos = mad24(sy, srcstep_in_pixel, sx + srcoffset_in_pixel);
if(dx>=0 && dx=0 && dy=0 && dx=0 && dy=0 && dx=0 && dy= (int4)(src_cols) || convert_int4(map1_data.odd) >= (int4)(src_rows) || convert_int4(map1_data.even) < (int4)(0) || convert_int4(map1_data.odd) < (int4)(0));
uchar4 src_data = val;
if (con.s0 == 0)
src_data.s0 = *(src + srcIdx.s0);
if (con.s1 == 0)
src_data.s1 = *(src + srcIdx.s1);
if (con.s2 == 0)
src_data.s2 = *(src + srcIdx.s2);
if (con.s3 == 0)
src_data.s3 = *(src + srcIdx.s3);
uchar4 dst_data;
__global uchar4* d = (__global uchar4 *)(dst + dstStart);
uchar4 dVal = *d;
int4 dcon = (Gx >= 0 && Gx < dst_cols && y >= 0 && y < dst_rows);
dst_data = (convert_uchar4(dcon) != convert_uchar4((int4)(0))) ? src_data : dVal;
*d = dst_data;
}
}
__kernel void remapNNFConstant_C1_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows, int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 2;
int gx = x - (dst_offset&3);
int4 Gx = (int4)(gx, gx+1, gx+2, gx+3);
uchar4 nval =convert_uchar4(nVal);
uchar val = nval.s0;
int dstStart = (y * dst_step + x  + dst_offset) - (dst_offset&3);
int map1Start = y * map1_step + (x << 3) + map1_offset - ((dst_offset & 3) << 3);
float8 map1_data;
map1_data = *((__global float8 *)((__global char*)map1 + map1Start));
int8 map1_dataZ = convert_int8_sat_rte(map1_data);
int4 srcIdx = map1_dataZ.odd * src_step + map1_dataZ.even + src_offset;
uchar4 src_data = val;
uchar4 con = convert_uchar4(map1_dataZ.even >= (int4)(src_cols) || map1_dataZ.odd >= (int4)(src_rows) || map1_dataZ.even < (int4)(0) || map1_dataZ.odd < (int4)(0));
if (con.s0 == 0)
src_data.s0 = *(src + srcIdx.s0);
if (con.s1 == 0)
src_data.s1 = *(src + srcIdx.s1);
if (con.s2 == 0)
src_data.s2 = *(src + srcIdx.s2);
if (con.s3 == 0)
src_data.s3 = *(src + srcIdx.s3);
uchar4 dst_data;
__global uchar4* d = (__global uchar4 *)(dst + dstStart);
uchar4 dVal = *d;
int4 dcon = (Gx >= 0 && Gx < dst_cols && y >= 0 && y < dst_rows);
dst_data = (convert_uchar4(dcon) != convert_uchar4((int4)(0))) ? src_data : dVal;
*d = dst_data;
}
}
__kernel void remapNNF1Constant_C1_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1,  __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows, int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 2;
int gx = x - (dst_offset&3);
int4 Gx = (int4)(gx, gx+1, gx+2, gx+3);
uchar4 nval =convert_uchar4(nVal);
uchar4 val = (uchar4)(nval.s0);
int dstStart = (y * dst_step + x  + dst_offset) - (dst_offset&3);
int map1Start = y * map1_step + (x << 2) + map1_offset - ((dst_offset & 3) << 2);
float4 map1_data;
float4 map2_data;
map1_data = *((__global float4 *)((__global char*)map1 + map1Start));
map2_data = *((__global float4 *)((__global char*)map2 + map1Start));
float8 map_data = (float8)(map1_data.s0, map2_data.s0, map1_data.s1, map2_data.s1, map1_data.s2, map2_data.s2, map1_data.s3, map2_data.s3);
int8 map_dataZ = convert_int8_sat_rte(map_data);
int4 srcIdx = map_dataZ.odd * src_step + map_dataZ.even + src_offset;
uchar4 src_data = val;
uchar4 con = convert_uchar4(map_dataZ.even >= (int4)(src_cols) || map_dataZ.odd >= (int4)(src_rows)|| map_dataZ.even < (int4)(0) || map_dataZ.odd < (int4)(0));
if (con.s0 == 0)
src_data.s0 = *(src + srcIdx.s0);
if (con.s1 == 0)
src_data.s1 = *(src + srcIdx.s1);
if (con.s2 == 0)
src_data.s2 = *(src + srcIdx.s2);
if (con.s3 == 0)
src_data.s3 = *(src + srcIdx.s3);
uchar4 dst_data;
__global uchar4* d = (__global uchar4 *)(dst + dstStart);
uchar4 dVal = *d;
int4 dcon = (Gx >= 0 && Gx < dst_cols && y >= 0 && y < dst_rows);
dst_data = (convert_uchar4(dcon) != convert_uchar4((int4)(0))) ? src_data : dVal;
*d = dst_data;
}
}
__kernel void remapNNSConstant_C4_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global short * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows, int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 2) + map1_offset;
short2 map1_data = *((__global short2 *)((__global char*)map1 + mapIdx));
int srcIdx = map1_data.y * src_step + (map1_data.x << 2) + src_offset;
uchar4 nval = convert_uchar4(nVal);
uchar4 src_data;
if(map1_data.x >= src_cols || map1_data.y >= src_rows || map1_data.x <0 || map1_data.y < 0 )
src_data = nval;
else
src_data = *((__global uchar4 *)((__global uchar *)src + srcIdx));
*((__global uchar4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNFConstant_C4_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows, int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 3) + map1_offset;
float2 map1_data = *((__global float2 *)((__global char*)map1 + mapIdx));
int2 map1_dataZ = convert_int2_sat_rte(map1_data);
int srcIdx = map1_dataZ.y * src_step + (map1_dataZ.x << 2) + src_offset;
uchar4 nval = convert_uchar4(nVal);
uchar4 src_data;
if(map1_dataZ.x >= src_cols || map1_dataZ.y >= src_rows || map1_dataZ.x < 0 || map1_dataZ.y < 0)
src_data = nval;
else
src_data = *((__global uchar4 *)((__global uchar *)src + srcIdx));
*((__global uchar4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNF1Constant_C4_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1,  __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows, int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 2) + map1_offset;
float map1_data = *((__global float *)((__global char*)map1 + mapIdx));
float map2_data = *((__global float *)((__global char*)map2 + mapIdx));
int srcIdx = convert_int_sat_rte(map2_data) * src_step + (convert_int_sat_rte(map1_data) << 2) + src_offset;
uchar4 nval = convert_uchar4(nVal);
uchar4 src_data;
if(convert_int_sat_rte(map1_data) >= src_cols || convert_int_sat_rte(map2_data) >= src_rows || convert_int_sat_rte(map1_data) < 0 || convert_int_sat_rte(map2_data) < 0)
src_data = nval;
else
src_data = *((__global uchar4 *)((__global uchar *)src + srcIdx));
*((__global uchar4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNSConstant_C1_D5(__global float* dst, __global float const * restrict  src,
__global short * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows ,int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 2) + map1_offset;
short2 map1_data = *((__global short2 *)((__global char*)map1 + mapIdx));
int srcIdx = map1_data.y * src_step + (map1_data.x << 2) + src_offset;
float nval = convert_float(nVal.x);
float src_data;
if(map1_data.x >= src_cols || map1_data.y >= src_rows|| map1_data.x < 0 || map1_data.y < 0)
src_data = nval;
else
src_data = *((__global float *)((__global uchar *)src + srcIdx));
*((__global float *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNFConstant_C1_D5(__global float* dst, __global float const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows ,int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 3) + map1_offset;
float2 map1_data = *((__global float2 *)((__global char*)map1 + mapIdx));
int2 map1_dataZ = convert_int2_sat_rte(map1_data);
int srcIdx = map1_dataZ.y * src_step + (map1_dataZ.x << 2) + src_offset;
float nval = convert_float(nVal.x);
float src_data;
if(map1_dataZ.x >= src_cols || map1_dataZ.y >= src_rows || map1_dataZ.x < 0 || map1_dataZ.y < 0)
src_data = nval;
else
src_data = *((__global float *)((__global uchar *)src + srcIdx));
*((__global float *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNF1Constant_C1_D5(__global float* dst, __global float const * restrict  src,
__global float * map1, __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows ,int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 2) + map1_offset;
float map1_data = *((__global float *)((__global char*)map1 + mapIdx));
float map2_data = *((__global float *)((__global char*)map2 + mapIdx));
float2 map_data = (float2)(map1_data, map2_data);
int2 map1_dataZ = convert_int2_sat_rte(map_data);
int srcIdx = map1_dataZ.y * src_step + (map1_dataZ.x << 2) + src_offset;
float nval = convert_float(nVal.x);
float src_data;
if(map1_dataZ.x >= src_cols || map1_dataZ.y >= src_rows || map1_dataZ.x < 0 || map1_dataZ.y < 0)
src_data = nval;
else
src_data = *((__global float *)((__global uchar *)src + srcIdx));
*((__global float *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNSConstant_C4_D5(__global float * dst, __global float const * restrict  src,
__global short * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 4) + dst_offset  ;
int mapIdx = y * map1_step + (x << 2) + map1_offset ;
short2 map1_data = *((__global short2 *)((__global char*)map1 + mapIdx));
int srcIdx = map1_data.y * src_step + (map1_data.x << 4) + src_offset;
float4 nval = convert_float4(nVal);
float4 src_data;
if (map1_data.x <0 || map1_data.x >= src_cols || map1_data.y <0 || map1_data.y >= src_rows)
src_data = nval;
else
src_data = *((__global float4 *)((__global uchar *)src + srcIdx));
*((__global float4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNFConstant_C4_D5(__global float * dst, __global float const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 4) + dst_offset  ;
int mapIdx = y * map1_step + (x << 3) + map1_offset ;
float2 map1_data = *((__global float2 *)((__global char*)map1 + mapIdx));
int2 map1_dataZ = convert_int2_sat_rte(map1_data);
int srcIdx = map1_dataZ.y * src_step + (map1_dataZ.x << 4) + src_offset;
float4 nval = convert_float4(nVal);
float4 src_data = nval;
if(map1_dataZ.x >= 0 && map1_dataZ.x < src_cols && map1_dataZ.y >=0 && map1_dataZ.y < src_rows)
src_data = *((__global float4 *)((__global uchar *)src + srcIdx));
*((__global float4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapNNF1Constant_C4_D5(__global float * dst, __global float const * restrict  src,
__global float * map1,  __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 4) + dst_offset  ;
int mapIdx = y * map1_step + (x << 2) + map1_offset ;
float map1_data = *((__global float *)((__global char*)map1 + mapIdx));
float map2_data = *((__global float *)((__global char*)map2 + mapIdx));
float2 map_data = (float2)(map1_data, map2_data);
int2 map1_dataZ = convert_int2_sat_rte(map_data);
int srcIdx = map1_dataZ.y * src_step + (map1_dataZ.x << 4) + src_offset;
float4 nval = convert_float4(nVal);
float4 src_data = nval;
if(map1_dataZ.x >= 0 && map1_dataZ.x < src_cols && map1_dataZ.y >= 0 && map1_dataZ.y < src_rows)
src_data = *((__global float4 *)((__global uchar *)src + srcIdx));
*((__global float4 *)((__global uchar*)dst + dstIdx)) = src_data;
}
}
__kernel void remapLNFConstant_C1_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 2;
int gx = x - (dst_offset&3);
int4 Gx = (int4)(gx, gx+1, gx+2, gx+3);
uchar4 nval =convert_uchar4(nVal);
uchar4 val = (uchar4)(nval.s0);
int dstStart = (y * dst_step + x  + dst_offset) - (dst_offset&3);
int map1Start = y * map1_step + (x << 3) + map1_offset - ((dst_offset & 3) << 3);
float8 map1_data;
map1_data = *((__global float8 *)((__global char*)map1 + map1Start));
int8 map1_dataD = convert_int8(map1_data);
float8 temp = map1_data - convert_float8(map1_dataD);
float4 u = temp.even;
float4 v = temp.odd;
float4 ud = (float4)(1.0) - u;
float4 vd = (float4)(1.0) - v;
int4 map1_dataDx = map1_dataD.even;
int4 map1_dataDy = map1_dataD.odd;
int4 map1_dataDx1 = map1_dataDx + (int4)(1);
int4 map1_dataDy1 = map1_dataDy + (int4)(1);
uchar4 a = val, b = val, c = val, d =val;
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
a.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s0 * src_step + map1_dataDx.s0 + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
a.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s1 * src_step + map1_dataDx.s1 + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
a.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s2 * src_step + map1_dataDx.s2 + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
a.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s3 * src_step + map1_dataDx.s3 + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
b.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s0 * src_step + map1_dataDx1.s0 + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
b.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s1 * src_step + map1_dataDx1.s1 + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
b.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s2 * src_step + map1_dataDx1.s2 + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
b.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s3 * src_step + map1_dataDx1.s3 + src_offset));
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
c.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s0 * src_step + map1_dataDx.s0 + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
c.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s1 * src_step + map1_dataDx.s1 + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
c.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s2 * src_step + map1_dataDx.s2 + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
c.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s3 * src_step + map1_dataDx.s3 + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
d.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s0 * src_step + map1_dataDx1.s0 + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
d.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s1 * src_step + map1_dataDx1.s1 + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
d.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s2 * src_step + map1_dataDx1.s2 + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
d.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s3 * src_step + map1_dataDx1.s3 + src_offset));
uchar4 dst_data = convert_uchar4_sat_rte((convert_float4(a))* ud * vd +(convert_float4(b))* u * vd + (convert_float4(c))* ud * v + (convert_float4(d)) * u * v );
__global uchar4* D = (__global uchar4 *)(dst + dstStart);
uchar4 dVal = *D;
int4 con = (Gx >= 0 && Gx < dst_cols && y >= 0 && y < dst_rows);
dst_data = (convert_uchar4(con) != (uchar4)(0)) ? dst_data : dVal;
*D = dst_data;
}
}
__kernel void remapLNF1Constant_C1_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1,  __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 2;
int gx = x - (dst_offset&3);
int4 Gx = (int4)(gx, gx+1, gx+2, gx+3);
uchar4 nval =convert_uchar4(nVal);
uchar4 val = (uchar4)(nval.s0);
int dstStart = (y * dst_step + x  + dst_offset) - (dst_offset&3);
int map1Start = y * map1_step + (x << 2) + map1_offset - ((dst_offset & 3) << 2);
float4 map1_data;
float4 map2_data;
map1_data = *((__global float4 *)((__global char*)map1 + map1Start));
map2_data = *((__global float4 *)((__global char*)map2 + map1Start));
float8 map_data = (float8)(map1_data.s0, map2_data.s0, map1_data.s1, map2_data.s1, map1_data.s2, map2_data.s2, map1_data.s3, map2_data.s3);
int8 map1_dataD = convert_int8(map_data);
float8 temp = map_data - convert_float8(map1_dataD);
float4 u = temp.even;
float4 v = temp.odd;
float4 ud = (float4)(1.0) - u;
float4 vd = (float4)(1.0) - v;
int4 map1_dataDx = map1_dataD.even;
int4 map1_dataDy = map1_dataD.odd;
int4 map1_dataDx1 = map1_dataDx + (int4)(1);
int4 map1_dataDy1 = map1_dataDy + (int4)(1);
uchar4 a = val, b = val, c = val, d =val;
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
a.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s0 * src_step + map1_dataDx.s0 + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
a.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s1 * src_step + map1_dataDx.s1 + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
a.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s2 * src_step + map1_dataDx.s2 + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
a.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s3 * src_step + map1_dataDx.s3 + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
b.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s0 * src_step + map1_dataDx1.s0 + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
b.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s1 * src_step + map1_dataDx1.s1 + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
b.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s2 * src_step + map1_dataDx1.s2 + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
b.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy.s3 * src_step + map1_dataDx1.s3 + src_offset));
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
c.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s0 * src_step + map1_dataDx.s0 + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
c.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s1 * src_step + map1_dataDx.s1 + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
c.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s2 * src_step + map1_dataDx.s2 + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
c.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s3 * src_step + map1_dataDx.s3 + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
d.s0 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s0 * src_step + map1_dataDx1.s0 + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
d.s1 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s1 * src_step + map1_dataDx1.s1 + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
d.s2 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s2 * src_step + map1_dataDx1.s2 + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
d.s3 = *((__global uchar*)((__global uchar *)src + map1_dataDy1.s3 * src_step + map1_dataDx1.s3 + src_offset));
uchar4 dst_data = convert_uchar4_sat_rte((convert_float4(a))* ud * vd +(convert_float4(b))* u * vd + (convert_float4(c))* ud * v + (convert_float4(d)) * u * v );
__global uchar4* D = (__global uchar4 *)(dst + dstStart);
uchar4 dVal = *D;
int4 con = (Gx >= 0 && Gx < dst_cols && y >= 0 && y < dst_rows);
dst_data = (convert_uchar4(con) != (uchar4)(0)) ? dst_data : dVal;
*D = dst_data;
}
}
__kernel void remapLNFConstant_C4_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 3) + map1_offset;
float2 map_data = *((__global float2 *)((__global char*)map1 + mapIdx));
int2 map_dataA = convert_int2(map_data);
float2 u = map_data - convert_float2(map_dataA);
int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y);
int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1);
int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y +1);
uchar4 nval = convert_uchar4(nVal);
uchar4 a, b, c , d;
if(map_dataA.x < 0 || map_dataA.x >= src_cols || map_dataA.y >= src_rows || map_dataA.y < 0)
a = nval;
else
a = *((__global uchar4 *)((__global uchar *)src + map_dataA.y * src_step + (map_dataA.x<<2) + src_offset ));
if(map_dataB.x < 0 || map_dataB.x >= src_cols || map_dataB.y >= src_rows || map_dataB.y < 0)
b = nval;
else
b = *((__global uchar4 *)((__global uchar *)src + map_dataB.y * src_step + (map_dataB.x<<2) + src_offset ));
if(map_dataC.x < 0 || map_dataC.x >= src_cols || map_dataC.y >= src_rows || map_dataC.y < 0)
c = nval;
else
c = *((__global uchar4 *)((__global uchar *)src + map_dataC.y * src_step + (map_dataC.x<<2) + src_offset ));
if(map_dataD.x < 0 || map_dataD.x >= src_cols || map_dataD.y >= src_rows || map_dataD.y < 0)
d = nval;
else
d = *((__global uchar4 *)((__global uchar *)src + map_dataD.y * src_step + (map_dataD.x<<2) + src_offset ));
float4 dst_data = convert_float4(a)*((float4)(1.0-u.x)*((float4)(1.0-u.y))) + convert_float4(b)*((float4)(u.x))*((float4)(1.0-u.y)) + convert_float4(c)*((float4)(1.0-u.x))*((float4)(u.y)) + convert_float4(d)*((float4)(u.x))*((float4)(u.y));
*((__global uchar4 *)((__global uchar*)dst + dstIdx)) = convert_uchar4_sat_rte(dst_data);
}
}
__kernel void remapLNF1Constant_C4_D0(__global unsigned char* dst, __global unsigned char const * restrict  src,
__global float * map1,  __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 2) + dst_offset;
int mapIdx = y * map1_step + (x << 2) + map1_offset;
float map1_data = *((__global float *)((__global char*)map1 + mapIdx));
float map2_data = *((__global float *)((__global char*)map2 + mapIdx));
float2 map_data = (float2)(map1_data, map2_data);
int2 map_dataA = convert_int2(map_data);
float2 u = map_data - convert_float2(map_dataA);
int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y);
int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1);
int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y +1);
uchar4 nval = convert_uchar4(nVal);
uchar4 a, b, c , d;
if(map_dataA.x < 0 || map_dataA.x >= src_cols || map_dataA.y >= src_rows || map_dataA.y < 0)
a = nval;
else
a = *((__global uchar4 *)((__global uchar *)src + map_dataA.y * src_step + (map_dataA.x<<2) + src_offset ));
if(map_dataB.x < 0 || map_dataB.x >= src_cols || map_dataB.y >= src_rows || map_dataB.y < 0)
b = nval;
else
b = *((__global uchar4 *)((__global uchar *)src + map_dataB.y * src_step + (map_dataB.x<<2) + src_offset ));
if(map_dataC.x < 0 || map_dataC.x >= src_cols || map_dataC.y >= src_rows || map_dataC.y < 0)
c = nval;
else
c = *((__global uchar4 *)((__global uchar *)src + map_dataC.y * src_step + (map_dataC.x<<2) + src_offset ));
if(map_dataD.x < 0 || map_dataD.x >= src_cols || map_dataD.y >= src_rows || map_dataD.y < 0)
d = nval;
else
d = *((__global uchar4 *)((__global uchar *)src + map_dataD.y * src_step + (map_dataD.x<<2) + src_offset ));
float4 dst_data = convert_float4(a)*((float4)(1.0-u.x)*((float4)(1.0-u.y))) + convert_float4(b)*((float4)(u.x))*((float4)(1.0-u.y)) + convert_float4(c)*((float4)(1.0-u.x))*((float4)(u.y)) + convert_float4(d)*((float4)(u.x))*((float4)(u.y));
*((__global uchar4 *)((__global uchar*)dst + dstIdx)) = convert_uchar4_sat_rte(dst_data);
}
}
__kernel void remapLNFConstant_C1_D5(__global float* dst, __global float const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 4;
int gx = x - (dst_offset&15);
int4 Gx = (int4)(gx, gx+4, gx+8, gx+12);
float4 nval =convert_float4(nVal);
float4 val = (float4)(nval.s0);
int dstStart = (y * dst_step + x  + dst_offset) - (dst_offset&15);
int map1Start = y * map1_step + (x << 1) + map1_offset - ((dst_offset & 15) << 1);
float8 map1_data;
map1_data = *((__global float8 *)((__global char*)map1 + map1Start));
int8 map1_dataD = convert_int8(map1_data);
float8 temp = map1_data - convert_float8(map1_dataD);
float4 u = temp.even;
float4 v = temp.odd;
float4 ud = (float4)(1.0) - u;
float4 vd = (float4)(1.0) - v;
int4 map1_dataDx = map1_dataD.even;
int4 map1_dataDy = map1_dataD.odd;
int4 map1_dataDx1 = map1_dataDx + (int4)(1);
int4 map1_dataDy1 = map1_dataDy + (int4)(1);
float4 a = val, b = val, c = val, d = val;
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
a.s0 = *((__global float*)((__global uchar *)src + map1_dataDy.s0 * src_step + (map1_dataDx.s0 << 2) + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
a.s1 = *((__global float*)((__global uchar *)src + map1_dataDy.s1 * src_step + (map1_dataDx.s1 << 2) + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
a.s2 = *((__global float*)((__global uchar *)src + map1_dataDy.s2 * src_step + (map1_dataDx.s2 << 2) + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
a.s3 = *((__global float*)((__global uchar *)src + map1_dataDy.s3 * src_step + (map1_dataDx.s3 << 2) + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
b.s0 = *((__global float*)((__global uchar *)src + map1_dataDy.s0 * src_step + (map1_dataDx1.s0 << 2) + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
b.s1 = *((__global float*)((__global uchar *)src + map1_dataDy.s1 * src_step + (map1_dataDx1.s1 << 2) + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
b.s2 = *((__global float*)((__global uchar *)src + map1_dataDy.s2 * src_step + (map1_dataDx1.s2 << 2) + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
b.s3 = *((__global float*)((__global uchar *)src + map1_dataDy.s3 * src_step + (map1_dataDx1.s3 << 2) + src_offset));
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
c.s0 = *((__global float*)((__global uchar *)src + map1_dataDy1.s0 * src_step + (map1_dataDx.s0 << 2) + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
c.s1 = *((__global float*)((__global uchar *)src + map1_dataDy1.s1 * src_step + (map1_dataDx.s1 << 2) + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
c.s2 = *((__global float*)((__global uchar *)src + map1_dataDy1.s2 * src_step + (map1_dataDx.s2 << 2) + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
c.s3 = *((__global float*)((__global uchar *)src + map1_dataDy1.s3 * src_step + (map1_dataDx.s3 << 2) + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
d.s0 = *((__global float*)((__global uchar *)src + map1_dataDy1.s0 * src_step + (map1_dataDx1.s0 << 2) + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
d.s1 = *((__global float*)((__global uchar *)src + map1_dataDy1.s1 * src_step + (map1_dataDx1.s1 << 2) + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
d.s2 = *((__global float*)((__global uchar *)src + map1_dataDy1.s2 * src_step + (map1_dataDx1.s2 << 2) + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
d.s3 = *((__global float*)((__global uchar *)src + map1_dataDy1.s3 * src_step + (map1_dataDx1.s3 << 2) + src_offset));
float4 dst_data = a * ud * vd + b * u * vd + c * ud * v + d * u * v ;
__global float4* D = (__global float4 *)((__global char*)dst + dstStart);
float4 dVal = *D;
int4 con = (Gx >= 0 && Gx < (dst_cols << 2) && y >= 0 && y < dst_rows);
dst_data = (convert_float4(con) != (float4)(0)) ? dst_data : dVal;
*D = dst_data;
}
}
__kernel void remapLNF1Constant_C1_D5(__global float* dst, __global float const * restrict  src,
__global float * map1, __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
x = x << 4;
int gx = x - (dst_offset&15);
int4 Gx = (int4)(gx, gx+4, gx+8, gx+12);
float4 nval =convert_float4(nVal);
float4 val = (float4)(nval.s0);
int dstStart = y * dst_step + x  + dst_offset - (dst_offset & 15);
int map1Start = y * map1_step + x + map1_offset - (dst_offset & 15);
float4 map1_data;
float4 map2_data;
map1_data = *((__global float4 *)((__global char*)map1 + map1Start));
map2_data = *((__global float4 *)((__global char*)map2 + map1Start));
float8 map_data = (float8)(map1_data.s0, map2_data.s0, map1_data.s1, map2_data.s1, map1_data.s2, map2_data.s2, map1_data.s3, map2_data.s3);
int8 map1_dataD = convert_int8(map_data);
float8 temp = map_data - convert_float8(map1_dataD);
float4 u = temp.even;
float4 v = temp.odd;
float4 ud = (float4)(1.0) - u;
float4 vd = (float4)(1.0) - v;
int4 map1_dataDx = map1_dataD.even;
int4 map1_dataDy = map1_dataD.odd;
int4 map1_dataDx1 = map1_dataDx + (int4)(1);
int4 map1_dataDy1 = map1_dataDy + (int4)(1);
float4 a = val, b = val, c = val, d = val;
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
a.s0 = *((__global float*)((__global uchar *)src + map1_dataDy.s0 * src_step + (map1_dataDx.s0 << 2) + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
a.s1 = *((__global float*)((__global uchar *)src + map1_dataDy.s1 * src_step + (map1_dataDx.s1 << 2) + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
a.s2 = *((__global float*)((__global uchar *)src + map1_dataDy.s2 * src_step + (map1_dataDx.s2 << 2) + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
a.s3 = *((__global float*)((__global uchar *)src + map1_dataDy.s3 * src_step + (map1_dataDx.s3 << 2) + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy.s0 < src_rows && map1_dataDy.s0 >= 0)
b.s0 = *((__global float*)((__global uchar *)src + map1_dataDy.s0 * src_step + (map1_dataDx1.s0 << 2) + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy.s1 < src_rows && map1_dataDy.s1 >= 0)
b.s1 = *((__global float*)((__global uchar *)src + map1_dataDy.s1 * src_step + (map1_dataDx1.s1 << 2) + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy.s2 < src_rows && map1_dataDy.s2 >= 0)
b.s2 = *((__global float*)((__global uchar *)src + map1_dataDy.s2 * src_step + (map1_dataDx1.s2 << 2) + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy.s3 < src_rows && map1_dataDy.s3 >= 0)
b.s3 = *((__global float*)((__global uchar *)src + map1_dataDy.s3 * src_step + (map1_dataDx1.s3 << 2) + src_offset));
if (map1_dataDx.s0 < src_cols && map1_dataDx.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
c.s0 = *((__global float*)((__global uchar *)src + map1_dataDy1.s0 * src_step + (map1_dataDx.s0 << 2) + src_offset));
if (map1_dataDx.s1 < src_cols && map1_dataDx.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
c.s1 = *((__global float*)((__global uchar *)src + map1_dataDy1.s1 * src_step + (map1_dataDx.s1 << 2) + src_offset));
if (map1_dataDx.s2 < src_cols && map1_dataDx.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
c.s2 = *((__global float*)((__global uchar *)src + map1_dataDy1.s2 * src_step + (map1_dataDx.s2 << 2) + src_offset));
if (map1_dataDx.s3 < src_cols && map1_dataDx.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
c.s3 = *((__global float*)((__global uchar *)src + map1_dataDy1.s3 * src_step + (map1_dataDx.s3 << 2) + src_offset));
if (map1_dataDx1.s0 < src_cols && map1_dataDx1.s0 >= 0 && map1_dataDy1.s0 < src_rows && map1_dataDy1.s0 >= 0)
d.s0 = *((__global float*)((__global uchar *)src + map1_dataDy1.s0 * src_step + (map1_dataDx1.s0 << 2) + src_offset));
if (map1_dataDx1.s1 < src_cols && map1_dataDx1.s1 >= 0 && map1_dataDy1.s1 < src_rows && map1_dataDy1.s1 >= 0)
d.s1 = *((__global float*)((__global uchar *)src + map1_dataDy1.s1 * src_step + (map1_dataDx1.s1 << 2) + src_offset));
if (map1_dataDx1.s2 < src_cols && map1_dataDx1.s2 >= 0 && map1_dataDy1.s2 < src_rows && map1_dataDy1.s2 >= 0)
d.s2 = *((__global float*)((__global uchar *)src + map1_dataDy1.s2 * src_step + (map1_dataDx1.s2 << 2) + src_offset));
if (map1_dataDx1.s3 < src_cols && map1_dataDx1.s3 >= 0 && map1_dataDy1.s3 < src_rows && map1_dataDy1.s3 >= 0)
d.s3 = *((__global float*)((__global uchar *)src + map1_dataDy1.s3 * src_step + (map1_dataDx1.s3 << 2) + src_offset));
float4 dst_data = a * ud * vd + b * u * vd + c * ud * v + d * u * v ;
__global float4* D = (__global float4 *)((__global char*)dst + dstStart);
float4 dVal = *D;
int4 con = (Gx >= 0 && Gx < (dst_cols << 2) && y >= 0 && y < dst_rows);
dst_data = (convert_float4(con) != (float4)(0)) ? dst_data : dVal;
*D = dst_data;
}
}
__kernel void remapLNFConstant_C4_D5(__global float * dst, __global float const * restrict  src,
__global float * map1, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 4) + dst_offset  ;
int mapIdx = y * map1_step + (x << 3) + map1_offset ;
float2 map_data = *((__global float2 *)((__global char*)map1 + mapIdx));
int2 map_dataA = convert_int2(map_data);
float2 u = map_data - convert_float2(map_dataA);
int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y);
int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1);
int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y +1);
float4 nval = convert_float4(nVal);
float4 a, b, c , d;
if(map_dataA.x < 0 || map_dataA.x >= src_cols || map_dataA.y >= src_rows || map_dataA.y < 0)
a = nval;
else
a = *((__global float4 *)((__global uchar *)src + map_dataA.y * src_step + (map_dataA.x<<4) + src_offset ));
if(map_dataB.x < 0 || map_dataB.x >= src_cols || map_dataB.y >= src_rows || map_dataB.y < 0)
b = nval;
else
b = *((__global float4 *)((__global uchar *)src + map_dataB.y * src_step + (map_dataB.x<<4) + src_offset ));
if(map_dataC.x < 0 || map_dataC.x >= src_cols || map_dataC.y >= src_rows || map_dataC.y < 0)
c = nval;
else
c = *((__global float4 *)((__global uchar *)src + map_dataC.y * src_step + (map_dataC.x<<4) + src_offset ));
if(map_dataD.x < 0 || map_dataD.x >= src_cols || map_dataD.y >= src_rows || map_dataD.y < 0)
d = nval;
else
d = *((__global float4 *)((__global uchar *)src + map_dataD.y * src_step + (map_dataD.x<<4) + src_offset ));
float4 dst_data = a * ((float4)(1.0-u.x)) * ((float4)(1.0-u.y)) + b *((float4)(u.x)) * ((float4)(1.0-u.y)) + c * ((float4)(1.0-u.x)) *((float4)(u.y)) + d *((float4)(u.x)) *((float4)(u.y));
*((__global float4 *)((__global uchar*)dst + dstIdx)) =  dst_data ;
}
}
__kernel void remapLNF1Constant_C4_D5(__global float * dst, __global float const * restrict  src,
__global float * map1, __global float * map2, int dst_offset, int src_offset, int map1_offset, int dst_step, int src_step,
int map1_step, int src_cols, int src_rows, int dst_cols, int dst_rows, int map1_cols, int map1_rows , int threadCols, F4 nVal)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < threadCols && y < dst_rows)
{
int dstIdx = y * dst_step + (x << 4) + dst_offset  ;
int mapIdx = y * map1_step + (x << 2) + map1_offset ;
float map1_data = *((__global float *)((__global char*)map1 + mapIdx));
float map2_data = *((__global float *)((__global char*)map2 + mapIdx));
float2 map_data = (float2)(map1_data, map2_data);
int2 map_dataA = convert_int2(map_data);
float2 u = map_data - convert_float2(map_dataA);
int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y);
int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1);
int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y +1);
float4 nval = convert_float4(nVal);
float4 a, b, c , d;
if(map_dataA.x < 0 || map_dataA.x >= src_cols || map_dataA.y >= src_rows || map_dataA.y < 0)
a = nval;
else
a = *((__global float4 *)((__global uchar *)src + map_dataA.y * src_step + (map_dataA.x<<4) + src_offset ));
if(map_dataB.x < 0 || map_dataB.x >= src_cols || map_dataB.y >= src_rows || map_dataB.y < 0)
b = nval;
else
b = *((__global float4 *)((__global uchar *)src + map_dataB.y * src_step + (map_dataB.x<<4) + src_offset ));
if(map_dataC.x < 0 || map_dataC.x >= src_cols || map_dataC.y >= src_rows || map_dataC.y < 0)
c = nval;
else
c = *((__global float4 *)((__global uchar *)src + map_dataC.y * src_step + (map_dataC.x<<4) + src_offset ));
if(map_dataD.x < 0 || map_dataD.x >= src_cols || map_dataD.y >= src_rows || map_dataD.y < 0)
d = nval;
else
d = *((__global float4 *)((__global uchar *)src + map_dataD.y * src_step + (map_dataD.x<<4) + src_offset ));
float4 dst_data = a * ((float4)(1.0-u.x)) * ((float4)(1.0-u.y)) + b *((float4)(u.x)) * ((float4)(1.0-u.y)) + c * ((float4)(1.0-u.x)) *((float4)(u.y)) + d *((float4)(u.x)) *((float4)(u.y));
*((__global float4 *)((__global uchar*)dst + dstIdx)) =  dst_data ;
}
}
#define op(a,b) {mid=a; a=min(a,b); b=max(mid,b);}
__kernel void medianFilter3_C4_D0(__global uchar4 * src, __global uchar4 * dst,  int srcOffset, int dstOffset, int cols,
int rows, int srcStep, int dstStep)
{
__local uchar4 data[18][18];
__global uchar4* source=src + srcOffset;
int dx = get_global_id(0) - get_local_id(0) -1;
int dy = get_global_id(1) - get_local_id(1) -1;
const int id = min((int)(get_local_id(0)*16+get_local_id(1)), 9*18-1);
int dr=id/18;
int dc=id%18;
int r=clamp(dy+dr, 0, rows-1);
int c=clamp(dx+dc, 0, cols-1);
data[dr][dc] = source[r*srcStep + c];
r=clamp(dy+dr+9, 0, rows-1);
data[dr+9][dc] = source[r*srcStep + c];
barrier(CLK_LOCAL_MEM_FENCE);
int x =get_local_id(0);
int y =get_local_id(1);
uchar4 p0=data[y][x], p1=data[y][x+1], p2=data[y][x+2];
uchar4 p3=data[y+1][x], p4=data[y+1][x+1], p5=data[y+1][x+2];
uchar4 p6=data[y+2][x], p7=data[y+2][x+1], p8=data[y+2][x+2];
uchar4 mid;
op(p1, p2); op(p4, p5); op(p7, p8); op(p0, p1);
op(p3, p4); op(p6, p7); op(p1, p2); op(p4, p5);
op(p7, p8); op(p0, p3); op(p5, p8); op(p4, p7);
op(p3, p6); op(p1, p4); op(p2, p5); op(p4, p7);
op(p4, p2); op(p6, p4); op(p4, p2);
if(get_global_id(1)> LOG_NUM_BANKS)
kernel void integral_sum_cols_D4(__global uchar4 *src,__global int *sum ,
int src_offset,int pre_invalid,int rows,int cols,int src_step,int dst_step)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
int4 src_t[2], sum_t[2];
__local int4 lm_sum[2][LSIZE + LOG_LSIZE];
__local int* sum_p;
src_step = src_step >> 2;
gid = gid << 1;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = (i + lid < rows ? convert_int4(src[src_offset + (lid+i) * src_step + gid]) : 0);
src_t[1] = (i + lid < rows ? convert_int4(src[src_offset + (lid+i) * src_step + gid + 1]) : 0);
sum_t[0] =  (i == 0 ? 0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? 0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sum[1][bf_loc] = src_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid > 0 && (i+lid) <= rows)
{
int loc_s0 = gid * dst_step + i + lid - 1 - pre_invalid * dst_step / 4, loc_s1 = loc_s0 + dst_step ;
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
sum_p = (__local int*)(&(lm_sum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k >= cols + pre_invalid || gid * 4 + k < pre_invalid) continue;
sum[loc_s0 + k * dst_step / 4] = sum_p[k];
}
sum_p = (__local int*)(&(lm_sum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k + 4 >= cols + pre_invalid) break;
sum[loc_s1 + k * dst_step / 4] = sum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_sum_rows_D4(__global int4 *srcsum,__global int *sum ,
int rows,int cols,int src_step,int sum_step,
int sum_offset)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
int4 src_t[2], sum_t[2];
__local int4 lm_sum[2][LSIZE + LOG_LSIZE];
__local int *sum_p;
src_step = src_step >> 4;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2] : 0;
src_t[1] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2 + 1] : 0;
sum_t[0] =  (i == 0 ? 0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? 0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sum[1][bf_loc] = src_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gid == 0 && (i + lid) <= rows)
{
sum[sum_offset + i + lid] = 0;
}
if(i + lid == 0)
{
int loc0 = gid * 2 * sum_step;
for(int k = 1; k <= 8; k++)
{
if(gid * 8 + k > cols) break;
sum[sum_offset + loc0 + k * sum_step / 4] = 0;
}
}
if(lid > 0 && (i+lid) <= rows)
{
int loc_s0 = sum_offset + gid * 2 * sum_step + sum_step / 4 + i + lid, loc_s1 = loc_s0 + sum_step ;
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
sum_p = (__local int*)(&(lm_sum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + k >= cols) break;
sum[loc_s0 + k * sum_step / 4] = sum_p[k];
}
sum_p = (__local int*)(&(lm_sum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + 4 + k >= cols) break;
sum[loc_s1 + k * sum_step / 4] = sum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_sum_cols_D5(__global uchar4 *src,__global float *sum ,
int src_offset,int pre_invalid,int rows,int cols,int src_step,int dst_step)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
float4 src_t[2], sum_t[2];
__local float4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float* sum_p;
src_step = src_step >> 2;
gid = gid << 1;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = (i + lid < rows ? convert_float4(src[src_offset + (lid+i) * src_step + gid]) : (float4)0);
src_t[1] = (i + lid < rows ? convert_float4(src[src_offset + (lid+i) * src_step + gid + 1]) : (float4)0);
sum_t[0] =  (i == 0 ? (float4)0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? (float4)0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sum[1][bf_loc] = src_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid > 0 && (i+lid) <= rows)
{
int loc_s0 = gid * dst_step + i + lid - 1 - pre_invalid * dst_step / 4, loc_s1 = loc_s0 + dst_step ;
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
sum_p = (__local float*)(&(lm_sum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k >= cols + pre_invalid || gid * 4 + k < pre_invalid) continue;
sum[loc_s0 + k * dst_step / 4] = sum_p[k];
}
sum_p = (__local float*)(&(lm_sum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k + 4 >= cols + pre_invalid) break;
sum[loc_s1 + k * dst_step / 4] = sum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_sum_rows_D5(__global float4 *srcsum,__global float *sum ,
int rows,int cols,int src_step,int sum_step,
int sum_offset)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
float4 src_t[2], sum_t[2];
__local float4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float *sum_p;
src_step = src_step >> 4;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2] : (float4)0;
src_t[1] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2 + 1] : (float4)0;
sum_t[0] =  (i == 0 ? (float4)0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? (float4)0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sum[1][bf_loc] = src_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gid == 0 && (i + lid) <= rows)
{
sum[sum_offset + i + lid] = 0;
}
if(i + lid == 0)
{
int loc0 = gid * 2 * sum_step;
for(int k = 1; k <= 8; k++)
{
if(gid * 8 + k > cols) break;
sum[sum_offset + loc0 + k * sum_step / 4] = 0;
}
}
if(lid > 0 && (i+lid) <= rows)
{
int loc_s0 = sum_offset + gid * 2 * sum_step + sum_step / 4 + i + lid, loc_s1 = loc_s0 + sum_step ;
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
sum_p = (__local float*)(&(lm_sum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + k >= cols) break;
sum[loc_s0 + k * sum_step / 4] = sum_p[k];
}
sum_p = (__local float*)(&(lm_sum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + 4 + k >= cols) break;
sum[loc_s1 + k * sum_step / 4] = sum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#define LSIZE 256
#define LSIZE_1 255
#define LSIZE_2 254
#define HF_LSIZE 128
#define LOG_LSIZE 8
#define LOG_NUM_BANKS 5
#define NUM_BANKS 32
#define GET_CONFLICT_OFFSET(lid) ((lid) >> LOG_NUM_BANKS)
kernel void integral_cols_D4(__global uchar4 *src,__global int *sum ,__global float *sqsum,
int src_offset,int pre_invalid,int rows,int cols,int src_step,int dst_step)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
int4 src_t[2], sum_t[2];
float4 sqsum_t[2];
__local int4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float4 lm_sqsum[2][LSIZE + LOG_LSIZE];
__local int* sum_p;
__local float* sqsum_p;
src_step = src_step >> 2;
gid = gid << 1;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = (i + lid < rows ? convert_int4(src[src_offset + (lid+i) * src_step + min(gid, (uint)cols - 1)]) : 0);
src_t[1] = (i + lid < rows ? convert_int4(src[src_offset + (lid+i) * src_step + min(gid + 1, (uint)cols - 1)]) : 0);
sum_t[0] = (i == 0 ? 0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sqsum_t[0] = (i == 0 ? (float4)0 : lm_sqsum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? 0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
sqsum_t[1] =  (i == 0 ? (float4)0 : lm_sqsum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sqsum[0][bf_loc] = convert_float4(src_t[0] * src_t[0]);
lm_sum[1][bf_loc] = src_t[1];
lm_sqsum[1][bf_loc] = convert_float4(src_t[1] * src_t[1]);
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi]  +=  lm_sqsum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
lm_sqsum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi] += lm_sqsum[lid >> 7][ai];
lm_sqsum[lid >> 7][ai] = lm_sqsum[lid >> 7][bi] - lm_sqsum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int loc_s0 = gid * dst_step + i + lid - 1 - pre_invalid * dst_step / 4, loc_s1 = loc_s0 + dst_step ;
if(lid > 0 && (i+lid) <= rows)
{
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
lm_sqsum[0][bf_loc] += sqsum_t[0];
lm_sqsum[1][bf_loc] += sqsum_t[1];
sum_p = (__local int*)(&(lm_sum[0][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k >= cols + pre_invalid || gid * 4 + k < pre_invalid) continue;
sum[loc_s0 + k * dst_step / 4] = sum_p[k];
sqsum[loc_s0 + k * dst_step / 4] = sqsum_p[k];
}
sum_p = (__local int*)(&(lm_sum[1][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k + 4 >= cols + pre_invalid) break;
sum[loc_s1 + k * dst_step / 4] = sum_p[k];
sqsum[loc_s1 + k * dst_step / 4] = sqsum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_rows_D4(__global int4 *srcsum,__global float4 * srcsqsum,__global int *sum ,
__global float *sqsum,int rows,int cols,int src_step,int sum_step,
int sqsum_step,int sum_offset,int sqsum_offset)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
int4 src_t[2], sum_t[2];
float4 sqsrc_t[2],sqsum_t[2];
__local int4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float4 lm_sqsum[2][LSIZE + LOG_LSIZE];
__local int *sum_p;
__local float *sqsum_p;
src_step = src_step >> 4;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2] : (int4)0;
sqsrc_t[0] = i + lid < rows ? srcsqsum[(lid+i) * src_step + gid * 2] : (float4)0;
src_t[1] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2 + 1] : (int4)0;
sqsrc_t[1] = i + lid < rows ? srcsqsum[(lid+i) * src_step + gid * 2 + 1] : (float4)0;
sum_t[0] =  (i == 0 ? 0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sqsum_t[0] =  (i == 0 ? (float4)0 : lm_sqsum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? 0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
sqsum_t[1] =  (i == 0 ? (float4)0 : lm_sqsum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sqsum[0][bf_loc] = sqsrc_t[0];
lm_sum[1][bf_loc] = src_t[1];
lm_sqsum[1][bf_loc] = sqsrc_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi]  +=  lm_sqsum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
lm_sqsum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi] += lm_sqsum[lid >> 7][ai];
lm_sqsum[lid >> 7][ai] = lm_sqsum[lid >> 7][bi] - lm_sqsum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gid == 0 && (i + lid) <= rows)
{
sum[sum_offset + i + lid] = 0;
sqsum[sqsum_offset + i + lid] = 0;
}
if(i + lid == 0)
{
int loc0 = gid * 2 * sum_step;
int loc1 = gid * 2 * sqsum_step;
for(int k = 1; k <= 8; k++)
{
if(gid * 8 + k > cols) break;
sum[sum_offset + loc0 + k * sum_step / 4] = 0;
sqsum[sqsum_offset + loc1 + k * sqsum_step / 4] = 0;
}
}
int loc_s0 = sum_offset + gid * 2 * sum_step + sum_step / 4 + i + lid, loc_s1 = loc_s0 + sum_step ;
int loc_sq0 = sqsum_offset + gid * 2 * sqsum_step + sqsum_step / 4 + i + lid, loc_sq1 = loc_sq0 + sqsum_step ;
if(lid > 0 && (i+lid) <= rows)
{
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
lm_sqsum[0][bf_loc] += sqsum_t[0];
lm_sqsum[1][bf_loc] += sqsum_t[1];
sum_p = (__local int*)(&(lm_sum[0][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + k >= cols) break;
sum[loc_s0 + k * sum_step / 4] = sum_p[k];
sqsum[loc_sq0 + k * sqsum_step / 4] = sqsum_p[k];
}
sum_p = (__local int*)(&(lm_sum[1][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + 4 + k >= cols) break;
sum[loc_s1 + k * sum_step / 4] = sum_p[k];
sqsum[loc_sq1 + k * sqsum_step / 4] = sqsum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_cols_D5(__global uchar4 *src,__global float *sum ,__global float *sqsum,
int src_offset,int pre_invalid,int rows,int cols,int src_step,int dst_step)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
float4 src_t[2], sum_t[2];
float4 sqsum_t[2];
__local float4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float4 lm_sqsum[2][LSIZE + LOG_LSIZE];
__local float* sum_p;
__local float* sqsum_p;
src_step = src_step >> 2;
gid = gid << 1;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = (i + lid < rows ? convert_float4(src[src_offset + (lid+i) * src_step + min(gid, (uint)cols - 1)]) : (float4)0);
src_t[1] = (i + lid < rows ? convert_float4(src[src_offset + (lid+i) * src_step + min(gid + 1, (uint)cols - 1)]) : (float4)0);
sum_t[0] = (i == 0 ? (float4)0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sqsum_t[0] = (i == 0 ? (float4)0 : lm_sqsum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? (float4)0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
sqsum_t[1] =  (i == 0 ? (float4)0 : lm_sqsum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sqsum[0][bf_loc] = convert_float4(src_t[0] * src_t[0]);
lm_sum[1][bf_loc] = src_t[1];
lm_sqsum[1][bf_loc] = convert_float4(src_t[1] * src_t[1]);
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi]  +=  lm_sqsum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
lm_sqsum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi] += lm_sqsum[lid >> 7][ai];
lm_sqsum[lid >> 7][ai] = lm_sqsum[lid >> 7][bi] - lm_sqsum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int loc_s0 = gid * dst_step + i + lid - 1 - pre_invalid * dst_step / 4, loc_s1 = loc_s0 + dst_step ;
if(lid > 0 && (i+lid) <= rows)
{
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
lm_sqsum[0][bf_loc] += sqsum_t[0];
lm_sqsum[1][bf_loc] += sqsum_t[1];
sum_p = (__local float*)(&(lm_sum[0][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k >= cols + pre_invalid || gid * 4 + k < pre_invalid) continue;
sum[loc_s0 + k * dst_step / 4] = sum_p[k];
sqsum[loc_s0 + k * dst_step / 4] = sqsum_p[k];
}
sum_p = (__local float*)(&(lm_sum[1][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 4 + k + 4 >= cols + pre_invalid) break;
sum[loc_s1 + k * dst_step / 4] = sum_p[k];
sqsum[loc_s1 + k * dst_step / 4] = sqsum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
kernel void integral_rows_D5(__global float4 *srcsum,__global float4 * srcsqsum,__global float *sum ,
__global float *sqsum,int rows,int cols,int src_step,int sum_step,
int sqsum_step,int sum_offset,int sqsum_offset)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
float4 src_t[2], sum_t[2];
float4 sqsrc_t[2],sqsum_t[2];
__local float4 lm_sum[2][LSIZE + LOG_LSIZE];
__local float4 lm_sqsum[2][LSIZE + LOG_LSIZE];
__local float *sum_p;
__local float *sqsum_p;
src_step = src_step >> 4;
for(int i = 0; i < rows; i =i + LSIZE_1)
{
src_t[0] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2] : (float4)0;
sqsrc_t[0] = i + lid < rows ? srcsqsum[(lid+i) * src_step + gid * 2] : (float4)0;
src_t[1] = i + lid < rows ? srcsum[(lid+i) * src_step + gid * 2 + 1] : (float4)0;
sqsrc_t[1] = i + lid < rows ? srcsqsum[(lid+i) * src_step + gid * 2 + 1] : (float4)0;
sum_t[0] =  (i == 0 ? (float4)0 : lm_sum[0][LSIZE_2 + LOG_LSIZE]);
sqsum_t[0] =  (i == 0 ? (float4)0 : lm_sqsum[0][LSIZE_2 + LOG_LSIZE]);
sum_t[1] =  (i == 0 ? (float4)0 : lm_sum[1][LSIZE_2 + LOG_LSIZE]);
sqsum_t[1] =  (i == 0 ? (float4)0 : lm_sqsum[1][LSIZE_2 + LOG_LSIZE]);
barrier(CLK_LOCAL_MEM_FENCE);
int bf_loc = lid + GET_CONFLICT_OFFSET(lid);
lm_sum[0][bf_loc] = src_t[0];
lm_sqsum[0][bf_loc] = sqsrc_t[0];
lm_sum[1][bf_loc] = src_t[1];
lm_sqsum[1][bf_loc] = sqsrc_t[1];
int offset = 1;
for(int d = LSIZE >> 1 ;  d > 0; d>>=1)
{
barrier(CLK_LOCAL_MEM_FENCE);
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi]  +=  lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi]  +=  lm_sqsum[lid >> 7][ai];
}
offset <<= 1;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 2)
{
lm_sum[lid][LSIZE_2 + LOG_LSIZE] = 0;
lm_sqsum[lid][LSIZE_2 + LOG_LSIZE] = 0;
}
for(int d = 1;  d < LSIZE; d <<= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
offset >>= 1;
int ai = offset * (((lid & 127)<<1) +1) - 1,bi = ai + offset;
ai += GET_CONFLICT_OFFSET(ai);
bi += GET_CONFLICT_OFFSET(bi);
if((lid & 127) < d)
{
lm_sum[lid >> 7][bi] += lm_sum[lid >> 7][ai];
lm_sum[lid >> 7][ai] = lm_sum[lid >> 7][bi] - lm_sum[lid >> 7][ai];
lm_sqsum[lid >> 7][bi] += lm_sqsum[lid >> 7][ai];
lm_sqsum[lid >> 7][ai] = lm_sqsum[lid >> 7][bi] - lm_sqsum[lid >> 7][ai];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gid == 0 && (i + lid) <= rows)
{
sum[sum_offset + i + lid] = 0;
sqsum[sqsum_offset + i + lid] = 0;
}
if(i + lid == 0)
{
int loc0 = gid * 2 * sum_step;
int loc1 = gid * 2 * sqsum_step;
for(int k = 1; k <= 8; k++)
{
if(gid * 8 + k > cols) break;
sum[sum_offset + loc0 + k * sum_step / 4] = 0;
sqsum[sqsum_offset + loc1 + k * sqsum_step / 4] = 0;
}
}
int loc_s0 = sum_offset + gid * 2 * sum_step + sum_step / 4 + i + lid, loc_s1 = loc_s0 + sum_step ;
int loc_sq0 = sqsum_offset + gid * 2 * sqsum_step + sqsum_step / 4 + i + lid, loc_sq1 = loc_sq0 + sqsum_step ;
if(lid > 0 && (i+lid) <= rows)
{
lm_sum[0][bf_loc] += sum_t[0];
lm_sum[1][bf_loc] += sum_t[1];
lm_sqsum[0][bf_loc] += sqsum_t[0];
lm_sqsum[1][bf_loc] += sqsum_t[1];
sum_p = (__local float*)(&(lm_sum[0][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[0][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + k >= cols) break;
sum[loc_s0 + k * sum_step / 4] = sum_p[k];
sqsum[loc_sq0 + k * sqsum_step / 4] = sqsum_p[k];
}
sum_p = (__local float*)(&(lm_sum[1][bf_loc]));
sqsum_p = (__local float*)(&(lm_sqsum[1][bf_loc]));
for(int k = 0; k < 4; k++)
{
if(gid * 8 + 4 + k >= cols) break;
sum[loc_s1 + k * sum_step / 4] = sum_p[k];
sqsum[loc_sq1 + k * sqsum_step / 4] = sqsum_p[k];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
#define PARTIAL_HISTOGRAM256_COUNT     (256)
#define HISTOGRAM256_BIN_COUNT         (256)
#define HISTOGRAM256_WORK_GROUP_SIZE     (256)
#define HISTOGRAM256_LOCAL_MEM_SIZE      (HISTOGRAM256_BIN_COUNT)
#define NBANKS (16)
#define NBANKS_BIT (4)
__kernel __attribute__((reqd_work_group_size(HISTOGRAM256_BIN_COUNT,1,1)))void calc_sub_hist_D0(
__global const uint4* src,
int src_step, int src_offset,
__global int* globalHist,
int dataCount,  int cols,
int inc_x, int inc_y,
int hist_step)
{
__local int subhist[(HISTOGRAM256_BIN_COUNT << NBANKS_BIT)];
int gid = get_global_id(0);
int lid = get_local_id(0);
int gx  = get_group_id(0);
int gsize = get_global_size(0);
int lsize  = get_local_size(0);
const int shift = 8;
const int mask = HISTOGRAM256_BIN_COUNT-1;
int offset = (lid & (NBANKS-1));
uint4 data, temp1, temp2, temp3, temp4;
src += src_offset;
for(int i=0, idx=lid; i<(NBANKS >> 2); i++, idx += lsize)
{
subhist[idx] = 0;
subhist[idx+=lsize] = 0;
subhist[idx+=lsize] = 0;
subhist[idx+=lsize] = 0;
}
barrier(CLK_LOCAL_MEM_FENCE);
int y = gid/cols;
int x = gid - mul24(y, cols);
for(int idx=gid; idx>= shift;
temp2 = ((data & mask) << NBANKS_BIT) + offset;
data >>= shift;
temp3 = ((data & mask) << NBANKS_BIT) + offset;
data >>= shift;
temp4 = ((data & mask) << NBANKS_BIT) + offset;
atomic_inc(subhist + temp1.x);
atomic_inc(subhist + temp1.y);
atomic_inc(subhist + temp1.z);
atomic_inc(subhist + temp1.w);
atomic_inc(subhist + temp2.x);
atomic_inc(subhist + temp2.y);
atomic_inc(subhist + temp2.z);
atomic_inc(subhist + temp2.w);
atomic_inc(subhist + temp3.x);
atomic_inc(subhist + temp3.y);
atomic_inc(subhist + temp3.z);
atomic_inc(subhist + temp3.w);
atomic_inc(subhist + temp4.x);
atomic_inc(subhist + temp4.y);
atomic_inc(subhist + temp4.z);
atomic_inc(subhist + temp4.w);
x += inc_x;
int off = ((x>=cols) ? -1 : 0);
x = mad24(off, cols, x);
y += inc_y - off;
}
barrier(CLK_LOCAL_MEM_FENCE);
int bin1=0, bin2=0, bin3=0, bin4=0;
for(int i=0; i=left_col) ? (gidx+cols) : gidx);
if(gidy 0; stride >>= 1)
{
barrier(CLK_LOCAL_MEM_FENCE);
if(lx < stride)
data[lx] += data[lx + stride];
}
if(lx == 0)
hist[gx] = data[0];
}
__kernel __attribute__((reqd_work_group_size(256,1,1)))void calLUT(
__global uchar * dst,
__constant int * hist,
int total)
{
int lid = get_local_id(0);
__local int sumhist[HISTOGRAM256_BIN_COUNT+1];
sumhist[lid]=hist[lid];
barrier(CLK_LOCAL_MEM_FENCE);
if(lid==0)
{
int sum = 0;
int i = 0;
while (!sumhist[i]) ++i;
sumhist[HISTOGRAM256_BIN_COUNT] = sumhist[i];
for(sumhist[i++] = 0; i 0 && i < rows - 1 && j > 0 && j < cols - 1
#if WITH_MASK
&& mask[i * mask_strip + j] != 0
#endif
)
{
const float val = ELEM_INT2(eig, j, i);
if (val > threshold)
{
float maxVal = val;
maxVal = fmax(ELEM_INT2(eig, j - 1, i - 1), maxVal);
maxVal = fmax(ELEM_INT2(eig, j    , i - 1), maxVal);
maxVal = fmax(ELEM_INT2(eig, j + 1, i - 1), maxVal);
maxVal = fmax(ELEM_INT2(eig, j - 1, i), maxVal);
maxVal = fmax(ELEM_INT2(eig, j + 1, i), maxVal);
maxVal = fmax(ELEM_INT2(eig, j - 1, i + 1), maxVal);
maxVal = fmax(ELEM_INT2(eig, j    , i + 1), maxVal);
maxVal = fmax(ELEM_INT2(eig, j + 1, i + 1), maxVal);
if (val == maxVal)
{
const int ind = atomic_inc(g_counter);
if (ind < max_count)
corners[ind] = (float2)(j, i);
}
}
}
}
__kernel
void sortCorners_bitonicSort
(
image2d_t eig,
__global float2 * corners,
const int count,
const int stage,
const int passOfStage
)
{
const int threadId = get_global_id(0);
if(threadId >= count / 2)
{
return;
}
const int sortOrder = (((threadId/(1 << stage)) % 2)) == 1 ? 1 : 0;
const int pairDistance = 1 << (stage - passOfStage);
const int blockWidth   = 2 * pairDistance;
const int leftId = min( (threadId % pairDistance) 
+ (threadId / pairDistance) * blockWidth, count );
const int rightId = min( leftId + pairDistance, count );
const float2 leftPt  = corners[leftId];
const float2 rightPt = corners[rightId];
const float leftVal  = ELEM_FLT2(eig, leftPt);
const float rightVal = ELEM_FLT2(eig, rightPt);
const bool compareResult = leftVal > rightVal;
float2 greater = compareResult ? leftPt:rightPt;
float2 lesser  = compareResult ? rightPt:leftPt;
corners[leftId]  = sortOrder ? lesser : greater;
corners[rightId] = sortOrder ? greater : lesser;
}
__kernel
void sortCorners_selectionSortLocal
(
image2d_t eig,
__global float2 * corners,
const int count,
__local float2 * scratch
)
{
int          i  = get_local_id(0);
int numOfGroups = get_num_groups(0);
int groupID     = get_group_id(0);
int         wg  = get_local_size(0);
int n;
int offset   = groupID * wg;
int same     = 0;
corners      += offset;
n = (groupID == (numOfGroups-1))? (count - wg*(numOfGroups-1)) : wg;
float2 pt1, pt2;
pt1 = corners[min(i, n)];
scratch[i] = pt1;
barrier(CLK_LOCAL_MEM_FENCE);
if(i >= n)
{
return;
}
float val1 = ELEM_FLT2(eig, pt1);
float val2;
int pos = 0;
for (int j=0;j val1) 
pos++;
else 
{
if(val1 > val2)
continue;
else 
{
same++;
}
}
}
for (int j=0; j< same; j++)      
corners[pos + j] = pt1;
}
__kernel
void sortCorners_selectionSortFinal
(
image2d_t eig,
__global float2 * corners,
const int count
)
{
const int          i  = get_local_id(0);
const int numOfGroups = get_num_groups(0);
const int groupID     = get_group_id(0);
const int         wg  = get_local_size(0);
int pos = 0, same = 0;
const int offset = get_group_id(0) * wg;
const int remainder = count - wg*(numOfGroups-1);
if((offset + i ) >= count)
return;
float2 pt1, pt2;
pt1 = corners[groupID*wg + i];
float val1 = ELEM_FLT2(eig, pt1);
float val2;
for(int j=0; j val2)
break;
else
{
if( val2 > val1 )
pos++;
else 
same++;
}
}
}
for(int k=0; k val2)
break;
else
{
if(val2 > val1)
pos++;
else 
same++;
}
}  
for (int j=0; j< same; j++)      
corners[pos + j] = pt1;
}
#ifdef BORDER_CONSTANT
#define ELEM(i,l_edge,r_edge,elem1,elem2) (i)<(l_edge) | (i) >= (r_edge) ? (elem1) : (elem2)
#endif
#ifdef BORDER_REPLICATE
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? (l_edge) : (addr)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ? (r_edge)-1 : (addr)
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? -(i)-1 : (addr)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_REFLECT_101
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? -(i) : (addr)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? (i)+(r_edge) : (addr)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ?   (i)-(r_edge) : (addr)
#endif
__kernel void copymakeborder
(__global const GENTYPE *src,
__global GENTYPE *dst,
const int dst_cols,
const int dst_rows,
const int src_cols,
const int src_rows,
const int src_step_in_pixel,
const int src_offset_in_pixel,
const int dst_step_in_pixel,
const int dst_offset_in_pixel,
const int top,
const int left,
const GENTYPE val
)
{
int x = get_global_id(0);
int y = get_global_id(1);
int src_x = x-left;
int src_y = y-top;
int src_addr = mad24(src_y,src_step_in_pixel,src_x+src_offset_in_pixel);
int dst_addr = mad24(y,dst_step_in_pixel,x+dst_offset_in_pixel);
int con = (src_x >= 0) && (src_x < src_cols) && (src_y >= 0) && (src_y < src_rows);
if(con)
{
dst[dst_addr] = src[src_addr];
}
else
{
#ifdef BORDER_CONSTANT
if((x= 0) && (src_x+3 < src_cols) && (src_y >= 0) && (src_y < src_rows);
if(con)
{
uchar4 tmp = vload4(0,src+src_addr);
*(__global uchar4*)(dst+dst_addr) = tmp;
}
else
{
#ifdef BORDER_CONSTANT
if((((src_x<0) && (src_x+3>=0))||(src_x < src_cols) && (src_x+3 >= src_cols)) && (src_y >= 0) && (src_y < src_rows))
{
int4 addr;
uchar4 tmp;
addr.x = ((src_x < 0) || (src_x>= src_cols)) ? 0 : src_addr;
addr.y = ((src_x+1 < 0) || (src_x+1>= src_cols)) ? 0 : (src_addr+1);
addr.z = ((src_x+2 < 0) || (src_x+2>= src_cols)) ? 0 : (src_addr+2);
addr.w = ((src_x+3 < 0) || (src_x+3>= src_cols)) ? 0 : (src_addr+3);
tmp.x = src[addr.x];
tmp.y = src[addr.y];
tmp.z = src[addr.z];
tmp.w = src[addr.w];
tmp.x = (src_x >=0)&&(src_x  < src_cols) ? tmp.x : val;
tmp.y = (src_x+1 >=0)&&(src_x +1 < src_cols) ? tmp.y : val;
tmp.z = (src_x+2 >=0)&&(src_x +2 < src_cols) ? tmp.z : val;
tmp.w = (src_x+3 >=0)&&(src_x +3 < src_cols) ? tmp.w : val;
*(__global uchar4*)(dst+dst_addr) = tmp;
}
else if((x> 2) + min(max(gx - 8, 0), cols - 1)];
smem[y][x + 16] = src[min(max(gy - 8, 0), rows - 1)*(src_step >> 2) + min(gx + 8, cols - 1)];
smem[y + 16][x] = src[min(gy + 8, rows - 1)*(src_step >> 2) + min(max(gx - 8, 0), cols - 1)];
smem[y + 16][x + 16] = src[min(gy + 8, rows - 1)*(src_step >> 2) + min(gx + 8, cols - 1)];
barrier(CLK_LOCAL_MEM_FENCE);
if (gx < cols && gy < rows)
{
float res = 0;
for (int i = 0; i < kHeight; ++i)
{
for (int j = 0; j < kWidth; ++j)
{
res += smem[y + 8 - kHeight / 2 + i][x + 8 - kWidth / 2 + j] * temp1[i * (k_step>>2) + j];
}
}
dst[gy*(dst_step >> 2)+gx] = res;
}
}
#pragma OPENCL EXTENSION cl_amd_printf : enable
#if defined (__ATI__)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#elif defined (__NVIDIA__)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void columnSum_C1_D5(__global float* src,__global float* dst,int srcCols,int srcRows,int srcStep,int dstStep)
{
const int x = get_global_id(0);
srcStep >>= 2;
dstStep >>= 2;
if (x < srcCols)
{
int srcIdx = x ;
int dstIdx = x ;
float sum = 0;
for (int y = 0; y < srcRows; ++y)
{
sum += src[srcIdx];
dst[dstIdx] = sum;
srcIdx += srcStep;
dstIdx += dstStep;
}
}
}
#ifndef WAVE_SIZE
#define WAVE_SIZE 1
#endif
int calc_lut(__local int* smem, int val, int tid)
{
smem[tid] = val;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid == 0)
{
for (int i = 1; i < 256; ++i)
{
smem[i] += smem[i - 1];
}
}
barrier(CLK_LOCAL_MEM_FENCE);
return smem[tid];
}
#ifdef CPU
void reduce(volatile __local int* smem, int val, int tid)
{
smem[tid] = val;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 128)
{ 
smem[tid] = val += smem[tid + 128];
} 
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 64)
{ 
smem[tid] = val += smem[tid + 64];
} 
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem[tid] += smem[tid + 32];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16)
{
smem[tid] += smem[tid + 16];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8)
{
smem[tid] += smem[tid + 8];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 4)
{
smem[tid] += smem[tid + 4];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 2)
{
smem[tid] += smem[tid + 2];
}
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 1)
{
smem[256] = smem[tid] + smem[tid + 1];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
#else
void reduce(__local volatile int* smem, int val, int tid)
{
smem[tid] = val;
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 128)
{ 
smem[tid] = val += smem[tid + 128];
} 
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 64)
{ 
smem[tid] = val += smem[tid + 64];
} 
barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 32)
{
smem[tid] += smem[tid + 32];
#if WAVE_SIZE < 32
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 16) {
#endif
smem[tid] += smem[tid + 16];
#if WAVE_SIZE < 16
} barrier(CLK_LOCAL_MEM_FENCE);
if (tid < 8) {
#endif
smem[tid] += smem[tid + 8];
smem[tid] += smem[tid + 4];
smem[tid] += smem[tid + 2];
smem[tid] += smem[tid + 1];
}
}
#endif
__kernel void calcLut(__global __const uchar * src, __global uchar * lut,
const int srcStep, const int dstStep,
const int2 tileSize, const int tilesX,
const int clipLimit, const float lutScale)
{
__local int smem[512];
const int tx = get_group_id(0);
const int ty = get_group_id(1);
const unsigned int tid = get_local_id(1) * get_local_size(0)
+ get_local_id(0);
smem[tid] = 0;
barrier(CLK_LOCAL_MEM_FENCE);
for (int i = get_local_id(1); i < tileSize.y; i += get_local_size(1))
{
__global const uchar* srcPtr = src + mad24( ty * tileSize.y + i,
srcStep, tx * tileSize.x );
for (int j = get_local_id(0); j < tileSize.x; j += get_local_size(0))
{
const int data = srcPtr[j];
atomic_inc(&smem[data]);
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int tHistVal = smem[tid];
barrier(CLK_LOCAL_MEM_FENCE);
if (clipLimit > 0)
{
int clipped = 0;
if (tHistVal > clipLimit)
{
clipped = tHistVal - clipLimit;
tHistVal = clipLimit;
}
reduce(smem, clipped, tid);
barrier(CLK_LOCAL_MEM_FENCE);
#ifdef CPU
clipped = smem[256];
#else
clipped = smem[0];
#endif
__local int totalClipped;
if (tid == 0)
totalClipped = clipped;
barrier(CLK_LOCAL_MEM_FENCE);
int redistBatch = totalClipped / 256;
tHistVal += redistBatch;
int residual = totalClipped - redistBatch * 256;
if (tid < residual)
++tHistVal;
}
const int lutVal = calc_lut(smem, tHistVal, tid);
uint ires = (uint)convert_int_rte(lutScale * lutVal);
lut[(ty * tilesX + tx) * dstStep + tid] =
convert_uchar(clamp(ires, (uint)0, (uint)255));
}
__kernel void transform(__global __const uchar * src,
__global uchar * dst,
__global uchar * lut,
const int srcStep, const int dstStep, const int lutStep,
const int cols, const int rows,
const int2 tileSize,
const int tilesX, const int tilesY)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if (x >= cols || y >= rows)
return;
const float tyf = (convert_float(y) / tileSize.y) - 0.5f;
int ty1 = convert_int_rtn(tyf);
int ty2 = ty1 + 1;
const float ya = tyf - ty1;
ty1 = max(ty1, 0);
ty2 = min(ty2, tilesY - 1);
const float txf = (convert_float(x) / tileSize.x) - 0.5f;
int tx1 = convert_int_rtn(txf);
int tx2 = tx1 + 1;
const float xa = txf - tx1;
tx1 = max(tx1, 0);
tx2 = min(tx2, tilesX - 1);
const int srcVal = src[mad24(y, srcStep, x)];
float res = 0;
res += lut[mad24(ty1 * tilesX + tx1, lutStep, srcVal)] * ((1.0f - xa) * (1.0f - ya));
res += lut[mad24(ty1 * tilesX + tx2, lutStep, srcVal)] * ((xa) * (1.0f - ya));
res += lut[mad24(ty2 * tilesX + tx1, lutStep, srcVal)] * ((1.0f - xa) * (ya));
res += lut[mad24(ty2 * tilesX + tx2, lutStep, srcVal)] * ((xa) * (ya));
uint ires = (uint)convert_int_rte(res);
dst[mad24(y, dstStep, x)] = convert_uchar(clamp(ires, (uint)0, (uint)255));
}
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
#ifdef L2GRAD
inline float calc(int x, int y)
{
return sqrt((float)(x * x + y * y));
}
#else
inline float calc(int x, int y)
{
return (float)abs(x) + abs(y);
}
#endif
__kernel
void
__attribute__((reqd_work_group_size(16,16,1)))
calcSobelRowPass
(
__global const uchar * src,
__global int * dx_buf,
__global int * dy_buf,
int rows,
int cols,
int src_step,
int src_offset,
int dx_buf_step,
int dx_buf_offset,
int dy_buf_step,
int dy_buf_offset
)
{
dx_buf_step   /= sizeof(*dx_buf);
dx_buf_offset /= sizeof(*dx_buf);
dy_buf_step   /= sizeof(*dy_buf);
dy_buf_offset /= sizeof(*dy_buf);
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
__local int smem[16][18];
smem[lidy][lidx + 1] =
src[gidx + min(gidy, rows - 1) * src_step + src_offset];
if(lidx == 0)
{
smem[lidy][0]  =
src[max(gidx - 1,  0)        + min(gidy, rows - 1) * src_step + src_offset];
smem[lidy][17] =
src[min(gidx + 16, cols - 1) + min(gidy, rows - 1) * src_step + src_offset];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gidy < rows && gidx < cols)
{
dx_buf[gidx + gidy * dx_buf_step + dx_buf_offset] =
-smem[lidy][lidx] + smem[lidy][lidx + 2];
dy_buf[gidx + gidy * dy_buf_step + dy_buf_offset] =
smem[lidy][lidx] + 2 * smem[lidy][lidx + 1] + smem[lidy][lidx + 2];
}
}
__kernel
void
__attribute__((reqd_work_group_size(16,16,1)))
calcMagnitude_buf
(
__global const int * dx_buf,
__global const int * dy_buf,
__global int * dx,
__global int * dy,
__global float * mag,
int rows,
int cols,
int dx_buf_step,
int dx_buf_offset,
int dy_buf_step,
int dy_buf_offset,
int dx_step,
int dx_offset,
int dy_step,
int dy_offset,
int mag_step,
int mag_offset
)
{
dx_buf_step    /= sizeof(*dx_buf);
dx_buf_offset  /= sizeof(*dx_buf);
dy_buf_step    /= sizeof(*dy_buf);
dy_buf_offset  /= sizeof(*dy_buf);
dx_step    /= sizeof(*dx);
dx_offset  /= sizeof(*dx);
dy_step    /= sizeof(*dy);
dy_offset  /= sizeof(*dy);
mag_step   /= sizeof(*mag);
mag_offset /= sizeof(*mag);
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
__local int sdx[18][16];
__local int sdy[18][16];
sdx[lidy + 1][lidx] =
dx_buf[gidx + min(gidy, rows - 1) * dx_buf_step + dx_buf_offset];
sdy[lidy + 1][lidx] =
dy_buf[gidx + min(gidy, rows - 1) * dy_buf_step + dy_buf_offset];
if(lidy == 0)
{
sdx[0][lidx]  =
dx_buf[gidx + min(max(gidy-1,0),rows-1) * dx_buf_step + dx_buf_offset];
sdx[17][lidx] =
dx_buf[gidx + min(gidy + 16, rows - 1)  * dx_buf_step + dx_buf_offset];
sdy[0][lidx]  =
dy_buf[gidx + min(max(gidy-1,0),rows-1) * dy_buf_step + dy_buf_offset];
sdy[17][lidx] =
dy_buf[gidx + min(gidy + 16, rows - 1)  * dy_buf_step + dy_buf_offset];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gidx < cols && gidy < rows)
{
int x =  sdx[lidy][lidx] + 2 * sdx[lidy + 1][lidx] + sdx[lidy + 2][lidx];
int y = -sdy[lidy][lidx] + sdy[lidy + 2][lidx];
dx[gidx + gidy * dx_step + dx_offset] = x;
dy[gidx + gidy * dy_step + dy_offset] = y;
mag[(gidx + 1) + (gidy + 1) * mag_step + mag_offset] = calc(x, y);
}
}
__kernel
void calcMagnitude
(
__global const int * dx,
__global const int * dy,
__global float * mag,
int rows,
int cols,
int dx_step,
int dx_offset,
int dy_step,
int dy_offset,
int mag_step,
int mag_offset
)
{
dx_step    /= sizeof(*dx);
dx_offset  /= sizeof(*dx);
dy_step    /= sizeof(*dy);
dy_offset  /= sizeof(*dy);
mag_step   /= sizeof(*mag);
mag_offset /= sizeof(*mag);
int gidx = get_global_id(0);
int gidy = get_global_id(1);
if(gidy < rows && gidx < cols)
{
mag[(gidx + 1) + (gidy + 1) * mag_step + mag_offset] =
calc(
dx[gidx + gidy * dx_step + dx_offset],
dy[gidx + gidy * dy_step + dy_offset]
);
}
}
#define CANNY_SHIFT 15
#define TG22        (int)(0.4142135623730950488016887242097*(1< low_thresh)
{
const int tg22x = x * TG22;
const int tg67x = tg22x + (x << (1 + CANNY_SHIFT));
y <<= CANNY_SHIFT;
if(y < tg22x)
{
if(m > smem[lidy + 1][lidx] && m >= smem[lidy + 1][lidx + 2])
{
edge_type = 1 + (int)(m > high_thresh);
}
}
else if (y > tg67x)
{
if(m > smem[lidy][lidx + 1]&& m >= smem[lidy + 2][lidx + 1])
{
edge_type = 1 + (int)(m > high_thresh);
}
}
else
{
if(m > smem[lidy][lidx + 1 - s]&& m > smem[lidy + 2][lidx + 1 + s])
{
edge_type = 1 + (int)(m > high_thresh);
}
}
}
map[gidx + 1 + (gidy + 1) * map_step] = edge_type;
}
}
#undef CANNY_SHIFT
#undef TG22
__kernel
void
__attribute__((reqd_work_group_size(16,16,1)))
edgesHysteresisLocal
(
__global int * map,
__global ushort2 * st,
__global unsigned int * counter,
int rows,
int cols,
int map_step,
int map_offset
)
{
map_step   /= sizeof(*map);
map_offset /= sizeof(*map);
map += map_offset;
__local int smem[18][18];
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
int grp_idx = get_global_id(0) & 0xFFFFF0;
int grp_idy = get_global_id(1) & 0xFFFFF0;
int tid = lidx + lidy * 16;
int lx = tid % 18;
int ly = tid / 18;
if(ly < 14)
{
smem[ly][lx] =
map[grp_idx + lx + min(grp_idy + ly, rows - 1) * map_step];
}
if(ly < 4 && grp_idy + ly + 14 <= rows && grp_idx + lx <= cols)
{
smem[ly + 14][lx] =
map[grp_idx + lx + min(grp_idy + ly + 14, rows - 1) * map_step];
}
barrier(CLK_LOCAL_MEM_FENCE);
if(gidy < rows && gidx < cols)
{
int n;
#pragma unroll
for (int k = 0; k < 16; ++k)
{
n = 0;
if (smem[lidy + 1][lidx + 1] == 1)
{
n += smem[lidy    ][lidx    ] == 2;
n += smem[lidy    ][lidx + 1] == 2;
n += smem[lidy    ][lidx + 2] == 2;
n += smem[lidy + 1][lidx    ] == 2;
n += smem[lidy + 1][lidx + 2] == 2;
n += smem[lidy + 2][lidx    ] == 2;
n += smem[lidy + 2][lidx + 1] == 2;
n += smem[lidy + 2][lidx + 2] == 2;
}
if (n > 0)
smem[lidy + 1][lidx + 1] = 2;
}
const int e = smem[lidy + 1][lidx + 1];
map[gidx + 1 + (gidy + 1) * map_step] = e;
n = 0;
if(e == 2)
{
n += smem[lidy    ][lidx    ] == 1;
n += smem[lidy    ][lidx + 1] == 1;
n += smem[lidy    ][lidx + 2] == 1;
n += smem[lidy + 1][lidx    ] == 1;
n += smem[lidy + 1][lidx + 2] == 1;
n += smem[lidy + 2][lidx    ] == 1;
n += smem[lidy + 2][lidx + 1] == 1;
n += smem[lidy + 2][lidx + 2] == 1;
}
if(n > 0)
{
unsigned int ind = atomic_inc(counter);
st[ind] = (ushort2)(gidx + 1, gidy + 1);
}
}
}
__constant int c_dx[8] = {-1,  0,  1, -1, 1, -1, 0, 1};
__constant int c_dy[8] = {-1, -1, -1,  0, 0,  1, 1, 1};
#define stack_size 512
__kernel
void
__attribute__((reqd_work_group_size(128,1,1)))
edgesHysteresisGlobal
(
__global int * map,
__global ushort2 * st1,
__global ushort2 * st2,
__global int * counter,
int rows,
int cols,
int count,
int map_step,
int map_offset
)
{
map_step   /= sizeof(*map);
map_offset /= sizeof(*map);
map += map_offset;
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
int grp_idx = get_group_id(0);
int grp_idy = get_group_id(1);
__local unsigned int s_counter;
__local unsigned int s_ind;
__local ushort2 s_st[stack_size];
if(lidx == 0)
{
s_counter = 0;
}
barrier(CLK_LOCAL_MEM_FENCE);
int ind = mad24(grp_idy, (int)get_local_size(0), grp_idx);
if(ind < count)
{
ushort2 pos = st1[ind];
if (pos.x > 0 && pos.x <= cols && pos.y > 0 && pos.y <= rows)
{
if (lidx < 8)
{
pos.x += c_dx[lidx];
pos.y += c_dy[lidx];
if (map[pos.x + pos.y * map_step] == 1)
{
map[pos.x + pos.y * map_step] = 2;
ind = atomic_inc(&s_counter);
s_st[ind] = pos;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
while (s_counter > 0 && s_counter <= stack_size - get_local_size(0))
{
const int subTaskIdx = lidx >> 3;
const int portion = min(s_counter, (uint)(get_local_size(0)>> 3));
pos.x = pos.y = 0;
if (subTaskIdx < portion)
pos = s_st[s_counter - 1 - subTaskIdx];
barrier(CLK_LOCAL_MEM_FENCE);
if (lidx == 0)
s_counter -= portion;
barrier(CLK_LOCAL_MEM_FENCE);
if (pos.x > 0 && pos.x <= cols && pos.y > 0 && pos.y <= rows)
{
pos.x += c_dx[lidx & 7];
pos.y += c_dy[lidx & 7];
if (map[pos.x + pos.y * map_step] == 1)
{
map[pos.x + pos.y * map_step] = 2;
ind = atomic_inc(&s_counter);
s_st[ind] = pos;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if (s_counter > 0)
{
if (lidx == 0)
{
ind = atomic_add(counter, s_counter);
s_ind = ind - s_counter;
}
barrier(CLK_LOCAL_MEM_FENCE);
ind = s_ind;
for (int i = lidx; i < s_counter; i += get_local_size(0))
{
st2[ind + i] = s_st[i];
}
}
}
}
}
#undef stack_size
__kernel
void getEdges
(
__global const int * map,
__global uchar * dst,
int rows,
int cols,
int map_step,
int map_offset,
int dst_step,
int dst_offset
)
{
map_step   /= sizeof(*map);
map_offset /= sizeof(*map);
int gidx = get_global_id(0);
int gidy = get_global_id(1);
if(gidy < rows && gidx < cols)
{
dst[gidx + gidy * dst_step] = (uchar)(-(map[gidx + 1 + (gidy + 1) * map_step + map_offset] >> 1));
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#ifdef BORDER_REPLICATE
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (l_edge)   : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (r_edge)-1 : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (t_edge)   :(i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (b_edge)-1 :(addr))
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)-1               : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)-1 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-1+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_REFLECT101
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)                 : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)                 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-2+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (i)+(r_edge) : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (i)-(r_edge) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (i)+(b_edge) : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (i)-(b_edge) : (addr))
#endif
#define THREADS 256
#define ELEM(i, l_edge, r_edge, elem1, elem2) (i) >= (l_edge) && (i) < (r_edge) ? (elem1) : (elem2)
__kernel void calcMinEigenVal(__global const float *Dx,__global const float *Dy, __global float *dst,
int dx_offset, int dx_whole_rows, int dx_whole_cols, int dx_step,
int dy_offset, int dy_whole_rows, int dy_whole_cols, int dy_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step,
float k)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
const int glx = get_global_id(0);
const int gly = get_global_id(1);
int dx_x_off = (dx_offset % dx_step) >> 2;
int dx_y_off = dx_offset / dx_step;
int dy_x_off = (dy_offset % dy_step) >> 2;
int dy_y_off = dy_offset / dy_step;
int dst_x_off = (dst_offset % dst_step) >> 2;
int dst_y_off = dst_offset / dst_step;
int dx_startX = gX * (THREADS-ksX+1) - anX + dx_x_off;
int dx_startY = (gY << 1) - anY + dx_y_off;
int dy_startX = gX * (THREADS-ksX+1) - anX + dy_x_off;
int dy_startY = (gY << 1) - anY + dy_y_off;
int dst_startX = gX * (THREADS-ksX+1) + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
float dx_data[ksY+1],dy_data[ksY+1],data[3][ksY+1];
__local float temp[6][THREADS];
#ifdef BORDER_CONSTANT
bool dx_con,dy_con;
float dx_s,dy_s;
for(int i=0; i < ksY+1; i++)
{
dx_con = dx_startX+col >= 0 && dx_startX+col < dx_whole_cols && dx_startY+i >= 0 && dx_startY+i < dx_whole_rows;
dx_s = Dx[(dx_startY+i)*(dx_step>>2)+(dx_startX+col)];
dx_data[i] = dx_con ? dx_s : 0.0;
dy_con = dy_startX+col >= 0 && dy_startX+col < dy_whole_cols && dy_startY+i >= 0 && dy_startY+i < dy_whole_rows;
dy_s = Dy[(dy_startY+i)*(dy_step>>2)+(dy_startX+col)];
dy_data[i] = dy_con ? dy_s : 0.0;
data[0][i] = dx_data[i] * dx_data[i];
data[1][i] = dx_data[i] * dy_data[i];
data[2][i] = dy_data[i] * dy_data[i];
}
#else
int clamped_col = min(dst_cols, col);
for(int i=0; i < ksY+1; i++)
{
int dx_selected_row;
int dx_selected_col;
dx_selected_row = ADDR_H(dx_startY+i, 0, dx_whole_rows);
dx_selected_row = ADDR_B(dx_startY+i, dx_whole_rows, dx_selected_row);
dx_selected_col = ADDR_L(dx_startX+clamped_col, 0, dx_whole_cols);
dx_selected_col = ADDR_R(dx_startX+clamped_col, dx_whole_cols, dx_selected_col);
dx_data[i] = Dx[dx_selected_row * (dx_step>>2) + dx_selected_col];
int dy_selected_row;
int dy_selected_col;
dy_selected_row = ADDR_H(dy_startY+i, 0, dy_whole_rows);
dy_selected_row = ADDR_B(dy_startY+i, dy_whole_rows, dy_selected_row);
dy_selected_col = ADDR_L(dy_startX+clamped_col, 0, dy_whole_cols);
dy_selected_col = ADDR_R(dy_startX+clamped_col, dy_whole_cols, dy_selected_col);
dy_data[i] = Dy[dy_selected_row * (dy_step>>2) + dy_selected_col];
data[0][i] = dx_data[i] * dx_data[i];
data[1][i] = dx_data[i] * dy_data[i];
data[2][i] = dy_data[i] * dy_data[i];
}
#endif
float sum0 = 0.0, sum1 = 0.0, sum2 = 0.0;
for(int i=1; i < ksY; i++)
{
sum0 += (data[0][i]);
sum1 += (data[1][i]);
sum2 += (data[2][i]);
}
float sum01,sum02,sum11,sum12,sum21,sum22;
sum01 = sum0 + (data[0][0]);
sum02 = sum0 + (data[0][ksY]);
temp[0][col] = sum01;
temp[1][col] = sum02;
sum11 = sum1 + (data[1][0]);
sum12 = sum1 + (data[1][ksY]);
temp[2][col] = sum11;
temp[3][col] = sum12;
sum21 = sum2 + (data[2][0]);
sum22 = sum2 + (data[2][ksY]);
temp[4][col] = sum21;
temp[5][col] = sum22;
barrier(CLK_LOCAL_MEM_FENCE);
if(col < (THREADS-(ksX-1)))
{
col += anX;
int posX = dst_startX - dst_x_off + col - anX;
int posY = (gly << 1);
int till = (ksX + 1)%2;
float tmp_sum[6]={ 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0 };
for(int k=0; k<6; k++)
for(int i=-anX; i<=anX - till; i++)
{
tmp_sum[k] += temp[k][col+i];
}
if(posX < dst_cols && (posY) < dst_rows)
{
float a = tmp_sum[0] * 0.5f;
float b = tmp_sum[2];
float c = tmp_sum[4] * 0.5f;
dst[(dst_startY+0) * (dst_step>>2)+ dst_startX + col - anX] = (float)((a+c) - sqrt((a-c)*(a-c) + b*b));
}
if(posX < dst_cols && (posY + 1) < dst_rows)
{
float a = tmp_sum[1] * 0.5f;
float b = tmp_sum[3];
float c = tmp_sum[5] * 0.5f;
dst[(dst_startY+1) * (dst_step>>2)+ dst_startX + col - anX] = (float)((a+c) - sqrt((a-c)*(a-c) + b*b));
}
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#ifdef BORDER_REPLICATE
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (l_edge)   : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (r_edge)-1 : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (t_edge)   :(i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (b_edge)-1 :(addr))
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)-1               : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)-1 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-1+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_REFLECT101
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)                 : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)                 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-2+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (i)+(r_edge) : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (i)-(r_edge) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (i)+(b_edge) : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (i)-(b_edge) : (addr))
#endif
#define THREADS 256
#define ELEM(i, l_edge, r_edge, elem1, elem2) (i) >= (l_edge) && (i) < (r_edge) ? (elem1) : (elem2)
__kernel void calcHarris(__global const float *Dx,__global const float *Dy, __global float *dst,
int dx_offset, int dx_whole_rows, int dx_whole_cols, int dx_step,
int dy_offset, int dy_whole_rows, int dy_whole_cols, int dy_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step,
float k)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
const int glx = get_global_id(0);
const int gly = get_global_id(1);
int dx_x_off = (dx_offset % dx_step) >> 2;
int dx_y_off = dx_offset / dx_step;
int dy_x_off = (dy_offset % dy_step) >> 2;
int dy_y_off = dy_offset / dy_step;
int dst_x_off = (dst_offset % dst_step) >> 2;
int dst_y_off = dst_offset / dst_step;
int dx_startX = gX * (THREADS-ksX+1) - anX + dx_x_off;
int dx_startY = (gY << 1) - anY + dx_y_off;
int dy_startX = gX * (THREADS-ksX+1) - anX + dy_x_off;
int dy_startY = (gY << 1) - anY + dy_y_off;
int dst_startX = gX * (THREADS-ksX+1) + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
float dx_data[ksY+1],dy_data[ksY+1],data[3][ksY+1];
__local float temp[6][THREADS];
#ifdef BORDER_CONSTANT
bool dx_con,dy_con;
float dx_s,dy_s;
for(int i=0; i < ksY+1; i++)
{
dx_con = dx_startX+col >= 0 && dx_startX+col < dx_whole_cols && dx_startY+i >= 0 && dx_startY+i < dx_whole_rows;
dx_s = Dx[(dx_startY+i)*(dx_step>>2)+(dx_startX+col)];
dx_data[i] = dx_con ? dx_s : 0.0;
dy_con = dy_startX+col >= 0 && dy_startX+col < dy_whole_cols && dy_startY+i >= 0 && dy_startY+i < dy_whole_rows;
dy_s = Dy[(dy_startY+i)*(dy_step>>2)+(dy_startX+col)];
dy_data[i] = dy_con ? dy_s : 0.0;
data[0][i] = dx_data[i] * dx_data[i];
data[1][i] = dx_data[i] * dy_data[i];
data[2][i] = dy_data[i] * dy_data[i];
}
#else
int clamped_col = min(dst_cols, col);
for(int i=0; i < ksY+1; i++)
{
int dx_selected_row;
int dx_selected_col;
dx_selected_row = ADDR_H(dx_startY+i, 0, dx_whole_rows);
dx_selected_row = ADDR_B(dx_startY+i, dx_whole_rows, dx_selected_row);
dx_selected_col = ADDR_L(dx_startX+clamped_col, 0, dx_whole_cols);
dx_selected_col = ADDR_R(dx_startX+clamped_col, dx_whole_cols, dx_selected_col);
dx_data[i] = Dx[dx_selected_row * (dx_step>>2) + dx_selected_col];
int dy_selected_row;
int dy_selected_col;
dy_selected_row = ADDR_H(dy_startY+i, 0, dy_whole_rows);
dy_selected_row = ADDR_B(dy_startY+i, dy_whole_rows, dy_selected_row);
dy_selected_col = ADDR_L(dy_startX+clamped_col, 0, dy_whole_cols);
dy_selected_col = ADDR_R(dy_startX+clamped_col, dy_whole_cols, dy_selected_col);
dy_data[i] = Dy[dy_selected_row * (dy_step>>2) + dy_selected_col];
data[0][i] = dx_data[i] * dx_data[i];
data[1][i] = dx_data[i] * dy_data[i];
data[2][i] = dy_data[i] * dy_data[i];
}
#endif
float sum0 = 0.0, sum1 = 0.0, sum2 = 0.0;
for(int i=1; i < ksY; i++)
{
sum0 += (data[0][i]);
sum1 += (data[1][i]);
sum2 += (data[2][i]);
}
float sum01,sum02,sum11,sum12,sum21,sum22;
sum01 = sum0 + (data[0][0]);
sum02 = sum0 + (data[0][ksY]);
temp[0][col] = sum01;
temp[1][col] = sum02;
sum11 = sum1 + (data[1][0]);
sum12 = sum1 + (data[1][ksY]);
temp[2][col] = sum11;
temp[3][col] = sum12;
sum21 = sum2 + (data[2][0]);
sum22 = sum2 + (data[2][ksY]);
temp[4][col] = sum21;
temp[5][col] = sum22;
barrier(CLK_LOCAL_MEM_FENCE);
if(col < (THREADS-(ksX-1)))
{
col += anX;
int posX = dst_startX - dst_x_off + col - anX;
int posY = (gly << 1);
int till = (ksX + 1)%2;
float tmp_sum[6]={ 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0 };
for(int k=0; k<6; k++)
for(int i=-anX; i<=anX - till; i++)
{
tmp_sum[k] += temp[k][col+i];
}
if(posX < dst_cols && (posY) < dst_rows)
{
dst[(dst_startY+0) * (dst_step>>2)+ dst_startX + col - anX] =
tmp_sum[0] * tmp_sum[4] - tmp_sum[2] * tmp_sum[2] - k * (tmp_sum[0] + tmp_sum[4]) * (tmp_sum[0] + tmp_sum[4]);
}
if(posX < dst_cols && (posY + 1) < dst_rows)
{
dst[(dst_startY+1) * (dst_step>>2)+ dst_startX + col - anX] =
tmp_sum[1] * tmp_sum[5] - tmp_sum[3] * tmp_sum[3] - k * (tmp_sum[1] + tmp_sum[5]) * (tmp_sum[1] + tmp_sum[5]);
}
}
}
__kernel void bilateral_C1_D0(__global uchar *dst,
__global const uchar *src,
const int dst_rows,
const int dst_cols,
const int maxk,
const int radius,
const int dst_step,
const int dst_offset,
const int src_step,
const int src_rows,
const int src_cols,
__constant float *color_weight,
__constant float *space_weight,
__constant int *space_ofs)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
if((gidy> 16;
int height = scaleinfo1.x & 0xffff;
int grpnumperline = (scaleinfo1.y & 0xffff0000) >> 16;
int totalgrp = scaleinfo1.y & 0xffff;
float factor = as_float(scaleinfo1.w);
float correction_t = correction[scalei];
int ystep = (int)(max(2.0f, factor) + 0.5f);
for (int grploop = get_group_id(0); grploop < totalgrp; grploop += grpnumx)
{
int4 cascadeinfo = p[scalei];
int grpidy = grploop / grpnumperline;
int grpidx = grploop - mul24(grpidy, grpnumperline);
int ix = mad24(grpidx, grpszx, lclidx);
int iy = mad24(grpidy, grpszy, lclidy);
int x = ix * ystep;
int y = iy * ystep;
lcloutindex[lcl_id] = 0;
lclcount[0] = 0;
int nodecounter;
float mean, variance_norm_factor;
{
const int p_offset = mad24(y, step, x);
cascadeinfo.x += p_offset;
cascadeinfo.z += p_offset;
mean = (sum[clamp(mad24(cascadeinfo.y, step, cascadeinfo.x), 0, max_idx)]
- sum[clamp(mad24(cascadeinfo.y, step, cascadeinfo.z), 0, max_idx)] -
sum[clamp(mad24(cascadeinfo.w, step, cascadeinfo.x), 0, max_idx)]
+ sum[clamp(mad24(cascadeinfo.w, step, cascadeinfo.z), 0, max_idx)])
* correction_t;
variance_norm_factor = sqsum[clamp(mad24(cascadeinfo.y, step, cascadeinfo.x), 0, max_idx)]
- sqsum[clamp(mad24(cascadeinfo.y, step, cascadeinfo.z), 0, max_idx)] -
sqsum[clamp(mad24(cascadeinfo.w, step, cascadeinfo.x), 0, max_idx)]
+ sqsum[clamp(mad24(cascadeinfo.w, step, cascadeinfo.z), 0, max_idx)];
variance_norm_factor = variance_norm_factor * correction_t - mean * mean;
variance_norm_factor = variance_norm_factor >= 0.f ? sqrt(variance_norm_factor) : 1.f;
bool result = true;
nodecounter = startnode + nodecount * scalei;
for (int stageloop = start_stage; (stageloop < end_stage) && result; stageloop++)
{
float stage_sum = 0.f;
int   stagecount = stagecascadeptr[stageloop].count;
for (int nodeloop = 0; nodeloop < stagecount;)
{
__global GpuHidHaarTreeNode *currentnodeptr = (nodeptr + nodecounter);
int4 info1 = *(__global int4 *)(&(currentnodeptr->p[0][0]));
int4 info2 = *(__global int4 *)(&(currentnodeptr->p[1][0]));
int4 info3 = *(__global int4 *)(&(currentnodeptr->p[2][0]));
float4 w = *(__global float4 *)(&(currentnodeptr->weight[0]));
float3 alpha3 = *(__global float3 *)(&(currentnodeptr->alpha[0]));
float nodethreshold  = w.w * variance_norm_factor;
info1.x += p_offset;
info1.z += p_offset;
info2.x += p_offset;
info2.z += p_offset;
info3.x += p_offset;
info3.z += p_offset;
float classsum = (sum[clamp(mad24(info1.y, step, info1.x), 0, max_idx)]
- sum[clamp(mad24(info1.y, step, info1.z), 0, max_idx)] -
sum[clamp(mad24(info1.w, step, info1.x), 0, max_idx)]
+ sum[clamp(mad24(info1.w, step, info1.z), 0, max_idx)]) * w.x;
classsum += (sum[clamp(mad24(info2.y, step, info2.x), 0, max_idx)]
- sum[clamp(mad24(info2.y, step, info2.z), 0, max_idx)] -
sum[clamp(mad24(info2.w, step, info2.x), 0, max_idx)]
+ sum[clamp(mad24(info2.w, step, info2.z), 0, max_idx)]) * w.y;
classsum += (sum[clamp(mad24(info3.y, step, info3.x), 0, max_idx)]
- sum[clamp(mad24(info3.y, step, info3.z), 0, max_idx)] -
sum[clamp(mad24(info3.w, step, info3.x), 0, max_idx)]
+ sum[clamp(mad24(info3.w, step, info3.z), 0, max_idx)]) * w.z;
bool passThres = classsum >= nodethreshold;
#if STUMP_BASED
stage_sum += passThres ? alpha3.y : alpha3.x;
nodecounter++;
nodeloop++;
#else
bool isRootNode = (nodecounter & 1) == 0;
if(isRootNode)
{
if( (passThres && currentnodeptr->right) ||
(!passThres && currentnodeptr->left))
{
nodecounter ++;
}
else
{
stage_sum += alpha3.x;
nodecounter += 2;
nodeloop ++;
}
}
else
{
stage_sum += (passThres ? alpha3.z : alpha3.y);
nodecounter ++;
nodeloop ++;
}
#endif
}
result = (int)(stage_sum >= stagecascadeptr[stageloop].threshold);
}
barrier(CLK_LOCAL_MEM_FENCE);
if (result && (ix < width) && (iy < height))
{
int queueindex = atomic_inc(lclcount);
lcloutindex[queueindex] = (y << 16) | x;
}
barrier(CLK_LOCAL_MEM_FENCE);
int queuecount = lclcount[0];
if (lcl_id < queuecount)
{
int temp = lcloutindex[lcl_id];
int x = temp & 0xffff;
int y = (temp & (int)0xffff0000) >> 16;
temp = atomic_inc(glboutindex);
int4 candidate_result;
candidate_result.zw = (int2)convert_int_rtn(factor * 20.f);
candidate_result.x = x;
candidate_result.y = y;
candidate[outputoff + temp + lcl_id] = candidate_result;
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
}
}
__kernel void gpuscaleclassifier(global GpuHidHaarTreeNode *orinode, global GpuHidHaarTreeNode *newnode, float scale, float weight_scale, int nodenum)
{
int counter = get_global_id(0);
int tr_x[3], tr_y[3], tr_h[3], tr_w[3], i = 0;
GpuHidHaarTreeNode t1 = *(orinode + counter);
#pragma unroll
for (i = 0; i < 3; i++)
{
tr_x[i] = (int)(t1.p[i][0] * scale + 0.5f);
tr_y[i] = (int)(t1.p[i][1] * scale + 0.5f);
tr_w[i] = (int)(t1.p[i][2] * scale + 0.5f);
tr_h[i] = (int)(t1.p[i][3] * scale + 0.5f);
}
t1.weight[0] = t1.p[2][0] ? -(t1.weight[1] * tr_h[1] * tr_w[1] + t1.weight[2] * tr_h[2] * tr_w[2]) / (tr_h[0] * tr_w[0]) : -t1.weight[1] * tr_h[1] * tr_w[1] / (tr_h[0] * tr_w[0]);
counter += nodenum;
#pragma unroll
for (i = 0; i < 3; i++)
{
newnode[counter].p[i][0] = tr_x[i];
newnode[counter].p[i][1] = tr_y[i];
newnode[counter].p[i][2] = tr_x[i] + tr_w[i];
newnode[counter].p[i][3] = tr_y[i] + tr_h[i];
newnode[counter].weight[i] = t1.weight[i] * weight_scale;
}
newnode[counter].left = t1.left;
newnode[counter].right = t1.right;
newnode[counter].threshold = t1.threshold;
newnode[counter].alpha[0] = t1.alpha[0];
newnode[counter].alpha[1] = t1.alpha[1];
newnode[counter].alpha[2] = t1.alpha[2];
}
#pragma OPENCL EXTENSION cl_amd_printf : enable
#define CV_HAAR_FEATURE_MAX           3
#define calc_sum(rect,offset)        (sum[(rect).p0+offset] - sum[(rect).p1+offset] - sum[(rect).p2+offset] + sum[(rect).p3+offset])
#define calc_sum1(rect,offset,i)     (sum[(rect).p0[i]+offset] - sum[(rect).p1[i]+offset] - sum[(rect).p2[i]+offset] + sum[(rect).p3[i]+offset])
typedef int   sumtype;
typedef float sqsumtype;
#ifndef STUMP_BASED 
#define STUMP_BASED 1
#endif
typedef struct __attribute__((aligned (128) )) GpuHidHaarTreeNode
{
int p[CV_HAAR_FEATURE_MAX][4] __attribute__((aligned (64)));
float weight[CV_HAAR_FEATURE_MAX];
float threshold;
float alpha[3] __attribute__((aligned (16)));
int left __attribute__((aligned (4)));
int right __attribute__((aligned (4)));
}
GpuHidHaarTreeNode;
typedef struct __attribute__((aligned (32))) GpuHidHaarClassifier
{
int count __attribute__((aligned (4)));
GpuHidHaarTreeNode* node __attribute__((aligned (8)));
float* alpha __attribute__((aligned (8)));
}
GpuHidHaarClassifier;
typedef struct __attribute__((aligned (64))) GpuHidHaarStageClassifier
{
int  count __attribute__((aligned (4)));
float threshold __attribute__((aligned (4)));
int two_rects __attribute__((aligned (4)));
int reserved0 __attribute__((aligned (8)));
int reserved1 __attribute__((aligned (8)));
int reserved2 __attribute__((aligned (8)));
int reserved3 __attribute__((aligned (8)));
}
GpuHidHaarStageClassifier;
typedef struct __attribute__((aligned (64))) GpuHidHaarClassifierCascade
{
int  count __attribute__((aligned (4)));
int  is_stump_based __attribute__((aligned (4)));
int  has_tilted_features __attribute__((aligned (4)));
int  is_tree __attribute__((aligned (4)));
int pq0 __attribute__((aligned (4)));
int pq1 __attribute__((aligned (4)));
int pq2 __attribute__((aligned (4)));
int pq3 __attribute__((aligned (4)));
int p0 __attribute__((aligned (4)));
int p1 __attribute__((aligned (4)));
int p2 __attribute__((aligned (4)));
int p3 __attribute__((aligned (4)));
float inv_window_area __attribute__((aligned (4)));
} GpuHidHaarClassifierCascade;
__kernel void __attribute__((reqd_work_group_size(8,8,1)))gpuRunHaarClassifierCascade(
global GpuHidHaarStageClassifier * stagecascadeptr,
global int4 * info,
global GpuHidHaarTreeNode * nodeptr,
global const int * restrict sum1,
global const float * restrict sqsum1,
global int4 * candidate,
const int pixelstep,
const int loopcount,
const int start_stage,
const int split_stage,
const int end_stage,
const int startnode,
const int splitnode,
const int4 p,
const int4 pq,
const float correction)
{
int grpszx = get_local_size(0);
int grpszy = get_local_size(1);
int grpnumx = get_num_groups(0);
int grpidx = get_group_id(0);
int lclidx = get_local_id(0);
int lclidy = get_local_id(1);
int lcl_sz = mul24(grpszx,grpszy);
int lcl_id = mad24(lclidy,grpszx,lclidx);
__local int lclshare[1024];
__local int* lcldata = lclshare;
__local int* glboutindex = lcldata + 28*28;
__local int* lclcount = glboutindex + 1;
__local int* lcloutindex = lclcount + 1;
__local float* partialsum = (__local float*)(lcloutindex + (lcl_sz<<1));
glboutindex[0]=0;
int outputoff = mul24(grpidx,256);
#define WINDOWSIZE 20+1
int readwidth = ((grpszx-1 + WINDOWSIZE+3)>>2)<<2;
int readheight = grpszy-1+WINDOWSIZE;
int read_horiz_cnt = readwidth >> 2;
int total_read = mul24(read_horiz_cnt,readheight);
int read_loop = (total_read + lcl_sz - 1) >> 6;
candidate[outputoff+(lcl_id<<2)] = (int4)0;
candidate[outputoff+(lcl_id<<2)+1] = (int4)0;
candidate[outputoff+(lcl_id<<2)+2] = (int4)0;
candidate[outputoff+(lcl_id<<2)+3] = (int4)0;
for(int scalei = 0; scalei > 16;
int height = scaleinfo1.x & 0xffff;
int grpnumperline =(scaleinfo1.y & 0xffff0000) >> 16;
int totalgrp = scaleinfo1.y & 0xffff;
int imgoff = scaleinfo1.z;
float factor = as_float(scaleinfo1.w);
__global const int * sum = sum1 + imgoff;
__global const float * sqsum = sqsum1 + imgoff;
for(int grploop=grpidx; grploop=0.f ? sqrt(variance_norm_factor) : 1.f;
for(int stageloop = start_stage; (stageloop < split_stage)  && result; stageloop++ )
{
float stage_sum = 0.f;
int2 stageinfo = *(global int2*)(stagecascadeptr+stageloop);
float stagethreshold = as_float(stageinfo.y);
for(int nodeloop = 0; nodeloop < stageinfo.x; )
{
__global GpuHidHaarTreeNode* currentnodeptr = (nodeptr + nodecounter);
int4 info1 = *(__global int4*)(&(currentnodeptr->p[0][0]));
int4 info2 = *(__global int4*)(&(currentnodeptr->p[1][0]));
int4 info3 = *(__global int4*)(&(currentnodeptr->p[2][0]));
float4 w = *(__global float4*)(&(currentnodeptr->weight[0]));
float3 alpha3 = *(__global float3*)(&(currentnodeptr->alpha[0]));
float nodethreshold  = w.w * variance_norm_factor;
info1.x +=lcl_off;
info1.z +=lcl_off;
info2.x +=lcl_off;
info2.z +=lcl_off;
float classsum = (lcldata[mad24(info1.y,readwidth,info1.x)] - lcldata[mad24(info1.y,readwidth,info1.z)] -
lcldata[mad24(info1.w,readwidth,info1.x)] + lcldata[mad24(info1.w,readwidth,info1.z)]) * w.x;
classsum += (lcldata[mad24(info2.y,readwidth,info2.x)] - lcldata[mad24(info2.y,readwidth,info2.z)] -
lcldata[mad24(info2.w,readwidth,info2.x)] + lcldata[mad24(info2.w,readwidth,info2.z)]) * w.y;
info3.x +=lcl_off;
info3.z +=lcl_off;
classsum += (lcldata[mad24(info3.y,readwidth,info3.x)] - lcldata[mad24(info3.y,readwidth,info3.z)] -
lcldata[mad24(info3.w,readwidth,info3.x)] + lcldata[mad24(info3.w,readwidth,info3.z)]) * w.z;
bool passThres = classsum >= nodethreshold;
#if STUMP_BASED
stage_sum += passThres ? alpha3.y : alpha3.x;
nodecounter++;
nodeloop++;
#else
bool isRootNode = (nodecounter & 1) == 0;
if(isRootNode)
{
if( (passThres && currentnodeptr->right) ||
(!passThres && currentnodeptr->left))
{
nodecounter ++;
}
else
{
stage_sum += alpha3.x;
nodecounter += 2;
nodeloop ++;
}
}
else
{
stage_sum += passThres ? alpha3.z : alpha3.y;
nodecounter ++;
nodeloop ++;
}
#endif
}
result = (stage_sum >= stagethreshold);
}
if(result && (x < width) && (y < height))
{
int queueindex = atomic_inc(lclcount);
lcloutindex[queueindex<<1] = (lclidy << 16) | lclidx;
lcloutindex[(queueindex<<1)+1] = as_int(variance_norm_factor);
}
barrier(CLK_LOCAL_MEM_FENCE);
int queuecount  = lclcount[0];
barrier(CLK_LOCAL_MEM_FENCE);
nodecounter = splitnode;
for(int stageloop = split_stage; stageloop< end_stage && queuecount>0; stageloop++)
{
lclcount[0]=0;
barrier(CLK_LOCAL_MEM_FENCE);
int2 stageinfo = *(global int2*)(stagecascadeptr+stageloop);
float stagethreshold = as_float(stageinfo.y);
int perfscale = queuecount > 4 ? 3 : 2;
int queuecount_loop = (queuecount + (1<> perfscale;
int lcl_compute_win = lcl_sz >> perfscale;
int lcl_compute_win_id = (lcl_id >>(6-perfscale));
int lcl_loops = (stageinfo.x + lcl_compute_win -1) >> (6-perfscale);
int lcl_compute_id = lcl_id - (lcl_compute_win_id << (6-perfscale));
for(int queueloop=0; queueloop>16),readwidth,temp_coord & 0xffff);
if(lcl_compute_win_id < queuecount)
{
int tempnodecounter = lcl_compute_id;
float part_sum = 0.f;
const int stump_factor = STUMP_BASED ? 1 : 2;
int root_offset = 0;
for(int lcl_loop=0; lcl_loopp[0][0]));
int4 info2 = *(__global int4*)(&(currentnodeptr->p[1][0]));
int4 info3 = *(__global int4*)(&(currentnodeptr->p[2][0]));
float4 w = *(__global float4*)(&(currentnodeptr->weight[0]));
float3 alpha3 = *(__global float3*)(&(currentnodeptr->alpha[0]));
float nodethreshold  = w.w * variance_norm_factor;
info1.x +=queue_pixel;
info1.z +=queue_pixel;
info2.x +=queue_pixel;
info2.z +=queue_pixel;
float classsum = (lcldata[mad24(info1.y,readwidth,info1.x)] - lcldata[mad24(info1.y,readwidth,info1.z)] -
lcldata[mad24(info1.w,readwidth,info1.x)] + lcldata[mad24(info1.w,readwidth,info1.z)]) * w.x;
classsum += (lcldata[mad24(info2.y,readwidth,info2.x)] - lcldata[mad24(info2.y,readwidth,info2.z)] -
lcldata[mad24(info2.w,readwidth,info2.x)] + lcldata[mad24(info2.w,readwidth,info2.z)]) * w.y;
info3.x +=queue_pixel;
info3.z +=queue_pixel;
classsum += (lcldata[mad24(info3.y,readwidth,info3.x)] - lcldata[mad24(info3.y,readwidth,info3.z)] -
lcldata[mad24(info3.w,readwidth,info3.x)] + lcldata[mad24(info3.w,readwidth,info3.z)]) * w.z;
bool passThres = classsum >= nodethreshold;
#if STUMP_BASED
part_sum += passThres ? alpha3.y : alpha3.x;
tempnodecounter += lcl_compute_win;
lcl_loop++;
#else
if(root_offset == 0)
{
if( (passThres && currentnodeptr->right) ||
(!passThres && currentnodeptr->left))
{
root_offset = 1;
}
else
{
part_sum += alpha3.x;
tempnodecounter += lcl_compute_win;
lcl_loop++;
}
}
else
{
part_sum += passThres ? alpha3.z : alpha3.y;
tempnodecounter += lcl_compute_win;
lcl_loop++;
root_offset = 0;
}
#endif
}
partialsum[lcl_id]=part_sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lcl_compute_win_id < queuecount)
{
for(int i=0; i= stagethreshold && (lcl_compute_id==0))
{
int queueindex = atomic_inc(lclcount);
lcloutindex[queueindex<<1] = temp_coord;
lcloutindex[(queueindex<<1)+1] = as_int(variance_norm_factor);
}
lcl_compute_win_id +=(1<> 16));
temp = glboutindex[0];
int4 candidate_result;
candidate_result.zw = (int2)convert_int_rtn(factor*20.f);
candidate_result.x = convert_int_rtn(x*factor);
candidate_result.y = convert_int_rtn(y*factor);
atomic_inc(glboutindex);
candidate[outputoff+temp+lcl_id] = candidate_result;
}
barrier(CLK_LOCAL_MEM_FENCE);
}
}
}
#define READ_TIMES_ROW ((2*(RADIUSX+LSIZE0)-1)/LSIZE0)
#define READ_TIMES_COL ((2*(RADIUSY+LSIZE1)-1)/LSIZE1)
#define RADIUS 1
#if CN ==1
#define ALIGN (((RADIUS)+3)>>2<<2)
#elif CN==2
#define ALIGN (((RADIUS)+1)>>1<<1)
#elif CN==3
#define ALIGN (((RADIUS)+3)>>2<<2)
#elif CN==4
#define ALIGN (RADIUS)
#endif
#ifdef BORDER_CONSTANT
#define ELEM(i,l_edge,r_edge,elem1,elem2) (i)<(l_edge) | (i) >= (r_edge) ? (elem1) : (elem2)
#endif
#ifdef BORDER_REPLICATE
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? (l_edge) : (addr)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ? (r_edge)-1 : (addr)
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? -(i)-1 : (addr)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_REFLECT_101
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? -(i) : (addr)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i,l_edge,r_edge,addr)  (i) < (l_edge) ? (i)+(r_edge) : (addr)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ?   (i)-(r_edge) : (addr)
#endif
__kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void row_filter_C1_D0
(__global const uchar * restrict src,
__global float * dst,
const int dst_cols,
const int dst_rows,
const int src_whole_cols,
const int src_whole_rows,
const int src_step_in_pixel,
const int src_offset_x,
const int src_offset_y,
const int dst_step_in_pixel,
const int radiusy,
__constant float * mat_kernel __attribute__((max_constant_size(4*(2*RADIUSX+1)))))
{
int x = get_global_id(0)<<2;
int y = get_global_id(1);
int l_x = get_local_id(0);
int l_y = get_local_id(1);
int start_x = x+src_offset_x-RADIUSX & 0xfffffffc;
int offset = src_offset_x-RADIUSX & 3;
int start_y = y+src_offset_y-radiusy;
int start_addr = mad24(start_y,src_step_in_pixel,start_x);
int i;
float4 sum;
uchar4 temp[READ_TIMES_ROW];
__local uchar4 LDS_DAT[LSIZE1][READ_TIMES_ROW*LSIZE0+1];
#ifdef BORDER_CONSTANT
int end_addr = mad24(src_whole_rows - 1,src_step_in_pixel,src_whole_cols);
for(i = 0; i 0)) ? current_addr : 0;
temp[i] = *(__global uchar4*)&src[current_addr];
}
for(i = 0; isrc_whole_cols)| (start_y<0) | (start_y >= src_whole_rows);
int4 index[READ_TIMES_ROW];
int4 addr;
int s_y;
if(not_all_in_range)
{
for(i = 0; i 0)) ? current_addr : 0;
temp[i] = src[current_addr];
}
for(i = 0; i 0)) ? current_addr : 0;
temp[i] = src[current_addr];
}
for(i = 0; i 0)) ? current_addr : 0;
temp[i] = src[current_addr];
}
for(i = 0; i>2<<2)
#elif CN==2
#define ALIGN (((RADIUS)+1)>>1<<1)
#elif CN==3
#define ALIGN (((RADIUS)+3)>>2<<2)
#elif CN==4
#define ALIGN (RADIUS)
#define READ_TIMES_ROW ((2*(RADIUS+LSIZE0)-1)/LSIZE0)
#endif
#ifdef BORDER_CONSTANT
#define ELEM(i,l_edge,r_edge,elem1,elem2) (i)<(l_edge) | (i) >= (r_edge) ? (elem1) : (elem2)
#endif
#ifdef BORDER_REPLICATE
#define ADDR_L(i,l_edge,r_edge)  (i) < (l_edge) ? (l_edge) : (i)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ? (r_edge)-1 : (addr)
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i,l_edge,r_edge)  (i) < (l_edge) ? -(i)-1 : (i)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_REFLECT_101
#define ADDR_L(i,l_edge,r_edge)  (i) < (l_edge) ? -(i) : (i)
#define ADDR_R(i,r_edge,addr) (i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr)
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i,l_edge,r_edge)  (i) < (l_edge) ? (i)+(r_edge) : (i)
#define ADDR_R(i,r_edge,addr)   (i) >= (r_edge) ?   (i)-(r_edge) : (addr)
#endif
__kernel __attribute__((reqd_work_group_size(LSIZE0,LSIZE1,1))) void col_filter
(__global const GENTYPE_SRC * restrict src,
__global GENTYPE_DST * dst,
const int dst_cols,
const int dst_rows,
const int src_whole_cols,
const int src_whole_rows,
const int src_step_in_pixel,
const int dst_step_in_pixel,
const int dst_offset_in_pixel,
__constant float * mat_kernel __attribute__((max_constant_size(4*(2*RADIUSY+1)))))
{
int x = get_global_id(0);
int y = get_global_id(1);
int l_x = get_local_id(0);
int l_y = get_local_id(1);
int start_addr = mad24(y,src_step_in_pixel,x);
int end_addr = mad24(src_whole_rows - 1,src_step_in_pixel,src_whole_cols);
int i;
GENTYPE_SRC sum;
GENTYPE_SRC temp[READ_TIMES_COL];
__local GENTYPE_SRC LDS_DAT[LSIZE1*READ_TIMES_COL][LSIZE0+1];
for(i = 0;i= (r_edge) ? (elem1) : (elem2)
#ifndef GENTYPE
__kernel void morph_C1_D0(__global const uchar * restrict src,
__global uchar *dst,
int src_offset_x, int src_offset_y,
int cols, int rows,
int src_step_in_pixel, int dst_step_in_pixel,
__constant uchar * mat_kernel,
int src_whole_cols, int src_whole_rows,
int dst_offset_in_pixel)
{
int l_x = get_local_id(0);
int l_y = get_local_id(1);
int x = get_group_id(0)*4*LSIZE0;
int y = get_group_id(1)*LSIZE1;
int start_x = x+src_offset_x-RADIUSX & 0xfffffffc;
int end_x = x + src_offset_x+LSIZE0*4+RADIUSX & 0xfffffffc;
int width = (end_x -start_x+4)>>2;
int offset = src_offset_x-RADIUSX & 3;
int start_y = y+src_offset_y-RADIUSY;
int point1 = mad24(l_y,LSIZE0,l_x);
int point2 = point1 + LSIZE0*LSIZE1;
int tl_x = (point1 % width)<<2;
int tl_y = point1 / width;
int tl_x2 = (point2 % width)<<2;
int tl_y2 = point2 / width;
int cur_x = start_x + tl_x;
int cur_y = start_y + tl_y;
int cur_x2 = start_x + tl_x2;
int cur_y2 = start_y + tl_y2;
int start_addr = mad24(cur_y,src_step_in_pixel,cur_x);
int start_addr2 = mad24(cur_y2,src_step_in_pixel,cur_x2);
uchar4 temp0,temp1;
__local uchar4 LDS_DAT[2*LSIZE1*LSIZE0];
int end_addr = mad24(src_whole_rows - 1,src_step_in_pixel,src_whole_cols);
start_addr = ((start_addr < end_addr) && (start_addr > 0)) ? start_addr : 0;
start_addr2 = ((start_addr2 < end_addr) && (start_addr2 > 0)) ? start_addr2 : 0;
temp0 = *(__global uchar4*)&src[start_addr];
temp1 = *(__global uchar4*)&src[start_addr2];
temp0.x= ELEM(cur_x,0,src_whole_cols,VAL,temp0.x);
temp0.y= ELEM(cur_x+1,0,src_whole_cols,VAL,temp0.y);
temp0.z= ELEM(cur_x+2,0,src_whole_cols,VAL,temp0.z);
temp0.w= ELEM(cur_x+3,0,src_whole_cols,VAL,temp0.w);
temp0= ELEM(cur_y,0,src_whole_rows,(uchar4)VAL,temp0);
temp1.x= ELEM(cur_x2,0,src_whole_cols,VAL,temp1.x);
temp1.y= ELEM(cur_x2+1,0,src_whole_cols,VAL,temp1.y);
temp1.z= ELEM(cur_x2+2,0,src_whole_cols,VAL,temp1.z);
temp1.w= ELEM(cur_x2+3,0,src_whole_cols,VAL,temp1.w);
temp1= ELEM(cur_y2,0,src_whole_rows,(uchar4)VAL,temp1);
LDS_DAT[point1] = temp0;
LDS_DAT[point2] = temp1;
barrier(CLK_LOCAL_MEM_FENCE);
uchar4 res = (uchar4)VAL;
for(int i=0; i<2*RADIUSY+1; i++)
for(int j=0; j<2*RADIUSX+1; j++)
{
res =
#ifndef RECTKERNEL
mat_kernel[i*(2*RADIUSX+1)+j] ?
#endif
MORPH_OP(res,vload4(0,(__local uchar*)&LDS_DAT[mad24((l_y+i),width,l_x)]+offset+j))
#ifndef RECTKERNEL
:res
#endif
;
}
int gidx = get_global_id(0)<<2;
int gidy = get_global_id(1);
int out_addr = mad24(gidy,dst_step_in_pixel,gidx+dst_offset_in_pixel);
if(gidx+3 0)) ? start_addr : 0;
start_addr2 = ((start_addr2 < end_addr) && (start_addr2 > 0)) ? start_addr2 : 0;
temp0 = src[start_addr];
temp1 = src[start_addr2];
temp0= ELEM(cur_x,0,src_whole_cols,(GENTYPE)VAL,temp0);
temp0= ELEM(cur_y,0,src_whole_rows,(GENTYPE)VAL,temp0);
temp1= ELEM(cur_x2,0,src_whole_cols,(GENTYPE)VAL,temp1);
temp1= ELEM(cur_y2,0,src_whole_rows,(GENTYPE)VAL,temp1);
LDS_DAT[point1] = temp0;
LDS_DAT[point2] = temp1;
barrier(CLK_LOCAL_MEM_FENCE);
GENTYPE res = (GENTYPE)VAL;
for(int i=0; i<2*RADIUSY+1; i++)
for(int j=0; j<2*RADIUSX+1; j++)
{
res =
#ifndef RECTKERNEL
mat_kernel[i*(2*RADIUSX+1)+j] ?
#endif
MORPH_OP(res,LDS_DAT[mad24(l_y+i,width,l_x+j)])
#ifndef RECTKERNEL
:res
#endif
;
}
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int out_addr = mad24(gidy,dst_step_in_pixel,gidx+dst_offset_in_pixel);
if(gidx= (r_edge) ? (r_edge)-1 : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (t_edge)   :(i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (b_edge)-1 :(addr))
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)-1               : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)-1 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-1+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_REFLECT_101
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)                 : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)                 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-2+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (i)+(r_edge) : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (i)-(r_edge) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (i)+(b_edge) : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (i)-(b_edge) : (addr))
#endif
#define ROWS_PER_GROUP          4
#define ROWS_PER_GROUP_BITS     2
#define ROWS_FETCH              (ROWS_PER_GROUP + ANY + ANY)
#define THREADS_PER_ROW         64
#define THREADS_PER_ROW_BIT     6
#define ELEMENTS_PER_THREAD     4
#define ELEMENTS_PER_THREAD_BIT 2
#define LOCAL_MEM_STEP          260
__kernel void filter2D_C1_D0(__global uchar *src, int src_step, int src_offset_x, int src_offset_y,
__global uchar *dst, int dst_step, int dst_offset_x, int dst_offset_y,
__constant int *mat_kernel __attribute__((max_constant_size (16384))),
int cols,int rows, int operate_cols, int wholecols, int wholerows)
{
int gX = get_global_id(0);
int gY = get_global_id(1);
int lX = get_local_id(0);
int groupX_size = get_local_size(0);
int groupX_id   = get_group_id(0);
#define dst_align (dst_offset_x & 3)
int cols_start_index_group = src_offset_x - dst_align + groupX_size * groupX_id - ANX;
int rows_start_index       = src_offset_y + (gY << ROWS_PER_GROUP_BITS) - ANY;
__local uchar local_data[LOCAL_MEM_STEP * ROWS_FETCH];
if((gY << 2) < rows)
{
for(int i = 0; i < ROWS_FETCH; ++i)
{
if((rows_start_index - src_offset_y) + i < rows + ANY)
{
#ifdef BORDER_CONSTANT
int selected_row  = rows_start_index + i;
int selected_cols = cols_start_index_group + lX;
uchar data = *(src + selected_row * src_step + selected_cols);
int con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX ] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
data = *(src + selected_row * src_step + selected_cols);
con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#else
int selected_row = ADDR_H(rows_start_index + i,  0, wholerows);
selected_row     = ADDR_B(rows_start_index + i, wholerows, selected_row);
int selected_cols = ADDR_L(cols_start_index_group + lX, 0, wholecols);
selected_cols     = ADDR_R(cols_start_index_group + lX, wholecols, selected_cols);
uchar data = *(src + selected_row * src_step + selected_cols);
local_data[i * LOCAL_MEM_STEP + lX ] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
selected_cols = ADDR_R(selected_cols, wholecols, selected_cols);
data = *(src + selected_row * src_step + selected_cols);
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#endif
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int process_col = groupX_size * groupX_id + ((lX % THREADS_PER_ROW) << 2);
if(((gY << 2) < rows) && (process_col < operate_cols))
{
int dst_cols_start = dst_offset_x;
int dst_cols_end   = dst_offset_x + cols;
int dst_cols_index = (dst_offset_x + process_col) & 0xfffffffc;
int dst_rows_end   = dst_offset_y + rows;
int dst_rows_index = dst_offset_y + (gY << ROWS_PER_GROUP_BITS) + (lX >> THREADS_PER_ROW_BIT);
uchar4 dst_data = *((__global uchar4 *)(dst + dst_rows_index * dst_step + dst_cols_index));
int4 sum = (int4)(0);
uchar4 data;
for(int i = 0; i < ANCHOR; i++)
{
#pragma unroll
for(int j = 0; j < ANCHOR; j++)
{
if(dst_rows_index < dst_rows_end)
{
int local_row = (lX >> THREADS_PER_ROW_BIT) + i;
int local_cols = ((lX % THREADS_PER_ROW) << ELEMENTS_PER_THREAD_BIT) + j;
data = vload4(0, local_data+local_row * LOCAL_MEM_STEP + local_cols);
sum = sum + (mat_kernel[i * ANCHOR + j] * convert_int4_sat(data));
}
}
}
if(dst_rows_index < dst_rows_end)
{
sum.x = ((dst_cols_index + 0 >= dst_cols_start) && (dst_cols_index + 0 < dst_cols_end)) ? sum.x : dst_data.x;
sum.y = ((dst_cols_index + 1 >= dst_cols_start) && (dst_cols_index + 1 < dst_cols_end)) ? sum.y : dst_data.y;
sum.z = ((dst_cols_index + 2 >= dst_cols_start) && (dst_cols_index + 2 < dst_cols_end)) ? sum.z : dst_data.z;
sum.w = ((dst_cols_index + 3 >= dst_cols_start) && (dst_cols_index + 3 < dst_cols_end)) ? sum.w : dst_data.w;
*((__global uchar4 *)(dst + dst_rows_index * dst_step + dst_cols_index)) = convert_uchar4_sat(sum);
}
}
}
__kernel void filter2D_C1_D5(__global float *src, int src_step, int src_offset_x, int src_offset_y,
__global float *dst, int dst_step, int dst_offset_x, int dst_offset_y,
__constant int *mat_kernel __attribute__((max_constant_size (16384))),
int cols,int rows, int operate_cols, int wholecols, int wholerows)
{
int gX = get_global_id(0);
int gY = get_global_id(1);
int lX = get_local_id(0);
int groupX_size = get_local_size(0);
int groupX_id   = get_group_id(0);
#define dst_align (dst_offset_x & 3)
int cols_start_index_group = src_offset_x - dst_align + groupX_size * groupX_id - ANX;
int rows_start_index       = src_offset_y + (gY << ROWS_PER_GROUP_BITS) - ANY;
__local float local_data[LOCAL_MEM_STEP * ROWS_FETCH];
if(((gY << 2) < rows))
{
for(int i = 0; i < ROWS_FETCH; ++i)
{
if((rows_start_index - src_offset_y) + i < rows + ANY)
{
#ifdef BORDER_CONSTANT
int selected_row  = rows_start_index + i;
int selected_cols = cols_start_index_group + lX;
float data = *((__global float *)((__global char *)src + selected_row * src_step + (selected_cols << 2)));
int con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX ] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
data = *((__global float *)((__global char *)src + selected_row * src_step + (selected_cols << 2)));
con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#else
int selected_row = ADDR_H(rows_start_index + i,  0, wholerows);
selected_row     = ADDR_B(rows_start_index + i, wholerows, selected_row);
int selected_cols = ADDR_L(cols_start_index_group + lX, 0, wholecols);
selected_cols     = ADDR_R(cols_start_index_group + lX, wholecols, selected_cols);
float data = *((__global float *)((__global char *)src + selected_row * src_step + (selected_cols << 2)));
local_data[i * LOCAL_MEM_STEP + lX] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
selected_cols = ADDR_R(selected_cols, wholecols, selected_cols);
data = *((__global float *)((__global char *)src + selected_row * src_step + (selected_cols << 2)));
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#endif
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int process_col = groupX_size * groupX_id + ((lX % THREADS_PER_ROW) << 2);
if(((gY << 2) < rows) && (process_col < operate_cols))
{
int dst_cols_start = dst_offset_x;
int dst_cols_end   = dst_offset_x + cols;
int dst_cols_index = (dst_offset_x + process_col) & 0xfffffffc;
int dst_rows_end   = dst_offset_y + rows;
int dst_rows_index = dst_offset_y + (gY << ROWS_PER_GROUP_BITS) + (lX >> THREADS_PER_ROW_BIT);
float4 dst_data = *((__global float4*)((__global char *)dst + dst_rows_index * dst_step + (dst_cols_index << 2)));
float4 sum = (float4)(0);
float4 data;
for(int i = 0; i < ANCHOR; i++)
{
#pragma unroll
for(int j = 0; j < ANCHOR; j++)
{
if(dst_rows_index < dst_rows_end)
{
int local_row = (lX >> THREADS_PER_ROW_BIT) + i;
int local_cols = ((lX % THREADS_PER_ROW) << ELEMENTS_PER_THREAD_BIT) + j;
data = vload4(0, local_data+local_row * LOCAL_MEM_STEP + local_cols);
sum = sum + ((float)(mat_kernel[i * ANCHOR + j]) * data);
}
}
}
if(dst_rows_index < dst_rows_end)
{
sum.x = ((dst_cols_index + 0 >= dst_cols_start) && (dst_cols_index + 0 < dst_cols_end)) ? sum.x : dst_data.x;
sum.y = ((dst_cols_index + 1 >= dst_cols_start) && (dst_cols_index + 1 < dst_cols_end)) ? sum.y : dst_data.y;
sum.z = ((dst_cols_index + 2 >= dst_cols_start) && (dst_cols_index + 2 < dst_cols_end)) ? sum.z : dst_data.z;
sum.w = ((dst_cols_index + 3 >= dst_cols_start) && (dst_cols_index + 3 < dst_cols_end)) ? sum.w : dst_data.w;
*((__global float4 *)((__global char *)dst + dst_rows_index * dst_step + (dst_cols_index << 2))) = sum;
}
}
}
__kernel void filter2D_C4_D0(__global uchar4 *src, int src_step, int src_offset_x, int src_offset_y,
__global uchar4 *dst, int dst_step, int dst_offset_x, int dst_offset_y,
__constant int *mat_kernel __attribute__((max_constant_size (16384))),
int cols,int rows, int operate_cols, int wholecols, int wholerows)
{
int gX = get_global_id(0);
int gY = get_global_id(1);
int lX = get_local_id(0);
int groupX_size = get_local_size(0);
int groupX_id   = get_group_id(0);
#define dst_align (dst_offset_x & 3)
int cols_start_index_group = src_offset_x - dst_align + groupX_size * groupX_id - ANX;
int rows_start_index       = src_offset_y + (gY << ROWS_PER_GROUP_BITS) - ANY;
__local uchar4 local_data[LOCAL_MEM_STEP * ROWS_FETCH];
if(((gY << 2) < rows))
{
for(int i = 0; i < ROWS_FETCH; ++i)
{
if((rows_start_index - src_offset_y) + i < rows + ANY)
{
#ifdef BORDER_CONSTANT
int selected_row  = rows_start_index + i;
int selected_cols = cols_start_index_group + lX;
uchar4 data = *((__global uchar4*)((__global char*)src + selected_row * src_step + (selected_cols << 2)));
int con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX ] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
data = *((__global uchar4*)((__global char*)src + selected_row * src_step + (selected_cols << 2)));
con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#else
int selected_row = ADDR_H(rows_start_index + i,  0, wholerows);
selected_row     = ADDR_B(rows_start_index + i, wholerows, selected_row);
int selected_cols = ADDR_L(cols_start_index_group + lX, 0, wholecols);
selected_cols     = ADDR_R(cols_start_index_group + lX, wholecols, selected_cols);
uchar4 data = *((__global uchar4*)((__global char*)src + selected_row * src_step + (selected_cols << 2)));
local_data[i * LOCAL_MEM_STEP + lX] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
selected_cols = ADDR_R(selected_cols, wholecols, selected_cols);
data = *((__global uchar4*)((__global char*)src + selected_row * src_step + (selected_cols << 2)));
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#endif
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
int process_col = groupX_size * groupX_id + ((lX % THREADS_PER_ROW) << 2);
if(((gY << 2) < rows) && (process_col < operate_cols))
{
int dst_cols_start = dst_offset_x;
int dst_cols_end   = dst_offset_x + cols;
int dst_cols_index = (dst_offset_x + process_col) & 0xfffffffc;
int dst_rows_end   = dst_offset_y + rows;
int dst_rows_index = dst_offset_y + (gY << ROWS_PER_GROUP_BITS) + (lX >> THREADS_PER_ROW_BIT);
uchar16 dst_data;
dst_data = *((__global uchar16*)((__global char *)dst + dst_rows_index * dst_step + (dst_cols_index << 2)));
int16 sum = (int16)(0);
uchar16 data;
for(int i = 0; i < ANCHOR; i++)
{
#pragma unroll
for(int j = 0; j < ANCHOR; j++)
{
if(dst_rows_index < dst_rows_end)
{
int local_row = (lX >> THREADS_PER_ROW_BIT) + i;
int local_cols = ((lX % THREADS_PER_ROW) << ELEMENTS_PER_THREAD_BIT) + j;
data = vload16(0, (__local uchar *)(local_data+local_row * LOCAL_MEM_STEP + local_cols));
sum = sum + (mat_kernel[i * ANCHOR + j] * convert_int16_sat(data));
}
}
}
if(dst_rows_index < dst_rows_end)
{
uchar16 sum1 = convert_uchar16_sat(sum);
sum1.s0123 = ((dst_cols_index + 0 >= dst_cols_start) && (dst_cols_index + 0 < dst_cols_end))?
sum1.s0123 : dst_data.s0123;
sum1.s4567 = ((dst_cols_index + 1 >= dst_cols_start) && (dst_cols_index + 1 < dst_cols_end))?
sum1.s4567 : dst_data.s4567;
sum1.s89ab = ((dst_cols_index + 2 >= dst_cols_start) && (dst_cols_index + 2 < dst_cols_end))?
sum1.s89ab : dst_data.s89ab;
sum1.scdef = ((dst_cols_index + 3 >= dst_cols_start) && (dst_cols_index + 3 < dst_cols_end))?
sum1.scdef : dst_data.scdef;
*((__global uchar16*)((__global char *)dst + dst_rows_index * dst_step + (dst_cols_index << 2))) = sum1;
}
}
}
#define ROWS_FETCH_C4              (1 + ANY + ANY)
#define LOCAL_MEM_STEP_C4           260
__kernel void filter2D_C4_D5(__global float4 *src, int src_step, int src_offset_x, int src_offset_y,
__global float4 *dst, int dst_step, int dst_offset_x, int dst_offset_y,
__constant int *mat_kernel __attribute__((max_constant_size (16384))),
int cols,int rows, int operate_cols, int wholecols, int wholerows)
{
int gX = get_global_id(0);
int gY = get_global_id(1);
int lX = get_local_id(0);
int groupX_size = get_local_size(0);
int groupX_id   = get_group_id(0);
int cols_start_index_group = src_offset_x + groupX_size * groupX_id - ANX;
int rows_start_index       = src_offset_y + gY - ANY;
__local float4 local_data[LOCAL_MEM_STEP_C4 * ROWS_FETCH_C4];
if((gY < rows) && (gX < (operate_cols + ANX + ANX)))
{
for(int i = 0; i < ROWS_FETCH_C4; ++i)
{
if((rows_start_index - src_offset_y) + i < rows + ANY)
{
#ifdef BORDER_CONSTANT
int selected_row  = rows_start_index + i;
int selected_cols = cols_start_index_group + lX;
float4 data = *((__global float4*)((__global char*)src + selected_row * src_step + (selected_cols << 4)));
int con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX ] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
data = *((__global float4*)((__global char*)src + selected_row * src_step + (selected_cols << 4)));
con = selected_row >=0 && selected_row < wholerows && selected_cols >=0 && selected_cols < wholecols;
data = con ? data : 0;
local_data[i * LOCAL_MEM_STEP + lX + groupX_size] =data;
}
#else
int selected_row = ADDR_H(rows_start_index + i,  0, wholerows);
selected_row     = ADDR_B(rows_start_index + i, wholerows, selected_row);
int selected_cols = ADDR_L(cols_start_index_group + lX, 0, wholecols);
selected_cols     = ADDR_R(cols_start_index_group + lX, wholecols, selected_cols);
float4 data = *((__global float4*)((__global char*)src + selected_row * src_step + (selected_cols << 4)));
local_data[i * LOCAL_MEM_STEP_C4 + lX] =data;
if(lX < (ANX << 1))
{
selected_cols = cols_start_index_group + lX + groupX_size;
selected_cols = ADDR_R(selected_cols, wholecols, selected_cols);
data = *((__global float4*)((__global char*)src + selected_row * src_step + (selected_cols << 4)));
local_data[i * LOCAL_MEM_STEP_C4 + lX + groupX_size] =data;
}
#endif
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if((gY < rows) && (gX < operate_cols))
{
int dst_cols_index = dst_offset_x + gX;
int dst_rows_index = dst_offset_y + gY;
float4 sum = (float4)(0);
for(int i = 0; i < ANCHOR; i++)
{
for(int j = 0; j < ANCHOR; j++)
{
int local_cols = lX + j;
sum = sum + ((float)mat_kernel[i * ANCHOR + j] * local_data[i * LOCAL_MEM_STEP_C4 + local_cols]);
}
}
*((__global float4*)((__global char *)dst + dst_rows_index * dst_step + (dst_cols_index << 4))) = sum;
}
}
#ifdef BORDER_REPLICATE
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (l_edge)   : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (r_edge)-1 : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (t_edge)   :(i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (b_edge)-1 :(addr))
#endif
#ifdef BORDER_REFLECT
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)-1               : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-1+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)-1 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-1+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_REFLECT_101
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? -(i)                 : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? -(i)-2+((r_edge)<<1) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? -(i)                 : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? -(i)-2+((b_edge)<<1) : (addr))
#endif
#ifdef BORDER_WRAP
#define ADDR_L(i, l_edge, r_edge)  ((i) <  (l_edge) ? (i)+(r_edge) : (i))
#define ADDR_R(i, r_edge, addr)    ((i) >= (r_edge) ? (i)-(r_edge) : (addr))
#define ADDR_H(i, t_edge, b_edge)  ((i) <  (t_edge) ? (i)+(b_edge) : (i))
#define ADDR_B(i, b_edge, addr)    ((i) >= (b_edge) ? (i)-(b_edge) : (addr))
#endif
#define THREADS 256
#define ELEM(i, l_edge, r_edge, elem1, elem2) (i) >= (l_edge) && (i) < (r_edge) ? (elem1) : (elem2)
inline void update_dst_C1_D0(__global uchar *dst, __local uint* temp,
int dst_rows, int dst_cols,
int dst_startX, int dst_x_off,
float alpha)
{
if(get_local_id(0) < anX || get_local_id(0) >= (THREADS-ksX+anX+1))
{
return;
}
uint4 tmp_sum = 0;
int posX = dst_startX - dst_x_off + (get_local_id(0)-anX)*4;
int posY = (get_group_id(1) << 1);
for(int i=-anX; i<=anX; i++)
{
tmp_sum += vload4(get_local_id(0), temp+i);
}
if(posY < dst_rows && posX < dst_cols)
{
tmp_sum /= (uint4) alpha;
if(posX >= 0 && posX < dst_cols)
*(dst) = tmp_sum.x;
if(posX+1 >= 0 && posX+1 < dst_cols)
*(dst + 1) = tmp_sum.y;
if(posX+2 >= 0 && posX+2 < dst_cols)
*(dst + 2) = tmp_sum.z;
if(posX+3 >= 0 && posX+3 < dst_cols)
*(dst + 3) = tmp_sum.w;
}
}
inline void update_dst_C4_D0(__global uchar4 *dst, __local uint4* temp,
int dst_rows, int dst_cols,
int dst_startX, int dst_x_off,
float alpha)
{
if(get_local_id(0) >= (THREADS-ksX+1))
{
return;
}
int posX = dst_startX - dst_x_off + get_local_id(0);
int posY = (get_group_id(1) << 1);
uint4 temp_sum = 0;
for(int i=-anX; i<=anX; i++)
{
temp_sum += temp[get_local_id(0) + anX + i];
}
if(posX >= 0 && posX < dst_cols && posY >= 0 && posY < dst_rows)
*dst = convert_uchar4(convert_float4(temp_sum)/alpha);
}
__kernel void boxFilter_C1_D0(__global const uchar * restrict src, __global uchar *dst, float alpha,
int src_offset, int src_whole_rows, int src_whole_cols, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step
)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
int src_x_off = src_offset % src_step;
int src_y_off = src_offset / src_step;
int dst_x_off = dst_offset % dst_step;
int dst_y_off = dst_offset / dst_step;
int head_off = dst_x_off%4;
int startX = ((gX * (THREADS-ksX+1)-anX) * 4) - head_off + src_x_off;
int startY = (gY << 1) - anY + src_y_off;
int dst_startX = (gX * (THREADS-ksX+1) * 4) - head_off + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
uint4 data[ksY+1];
__local uint4 temp[2][THREADS];
#ifdef BORDER_CONSTANT
for(int i=0; i < ksY+1; i++)
{
if(startY+i >=0 && startY+i < src_whole_rows && startX+col*4 >=0 && startX+col*4+3=0 && startY+i < src_whole_rows && startX+col*4 >=0 && startX+col*4=0 && startY+i < src_whole_rows && startX+col*4+1 >=0 && startX+col*4+1=0 && startY+i < src_whole_rows && startX+col*4+2 >=0 && startX+col*4+2=0 && startY+i < src_whole_rows && startX+col*4+3 >=0 && startX+col*4+3src_whole_cols-1)
| (startY+i<0) | (startY+i>src_whole_rows-1);
if(not_all_in_range)
{
int selected_row;
int4 selected_col;
selected_row = ADDR_H(startY+i, 0, src_whole_rows);
selected_row = ADDR_B(startY+i, src_whole_rows, selected_row);
selected_col.x = ADDR_L(startX+col*4, 0, src_whole_cols);
selected_col.x = ADDR_R(startX+col*4, src_whole_cols, selected_col.x);
selected_col.y = ADDR_L(startX+col*4+1, 0, src_whole_cols);
selected_col.y = ADDR_R(startX+col*4+1, src_whole_cols, selected_col.y);
selected_col.z = ADDR_L(startX+col*4+2, 0, src_whole_cols);
selected_col.z = ADDR_R(startX+col*4+2, src_whole_cols, selected_col.z);
selected_col.w = ADDR_L(startX+col*4+3, 0, src_whole_cols);
selected_col.w = ADDR_R(startX+col*4+3, src_whole_cols, selected_col.w);
data[i].x = *(src + selected_row * src_step + selected_col.x);
data[i].y = *(src + selected_row * src_step + selected_col.y);
data[i].z = *(src + selected_row * src_step + selected_col.z);
data[i].w = *(src + selected_row * src_step + selected_col.w);
}
else
{
data[i] =  convert_uint4(vload4(col,(__global uchar*)(src+(startY+i)*src_step + startX)));
}
}
#endif
uint4 tmp_sum = 0;
for(int i=1; i < ksY; i++)
{
tmp_sum += (data[i]);
}
int index = dst_startY * dst_step + dst_startX + (col-anX)*4;
temp[0][col] = tmp_sum + (data[0]);
temp[1][col] = tmp_sum + (data[ksY]);
barrier(CLK_LOCAL_MEM_FENCE);
update_dst_C1_D0(dst+index, (__local uint *)(temp[0]),
dst_rows, dst_cols, dst_startX, dst_x_off, alpha);
update_dst_C1_D0(dst+index+dst_step, (__local uint *)(temp[1]),
dst_rows, dst_cols, dst_startX, dst_x_off, alpha);
}
__kernel void boxFilter_C4_D0(__global const uchar4 * restrict src, __global uchar4 *dst, float alpha,
int src_offset, int src_whole_rows, int src_whole_cols, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step
)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
int src_x_off = (src_offset % src_step) >> 2;
int src_y_off = src_offset / src_step;
int dst_x_off = (dst_offset % dst_step) >> 2;
int dst_y_off = dst_offset / dst_step;
int startX = gX * (THREADS-ksX+1) - anX + src_x_off;
int startY = (gY << 1) - anY + src_y_off;
int dst_startX = gX * (THREADS-ksX+1) + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
uint4 data[ksY+1];
__local uint4 temp[2][THREADS];
#ifdef BORDER_CONSTANT
bool con;
for(int i=0; i < ksY+1; i++)
{
con = startX+col >= 0 && startX+col < src_whole_cols && startY+i >= 0 && startY+i < src_whole_rows;
int cur_col = clamp(startX + col, 0, src_whole_cols);
data[i].x = con ? src[(startY+i)*(src_step>>2) + cur_col].x : 0;
data[i].y = con ? src[(startY+i)*(src_step>>2) + cur_col].y : 0;
data[i].z = con ? src[(startY+i)*(src_step>>2) + cur_col].z : 0;
data[i].w = con ? src[(startY+i)*(src_step>>2) + cur_col].w : 0;
}
#else
for(int i=0; i < ksY+1; i++)
{
int selected_row;
int selected_col;
selected_row = ADDR_H(startY+i, 0, src_whole_rows);
selected_row = ADDR_B(startY+i, src_whole_rows, selected_row);
selected_col = ADDR_L(startX+col, 0, src_whole_cols);
selected_col = ADDR_R(startX+col, src_whole_cols, selected_col);
data[i] = convert_uint4(src[selected_row * (src_step>>2) + selected_col]);
}
#endif
uint4 tmp_sum = 0;
for(int i=1; i < ksY; i++)
{
tmp_sum += (data[i]);
}
int index = dst_startY * (dst_step>>2)+ dst_startX + col;
temp[0][col] = tmp_sum + (data[0]);
temp[1][col] = tmp_sum + (data[ksY]);
barrier(CLK_LOCAL_MEM_FENCE);
update_dst_C4_D0(dst+index, (__local uint4 *)(temp[0]),
dst_rows, dst_cols, dst_startX, dst_x_off, alpha);
update_dst_C4_D0(dst+index+(dst_step>>2), (__local uint4 *)(temp[1]),
dst_rows, dst_cols, dst_startX, dst_x_off, alpha);
}
__kernel void boxFilter_C1_D5(__global const float *restrict src, __global float *dst, float alpha,
int src_offset, int src_whole_rows, int src_whole_cols, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step
)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
int src_x_off = (src_offset % src_step) >> 2;
int src_y_off = src_offset / src_step;
int dst_x_off = (dst_offset % dst_step) >> 2;
int dst_y_off = dst_offset / dst_step;
int startX = gX * (THREADS-ksX+1) - anX + src_x_off;
int startY = (gY << 1) - anY + src_y_off;
int dst_startX = gX * (THREADS-ksX+1) + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
float data[ksY+1];
__local float temp[2][THREADS];
#ifdef BORDER_CONSTANT
bool con;
float ss;
for(int i=0; i < ksY+1; i++)
{
con = startX+col >= 0 && startX+col < src_whole_cols && startY+i >= 0 && startY+i < src_whole_rows;
int cur_col = clamp(startX + col, 0, src_whole_cols);
ss = (startY+i)=0&&cur_col>=0&&cur_col>2) + cur_col]:(float)0;
data[i] = con ? ss : 0.f;
}
#else
for(int i=0; i < ksY+1; i++)
{
int selected_row;
int selected_col;
selected_row = ADDR_H(startY+i, 0, src_whole_rows);
selected_row = ADDR_B(startY+i, src_whole_rows, selected_row);
selected_col = ADDR_L(startX+col, 0, src_whole_cols);
selected_col = ADDR_R(startX+col, src_whole_cols, selected_col);
data[i] = src[selected_row * (src_step>>2) + selected_col];
}
#endif
float sum0 = 0.0, sum1 = 0.0, sum2 = 0.0;
for(int i=1; i < ksY; i++)
{
sum0 += (data[i]);
}
sum1 = sum0 + (data[0]);
sum2 = sum0 + (data[ksY]);
temp[0][col] = sum1;
temp[1][col] = sum2;
barrier(CLK_LOCAL_MEM_FENCE);
if(col < (THREADS-(ksX-1)))
{
col += anX;
int posX = dst_startX - dst_x_off + col - anX;
int posY = (gY << 1);
float tmp_sum[2]= {0.0, 0.0};
for(int k=0; k<2; k++)
for(int i=-anX; i<=anX; i++)
{
tmp_sum[k] += temp[k][col+i];
}
for(int i=0; i<2; i++)
{
if(posX >= 0 && posX < dst_cols && (posY+i) >= 0 && (posY+i) < dst_rows)
dst[(dst_startY+i) * (dst_step>>2)+ dst_startX + col - anX] = tmp_sum[i]/alpha;
}
}
}
__kernel void boxFilter_C4_D5(__global const float4 *restrict src, __global float4 *dst, float alpha,
int src_offset, int src_whole_rows, int src_whole_cols, int src_step,
int dst_offset, int dst_rows, int dst_cols, int dst_step
)
{
int col = get_local_id(0);
const int gX = get_group_id(0);
const int gY = get_group_id(1);
int src_x_off = (src_offset % src_step) >> 4;
int src_y_off = src_offset / src_step;
int dst_x_off = (dst_offset % dst_step) >> 4;
int dst_y_off = dst_offset / dst_step;
int startX = gX * (THREADS-ksX+1) - anX + src_x_off;
int startY = (gY << 1) - anY + src_y_off;
int dst_startX = gX * (THREADS-ksX+1) + dst_x_off;
int dst_startY = (gY << 1) + dst_y_off;
float4 data[ksY+1];
__local float4 temp[2][THREADS];
#ifdef BORDER_CONSTANT
bool con;
float4 ss;
for(int i=0; i < ksY+1; i++)
{
con = startX+col >= 0 && startX+col < src_whole_cols && startY+i >= 0 && startY+i < src_whole_rows;
int cur_col = clamp(startX + col, 0, src_whole_cols);
ss = (startY+i)=0&&cur_col>=0&&cur_col>4) + cur_col]:(float4)0;
data[i] = con ? ss : (float4)(0.0,0.0,0.0,0.0);
}
#else
for(int i=0; i < ksY+1; i++)
{
int selected_row;
int selected_col;
selected_row = ADDR_H(startY+i, 0, src_whole_rows);
selected_row = ADDR_B(startY+i, src_whole_rows, selected_row);
selected_col = ADDR_L(startX+col, 0, src_whole_cols);
selected_col = ADDR_R(startX+col, src_whole_cols, selected_col);
data[i] = src[selected_row * (src_step>>4) + selected_col];
}
#endif
float4 sum0 = 0.0, sum1 = 0.0, sum2 = 0.0;
for(int i=1; i < ksY; i++)
{
sum0 += (data[i]);
}
sum1 = sum0 + (data[0]);
sum2 = sum0 + (data[ksY]);
temp[0][col] = sum1;
temp[1][col] = sum2;
barrier(CLK_LOCAL_MEM_FENCE);
if(col < (THREADS-(ksX-1)))
{
col += anX;
int posX = dst_startX - dst_x_off + col - anX;
int posY = (gY << 1);
float4 tmp_sum[2]= {(float4)(0.0,0.0,0.0,0.0), (float4)(0.0,0.0,0.0,0.0)};
for(int k=0; k<2; k++)
for(int i=-anX; i<=anX; i++)
{
tmp_sum[k] += temp[k][col+i];
}
for(int i=0; i<2; i++)
{
if(posX >= 0 && posX < dst_cols && (posY+i) >= 0 && (posY+i) < dst_rows)
dst[(dst_startY+i) * (dst_step>>4)+ dst_startX + col - anX] = tmp_sum[i]/alpha;
}
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#define DATA_TYPE UNDEFINED
#if defined (DEPTH_0)
#undef  DATA_TYPE
#define DATA_TYPE uchar
#define MAX_NUM  255
#define HALF_MAX 128
#define SAT_CAST(num) convert_uchar_sat(num)
#endif
#if defined (DEPTH_2)
#undef  DATA_TYPE
#define DATA_TYPE ushort
#define MAX_NUM  65535
#define HALF_MAX 32768
#define SAT_CAST(num) convert_ushort_sat(num)
#endif
#if defined (DEPTH_5)
#undef  DATA_TYPE
#define DATA_TYPE float
#define MAX_NUM  1.0f
#define HALF_MAX 0.5f
#define SAT_CAST(num) (num)
#endif
#define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n))
enum
{
yuv_shift  = 14,
xyz_shift  = 12,
R2Y        = 4899,
G2Y        = 9617,
B2Y        = 1868,
BLOCK_SIZE = 256
};
__kernel void RGB2Gray(int cols,int rows,int src_step,int dst_step,int channels,
int bidx, __global const DATA_TYPE* src, __global DATA_TYPE* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
src_step /= sizeof(DATA_TYPE);
dst_step /= sizeof(DATA_TYPE);
if (y < rows && x < cols)
{
int src_idx = y * src_step + x * channels;
int dst_idx = y * dst_step + x;
#if defined (DEPTH_5)
dst[dst_idx] = src[src_idx + bidx] * 0.114f + src[src_idx + 1] * 0.587f + src[src_idx + (bidx^2)] * 0.299f;
#else
dst[dst_idx] = (DATA_TYPE)CV_DESCALE((src[src_idx + bidx] * B2Y + src[src_idx + 1] * G2Y + src[src_idx + (bidx^2)] * R2Y), yuv_shift);
#endif
}
}
__kernel void Gray2RGB(int cols,int rows,int src_step,int dst_step,
__global const DATA_TYPE* src, __global DATA_TYPE* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
src_step /= sizeof(DATA_TYPE);
dst_step /= sizeof(DATA_TYPE);
if (y < rows && x < cols)
{
int src_idx = y * src_step + x;
int dst_idx = y * dst_step + x * 4;
DATA_TYPE val = src[src_idx];
dst[dst_idx++] = val;
dst[dst_idx++] = val;
dst[dst_idx++] = val;
dst[dst_idx] = MAX_NUM;
}
}
__constant float c_RGB2YUVCoeffs_f[5]  = { 0.114f, 0.587f, 0.299f, 0.492f, 0.877f };
__constant int   c_RGB2YUVCoeffs_i[5]  = { B2Y, G2Y, R2Y, 8061, 14369 };
__kernel void RGB2YUV(int cols,int rows,int src_step,int dst_step,int channels,
int bidx, __global const DATA_TYPE* src, __global DATA_TYPE* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
src_step /= sizeof(DATA_TYPE);
dst_step /= sizeof(DATA_TYPE);
if (y < rows && x < cols)
{
int src_idx = y * src_step + x * channels;
int dst_idx = y * dst_step + x * channels;
dst += dst_idx;
const DATA_TYPE rgb[] = {src[src_idx], src[src_idx + 1], src[src_idx + 2]};
#if defined (DEPTH_5)
__constant float * coeffs = c_RGB2YUVCoeffs_f;
const DATA_TYPE Y  = rgb[0] * coeffs[bidx] + rgb[1] * coeffs[1] + rgb[2] * coeffs[bidx^2];
const DATA_TYPE Cr = (rgb[bidx] - Y) * coeffs[3] + HALF_MAX;
const DATA_TYPE Cb = (rgb[bidx^2] - Y) * coeffs[4] + HALF_MAX;
#else
__constant int * coeffs = c_RGB2YUVCoeffs_i;
const int delta = HALF_MAX * (1 << yuv_shift);
const int Y =  CV_DESCALE(rgb[0] * coeffs[bidx] + rgb[1] * coeffs[1] + rgb[2] * coeffs[bidx^2], yuv_shift);
const int Cr = CV_DESCALE((rgb[bidx] - Y) * coeffs[3] + delta, yuv_shift);
const int Cb = CV_DESCALE((rgb[bidx^2] - Y) * coeffs[4] + delta, yuv_shift);
#endif
dst[0] = SAT_CAST( Y );
dst[1] = SAT_CAST( Cr );
dst[2] = SAT_CAST( Cb );
}
}
__constant float c_YUV2RGBCoeffs_f[5] = { 2.032f, -0.395f, -0.581f, 1.140f };
__constant int   c_YUV2RGBCoeffs_i[5] = { 33292, -6472, -9519, 18678 };
__kernel void YUV2RGB(int cols,int rows,int src_step,int dst_step,int channels,
int bidx, __global const DATA_TYPE* src, __global DATA_TYPE* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
src_step /= sizeof(DATA_TYPE);
dst_step /= sizeof(DATA_TYPE);
if (y < rows && x < cols)
{
int src_idx = y * src_step + x * channels;
int dst_idx = y * dst_step + x * channels;
dst += dst_idx;
const DATA_TYPE yuv[] = {src[src_idx], src[src_idx + 1], src[src_idx + 2]};
#if defined (DEPTH_5)
__constant float * coeffs = c_YUV2RGBCoeffs_f;
const float b = yuv[0] + (yuv[2] - HALF_MAX) * coeffs[3];
const float g = yuv[0] + (yuv[2] - HALF_MAX) * coeffs[2] + (yuv[1] - HALF_MAX) * coeffs[1];
const float r = yuv[0] + (yuv[1] - HALF_MAX) * coeffs[0];
#else
__constant int * coeffs = c_YUV2RGBCoeffs_i;
const int b = yuv[0] + CV_DESCALE((yuv[2] - HALF_MAX) * coeffs[3], yuv_shift);
const int g = yuv[0] + CV_DESCALE((yuv[2] - HALF_MAX) * coeffs[2] + (yuv[1] - HALF_MAX) * coeffs[1], yuv_shift);
const int r = yuv[0] + CV_DESCALE((yuv[1] - HALF_MAX) * coeffs[0], yuv_shift);
#endif
dst[bidx^2] = SAT_CAST( b );
dst[1]      = SAT_CAST( g );
dst[bidx]   = SAT_CAST( r );
}
}
__constant int ITUR_BT_601_CY = 1220542;
__constant int ITUR_BT_601_CUB = 2116026;
__constant int ITUR_BT_601_CUG = 409993;
__constant int ITUR_BT_601_CVG = 852492;
__constant int ITUR_BT_601_CVR = 1673527;
__constant int ITUR_BT_601_SHIFT = 20;
__kernel void YUV2RGBA_NV12(int cols,int rows,int src_step,int dst_step,
int bidx, int width, int height, __global const uchar* src, __global uchar* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
if (y < height / 2 && x < width / 2 )
{
__global const uchar* ysrc = src + (y << 1)       * src_step + (x << 1);
__global const uchar* usrc = src + (height + y)   * src_step + (x << 1);
__global uchar*       dst1 = dst + (y << 1)       * dst_step + (x << 3);
__global uchar*       dst2 = dst + ((y << 1) + 1) * dst_step + (x << 3);
int Y1 = ysrc[0];
int Y2 = ysrc[1];
int Y3 = ysrc[src_step];
int Y4 = ysrc[src_step + 1];
int U  = usrc[0] - 128;
int V  = usrc[1] - 128;
int ruv = (1 << (ITUR_BT_601_SHIFT - 1)) + ITUR_BT_601_CVR * V;
int guv = (1 << (ITUR_BT_601_SHIFT - 1)) - ITUR_BT_601_CVG * V - ITUR_BT_601_CUG * U;
int buv = (1 << (ITUR_BT_601_SHIFT - 1)) + ITUR_BT_601_CUB * U;
Y1 = max(0, Y1 - 16) * ITUR_BT_601_CY;
dst1[2 - bidx]     = convert_uchar_sat((Y1 + ruv) >> ITUR_BT_601_SHIFT);
dst1[1]        = convert_uchar_sat((Y1 + guv) >> ITUR_BT_601_SHIFT);
dst1[bidx] = convert_uchar_sat((Y1 + buv) >> ITUR_BT_601_SHIFT);
dst1[3]        = 255;
Y2 = max(0, Y2 - 16) * ITUR_BT_601_CY;
dst1[6 - bidx] = convert_uchar_sat((Y2 + ruv) >> ITUR_BT_601_SHIFT);
dst1[5]        = convert_uchar_sat((Y2 + guv) >> ITUR_BT_601_SHIFT);
dst1[4 + bidx] = convert_uchar_sat((Y2 + buv) >> ITUR_BT_601_SHIFT);
dst1[7]        = 255;
Y3 = max(0, Y3 - 16) * ITUR_BT_601_CY;
dst2[2 - bidx]     = convert_uchar_sat((Y3 + ruv) >> ITUR_BT_601_SHIFT);
dst2[1]        = convert_uchar_sat((Y3 + guv) >> ITUR_BT_601_SHIFT);
dst2[bidx] = convert_uchar_sat((Y3 + buv) >> ITUR_BT_601_SHIFT);
dst2[3]        = 255;
Y4 = max(0, Y4 - 16) * ITUR_BT_601_CY;
dst2[6 - bidx] = convert_uchar_sat((Y4 + ruv) >> ITUR_BT_601_SHIFT);
dst2[5]        = convert_uchar_sat((Y4 + guv) >> ITUR_BT_601_SHIFT);
dst2[4 + bidx] = convert_uchar_sat((Y4 + buv) >> ITUR_BT_601_SHIFT);
dst2[7]        = 255;
}
}
__constant float c_RGB2YCrCbCoeffs_f[5] = {0.299f, 0.587f, 0.114f, 0.713f, 0.564f};
__constant int   c_RGB2YCrCbCoeffs_i[5] = {R2Y, G2Y, B2Y, 11682, 9241};
__kernel void RGB2YCrCb(int cols,int rows,int src_step,int dst_step,int channels,
int bidx, __global const DATA_TYPE* src, __global DATA_TYPE* dst)
{
const int x = get_global_id(0);
const int y = get_global_id(1);
src_step /= sizeof(DATA_TYPE);
dst_step /= sizeof(DATA_TYPE);
if (y < rows && x < cols)
{
int src_idx = y * src_step + x * channels;
int dst_idx = y * dst_step + x * channels;
dst += dst_idx;
const DATA_TYPE rgb[] = {src[src_idx], src[src_idx + 1], src[src_idx + 2]};
#if defined (DEPTH_5)
__constant float * coeffs = c_RGB2YCrCbCoeffs_f;
const DATA_TYPE Y  = rgb[0] * coeffs[bidx^2] + rgb[1] * coeffs[1] + rgb[2] * coeffs[bidx];
const DATA_TYPE Cr = (rgb[bidx^2] - Y) * coeffs[3] + HALF_MAX;
const DATA_TYPE Cb = (rgb[bidx] - Y) * coeffs[4] + HALF_MAX;
#else
__constant int * coeffs = c_RGB2YCrCbCoeffs_i;
const int delta = HALF_MAX * (1 << yuv_shift);
const int Y =  CV_DESCALE(rgb[0] * coeffs[bidx^2] + rgb[1] * coeffs[1] + rgb[2] * coeffs[bidx], yuv_shift);
const int Cr = CV_DESCALE((rgb[bidx^2] - Y) * coeffs[3] + delta, yuv_shift);
const int Cb = CV_DESCALE((rgb[bidx] - Y) * coeffs[4] + delta, yuv_shift);
#endif
dst[0] = SAT_CAST( Y );
dst[1] = SAT_CAST( Cr );
dst[2] = SAT_CAST( Cb );
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void convertC3C4(__global const GENTYPE4 * restrict src, __global GENTYPE4 *dst, int cols, int rows,
int dstStep_in_piexl,int pixel_end)
{
int id = get_global_id(0);
int3 pixelid = (int3)(mul24(id,3),mad24(id,3,1),mad24(id,3,2));
pixelid = clamp(pixelid,0,pixel_end);
GENTYPE4 pixel0, pixel1, pixel2, outpix0,outpix1,outpix2,outpix3;
pixel0 = src[pixelid.x];
pixel1 = src[pixelid.y];
pixel2 = src[pixelid.z];
outpix0 = (GENTYPE4)(pixel0.x,pixel0.y,pixel0.z,0);
outpix1 = (GENTYPE4)(pixel0.w,pixel1.x,pixel1.y,0);
outpix2 = (GENTYPE4)(pixel1.z,pixel1.w,pixel2.x,0);
outpix3 = (GENTYPE4)(pixel2.y,pixel2.z,pixel2.w,0);
int4 outy = (id<<2)/cols;
int4 outx = (id<<2)%cols;
outx.y++;
outx.z+=2;
outx.w+=3;
outy = select(outy,outy+1,outx>=cols);
outx = select(outx,outx-cols,outx>=cols);
int4 addr = mad24(outy,(int4)dstStep_in_piexl,outx);
if(outx.w=(int4)cols);
y4=clamp(y4,(int4)0,(int4)(rows-1));
x4 = select(x4,x4-(int4)cols,x4>=(int4)cols);
int4 addr = mad24(y4,(int4)srcStep_in_pixel,x4);
GENTYPE4 pixel0,pixel1,pixel2,pixel3, outpixel1, outpixel2;
pixel0 = src[addr.x];
pixel1 = src[addr.y];
pixel2 = src[addr.z];
pixel3 = src[addr.w];
pixel0.w = pixel1.x;
outpixel1.x = pixel1.y;
outpixel1.y = pixel1.z;
outpixel1.z = pixel2.x;
outpixel1.w = pixel2.y;
outpixel2.x = pixel2.z;
outpixel2.y = pixel3.x;
outpixel2.z = pixel3.y;
outpixel2.w = pixel3.z;
int4 outaddr = mul24(id>>2 , 3);
outaddr.y++;
outaddr.z+=2;
if(outaddr.z <= pixel_end)
{
dst[outaddr.x] = pixel0;
dst[outaddr.y] = outpixel1;
dst[outaddr.z] = outpixel2;
}
else if(outaddr.y <= pixel_end)
{
dst[outaddr.x] = pixel0;
dst[outaddr.y] = outpixel1;
}
else if(outaddr.x <= pixel_end)
{
dst[outaddr.x] = pixel0;
}
}
__kernel
void buildWarpPlaneMaps
(
__global float * map_x,
__global float * map_y,
__constant float * KRT,
int tl_u,
int tl_v,
int cols,
int rows,
int step_x,
int step_y,
float scale
)
{
int du = get_global_id(0);
int dv = get_global_id(1);
step_x /= sizeof(float);
step_y /= sizeof(float);
__constant float * ck_rinv = KRT;
__constant float * ct      = KRT + 9;
if (du < cols && dv < rows)
{
float u = tl_u + du;
float v = tl_v + dv;
float x, y;
float x_ = u / scale - ct[0];
float y_ = v / scale - ct[1];
float z;
x = ck_rinv[0] * x_ + ck_rinv[1] * y_ + ck_rinv[2] * (1 - ct[2]);
y = ck_rinv[3] * x_ + ck_rinv[4] * y_ + ck_rinv[5] * (1 - ct[2]);
z = ck_rinv[6] * x_ + ck_rinv[7] * y_ + ck_rinv[8] * (1 - ct[2]);
x /= z;
y /= z;
map_x[dv * step_x + du] = x;
map_y[dv * step_y + du] = y;
}
}
__kernel
void buildWarpCylindricalMaps
(
__global float * map_x,
__global float * map_y,
__constant float * ck_rinv,
int tl_u,
int tl_v,
int cols,
int rows,
int step_x,
int step_y,
float scale
)
{
int du = get_global_id(0);
int dv = get_global_id(1);
step_x /= sizeof(float);
step_y /= sizeof(float);
if (du < cols && dv < rows)
{
float u = tl_u + du;
float v = tl_v + dv;
float x, y;
u /= scale;
float x_ = sin(u);
float y_ = v / scale;
float z_ = cos(u);
float z;
x = ck_rinv[0] * x_ + ck_rinv[1] * y_ + ck_rinv[2] * z_;
y = ck_rinv[3] * x_ + ck_rinv[4] * y_ + ck_rinv[5] * z_;
z = ck_rinv[6] * x_ + ck_rinv[7] * y_ + ck_rinv[8] * z_;
if (z > 0) { x /= z; y /= z; }
else x = y = -1;
map_x[dv * step_x + du] = x;
map_y[dv * step_y + du] = y;
}
}
__kernel
void buildWarpSphericalMaps
(
__global float * map_x,
__global float * map_y,
__constant float * ck_rinv,
int tl_u,
int tl_v,
int cols,
int rows,
int step_x,
int step_y,
float scale
)
{
int du = get_global_id(0);
int dv = get_global_id(1);
step_x /= sizeof(float);
step_y /= sizeof(float);
if (du < cols && dv < rows)
{
float u = tl_u + du;
float v = tl_v + dv;
float x, y;
v /= scale;
u /= scale;
float sinv = sin(v);
float x_ = sinv * sin(u);
float y_ = - cos(v);
float z_ = sinv * cos(u);
float z;
x = ck_rinv[0] * x_ + ck_rinv[1] * y_ + ck_rinv[2] * z_;
y = ck_rinv[3] * x_ + ck_rinv[4] * y_ + ck_rinv[5] * z_;
z = ck_rinv[6] * x_ + ck_rinv[7] * y_ + ck_rinv[8] * z_;
if (z > 0) { x /= z; y /= z; }
else x = y = -1;
map_x[dv * step_x + du] = x;
map_y[dv * step_y + du] = y;
}
}
__kernel
void buildWarpAffineMaps
(
__global float * xmap,
__global float * ymap,
__constant float * c_warpMat,
int cols,
int rows,
int step_x,
int step_y
)
{
int x = get_global_id(0);
int y = get_global_id(1);
step_x /= sizeof(float);
step_y /= sizeof(float);
if (x < cols && y < rows)
{
const float xcoo = c_warpMat[0] * x + c_warpMat[1] * y + c_warpMat[2];
const float ycoo = c_warpMat[3] * x + c_warpMat[4] * y + c_warpMat[5];
map_x[y * step_x + x] = xcoo;
map_y[y * step_y + x] = ycoo;
}
}
__kernel
void buildWarpPerspectiveMaps
(
__global float * xmap,
__global float * ymap,
__constant float * c_warpMat,
int cols,
int rows,
int step_x,
int step_y
)
{
int x = get_global_id(0);
int y = get_global_id(1);
step_x /= sizeof(float);
step_y /= sizeof(float);
if (x < cols && y < rows)
{
const float coeff = 1.0f / (c_warpMat[6] * x + c_warpMat[7] * y + c_warpMat[8]);
const float xcoo = coeff * (c_warpMat[0] * x + c_warpMat[1] * y + c_warpMat[2]);
const float ycoo = coeff * (c_warpMat[3] * x + c_warpMat[4] * y + c_warpMat[5]);
map_x[y * step_x + x] = xcoo;
map_y[y * step_y + x] = ycoo;
}
}
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#define MAX_FLOAT 3.40282e+038f
#ifndef T
#define T float
#endif
#ifndef BLOCK_SIZE
#define BLOCK_SIZE 16
#endif
#ifndef MAX_DESC_LEN
#define MAX_DESC_LEN 64
#endif
#ifndef DIST_TYPE
#define DIST_TYPE 0
#endif
int bit1Count(int v)
{
v = v - ((v >> 1) & 0x55555555);
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);
return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
}
#if   (DIST_TYPE == 0)
#   ifdef T_FLOAT
#       define DIST(x, y) fabs((x) - (y))
typedef float value_type;
typedef float result_type;
#   else
#       define DIST(x, y) abs((x) - (y))
typedef int value_type;
typedef int result_type;
#   endif
#define DIST_RES(x) (x)
#elif (DIST_TYPE == 1)
#define DIST(x, y) (((x) - (y)) * ((x) - (y)))
typedef float value_type;
typedef float result_type;
#define DIST_RES(x) sqrt(x)
#elif (DIST_TYPE == 2)
#define DIST(x, y) bit1Count( (x) ^ (y) )
typedef int value_type;
typedef int result_type;
#define DIST_RES(x) (x)
#endif
result_type reduce_block(
__local value_type *s_query,
__local value_type *s_train,
int lidx,
int lidy
)
{
result_type result = 0;
#pragma unroll
for (int j = 0 ; j < BLOCK_SIZE ; j++)
{
result += DIST(
s_query[lidy * BLOCK_SIZE + j],
s_train[j * BLOCK_SIZE + lidx]);
}
return DIST_RES(result);
}
result_type reduce_multi_block(
__local value_type *s_query,
__local value_type *s_train,
int block_index,
int lidx,
int lidy
)
{
result_type result = 0;
#pragma unroll
for (int j = 0 ; j < BLOCK_SIZE ; j++)
{
result += DIST(
s_query[lidy * MAX_DESC_LEN + block_index * BLOCK_SIZE + j],
s_train[j * BLOCK_SIZE + lidx]);
}
return DIST_RES(result);
}
__kernel void BruteForceMatch_UnrollMatch(
__global T *query,
__global T *train,
__global int *bestTrainIdx,
__global float *bestDistance,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * MAX_DESC_LEN;
int queryIdx = groupidx * BLOCK_SIZE + lidy;
#pragma unroll
for (int i = 0 ;  i <  MAX_DESC_LEN / BLOCK_SIZE; i ++)
{
int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * MAX_DESC_LEN + loadx] = loadx < query_cols ? query[min(queryIdx, query_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
}
float myBestDistance = MAX_FLOAT;
int myBestTrainIdx = -1;
volatile int imgIdx = 0;
for (int t = 0, endt = (train_rows + BLOCK_SIZE - 1) / BLOCK_SIZE; t < endt; t++)
{
result_type result = 0;
#pragma unroll
for (int i = 0 ; i < MAX_DESC_LEN / BLOCK_SIZE ; i++)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_train[lidx * BLOCK_SIZE + lidy] = loadx < train_cols ? train[min(t * BLOCK_SIZE + lidy, train_rows - 1) * (step / sizeof(float)) + loadx] : 0;
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_multi_block(s_query, s_train, i, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows && result < myBestDistance)
{
myBestDistance = result;
myBestTrainIdx = trainIdx;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
__local float *s_distance = (__local float*)(sharebuffer);
__local int* s_trainIdx = (__local int *)(sharebuffer + BLOCK_SIZE * BLOCK_SIZE);
s_distance += lidy * BLOCK_SIZE;
s_trainIdx += lidy * BLOCK_SIZE;
s_distance[lidx] = myBestDistance;
s_trainIdx[lidx] = myBestTrainIdx;
barrier(CLK_LOCAL_MEM_FENCE);
#pragma unroll
for (int k = 0 ; k < BLOCK_SIZE; k++)
{
if (myBestDistance > s_distance[k])
{
myBestDistance = s_distance[k];
myBestTrainIdx = s_trainIdx[k];
}
}
if (queryIdx < query_rows && lidx == 0)
{
bestTrainIdx[queryIdx] = myBestTrainIdx;
bestDistance[queryIdx] = myBestDistance;
}
}
__kernel void BruteForceMatch_Match(
__global T *query,
__global T *train,
__global int *bestTrainIdx,
__global float *bestDistance,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
const int queryIdx = groupidx * BLOCK_SIZE + lidy;
float myBestDistance = MAX_FLOAT;
int myBestTrainIdx = -1;
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * BLOCK_SIZE;
for (int t = 0 ;  t < (train_rows + BLOCK_SIZE - 1) / BLOCK_SIZE ; t++)
{
result_type result = 0;
for (int i = 0 ; i < (query_cols + BLOCK_SIZE - 1) / BLOCK_SIZE ; i++)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * BLOCK_SIZE + lidx] = 0;
s_train[lidx * BLOCK_SIZE + lidy] = 0;
if (loadx < query_cols)
{
s_query[lidy * BLOCK_SIZE + lidx] = query[min(queryIdx, query_rows - 1) * (step / sizeof(float)) + loadx];
s_train[lidx * BLOCK_SIZE + lidy] = train[min(t * BLOCK_SIZE + lidy, train_rows - 1) * (step / sizeof(float)) + loadx];
}
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_block(s_query, s_train, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
const int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows && result < myBestDistance )
{
myBestDistance = result;
myBestTrainIdx = trainIdx;
}
}
barrier(CLK_LOCAL_MEM_FENCE);
__local float *s_distance = (__local float *)sharebuffer;
__local int *s_trainIdx = (__local int *)(sharebuffer + BLOCK_SIZE * BLOCK_SIZE);
s_distance += lidy * BLOCK_SIZE;
s_trainIdx += lidy * BLOCK_SIZE;
s_distance[lidx] = myBestDistance;
s_trainIdx[lidx] = myBestTrainIdx;
barrier(CLK_LOCAL_MEM_FENCE);
for (int k = 0 ; k < BLOCK_SIZE; k++)
{
if (myBestDistance > s_distance[k])
{
myBestDistance = s_distance[k];
myBestTrainIdx = s_trainIdx[k];
}
}
if (queryIdx < query_rows && lidx == 0)
{
bestTrainIdx[queryIdx] = myBestTrainIdx;
bestDistance[queryIdx] = myBestDistance;
}
}
__kernel void BruteForceMatch_RadiusUnrollMatch(
__global T *query,
__global T *train,
float maxDistance,
__global int *bestTrainIdx,
__global float *bestDistance,
__global int *nMatches,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int bestTrainIdx_cols,
int step,
int ostep
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
const int groupidy = get_group_id(1);
const int queryIdx = groupidy * BLOCK_SIZE + lidy;
const int trainIdx = groupidx * BLOCK_SIZE + lidx;
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * BLOCK_SIZE;
result_type result = 0;
for (int i = 0 ; i < MAX_DESC_LEN / BLOCK_SIZE ; ++i)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * BLOCK_SIZE + lidx] = loadx < query_cols ? query[min(queryIdx, query_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
s_train[lidx * BLOCK_SIZE + lidy] = loadx < query_cols ? train[min(groupidx * BLOCK_SIZE + lidy, train_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_block(s_query, s_train, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
if (queryIdx < query_rows && trainIdx < train_rows &&
convert_float(result) < maxDistance)
{
unsigned int ind = atom_inc(nMatches + queryIdx);
if(ind < bestTrainIdx_cols)
{
bestTrainIdx[queryIdx * (ostep / sizeof(int)) + ind] = trainIdx;
bestDistance[queryIdx * (ostep / sizeof(float)) + ind] = result;
}
}
}
__kernel void BruteForceMatch_RadiusMatch(
__global T *query,
__global T *train,
float maxDistance,
__global int *bestTrainIdx,
__global float *bestDistance,
__global int *nMatches,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int bestTrainIdx_cols,
int step,
int ostep
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
const int groupidy = get_group_id(1);
const int queryIdx = groupidy * BLOCK_SIZE + lidy;
const int trainIdx = groupidx * BLOCK_SIZE + lidx;
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * BLOCK_SIZE;
result_type result = 0;
for (int i = 0 ; i < (query_cols + BLOCK_SIZE - 1) / BLOCK_SIZE ; ++i)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * BLOCK_SIZE + lidx] = loadx < query_cols ? query[min(queryIdx, query_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
s_train[lidx * BLOCK_SIZE + lidy] = loadx < query_cols ? train[min(groupidx * BLOCK_SIZE + lidy, train_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_block(s_query, s_train, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
if (queryIdx < query_rows && trainIdx < train_rows && 
convert_float(result) < maxDistance)
{
unsigned int ind = atom_inc(nMatches + queryIdx);
if(ind < bestTrainIdx_cols)
{
bestTrainIdx[queryIdx * (ostep / sizeof(int)) + ind] = trainIdx;
bestDistance[queryIdx * (ostep / sizeof(float)) + ind] = result;
}
}
}
__kernel void BruteForceMatch_knnUnrollMatch(
__global T *query,
__global T *train,
__global int2 *bestTrainIdx,
__global float2 *bestDistance,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
const int queryIdx = groupidx * BLOCK_SIZE + lidy;
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * MAX_DESC_LEN;
for (int i = 0 ;  i <  MAX_DESC_LEN / BLOCK_SIZE; i ++)
{
int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * MAX_DESC_LEN + loadx] = loadx < query_cols ? query[min(queryIdx, query_rows - 1)  * (step / sizeof(float)) + loadx] : 0;
}
float myBestDistance1 = MAX_FLOAT;
float myBestDistance2 = MAX_FLOAT;
int myBestTrainIdx1 = -1;
int myBestTrainIdx2 = -1;
volatile int imgIdx = 0;
for (int t = 0 ; t < (train_rows + BLOCK_SIZE - 1) / BLOCK_SIZE ; t++)
{
result_type result = 0;
for (int i = 0 ; i < MAX_DESC_LEN / BLOCK_SIZE ; i++)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_train[lidx * BLOCK_SIZE + lidy] = loadx < train_cols ? train[min(t * BLOCK_SIZE + lidy, train_rows - 1) * (step / sizeof(float)) + loadx] : 0;
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_multi_block(s_query, s_train, i, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
const int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows)
{
if (result < myBestDistance1)
{
myBestDistance2 = myBestDistance1;
myBestTrainIdx2 = myBestTrainIdx1;
myBestDistance1 = result;
myBestTrainIdx1 = trainIdx;
}
else if (result < myBestDistance2)
{
myBestDistance2 = result;
myBestTrainIdx2 = trainIdx;
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
__local float *s_distance = (local float *)sharebuffer;
__local int *s_trainIdx = (local int *)(sharebuffer + BLOCK_SIZE * BLOCK_SIZE);
s_distance += lidy * BLOCK_SIZE;
s_trainIdx += lidy * BLOCK_SIZE;
s_distance[lidx] = myBestDistance1;
s_trainIdx[lidx] = myBestTrainIdx1;
float bestDistance1 = MAX_FLOAT;
float bestDistance2 = MAX_FLOAT;
int bestTrainIdx1 = -1;
int bestTrainIdx2 = -1;
barrier(CLK_LOCAL_MEM_FENCE);
if (lidx == 0)
{
for (int i = 0 ; i < BLOCK_SIZE ; i++)
{
float val = s_distance[i];
if (val < bestDistance1)
{
bestDistance2 = bestDistance1;
bestTrainIdx2 = bestTrainIdx1;
bestDistance1 = val;
bestTrainIdx1 = s_trainIdx[i];
}
else if (val < bestDistance2)
{
bestDistance2 = val;
bestTrainIdx2 = s_trainIdx[i];
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
s_distance[lidx] = myBestDistance2;
s_trainIdx[lidx] = myBestTrainIdx2;
barrier(CLK_LOCAL_MEM_FENCE);
if (lidx == 0)
{
for (int i = 0 ; i < BLOCK_SIZE ; i++)
{
float val = s_distance[i];
if (val < bestDistance2)
{
bestDistance2 = val;
bestTrainIdx2 = s_trainIdx[i];
}
}
}
myBestDistance1 = bestDistance1;
myBestDistance2 = bestDistance2;
myBestTrainIdx1 = bestTrainIdx1;
myBestTrainIdx2 = bestTrainIdx2;
if (queryIdx < query_rows && lidx == 0)
{
bestTrainIdx[queryIdx] = (int2)(myBestTrainIdx1, myBestTrainIdx2);
bestDistance[queryIdx] = (float2)(myBestDistance1, myBestDistance2);
}
}
__kernel void BruteForceMatch_knnMatch(
__global T *query,
__global T *train,
__global int2 *bestTrainIdx,
__global float2 *bestDistance,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step
)
{
const int lidx = get_local_id(0);
const int lidy = get_local_id(1);
const int groupidx = get_group_id(0);
const int queryIdx = groupidx * BLOCK_SIZE + lidy;
__local value_type *s_query = (__local value_type *)sharebuffer;
__local value_type *s_train = (__local value_type *)sharebuffer + BLOCK_SIZE * BLOCK_SIZE;
float myBestDistance1 = MAX_FLOAT;
float myBestDistance2 = MAX_FLOAT;
int myBestTrainIdx1 = -1;
int myBestTrainIdx2 = -1;
for (int  t = 0 ; t < (train_rows + BLOCK_SIZE - 1) / BLOCK_SIZE ; t++)
{
result_type result = 0.0f;
for (int i = 0 ; i < (query_cols + BLOCK_SIZE -1) / BLOCK_SIZE ; i++)
{
const int loadx = lidx + i * BLOCK_SIZE;
s_query[lidy * BLOCK_SIZE + lidx] = 0;
s_train[lidx * BLOCK_SIZE + lidy] = 0;
if (loadx < query_cols)
{
s_query[lidy * BLOCK_SIZE + lidx] = query[min(queryIdx, query_rows - 1) * (step / sizeof(float)) + loadx];
s_train[lidx * BLOCK_SIZE + lidy] = train[min(t * BLOCK_SIZE + lidy, train_rows - 1) * (step / sizeof(float)) + loadx];
}
barrier(CLK_LOCAL_MEM_FENCE);
result += reduce_block(s_query, s_train, lidx, lidy);
barrier(CLK_LOCAL_MEM_FENCE);
}
const int trainIdx = t * BLOCK_SIZE + lidx;
if (queryIdx < query_rows && trainIdx < train_rows )
{
if (result < myBestDistance1)
{
myBestDistance2 = myBestDistance1;
myBestTrainIdx2 = myBestTrainIdx1;
myBestDistance1 = result;
myBestTrainIdx1 = trainIdx;
}
else if (result < myBestDistance2)
{
myBestDistance2 = result;
myBestTrainIdx2 = trainIdx;
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
__local float *s_distance = (__local float *)sharebuffer;
__local int *s_trainIdx = (__local int *)(sharebuffer + BLOCK_SIZE * BLOCK_SIZE);
s_distance += lidy * BLOCK_SIZE;
s_trainIdx += lidy * BLOCK_SIZE;
s_distance[lidx] = myBestDistance1;
s_trainIdx[lidx] = myBestTrainIdx1;
float bestDistance1 = MAX_FLOAT;
float bestDistance2 = MAX_FLOAT;
int bestTrainIdx1 = -1;
int bestTrainIdx2 = -1;
barrier(CLK_LOCAL_MEM_FENCE);
if (lidx == 0)
{
for (int i = 0 ; i < BLOCK_SIZE ; i++)
{
float val = s_distance[i];
if (val < bestDistance1)
{
bestDistance2 = bestDistance1;
bestTrainIdx2 = bestTrainIdx1;
bestDistance1 = val;
bestTrainIdx1 = s_trainIdx[i];
}
else if (val < bestDistance2)
{
bestDistance2 = val;
bestTrainIdx2 = s_trainIdx[i];
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
s_distance[lidx] = myBestDistance2;
s_trainIdx[lidx] = myBestTrainIdx2;
barrier(CLK_LOCAL_MEM_FENCE);
if (lidx == 0)
{
for (int i = 0 ; i < BLOCK_SIZE ; i++)
{
float val = s_distance[i];
if (val < bestDistance2)
{
bestDistance2 = val;
bestTrainIdx2 = s_trainIdx[i];
}
}
}
myBestDistance1 = bestDistance1;
myBestDistance2 = bestDistance2;
myBestTrainIdx1 = bestTrainIdx1;
myBestTrainIdx2 = bestTrainIdx2;
if (queryIdx < query_rows && lidx == 0)
{
bestTrainIdx[queryIdx] = (int2)(myBestTrainIdx1, myBestTrainIdx2);
bestDistance[queryIdx] = (float2)(myBestDistance1, myBestDistance2);
}
}
kernel void BruteForceMatch_calcDistanceUnrolled(
__global T *query,
__global T *train,
__global float *allDist,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step)
{
}
kernel void BruteForceMatch_calcDistance(
__global T *query,
__global T *train,
__global float *allDist,
__local float *sharebuffer,
int query_rows,
int query_cols,
int train_rows,
int train_cols,
int step)
{
}
kernel void BruteForceMatch_findBestMatch(
__global float *allDist,
__global int *bestTrainIdx,
__global float *bestDistance,
int k
)
{
}
__kernel void BlendLinear_C1_D0(
__global uchar4 *dst,
__global uchar4 *img1,
__global uchar4 *img2,
__global float4 *weight1,
__global float4 *weight2,
int rows,
int cols,
int istep,
int wstep
)
{
int idx = get_global_id(0);
int idy = get_global_id(1);
if (idx << 2 < cols && idy < rows)
{
int pos = mad24(idy,istep >> 2,idx);
int wpos = mad24(idy,wstep >> 2,idx);
float4 w1 = weight1[wpos], w2 = weight2[wpos];
dst[pos] = convert_uchar4((convert_float4(img1[pos]) * w1 +
convert_float4(img2[pos]) * w2) / (w1 + w2 + 1e-5f));
}
}
__kernel void BlendLinear_C4_D0(
__global uchar4 *dst,
__global uchar4 *img1,
__global uchar4 *img2,
__global float *weight1,
__global float *weight2,
int rows,
int cols,
int istep,
int wstep
)
{
int idx = get_global_id(0);
int idy = get_global_id(1);
if (idx < cols && idy < rows)
{
int pos = mad24(idy,istep >> 2,idx);
int wpos = mad24(idy,wstep, idx);
float w1 = weight1[wpos];
float w2 = weight2[wpos];
dst[pos] = convert_uchar4((convert_float4(img1[pos]) * w1 +
convert_float4(img2[pos]) * w2) / (w1 + w2 + 1e-5f));
}
}
__kernel void BlendLinear_C1_D5(
__global float4 *dst,
__global float4 *img1,
__global float4 *img2,
__global float4 *weight1,
__global float4 *weight2,
int rows,
int cols,
int istep,
int wstep
)
{
int idx = get_global_id(0);
int idy = get_global_id(1);
if (idx << 2 < cols && idy < rows)
{
int pos = mad24(idy,istep >> 2,idx);
int wpos = mad24(idy,wstep >> 2,idx);
float4 w1 = weight1[wpos], w2 = weight2[wpos];
dst[pos] = (img1[pos] * w1 + img2[pos] * w2) / (w1 + w2 + 1e-5f);
}
}
__kernel void BlendLinear_C4_D5(
__global float4 *dst,
__global float4 *img1,
__global float4 *img2,
__global float *weight1,
__global float *weight2,
int rows,
int cols,
int istep,
int wstep
)
{
int idx = get_global_id(0);
int idy = get_global_id(1);
if (idx < cols && idy < rows)
{
int pos = mad24(idy,istep >> 2,idx);
int wpos = mad24(idy,wstep, idx);
float w1 = weight1[wpos];
float w2 = weight2[wpos];
dst[pos] = (img1[pos] * w1 + img2[pos] * w2) / (w1 + w2 + 1e-5f);
}
}
#define TILE_DIM      32
#define BLOCK_ROWS    8
#define LDS_STEP     (TILE_DIM + 1)
__kernel void transpose_C1_D0(__global uchar* src, int src_step, int src_offset,
__global uchar* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local uchar title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, x);
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] =*(src + src_offset + index_src);
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, x_index);
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*(dst + dst_offset + index_dst ) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C1_D4(__global int* src, int src_step, int src_offset,
__global int* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local int title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global int *)((__global char*)src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global int*)((__global char*)dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C1_D5(__global float* src, int src_step, int src_offset,
__global float* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local float title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global float *)((__global char*)src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global float*)((__global char*)dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C2_D2(__global ushort* src, int src_step, int src_offset,
__global ushort* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local ushort2 title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global ushort2 *)((__global char*)src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global ushort2*)((__global char*)dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C2_D3(__global short* src, int src_step, int src_offset,
__global short* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local short2 title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global short2 *)((__global char*)src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global short2*)((__global char*)dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C4_D0(__global uchar* src, int src_step, int src_offset,
__global uchar* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local uchar4 title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global uchar4 *)(src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global uchar4*)(dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
__kernel void transpose_C4_D1(__global char* src, int src_step, int src_offset,
__global char* dst, int dst_step, int dst_offset,
int src_rows, int src_cols)
{
int gp_x = get_group_id(0),   gp_y = get_group_id(1);
int gs_x = get_num_groups(0), gs_y = get_num_groups(1);
int groupId_x, groupId_y;
if(src_rows == src_cols)
{
groupId_y = gp_x;
groupId_x = (gp_x + gp_y) % gs_x;
}
else
{
int bid = gp_x + gs_x * gp_y;
groupId_y =  bid % gs_y;
groupId_x = ((bid / gs_y) + groupId_y) % gs_x;
}
int lx = get_local_id(0);
int ly = get_local_id(1);
int x = groupId_x * TILE_DIM + lx;
int y = groupId_y * TILE_DIM + ly;
int x_index = groupId_y * TILE_DIM + lx;
int y_index = groupId_x * TILE_DIM + ly;
__local char4 title[TILE_DIM * LDS_STEP];
if(x < src_cols && y < src_rows)
{
int index_src = mad24(y, src_step, (x << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if(y + i < src_rows)
{
title[(ly + i) * LDS_STEP + lx] = *((__global char4 *)(src + src_offset + index_src));
index_src = mad24(BLOCK_ROWS, src_step, index_src);
}
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if(x_index < src_rows && y_index < src_cols)
{
int index_dst = mad24(y_index, dst_step, (x_index << 2));
#pragma unroll
for(int i = 0; i < TILE_DIM; i += BLOCK_ROWS)
{
if((y_index + i) < src_cols)
{
*((__global char4*)(dst + dst_offset + index_dst )) = title[lx * LDS_STEP + ly + i];
index_dst +=  dst_step * BLOCK_ROWS ;
}
}
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#define RES_TYPE double4
#define CONVERT_RES_TYPE convert_double4
#else
#define RES_TYPE float4
#define CONVERT_RES_TYPE convert_float4
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar4
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char4
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort4
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short4
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int4
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float4
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double4
#endif
#if defined (FUNC_TYPE_0)
#define FUNC(a,b) b += a;
#endif
#if defined (FUNC_TYPE_1)
#define FUNC(a,b) b = b + (a >= 0 ? a : -a);
#endif
#if defined (FUNC_TYPE_2)
#define FUNC(a,b) b = b + a * a;
#endif
#if defined (REPEAT_S0)
#define repeat_s(a,b,c) a=a; b =b; c=c;
#endif
#if defined (REPEAT_S1)
#define repeat_s(a,b,c) a.s0=0; b=b; c=c;
#endif
#if defined (REPEAT_S2)
#define repeat_s(a,b,c) a.s0=0; a.s1=0; b=b; c=c;
#endif
#if defined (REPEAT_S3)
#define repeat_s(a,b,c) a.s0=0; a.s1=0; a.s2=0; b=b; c=c;
#endif
#if defined (REPEAT_S4)
#define repeat_s(a,b,c) a=0;b=b; c=c;
#endif
#if defined (REPEAT_S5)
#define repeat_s(a,b,c) a=0; b.s0=0;c=c;
#endif
#if defined (REPEAT_S6)
#define repeat_s(a,b,c) a=0; b.s0=0; b.s1=0; c=c;
#endif
#if defined (REPEAT_S7)
#define repeat_s(a,b,c) a=0; b.s0=0; b.s1=0; b.s2=0; c=c;
#endif
#if defined (REPEAT_S8)
#define repeat_s(a,b,c) a=0; b=0; c=c;
#endif
#if defined (REPEAT_S9)
#define repeat_s(a,b,c) a=0; b=0; c.s0=0;
#endif
#if defined (REPEAT_S10)
#define repeat_s(a,b,c) a=0; b=0; c.s0=0; c.s1=0;
#endif
#if defined (REPEAT_S11)
#define repeat_s(a,b,c) a=0; b=0; c.s0=0; c.s1=0; c.s2=0;
#endif
#if defined (REPEAT_E0)
#define repeat_e(a,b,c) a=a; b =b; c=c;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a,b,c) a=a; b=b; c.s3=0;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a,b,c) a=a; b=b; c.s3=0; c.s2=0;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a,b,c) a=a; b=b; c.s3=0; c.s2=0; c.s1=0;
#endif
#if defined (REPEAT_E4)
#define repeat_e(a,b,c) a=a; b=b; c=0;
#endif
#if defined (REPEAT_E5)
#define repeat_e(a,b,c) a=a; b.s3=0; c=0;
#endif
#if defined (REPEAT_E6)
#define repeat_e(a,b,c) a=a; b.s3=0; b.s2=0; c=0;
#endif
#if defined (REPEAT_E7)
#define repeat_e(a,b,c) a=a; b.s3=0; b.s2=0; b.s1=0; c=0;
#endif
#if defined (REPEAT_E8)
#define repeat_e(a,b,c) a=a; b=0; c=0;
#endif
#if defined (REPEAT_E9)
#define repeat_e(a,b,c) a.s3=0; b=0; c=0;
#endif
#if defined (REPEAT_E10)
#define repeat_e(a,b,c) a.s3=0; a.s2=0; b=0; c=0;
#endif
#if defined (REPEAT_E11)
#define repeat_e(a,b,c) a.s3=0; a.s2=0; a.s1=0; b=0; c=0;
#endif
__kernel void arithm_op_sum_3 (int cols,int invalid_cols,int offset,int elemnum,int groupnum,
__global VEC_TYPE *src, __global RES_TYPE *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int id = get_global_id(0);
unsigned int idx = offset + id + (id  / cols) * invalid_cols;
idx = idx * 3;
__local RES_TYPE localmem_sum1[128];
__local RES_TYPE localmem_sum2[128];
__local RES_TYPE localmem_sum3[128];
RES_TYPE sum1 = 0,sum2 = 0,sum3 = 0,temp1,temp2,temp3;
if(id < elemnum)
{
temp1 = CONVERT_RES_TYPE(src[idx]);
temp2 = CONVERT_RES_TYPE(src[idx+1]);
temp3 = CONVERT_RES_TYPE(src[idx+2]);
if(id % cols == 0 )
{
repeat_s(temp1,temp2,temp3);
}
if(id % cols == cols - 1)
{
repeat_e(temp1,temp2,temp3);
}
FUNC(temp1,sum1);
FUNC(temp2,sum2);
FUNC(temp3,sum3);
}
else
{
sum1 = 0;
sum2 = 0;
sum3 = 0;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = offset + id + (id / cols) * invalid_cols;
idx = idx * 3;
temp1 = CONVERT_RES_TYPE(src[idx]);
temp2 = CONVERT_RES_TYPE(src[idx+1]);
temp3 = CONVERT_RES_TYPE(src[idx+2]);
if(id % cols == 0 )
{
repeat_s(temp1,temp2,temp3);
}
if(id % cols == cols - 1)
{
repeat_e(temp1,temp2,temp3);
}
FUNC(temp1,sum1);
FUNC(temp2,sum2);
FUNC(temp3,sum3);
}
if(lid > 127)
{
localmem_sum1[lid - 128] = sum1;
localmem_sum2[lid - 128] = sum2;
localmem_sum3[lid - 128] = sum3;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_sum1[lid] = sum1 + localmem_sum1[lid];
localmem_sum2[lid] = sum2 + localmem_sum2[lid];
localmem_sum3[lid] = sum3 + localmem_sum3[lid];
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_sum1[lid] = localmem_sum1[lid] + localmem_sum1[lid2];
localmem_sum2[lid] = localmem_sum2[lid] + localmem_sum2[lid2];
localmem_sum3[lid] = localmem_sum3[lid] + localmem_sum3[lid2];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid*3]   = localmem_sum1[0];
dst[gid*3+1] = localmem_sum2[0];
dst[gid*3+2] = localmem_sum3[0];
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#define RES_TYPE double8
#define CONVERT_RES_TYPE convert_double8
#else
#define RES_TYPE float8
#define CONVERT_RES_TYPE convert_float8
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar8
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char8
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort8
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short8
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int8
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float8
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double8
#endif
#if defined (FUNC_TYPE_0)
#define FUNC(a,b) b += a;
#endif
#if defined (FUNC_TYPE_1)
#define FUNC(a,b) b = b + (a >= 0 ? a : -a);
#endif
#if defined (FUNC_TYPE_2)
#define FUNC(a,b) b = b + a * a;
#endif
#if defined (REPEAT_S0)
#define repeat_s(a) a = a;
#endif
#if defined (REPEAT_S1)
#define repeat_s(a) a.s0 = 0;
#endif
#if defined (REPEAT_S2)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;
#endif
#if defined (REPEAT_S3)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_S4)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;
#endif
#if defined (REPEAT_S5)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;
#endif
#if defined (REPEAT_S6)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;a.s5 = 0;
#endif
#if defined (REPEAT_S7)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;a.s5 = 0;a.s6 = 0;
#endif
#if defined (REPEAT_E0)
#define repeat_e(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a) a.s7 = 0;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;
#endif
#if defined (REPEAT_E4)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;
#endif
#if defined (REPEAT_E5)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;
#endif
#if defined (REPEAT_E6)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E7)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;a.s1 = 0;
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
__kernel void arithm_op_sum (int cols,int invalid_cols,int offset,int elemnum,int groupnum,
__global VEC_TYPE *src, __global RES_TYPE *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = offset + id + (id / cols) * invalid_cols;
__local RES_TYPE localmem_sum[128];
RES_TYPE sum = 0,temp;
if(id < elemnum)
{
temp = CONVERT_RES_TYPE(src[idx]);
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
FUNC(temp,sum);
}
else
{
sum = 0;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = offset + id + (id / cols) * invalid_cols;
temp = CONVERT_RES_TYPE(src[idx]);
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
FUNC(temp,sum);
}
if(lid > 127)
{
localmem_sum[lid - 128] = sum;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_sum[lid] = sum + localmem_sum[lid];
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_sum[lid] = localmem_sum[lid] + localmem_sum[lid2];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = localmem_sum[0];
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
typedef double F;
typedef double4 F4;
#define convert_F4 convert_double4;
#else
typedef float F;
typedef float4 F4;
#define convert_F4 convert_float4;
#endif
__kernel void arithm_pow_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1,
F p)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float src1_data = *((__global float *)((__global char *)src1 + src1_index));
float tmp = src1_data > 0 ? exp(p * log(src1_data)) : (src1_data == 0 ? 0 : exp(p * log(fabs(src1_data))));
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_pow_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1,
F p)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double src1_data = *((__global double *)((__global char *)src1 + src1_index));
double tmp = src1_data > 0 ? exp(p * log(src1_data)) : (src1_data == 0 ? 0 : exp(p * log(fabs(src1_data))));
*((__global double *)((__global char *)dst + dst_index)) = tmp;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#define CV_PI   3.1415926535897932384626433832795
__kernel void arithm_polarToCart_mag_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst1, int dst1_step, int dst1_offset,
__global float *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst1_index = mad24(y, dst1_step, (x << 2) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 2) + dst2_offset);
float x = *((__global float *)((__global char *)src1 + src1_index));
float y = *((__global float *)((__global char *)src2 + src2_index));
float ascale = CV_PI/180.0;
float alpha  = angInDegree == 1 ? y * ascale : y;
float a = cos(alpha) * x;
float b = sin(alpha) * x;
*((__global float *)((__global char *)dst1 + dst1_index)) = a;
*((__global float *)((__global char *)dst2 + dst2_index)) = b;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_polarToCart_mag_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst1, int dst1_step, int dst1_offset,
__global double *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst1_index = mad24(y, dst1_step, (x << 3) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 3) + dst2_offset);
double x = *((__global double *)((__global char *)src1 + src1_index));
double y = *((__global double *)((__global char *)src2 + src2_index));
float ascale = CV_PI/180.0;
double alpha  = angInDegree == 1 ? y * ascale : y;
double a = cos(alpha) * x;
double b = sin(alpha) * x;
*((__global double *)((__global char *)dst1 + dst1_index)) = a;
*((__global double *)((__global char *)dst2 + dst2_index)) = b;
}
}
#endif
__kernel void arithm_polarToCart_D5 (__global float *src,  int src_step,  int src_offset,
__global float *dst1, int dst1_step, int dst1_offset,
__global float *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index  = mad24(y, src_step,  (x << 2) + src_offset);
int dst1_index = mad24(y, dst1_step, (x << 2) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 2) + dst2_offset);
float y = *((__global float *)((__global char *)src + src_index));
float ascale = CV_PI/180.0;
float alpha  = angInDegree == 1 ? y * ascale : y;
float a = cos(alpha);
float b = sin(alpha);
*((__global float *)((__global char *)dst1 + dst1_index)) = a;
*((__global float *)((__global char *)dst2 + dst2_index)) = b;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_polarToCart_D6 (__global float *src,  int src_step,  int src_offset,
__global float *dst1, int dst1_step, int dst1_offset,
__global float *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index  = mad24(y, src_step,  (x << 3) + src_offset);
int dst1_index = mad24(y, dst1_step, (x << 3) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 3) + dst2_offset);
double y = *((__global double *)((__global char *)src + src_index));
float ascale = CV_PI/180.0;
double alpha  = angInDegree == 1 ? y * ascale : y;
double a = cos(alpha);
double b = sin(alpha);
*((__global double *)((__global char *)dst1 + dst1_index)) = a;
*((__global double *)((__global char *)dst2 + dst2_index)) = b;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#define CV_PI 3.1415926535898
__kernel void arithm_phase_inradians_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = atan2(data2,data1);
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_phase_inradians_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
*((__global double *)((__global char *)dst + dst_index)) = atan2(data2,data1);
}
}
#endif
__kernel void arithm_phase_indegrees_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = atan2(data2,data1);
float tmp_data = 180*tmp/CV_PI;
*((__global float *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_phase_indegrees_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
double tmp = atan2(data2,data1);
double tmp_data = 180*tmp/CV_PI;
*((__global double *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar8
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char8
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort8
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short8
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int8
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float8
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double8
#endif
#if defined (REPEAT_S0)
#define repeat_s(a) a = a;
#endif
#if defined (REPEAT_S1)
#define repeat_s(a) a.s0 = 0;
#endif
#if defined (REPEAT_S2)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;
#endif
#if defined (REPEAT_S3)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_S4)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;
#endif
#if defined (REPEAT_S5)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;
#endif
#if defined (REPEAT_S6)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;a.s5 = 0;
#endif
#if defined (REPEAT_S7)
#define repeat_s(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;a.s3 = 0;a.s4 = 0;a.s5 = 0;a.s6 = 0;
#endif
#if defined (REPEAT_E0)
#define repeat_e(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a) a.s7 = 0;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;
#endif
#if defined (REPEAT_E4)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;
#endif
#if defined (REPEAT_E5)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;
#endif
#if defined (REPEAT_E6)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E7)
#define repeat_e(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;a.s1 = 0;
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
__kernel void arithm_op_nonzero (int cols,int invalid_cols,int offset,int elemnum,int groupnum,
__global VEC_TYPE *src, __global int8 *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = offset + id + (id / cols) * invalid_cols;
__local int8 localmem_nonzero[128];
int8 nonzero;
VEC_TYPE zero=0,one=1,temp;
if(id < elemnum)
{
temp = src[idx];
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
nonzero = convert_int8(temp == zero ? zero:one);
}
else
{
nonzero = 0;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = offset + id + (id / cols) * invalid_cols;
temp = src[idx];
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
nonzero = nonzero + convert_int8(temp == zero ? zero:one);
}
if(lid > 127)
{
localmem_nonzero[lid - 128] = nonzero;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_nonzero[lid] = nonzero + localmem_nonzero[lid];
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_nonzero[lid] = localmem_nonzero[lid] + localmem_nonzero[lid2];
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = localmem_nonzero[0];
}
}
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
int4 round_int4(float4 v)
{
v.s0 = v.s0 + (v.s0 > 0 ? 0.5 : -0.5);
v.s1 = v.s1 + (v.s1 > 0 ? 0.5 : -0.5);
v.s2 = v.s2 + (v.s2 > 0 ? 0.5 : -0.5);
v.s3 = v.s3 + (v.s3 > 0 ? 0.5 : -0.5);
return convert_int4_sat(v);
}
uint4 round_uint4(float4 v)
{
v.s0 = v.s0 + (v.s0 > 0 ? 0.5 : -0.5);
v.s1 = v.s1 + (v.s1 > 0 ? 0.5 : -0.5);
v.s2 = v.s2 + (v.s2 > 0 ? 0.5 : -0.5);
v.s3 = v.s3 + (v.s3 > 0 ? 0.5 : -0.5);
return convert_uint4_sat(v);
}
long round_int(float v)
{
v = v + (v > 0 ? 0.5 : -0.5);
return convert_int_sat(v);
}
__kernel void arithm_mul_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, float scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data ,src2_data;
src1_data.x= src1_index+0 >= 0 ? src1[src1_index+0] : 0;
src1_data.y= src1_index+1 >= 0 ? src1[src1_index+1] : 0;
src1_data.z= src1_index+2 >= 0 ? src1[src1_index+2] : 0;
src1_data.w= src1_index+3 >= 0 ? src1[src1_index+3] : 0;
src2_data.x= src2_index+0 >= 0 ? src2[src2_index+0] : 0;
src2_data.y= src2_index+1 >= 0 ? src2[src2_index+1] : 0;
src2_data.z= src2_index+2 >= 0 ? src2[src2_index+2] : 0;
src2_data.w= src2_index+3 >= 0 ? src2[src2_index+3] : 0;
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
int4 tmp      = convert_int4_sat(src1_data) * convert_int4_sat(src2_data);
tmp = round_int4(convert_float4(tmp) * scalar);
uchar4 tmp_data = convert_uchar4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_mul_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, float scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
uint4    tmp = convert_uint4_sat(src1_data) * convert_uint4_sat(src2_data);
tmp = round_uint4(convert_float4(tmp) * scalar);
ushort4 tmp_data = convert_ushort4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_mul_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, float scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
int4   tmp = convert_int4_sat(src1_data) * convert_int4_sat(src2_data);
tmp = round_int4(convert_float4(tmp) * scalar);
short4 tmp_data = convert_short4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_mul_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, float scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int data2 = *((__global int *)((__global char *)src2 + src2_index));
int tmp  = data1 * data2;
tmp = round_int((float)tmp * scalar);
*((__global int *)((__global char *)dst + dst_index)) = convert_int_sat(tmp);
}
}
__kernel void arithm_mul_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, float scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = data1 * data2;
tmp = tmp * scalar;
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_mul_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, double scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
double tmp = data1 * data2;
tmp = tmp * scalar;
*((__global double *)((__global char *)dst + dst_index)) = tmp;
}
}
#endif
#ifdef DOUBLE_SUPPORT
#define SCALAR_TYPE double
#else
#define SCALAR_TYPE float
#endif
__kernel void arithm_muls_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, SCALAR_TYPE scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float tmp = data1 * scalar;
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar8
#define TYPE uchar
#define CONVERT_TYPE convert_uchar8
#define MIN_VAL 0
#define MAX_VAL 255
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char8
#define TYPE char
#define CONVERT_TYPE convert_char8
#define MIN_VAL -128
#define MAX_VAL 127
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort8
#define TYPE ushort
#define CONVERT_TYPE convert_ushort8
#define MIN_VAL 0
#define MAX_VAL 65535
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short8
#define TYPE short
#define CONVERT_TYPE convert_short8
#define MIN_VAL -32768
#define MAX_VAL 32767
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int8
#define TYPE int
#define CONVERT_TYPE convert_int8
#define MIN_VAL INT_MIN
#define MAX_VAL INT_MAX
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float8
#define TYPE float
#define CONVERT_TYPE convert_float8
#define MIN_VAL (-FLT_MAX)
#define MAX_VAL FLT_MAX
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double8
#define TYPE double
#define CONVERT_TYPE convert_double8
#define MIN_VAL (-DBL_MAX)
#define MAX_VAL DBL_MAX
#endif
#if defined (REPEAT_E0)
#define repeat_me(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_me(a) a.s7 = 0;
#endif
#if defined (REPEAT_E2)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;
#endif
#if defined (REPEAT_E3)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;
#endif
#if defined (REPEAT_E4)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;
#endif
#if defined (REPEAT_E5)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;
#endif
#if defined (REPEAT_E6)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E7)
#define repeat_me(a) a.s7 = 0;a.s6 = 0;a.s5 = 0;a.s4 = 0;a.s3 = 0;a.s2 = 0;a.s1 = 0;
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
__kernel void arithm_op_minMax_mask (int cols,int invalid_cols,int offset,int elemnum,int groupnum, __global TYPE *src,
int minvalid_cols,int moffset, __global uchar *mask,__global VEC_TYPE *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = id + (id / cols) * invalid_cols;
unsigned int midx = id + (id / cols) * minvalid_cols;
__local VEC_TYPE localmem_max[128],localmem_min[128];
VEC_TYPE minval,maxval,temp,m_temp;
if(id < elemnum)
{
temp = vload8(idx, &src[offset]);
m_temp = CONVERT_TYPE(vload8(midx,&mask[moffset]));
if(id % cols == cols - 1)
{
repeat_me(m_temp);
}
minval = m_temp != (VEC_TYPE)0 ? temp : (VEC_TYPE)MAX_VAL;
maxval = m_temp != (VEC_TYPE)0 ? temp : (VEC_TYPE)MIN_VAL;
}
else
{
minval = MAX_VAL;
maxval = MIN_VAL;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = id + (id / cols) * invalid_cols;
midx = id + (id / cols) * minvalid_cols;
temp = vload8(idx, &src[offset]);
m_temp = CONVERT_TYPE(vload8(midx,&mask[moffset]));
if(id % cols == cols - 1)
{
repeat_me(m_temp);
}
minval = min(minval,m_temp != (VEC_TYPE)0 ? temp : minval);
maxval = max(maxval,m_temp != (VEC_TYPE)0 ? temp : maxval);
}
if(lid > 127)
{
localmem_min[lid - 128] = minval;
localmem_max[lid - 128] = maxval;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_min[lid] = min(minval,localmem_min[lid]);
localmem_max[lid] = max(maxval,localmem_max[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_min[lid] = min(localmem_min[lid] , localmem_min[lid2]);
localmem_max[lid] = max(localmem_max[lid] , localmem_max[lid2]);
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = localmem_min[0];
dst[gid + groupnum] = localmem_max[0];
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#define RES_TYPE double4
#define CONVERT_RES_TYPE convert_double4
#else
#define RES_TYPE float4
#define CONVERT_RES_TYPE convert_float4
#endif
#if defined (DEPTH_0)
#define TYPE uchar
#define VEC_TYPE uchar4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_uchar4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL 0
#define MAX_VAL 255
#endif
#if defined (DEPTH_1)
#define TYPE char
#define VEC_TYPE char4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_char4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL -128
#define MAX_VAL 127
#endif
#if defined (DEPTH_2)
#define TYPE ushort
#define VEC_TYPE ushort4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_ushort4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL 0
#define MAX_VAL 65535
#endif
#if defined (DEPTH_3)
#define TYPE short
#define VEC_TYPE short4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_short4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL -32768
#define MAX_VAL 32767
#endif
#if defined (DEPTH_4)
#define TYPE int
#define VEC_TYPE int4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_int4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL INT_MIN
#define MAX_VAL INT_MAX
#endif
#if defined (DEPTH_5)
#define TYPE float
#define VEC_TYPE float4
#define VEC_TYPE_LOC float4
#define CONVERT_TYPE convert_float4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL (-FLT_MAX)
#define MAX_VAL FLT_MAX
#endif
#if defined (DEPTH_6)
#define TYPE double
#define VEC_TYPE double4
#define VEC_TYPE_LOC double4
#define CONVERT_TYPE convert_double4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL (-DBL_MAX)
#define MAX_VAL DBL_MAX
#endif
#if defined (REPEAT_E0)
#define repeat_e(a) a=a;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a) a.s3 = a.s2;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a) a.s3 = a.s1;a.s2 = a.s1;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a) a.s3 = a.s0;a.s2 = a.s0;a.s1 = a.s0;
#endif
#if defined (REPEAT_E0)
#define repeat_me(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_me(a) a.s3 = 0;
#endif
#if defined (REPEAT_E2)
#define repeat_me(a) a.s3 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E3)
#define repeat_me(a) a.s3 = 0;a.s2 = 0;a.s1 = 0;
#endif
__kernel void arithm_op_minMaxLoc_mask (int cols,int invalid_cols,int offset,int elemnum,int groupnum,__global TYPE *src,
int minvalid_cols,int moffset,__global uchar *mask,__global RES_TYPE  *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = id + (id / cols) * invalid_cols;
unsigned int midx = id + (id / cols) * minvalid_cols;
__local VEC_TYPE lm_max[128],lm_min[128];
VEC_TYPE minval,maxval,temp,m_temp;
__local VEC_TYPE_LOC lm_maxloc[128],lm_minloc[128];
VEC_TYPE_LOC minloc,maxloc,temploc,negative = -1,one = 1,zero = 0;
if(id < elemnum)
{
temp = vload4(idx, &src[offset]);
m_temp = CONVERT_TYPE(vload4(midx,&mask[moffset]));
int idx_c = (idx << 2) + offset;
temploc = (VEC_TYPE_LOC)(idx_c,idx_c+1,idx_c+2,idx_c+3);
if(id % cols == cols - 1)
{
repeat_me(m_temp);
repeat_e(temploc);
}
minval = m_temp != (VEC_TYPE)0 ? temp : (VEC_TYPE)MAX_VAL;
maxval = m_temp != (VEC_TYPE)0 ? temp : (VEC_TYPE)MIN_VAL;
minloc = CONDITION_FUNC(m_temp != (VEC_TYPE)0, temploc , negative);
maxloc = minloc;
}
else
{
minval = MAX_VAL;
maxval = MIN_VAL;
minloc = negative;
maxloc = negative;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = id + (id / cols) * invalid_cols;
midx = id + (id / cols) * minvalid_cols;
temp = vload4(idx, &src[offset]);
m_temp = CONVERT_TYPE(vload4(midx,&mask[moffset]));
int idx_c = (idx << 2) + offset;
temploc = (VEC_TYPE_LOC)(idx_c,idx_c+1,idx_c+2,idx_c+3);
if(id % cols == cols - 1)
{
repeat_me(m_temp);
repeat_e(temploc);
}
minval = min(minval,m_temp != (VEC_TYPE)0 ? temp : minval);
maxval = max(maxval,m_temp != (VEC_TYPE)0 ? temp : maxval);
minloc = CONDITION_FUNC((minval == temp) && (m_temp != (VEC_TYPE)0), temploc , minloc);
maxloc = CONDITION_FUNC((maxval == temp) && (m_temp != (VEC_TYPE)0), temploc , maxloc);
}
if(lid > 127)
{
lm_min[lid - 128] = minval;
lm_max[lid - 128] = maxval;
lm_minloc[lid - 128] = minloc;
lm_maxloc[lid - 128] = maxloc;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
lm_min[lid] = min(minval,lm_min[lid]);
lm_max[lid] = max(maxval,lm_max[lid]);
VEC_TYPE con_min = CONVERT_TYPE(minloc != negative ? one : zero);
VEC_TYPE con_max = CONVERT_TYPE(maxloc != negative ? one : zero);
lm_minloc[lid] = CONDITION_FUNC((lm_min[lid] == minval) && (con_min != (VEC_TYPE)0), minloc , lm_minloc[lid]);
lm_maxloc[lid] = CONDITION_FUNC((lm_max[lid] == maxval) && (con_max != (VEC_TYPE)0), maxloc , lm_maxloc[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
lm_min[lid] = min(lm_min[lid] , lm_min[lid2]);
lm_max[lid] = max(lm_max[lid] , lm_max[lid2]);
VEC_TYPE con_min = CONVERT_TYPE(lm_minloc[lid2] != negative ? one : zero);
VEC_TYPE con_max = CONVERT_TYPE(lm_maxloc[lid2] != negative ? one : zero);
lm_minloc[lid] =
CONDITION_FUNC((lm_min[lid] == lm_min[lid2]) && (con_min != (VEC_TYPE)0), lm_minloc[lid2] , lm_minloc[lid]);
lm_maxloc[lid] =
CONDITION_FUNC((lm_max[lid] == lm_max[lid2]) && (con_max != (VEC_TYPE)0), lm_maxloc[lid2] , lm_maxloc[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = CONVERT_RES_TYPE(lm_min[0]);
dst[gid + groupnum] = CONVERT_RES_TYPE(lm_max[0]);
dst[gid + 2 * groupnum] = CONVERT_RES_TYPE(lm_minloc[0]);
dst[gid + 3 * groupnum] = CONVERT_RES_TYPE(lm_maxloc[0]);
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#define RES_TYPE double4
#define CONVERT_RES_TYPE convert_double4
#else
#define RES_TYPE float4
#define CONVERT_RES_TYPE convert_float4
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_uchar4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL 0
#define MAX_VAL 255
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_char4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL -128
#define MAX_VAL 127
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_ushort4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL 0
#define MAX_VAL 65535
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_short4
#define CONDITION_FUNC(a,b,c) (convert_int4(a) ? b : c)
#define MIN_VAL -32768
#define MAX_VAL 32767
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int4
#define VEC_TYPE_LOC int4
#define CONVERT_TYPE convert_int4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL INT_MIN
#define MAX_VAL INT_MAX
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float4
#define VEC_TYPE_LOC float4
#define CONVERT_TYPE convert_float4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL (-FLT_MAX)
#define MAX_VAL FLT_MAX
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double4
#define VEC_TYPE_LOC double4
#define CONVERT_TYPE convert_double4
#define CONDITION_FUNC(a,b,c) ((a) ? b : c)
#define MIN_VAL (-DBL_MAX)
#define MAX_VAL DBL_MAX
#endif
#if defined (REPEAT_S0)
#define repeat_s(a) a=a;
#endif
#if defined (REPEAT_S1)
#define repeat_s(a) a.s0 = a.s1;
#endif
#if defined (REPEAT_S2)
#define repeat_s(a) a.s0 = a.s2;a.s1 = a.s2;
#endif
#if defined (REPEAT_S3)
#define repeat_s(a) a.s0 = a.s3;a.s1 = a.s3;a.s2 = a.s3;
#endif
#if defined (REPEAT_E0)
#define repeat_e(a) a=a;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a) a.s3 = a.s2;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a) a.s3 = a.s1;a.s2 = a.s1;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a) a.s3 = a.s0;a.s2 = a.s0;a.s1 = a.s0;
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
__kernel void arithm_op_minMaxLoc (int cols,int invalid_cols,int offset,int elemnum,int groupnum,
__global VEC_TYPE *src, __global RES_TYPE *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = offset + id + (id / cols) * invalid_cols;
__local VEC_TYPE localmem_max[128],localmem_min[128];
VEC_TYPE minval,maxval,temp;
__local VEC_TYPE_LOC localmem_maxloc[128],localmem_minloc[128];
VEC_TYPE_LOC minloc,maxloc,temploc,negative = -1;
int idx_c;
if(id < elemnum)
{
temp = src[idx];
idx_c = idx << 2;
temploc = (VEC_TYPE_LOC)(idx_c,idx_c+1,idx_c+2,idx_c+3);
if(id % cols == 0 )
{
repeat_s(temp);
repeat_s(temploc);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
repeat_e(temploc);
}
minval = temp;
maxval = temp;
minloc = temploc;
maxloc = temploc;
}
else
{
minval = MAX_VAL;
maxval = MIN_VAL;
minloc = negative;
maxloc = negative;
}
float4 aaa;
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = offset + id + (id / cols) * invalid_cols;
temp = src[idx];
idx_c = idx << 2;
temploc = (VEC_TYPE_LOC)(idx_c,idx_c+1,idx_c+2,idx_c+3);
if(id % cols == 0 )
{
repeat_s(temp);
repeat_s(temploc);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
repeat_e(temploc);
}
minval = min(minval,temp);
maxval = max(maxval,temp);
minloc = CONDITION_FUNC(minval == temp, temploc , minloc);
maxloc = CONDITION_FUNC(maxval == temp, temploc , maxloc);
aaa= convert_float4(maxval == temp);
maxloc = convert_int4(aaa) ? temploc : maxloc;
}
if(lid > 127)
{
localmem_min[lid - 128] = minval;
localmem_max[lid - 128] = maxval;
localmem_minloc[lid - 128] = minloc;
localmem_maxloc[lid - 128] = maxloc;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_min[lid] = min(minval,localmem_min[lid]);
localmem_max[lid] = max(maxval,localmem_max[lid]);
localmem_minloc[lid] = CONDITION_FUNC(localmem_min[lid] == minval, minloc , localmem_minloc[lid]);
localmem_maxloc[lid] = CONDITION_FUNC(localmem_max[lid] == maxval, maxloc , localmem_maxloc[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_min[lid] = min(localmem_min[lid] , localmem_min[lid2]);
localmem_max[lid] = max(localmem_max[lid] , localmem_max[lid2]);
localmem_minloc[lid] =
CONDITION_FUNC(localmem_min[lid] == localmem_min[lid2], localmem_minloc[lid2] , localmem_minloc[lid]);
localmem_maxloc[lid] =
CONDITION_FUNC(localmem_max[lid] == localmem_max[lid2], localmem_maxloc[lid2] , localmem_maxloc[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = CONVERT_RES_TYPE(localmem_min[0]);
dst[gid + groupnum] = CONVERT_RES_TYPE(localmem_max[0]);
dst[gid + 2 * groupnum] = CONVERT_RES_TYPE(localmem_minloc[0]);
dst[gid + 3 * groupnum] = CONVERT_RES_TYPE(localmem_maxloc[0]);
}
}
#if defined (REPEAT_S0)
#define repeat_ms(a) a = a;
#endif
#if defined (REPEAT_S1)
#define repeat_ms(a) a.s0 = 0;
#endif
#if defined (REPEAT_S2)
#define repeat_ms(a) a.s0 = 0;a.s1 = 0;
#endif
#if defined (REPEAT_S3)
#define repeat_ms(a) a.s0 = 0;a.s1 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E0)
#define repeat_me(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_me(a) a.s3 = 0;
#endif
#if defined (REPEAT_E2)
#define repeat_me(a) a.s3 = 0;a.s2 = 0;
#endif
#if defined (REPEAT_E3)
#define repeat_me(a) a.s3 = 0;a.s2 = 0;a.s1 = 0;
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#if defined (DEPTH_0)
#define VEC_TYPE uchar8
#define CONVERT_TYPE convert_uchar8
#define MIN_VAL 0
#define MAX_VAL 255
#endif
#if defined (DEPTH_1)
#define VEC_TYPE char8
#define CONVERT_TYPE convert_char8
#define MIN_VAL -128
#define MAX_VAL 127
#endif
#if defined (DEPTH_2)
#define VEC_TYPE ushort8
#define CONVERT_TYPE convert_ushort8
#define MIN_VAL 0
#define MAX_VAL 65535
#endif
#if defined (DEPTH_3)
#define VEC_TYPE short8
#define CONVERT_TYPE convert_short8
#define MIN_VAL -32768
#define MAX_VAL 32767
#endif
#if defined (DEPTH_4)
#define VEC_TYPE int8
#define CONVERT_TYPE convert_int8
#define MIN_VAL INT_MIN
#define MAX_VAL INT_MAX
#endif
#if defined (DEPTH_5)
#define VEC_TYPE float8
#define CONVERT_TYPE convert_float8
#define MIN_VAL (-FLT_MAX)
#define MAX_VAL FLT_MAX
#endif
#if defined (DEPTH_6)
#define VEC_TYPE double8
#define CONVERT_TYPE convert_double8
#define MIN_VAL (-DBL_MAX)
#define MAX_VAL DBL_MAX
#endif
#if defined (REPEAT_S0)
#define repeat_s(a) a = a;
#endif
#if defined (REPEAT_S1)
#define repeat_s(a) a.s0 = a.s1;
#endif
#if defined (REPEAT_S2)
#define repeat_s(a) a.s0 = a.s2;a.s1 = a.s2;
#endif
#if defined (REPEAT_S3)
#define repeat_s(a) a.s0 = a.s3;a.s1 = a.s3;a.s2 = a.s3;
#endif
#if defined (REPEAT_S4)
#define repeat_s(a) a.s0 = a.s4;a.s1 = a.s4;a.s2 = a.s4;a.s3 = a.s4;
#endif
#if defined (REPEAT_S5)
#define repeat_s(a) a.s0 = a.s5;a.s1 = a.s5;a.s2 = a.s5;a.s3 = a.s5;a.s4 = a.s5;
#endif
#if defined (REPEAT_S6)
#define repeat_s(a) a.s0 = a.s6;a.s1 = a.s6;a.s2 = a.s6;a.s3 = a.s6;a.s4 = a.s6;a.s5 = a.s6;
#endif
#if defined (REPEAT_S7)
#define repeat_s(a) a.s0 = a.s7;a.s1 = a.s7;a.s2 = a.s7;a.s3 = a.s7;a.s4 = a.s7;a.s5 = a.s7;a.s6 = a.s7;
#endif
#if defined (REPEAT_E0)
#define repeat_e(a) a = a;
#endif
#if defined (REPEAT_E1)
#define repeat_e(a) a.s7 = a.s6;
#endif
#if defined (REPEAT_E2)
#define repeat_e(a) a.s7 = a.s5;a.s6 = a.s5;
#endif
#if defined (REPEAT_E3)
#define repeat_e(a) a.s7 = a.s4;a.s6 = a.s4;a.s5 = a.s4;
#endif
#if defined (REPEAT_E4)
#define repeat_e(a) a.s7 = a.s3;a.s6 = a.s3;a.s5 = a.s3;a.s4 = a.s3;
#endif
#if defined (REPEAT_E5)
#define repeat_e(a) a.s7 = a.s2;a.s6 = a.s2;a.s5 = a.s2;a.s4 = a.s2;a.s3 = a.s2;
#endif
#if defined (REPEAT_E6)
#define repeat_e(a) a.s7 = a.s1;a.s6 = a.s1;a.s5 = a.s1;a.s4 = a.s1;a.s3 = a.s1;a.s2 = a.s1;
#endif
#if defined (REPEAT_E7)
#define repeat_e(a) a.s7 = a.s0;a.s6 = a.s0;a.s5 = a.s0;a.s4 = a.s0;a.s3 = a.s0;a.s2 = a.s0;a.s1 = a.s0;
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
__kernel void arithm_op_minMax (int cols,int invalid_cols,int offset,int elemnum,int groupnum,
__global VEC_TYPE *src, __global VEC_TYPE *dst)
{
unsigned int lid = get_local_id(0);
unsigned int gid = get_group_id(0);
unsigned int  id = get_global_id(0);
unsigned int idx = offset + id + (id / cols) * invalid_cols;
__local VEC_TYPE localmem_max[128],localmem_min[128];
VEC_TYPE minval,maxval,temp;
if(id < elemnum)
{
temp = src[idx];
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
minval = temp;
maxval = temp;
}
else
{
minval = MAX_VAL;
maxval = MIN_VAL;
}
for(id=id + (groupnum << 8); id < elemnum;id = id + (groupnum << 8))
{
idx = offset + id + (id / cols) * invalid_cols;
temp = src[idx];
if(id % cols == 0 )
{
repeat_s(temp);
}
if(id % cols == cols - 1)
{
repeat_e(temp);
}
minval = min(minval,temp);
maxval = max(maxval,temp);
}
if(lid > 127)
{
localmem_min[lid - 128] = minval;
localmem_max[lid - 128] = maxval;
}
barrier(CLK_LOCAL_MEM_FENCE);
if(lid < 128)
{
localmem_min[lid] = min(minval,localmem_min[lid]);
localmem_max[lid] = max(maxval,localmem_max[lid]);
}
barrier(CLK_LOCAL_MEM_FENCE);
for(int lsize = 64; lsize > 0; lsize >>= 1)
{
if(lid < lsize)
{
int lid2 = lsize + lid;
localmem_min[lid] = min(localmem_min[lid] , localmem_min[lid2]);
localmem_max[lid] = max(localmem_max[lid] , localmem_max[lid2]);
}
barrier(CLK_LOCAL_MEM_FENCE);
}
if( lid == 0)
{
dst[gid] = localmem_min[0];
dst[gid + groupnum] = localmem_max[0];
}
}
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void magnitudeSqr_C1_D5 (__global float *src1,int src1_step,int src1_offset,
__global float *src2, int src2_step,int src2_offset,
__global float *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 2) -(dst_align << 2));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float  *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
float4 dst_data = *((__global float4 *)((__global char *)dst + dst_index));
float4   tmp_data  ;
tmp_data.x = src1_data.x * src1_data.x + src2_data.x * src2_data.x;
tmp_data.y = src1_data.y * src1_data.y + src2_data.y * src2_data.y;
tmp_data.z = src1_data.z * src1_data.z + src2_data.z * src2_data.z;
tmp_data.w = src1_data.w * src1_data.w + src2_data.w * src2_data.w;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 8 >= dst_start) && (dst_index + 8 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 12 >= dst_start) && (dst_index + 12 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global float4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void magnitudeSqr_C2_D5 (__global float *src1,int src1_step,int src1_offset,
__global float *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 2) -(dst_align << 2));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
float8 src1_data = vload8(0, (__global float  *)((__global char *)src1 + src1_index_fix));
if(src1_index==-6)
src1_data.s01234567 = src1_data.s67012345;
if(src1_index==-4)
src1_data.s01234567 = src1_data.s45670123;
if(src1_index== -2)
src1_data.s01234567 = src1_data.s23456701;
float4 dst_data = *((__global float4 *)((__global char *)dst + dst_index));
float4   tmp_data  ;
tmp_data.x = src1_data.s0 * src1_data.s0 + src1_data.s1 * src1_data.s1;
tmp_data.y = src1_data.s2 * src1_data.s2 + src1_data.s3 * src1_data.s3;
tmp_data.z = src1_data.s4 * src1_data.s4 + src1_data.s5 * src1_data.s5;
tmp_data.w = src1_data.s6 * src1_data.s6 + src1_data.s7 * src1_data.s7;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 8 >= dst_start) && (dst_index + 8 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 12 >= dst_start) && (dst_index + 12 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global float4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void arithm_magnitude_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = sqrt(data1 * data1 + data2 * data2);
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_magnitude_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
double tmp = sqrt(data1 * data1 + data2 * data2);
*((__global double *)((__global char *)dst + dst_index)) = tmp;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel
void LUT_C1_D0( __global uchar *dst,
__global const uchar *src,
__constant uchar *table,
int rows,
int cols,
int channels,
int whole_rows,
int whole_cols,
int src_offset,
int dst_offset,
int lut_offset,
int src_step,
int dst_step)
{
int gidx = get_global_id(0)<<2;
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
__local uchar l[256];
l[(lidy<<4)+lidx] = table[(lidy<<4)+lidx+lut_offset];
gidx = gidx >= cols-4?cols-4:gidx;
gidy = gidy >= rows?rows-1:gidy;
int src_index = src_offset + mad24(gidy,src_step,gidx);
int dst_index = dst_offset + mad24(gidy,dst_step,gidx);
uchar4 p,q;
barrier(CLK_LOCAL_MEM_FENCE);
p.x = src[src_index];
p.y = src[src_index+1];
p.z = src[src_index+2];
p.w = src[src_index+3];
q.x = l[p.x];
q.y = l[p.y];
q.z = l[p.z];
q.w = l[p.w];
*(__global uchar4*)(dst + dst_index) = q;
}
__kernel
void LUT2_C1_D0( __global uchar *dst,
__global const uchar *src,
__constant uchar *table,
int rows,
int precols,
int channels,
int whole_rows,
int cols,
int src_offset,
int dst_offset,
int lut_offset,
int src_step,
int dst_step)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidy = get_local_id(1);
__local uchar l[256];
l[lidy] = table[lidy+lut_offset];
gidx = gidx >= precols ? cols+gidx : gidx;
gidy = gidy >= rows?rows-1:gidy;
int src_index = src_offset + mad24(gidy,src_step,gidx);
int dst_index = dst_offset + mad24(gidy,dst_step,gidx);
barrier(CLK_LOCAL_MEM_FENCE);
uchar p = src[src_index];
uchar q = l[p];
dst[dst_index] = q;
}
__kernel
void LUT_C4_D0( __global uchar4 *dst,
__global uchar4 *src,
__constant uchar *table,
int rows,
int cols,
int channels,
int whole_rows,
int whole_cols,
int src_offset,
int dst_offset,
int lut_offset,
int src_step,
int dst_step)
{
int gidx = get_global_id(0);
int gidy = get_global_id(1);
int lidx = get_local_id(0);
int lidy = get_local_id(1);
int src_index = mad24(gidy,src_step,gidx+src_offset);
int dst_index = mad24(gidy,dst_step,gidx+dst_offset);
__local uchar l[256];
l[lidy*16+lidx] = table[lidy*16+lidx+lut_offset];
barrier(CLK_LOCAL_MEM_FENCE);
if(gidx= dst_start_0)                                   ? src_data_1.x : dst_data_0.x;
dst_data_0.y = ((dst_index_0 + 1 >= dst_start_0) && (dst_index_0 + 1 < dst_end_0)) ? src_data_1.y : dst_data_0.y;
dst_data_0.z = ((dst_index_0 + 2 >= dst_start_0) && (dst_index_0 + 2 < dst_end_0)) ? src_data_1.z : dst_data_0.z;
dst_data_0.w =  (dst_index_0 + 3 < dst_end_0)                                      ? src_data_1.w : dst_data_0.w;
dst_data_1.x =  (dst_index_1 + 0 >= dst_start_1)                                   ? src_data_0.x : dst_data_1.x;
dst_data_1.y = ((dst_index_1 + 1 >= dst_start_1) && (dst_index_1 + 1 < dst_end_1)) ? src_data_0.y : dst_data_1.y;
dst_data_1.z = ((dst_index_1 + 2 >= dst_start_1) && (dst_index_1 + 2 < dst_end_1)) ? src_data_0.z : dst_data_1.z;
dst_data_1.w =  (dst_index_1 + 3 < dst_end_1)                                      ? src_data_0.w : dst_data_1.w;
*((__global uchar4 *)(dst + dst_index_0)) = dst_data_0;
*((__global uchar4 *)(dst + dst_index_1)) = dst_data_1;
}
}
__kernel void arithm_flip_rows_D1 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src_index_0 = mad24(y,            src_step, x + src_offset - dst_align);
int src_index_1 = mad24(rows - y - 1, src_step, x + src_offset - dst_align);
int dst_start_0  = mad24(y,            dst_step, dst_offset);
int dst_start_1  = mad24(rows - y - 1, dst_step, dst_offset);
int dst_end_0    = mad24(y,            dst_step, dst_offset + dst_step1);
int dst_end_1    = mad24(rows - y - 1, dst_step, dst_offset + dst_step1);
int dst_index_0  = mad24(y,            dst_step, dst_offset + x & (int)0xfffffffc);
int dst_index_1  = mad24(rows - y - 1, dst_step, dst_offset + x & (int)0xfffffffc);
char4 src_data_0 = vload4(0, src + src_index_0);
char4 src_data_1 = vload4(0, src + src_index_1);
char4 dst_data_0 = *((__global char4 *)(dst + dst_index_0));
char4 dst_data_1 = *((__global char4 *)(dst + dst_index_1));
dst_data_0.x =  (dst_index_0 + 0 >= dst_start_0)                                   ? src_data_1.x : dst_data_0.x;
dst_data_0.y = ((dst_index_0 + 1 >= dst_start_0) && (dst_index_0 + 1 < dst_end_0)) ? src_data_1.y : dst_data_0.y;
dst_data_0.z = ((dst_index_0 + 2 >= dst_start_0) && (dst_index_0 + 2 < dst_end_0)) ? src_data_1.z : dst_data_0.z;
dst_data_0.w =  (dst_index_0 + 3 < dst_end_0)                                      ? src_data_1.w : dst_data_0.w;
dst_data_1.x =  (dst_index_1 + 0 >= dst_start_1)                                   ? src_data_0.x : dst_data_1.x;
dst_data_1.y = ((dst_index_1 + 1 >= dst_start_1) && (dst_index_1 + 1 < dst_end_1)) ? src_data_0.y : dst_data_1.y;
dst_data_1.z = ((dst_index_1 + 2 >= dst_start_1) && (dst_index_1 + 2 < dst_end_1)) ? src_data_0.z : dst_data_1.z;
dst_data_1.w =  (dst_index_1 + 3 < dst_end_1)                                      ? src_data_0.w : dst_data_1.w;
*((__global char4 *)(dst + dst_index_0)) = dst_data_0;
*((__global char4 *)(dst + dst_index_1)) = dst_data_1;
}
}
__kernel void arithm_flip_rows_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (((dst_offset >> 1) & 3) << 1)
int src_index_0 = mad24(y,            src_step, (x << 1) + src_offset - dst_align);
int src_index_1 = mad24(rows - y - 1, src_step, (x << 1) + src_offset - dst_align);
int dst_start_0  = mad24(y,            dst_step, dst_offset);
int dst_start_1  = mad24(rows - y - 1, dst_step, dst_offset);
int dst_end_0    = mad24(y,            dst_step, dst_offset + dst_step1);
int dst_end_1    = mad24(rows - y - 1, dst_step, dst_offset + dst_step1);
int dst_index_0  = mad24(y,            dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
int dst_index_1  = mad24(rows - y - 1, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src_data_0 = vload4(0, (__global ushort *)((__global char *)src + src_index_0));
ushort4 src_data_1 = vload4(0, (__global ushort *)((__global char *)src + src_index_1));
ushort4 dst_data_0 = *((__global ushort4 *)((__global char *)dst + dst_index_0));
ushort4 dst_data_1 = *((__global ushort4 *)((__global char *)dst + dst_index_1));
dst_data_0.x =  (dst_index_0 + 0 >= dst_start_0)                                   ? src_data_1.x : dst_data_0.x;
dst_data_0.y = ((dst_index_0 + 2 >= dst_start_0) && (dst_index_0 + 2 < dst_end_0)) ? src_data_1.y : dst_data_0.y;
dst_data_0.z = ((dst_index_0 + 4 >= dst_start_0) && (dst_index_0 + 4 < dst_end_0)) ? src_data_1.z : dst_data_0.z;
dst_data_0.w =  (dst_index_0 + 6 < dst_end_0)                                      ? src_data_1.w : dst_data_0.w;
dst_data_1.x =  (dst_index_1 + 0 >= dst_start_1)                                   ? src_data_0.x : dst_data_1.x;
dst_data_1.y = ((dst_index_1 + 2 >= dst_start_1) && (dst_index_1 + 2 < dst_end_1)) ? src_data_0.y : dst_data_1.y;
dst_data_1.z = ((dst_index_1 + 4 >= dst_start_1) && (dst_index_1 + 4 < dst_end_1)) ? src_data_0.z : dst_data_1.z;
dst_data_1.w =  (dst_index_1 + 6 < dst_end_1)                                      ? src_data_0.w : dst_data_1.w;
*((__global ushort4 *)((__global char *)dst + dst_index_0)) = dst_data_0;
*((__global ushort4 *)((__global char *)dst + dst_index_1)) = dst_data_1;
}
}
__kernel void arithm_flip_rows_D3 (__global short *src, int src_step, int src_offset,
__global short *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (((dst_offset >> 1) & 3) << 1)
int src_index_0 = mad24(y,            src_step, (x << 1) + src_offset - dst_align);
int src_index_1 = mad24(rows - y - 1, src_step, (x << 1) + src_offset - dst_align);
int dst_start_0  = mad24(y,            dst_step, dst_offset);
int dst_start_1  = mad24(rows - y - 1, dst_step, dst_offset);
int dst_end_0    = mad24(y,            dst_step, dst_offset + dst_step1);
int dst_end_1    = mad24(rows - y - 1, dst_step, dst_offset + dst_step1);
int dst_index_0  = mad24(y,            dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
int dst_index_1  = mad24(rows - y - 1, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src_data_0 = vload4(0, (__global short *)((__global char *)src + src_index_0));
short4 src_data_1 = vload4(0, (__global short *)((__global char *)src + src_index_1));
short4 dst_data_0 = *((__global short4 *)((__global char *)dst + dst_index_0));
short4 dst_data_1 = *((__global short4 *)((__global char *)dst + dst_index_1));
dst_data_0.x =  (dst_index_0 + 0 >= dst_start_0)                                   ? src_data_1.x : dst_data_0.x;
dst_data_0.y = ((dst_index_0 + 2 >= dst_start_0) && (dst_index_0 + 2 < dst_end_0)) ? src_data_1.y : dst_data_0.y;
dst_data_0.z = ((dst_index_0 + 4 >= dst_start_0) && (dst_index_0 + 4 < dst_end_0)) ? src_data_1.z : dst_data_0.z;
dst_data_0.w =  (dst_index_0 + 6 < dst_end_0)                                      ? src_data_1.w : dst_data_0.w;
dst_data_1.x =  (dst_index_1 + 0 >= dst_start_1)                                   ? src_data_0.x : dst_data_1.x;
dst_data_1.y = ((dst_index_1 + 2 >= dst_start_1) && (dst_index_1 + 2 < dst_end_1)) ? src_data_0.y : dst_data_1.y;
dst_data_1.z = ((dst_index_1 + 4 >= dst_start_1) && (dst_index_1 + 4 < dst_end_1)) ? src_data_0.z : dst_data_1.z;
dst_data_1.w =  (dst_index_1 + 6 < dst_end_1)                                      ? src_data_0.w : dst_data_1.w;
*((__global short4 *)((__global char *)dst + dst_index_0)) = dst_data_0;
*((__global short4 *)((__global char *)dst + dst_index_1)) = dst_data_1;
}
}
__kernel void arithm_flip_rows_D4 (__global int *src, int src_step, int src_offset,
__global int *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
int src_index_0 = mad24(y,            src_step, (x << 2) + src_offset);
int src_index_1 = mad24(rows - y - 1, src_step, (x << 2) + src_offset);
int dst_index_0 = mad24(y,            dst_step, (x << 2) + dst_offset);
int dst_index_1 = mad24(rows - y - 1, dst_step, (x << 2) + dst_offset);
int data0 = *((__global int *)((__global char *)src + src_index_0));
int data1 = *((__global int *)((__global char *)src + src_index_1));
*((__global int *)((__global char *)dst + dst_index_0)) = data1;
*((__global int *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_rows_D5 (__global float *src, int src_step, int src_offset,
__global float *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
int src_index_0 = mad24(y,            src_step, (x << 2) + src_offset);
int src_index_1 = mad24(rows - y - 1, src_step, (x << 2) + src_offset);
int dst_index_0 = mad24(y,            dst_step, (x << 2) + dst_offset);
int dst_index_1 = mad24(rows - y - 1, dst_step, (x << 2) + dst_offset);
float data0 = *((__global float *)((__global char *)src + src_index_0));
float data1 = *((__global float *)((__global char *)src + src_index_1));
*((__global float *)((__global char *)dst + dst_index_0)) = data1;
*((__global float *)((__global char *)dst + dst_index_1)) = data0;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_flip_rows_D6 (__global double *src, int src_step, int src_offset,
__global double *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_rows, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < thread_rows)
{
int src_index_0 = mad24(y,            src_step, (x << 3) + src_offset);
int src_index_1 = mad24(rows - y - 1, src_step, (x << 3) + src_offset);
int dst_index_0 = mad24(y,            dst_step, (x << 3) + dst_offset);
int dst_index_1 = mad24(rows - y - 1, dst_step, (x << 3) + dst_offset);
double data0 = *((__global double *)((__global char *)src + src_index_0));
double data1 = *((__global double *)((__global char *)src + src_index_1));
*((__global double *)((__global char *)dst + dst_index_0)) = data1;
*((__global double *)((__global char *)dst + dst_index_1)) = data0;
}
}
#endif
__kernel void arithm_flip_cols_C1_D0 (__global uchar *src, int src_step, int src_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x)           + src_offset);
int dst_index_1 = mad24(y, dst_step, (cols - x -1) + dst_offset);
uchar data0 = *(src + src_index_0);
*(dst + dst_index_1) = data0;
int src_index_1 = mad24(y, src_step, (cols - x -1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x)           + dst_offset);
uchar data1 = *(src + src_index_1);
*(dst + dst_index_0) = data1;
}
}
__kernel void arithm_flip_cols_C1_D1 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x)           + src_offset);
int src_index_1 = mad24(y, src_step, (cols - x -1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x)           + dst_offset);
int dst_index_1 = mad24(y, dst_step, (cols - x -1) + dst_offset);
char data0 = *(src + src_index_0);
char data1 = *(src + src_index_1);
*(dst + dst_index_0) = data1;
*(dst + dst_index_1) = data0;
}
}
__kernel void arithm_flip_cols_C1_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 1) + dst_offset);
ushort data0 = *((__global ushort *)((__global char *)src + src_index_0));
ushort data1 = *((__global ushort *)((__global char *)src + src_index_1));
*((__global ushort *)((__global char *)dst + dst_index_0)) = data1;
*((__global ushort *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C1_D3 (__global short *src, int src_step, int src_offset,
__global short *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 1) + dst_offset);
short data0 = *((__global short *)((__global char *)src + src_index_0));
short data1 = *((__global short *)((__global char *)src + src_index_1));
*((__global short *)((__global char *)dst + dst_index_0)) = data1;
*((__global short *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C1_D4 (__global int *src, int src_step, int src_offset,
__global int *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
int data0 = *((__global int *)((__global char *)src + src_index_0));
int data1 = *((__global int *)((__global char *)src + src_index_1));
*((__global int *)((__global char *)dst + dst_index_0)) = data1;
*((__global int *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C1_D5 (__global float *src, int src_step, int src_offset,
__global float *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
float data0 = *((__global float *)((__global char *)src + src_index_0));
float data1 = *((__global float *)((__global char *)src + src_index_1));
*((__global float *)((__global char *)dst + dst_index_0)) = data1;
*((__global float *)((__global char *)dst + dst_index_1)) = data0;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_flip_cols_C1_D6 (__global double *src, int src_step, int src_offset,
__global double *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 3) + dst_offset);
double data0 = *((__global double *)((__global char *)src + src_index_0));
double data1 = *((__global double *)((__global char *)src + src_index_1));
*((__global double *)((__global char *)dst + dst_index_0)) = data1;
*((__global double *)((__global char *)dst + dst_index_1)) = data0;
}
}
#endif
__kernel void arithm_flip_cols_C2_D0 (__global uchar *src, int src_step, int src_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 1) + dst_offset);
uchar2 data0 = *((__global uchar2 *)((__global char *)src + src_index_0));
uchar2 data1 = *((__global uchar2 *)((__global char *)src + src_index_1));
*((__global uchar2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global uchar2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C2_D1 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 1) + dst_offset);
char2 data0 = *((__global char2 *)((__global char *)src + src_index_0));
char2 data1 = *((__global char2 *)((__global char *)src + src_index_1));
*((__global char2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global char2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C2_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
ushort2 data0 = *((__global ushort2 *)((__global char *)src + src_index_0));
ushort2 data1 = *((__global ushort2 *)((__global char *)src + src_index_1));
*((__global ushort2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global ushort2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C2_D3 (__global short *src, int src_step, int src_offset,
__global short *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
short2 data0 = *((__global short2 *)((__global char *)src + src_index_0));
short2 data1 = *((__global short2 *)((__global char *)src + src_index_1));
*((__global short2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global short2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C2_D4 (__global int *src, int src_step, int src_offset,
__global int *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 3) + dst_offset);
int2 data0 = *((__global int2 *)((__global char *)src + src_index_0));
int2 data1 = *((__global int2 *)((__global char *)src + src_index_1));
*((__global int2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global int2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C2_D5 (__global float *src, int src_step, int src_offset,
__global float *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 3) + dst_offset);
float2 data0 = *((__global float2 *)((__global char *)src + src_index_0));
float2 data1 = *((__global float2 *)((__global char *)src + src_index_1));
*((__global float2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global float2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_flip_cols_C2_D6 (__global double *src, int src_step, int src_offset,
__global double *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 4)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 4) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 4)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 4) + dst_offset);
double2 data0 = *((__global double2 *)((__global char *)src + src_index_0));
double2 data1 = *((__global double2 *)((__global char *)src + src_index_1));
*((__global double2 *)((__global char *)dst + dst_index_0)) = data1;
*((__global double2 *)((__global char *)dst + dst_index_1)) = data0;
}
}
#endif
__kernel void arithm_flip_cols_C3_D0 (__global uchar *src, int src_step, int src_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x) * 3           + src_offset);
int src_index_1 = mad24(y, src_step, (cols - x -1) * 3 + src_offset);
int dst_index_0 = mad24(y, dst_step, (x) * 3           + dst_offset);
int dst_index_1 = mad24(y, dst_step, (cols - x -1) * 3 + dst_offset);
uchar data0_0 = *(src + src_index_0 + 0);
uchar data0_1 = *(src + src_index_0 + 1);
uchar data0_2 = *(src + src_index_0 + 2);
uchar data1_0 = *(src + src_index_1 + 0);
uchar data1_1 = *(src + src_index_1 + 1);
uchar data1_2 = *(src + src_index_1 + 2);
*(dst + dst_index_0 + 0 ) = data1_0;
*(dst + dst_index_0 + 1 ) = data1_1;
*(dst + dst_index_0 + 2 ) = data1_2;
*(dst + dst_index_1 + 0) = data0_0;
*(dst + dst_index_1 + 1) = data0_1;
*(dst + dst_index_1 + 2) = data0_2;
}
}
__kernel void arithm_flip_cols_C3_D1 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x) * 3           + src_offset);
int src_index_1 = mad24(y, src_step, (cols - x -1) * 3 + src_offset);
int dst_index_0 = mad24(y, dst_step, (x) * 3           + dst_offset);
int dst_index_1 = mad24(y, dst_step, (cols - x -1) * 3 + dst_offset);
char data0_0 = *(src + src_index_0 + 0);
char data0_1 = *(src + src_index_0 + 1);
char data0_2 = *(src + src_index_0 + 2);
char data1_0 = *(src + src_index_1 + 0);
char data1_1 = *(src + src_index_1 + 1);
char data1_2 = *(src + src_index_1 + 2);
*(dst + dst_index_0 + 0 ) = data1_0;
*(dst + dst_index_0 + 1 ) = data1_1;
*(dst + dst_index_0 + 2 ) = data1_2;
*(dst + dst_index_1 + 0) = data0_0;
*(dst + dst_index_1 + 1) = data0_1;
*(dst + dst_index_1 + 2) = data0_2;
}
}
__kernel void arithm_flip_cols_C3_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x * 3 << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) * 3 << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x * 3 << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) * 3 << 1) + dst_offset);
ushort data0_0 = *((__global ushort *)((__global char *)src + src_index_0 + 0));
ushort data0_1 = *((__global ushort *)((__global char *)src + src_index_0 + 2));
ushort data0_2 = *((__global ushort *)((__global char *)src + src_index_0 + 4));
ushort data1_0 = *((__global ushort *)((__global char *)src + src_index_1 + 0));
ushort data1_1 = *((__global ushort *)((__global char *)src + src_index_1 + 2));
ushort data1_2 = *((__global ushort *)((__global char *)src + src_index_1 + 4));
*((__global ushort *)((__global char *)dst + dst_index_0 + 0)) = data1_0;
*((__global ushort *)((__global char *)dst + dst_index_0 + 2)) = data1_1;
*((__global ushort *)((__global char *)dst + dst_index_0 + 4)) = data1_2;
*((__global ushort *)((__global char *)dst + dst_index_1 + 0)) = data0_0;
*((__global ushort *)((__global char *)dst + dst_index_1 + 2)) = data0_1;
*((__global ushort *)((__global char *)dst + dst_index_1 + 4)) = data0_2;
}
}
__kernel void arithm_flip_cols_C3_D3 (__global short *src, int src_step, int src_offset,
__global short *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x * 3 << 1)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) * 3 << 1) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x * 3 << 1)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) * 3 << 1) + dst_offset);
short data0_0 = *((__global short *)((__global char *)src + src_index_0 + 0));
short data0_1 = *((__global short *)((__global char *)src + src_index_0 + 2));
short data0_2 = *((__global short *)((__global char *)src + src_index_0 + 4));
short data1_0 = *((__global short *)((__global char *)src + src_index_1 + 0));
short data1_1 = *((__global short *)((__global char *)src + src_index_1 + 2));
short data1_2 = *((__global short *)((__global char *)src + src_index_1 + 4));
*((__global short *)((__global char *)dst + dst_index_0 + 0)) = data1_0;
*((__global short *)((__global char *)dst + dst_index_0 + 2)) = data1_1;
*((__global short *)((__global char *)dst + dst_index_0 + 4)) = data1_2;
*((__global short *)((__global char *)dst + dst_index_1 + 0)) = data0_0;
*((__global short *)((__global char *)dst + dst_index_1 + 2)) = data0_1;
*((__global short *)((__global char *)dst + dst_index_1 + 4)) = data0_2;
}
}
__kernel void arithm_flip_cols_C3_D4 (__global int *src, int src_step, int src_offset,
__global int *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x * 3 << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) * 3 << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x * 3 << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) * 3 << 2) + dst_offset);
int data0_0 = *((__global int *)((__global char *)src + src_index_0 + 0));
int data0_1 = *((__global int *)((__global char *)src + src_index_0 + 4));
int data0_2 = *((__global int *)((__global char *)src + src_index_0 + 8));
int data1_0 = *((__global int *)((__global char *)src + src_index_1 + 0));
int data1_1 = *((__global int *)((__global char *)src + src_index_1 + 4));
int data1_2 = *((__global int *)((__global char *)src + src_index_1 + 8));
*((__global int *)((__global char *)dst + dst_index_0 + 0)) = data1_0;
*((__global int *)((__global char *)dst + dst_index_0 + 4)) = data1_1;
*((__global int *)((__global char *)dst + dst_index_0 + 8)) = data1_2;
*((__global int *)((__global char *)dst + dst_index_1 + 0)) = data0_0;
*((__global int *)((__global char *)dst + dst_index_1 + 4)) = data0_1;
*((__global int *)((__global char *)dst + dst_index_1 + 8)) = data0_2;
}
}
__kernel void arithm_flip_cols_C3_D5 (__global float *src, int src_step, int src_offset,
__global float *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x * 3 << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) * 3 << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x * 3 << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) * 3 << 2) + dst_offset);
float data0_0 = *((__global float *)((__global char *)src + src_index_0 + 0));
float data0_1 = *((__global float *)((__global char *)src + src_index_0 + 4));
float data0_2 = *((__global float *)((__global char *)src + src_index_0 + 8));
float data1_0 = *((__global float *)((__global char *)src + src_index_1 + 0));
float data1_1 = *((__global float *)((__global char *)src + src_index_1 + 4));
float data1_2 = *((__global float *)((__global char *)src + src_index_1 + 8));
*((__global float *)((__global char *)dst + dst_index_0 + 0)) = data1_0;
*((__global float *)((__global char *)dst + dst_index_0 + 4)) = data1_1;
*((__global float *)((__global char *)dst + dst_index_0 + 8)) = data1_2;
*((__global float *)((__global char *)dst + dst_index_1 + 0)) = data0_0;
*((__global float *)((__global char *)dst + dst_index_1 + 4)) = data0_1;
*((__global float *)((__global char *)dst + dst_index_1 + 8)) = data0_2;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_flip_cols_C3_D6 (__global double *src, int src_step, int src_offset,
__global double *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x * 3 << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) * 3 << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x * 3 << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) * 3 << 3) + dst_offset);
double data0_0 = *((__global double *)((__global char *)src + src_index_0 + 0));
double data0_1 = *((__global double *)((__global char *)src + src_index_0 + 8));
double data0_2 = *((__global double *)((__global char *)src + src_index_0 + 16));
double data1_0 = *((__global double *)((__global char *)src + src_index_1 + 0));
double data1_1 = *((__global double *)((__global char *)src + src_index_1 + 8));
double data1_2 = *((__global double *)((__global char *)src + src_index_1 + 16));
*((__global double *)((__global char *)dst + dst_index_0 + 0 )) = data1_0;
*((__global double *)((__global char *)dst + dst_index_0 + 8 )) = data1_1;
*((__global double *)((__global char *)dst + dst_index_0 + 16)) = data1_2;
*((__global double *)((__global char *)dst + dst_index_1 + 0 )) = data0_0;
*((__global double *)((__global char *)dst + dst_index_1 + 8 )) = data0_1;
*((__global double *)((__global char *)dst + dst_index_1 + 16)) = data0_2;
}
}
#endif
__kernel void arithm_flip_cols_C4_D0 (__global uchar *src, int src_step, int src_offset,
__global uchar *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
uchar4 data0 = *((__global uchar4 *)(src + src_index_0));
uchar4 data1 = *((__global uchar4 *)(src + src_index_1));
*((__global uchar4 *)(dst + dst_index_0)) = data1;
*((__global uchar4 *)(dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C4_D1 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 2)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 2) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 2)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 2) + dst_offset);
char4 data0 = *((__global char4 *)(src + src_index_0));
char4 data1 = *((__global char4 *)(src + src_index_1));
*((__global char4 *)(dst + dst_index_0)) = data1;
*((__global char4 *)(dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C4_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 3) + dst_offset);
ushort4 data0 = *((__global ushort4 *)((__global char *)src + src_index_0));
ushort4 data1 = *((__global ushort4 *)((__global char *)src + src_index_1));
*((__global ushort4 *)((__global char *)dst + dst_index_0)) = data1;
*((__global ushort4 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C4_D3 (__global short *src, int src_step, int src_offset,
__global short *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 3)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 3) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 3)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 3) + dst_offset);
short4 data0 = *((__global short4 *)((__global char *)src + src_index_0));
short4 data1 = *((__global short4 *)((__global char *)src + src_index_1));
*((__global short4 *)((__global char *)dst + dst_index_0)) = data1;
*((__global short4 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C4_D4 (__global int *src, int src_step, int src_offset,
__global int *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 4)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 4) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 4)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 4) + dst_offset);
int4 data0 = *((__global int4 *)((__global char *)src + src_index_0));
int4 data1 = *((__global int4 *)((__global char *)src + src_index_1));
*((__global int4 *)((__global char *)dst + dst_index_0)) = data1;
*((__global int4 *)((__global char *)dst + dst_index_1)) = data0;
}
}
__kernel void arithm_flip_cols_C4_D5 (__global float *src, int src_step, int src_offset,
__global float *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 4)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 4) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 4)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 4) + dst_offset);
float4 data0 = *((__global float4 *)((__global char *)src + src_index_0));
float4 data1 = *((__global float4 *)((__global char *)src + src_index_1));
*((__global float4 *)((__global char *)dst + dst_index_0)) = data1;
*((__global float4 *)((__global char *)dst + dst_index_1)) = data0;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_flip_cols_C4_D6 (__global double *src, int src_step, int src_offset,
__global double *dst, int dst_step, int dst_offset,
int rows, int cols, int thread_cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < thread_cols && y < rows)
{
int src_index_0 = mad24(y, src_step, (x << 5)             + src_offset);
int src_index_1 = mad24(y, src_step, ((cols - x -1) << 5) + src_offset);
int dst_index_0 = mad24(y, dst_step, (x << 5)             + dst_offset);
int dst_index_1 = mad24(y, dst_step, ((cols - x -1) << 5) + dst_offset);
double4 data0 = *((__global double4 *)((__global char *)src + src_index_0));
double4 data1 = *((__global double4 *)((__global char *)src + src_index_1));
*((__global double4 *)((__global char *)dst + dst_index_0)) = data1;
*((__global double4 *)((__global char *)dst + dst_index_1)) = data0;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
__kernel void arithm_exp_D5(int rows, int cols, int srcStep, int dstStep, int srcOffset, int dstOffset, __global float *src, __global float *dst)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows)
{
x = x << 2;
int srcIdx = mad24( y, srcStep, x + srcOffset);
int dstIdx = mad24( y, dstStep, x + dstOffset);
float src_data = *((__global float *)((__global char *)src + srcIdx));
float dst_data = exp(src_data);
*((__global float *)((__global char *)dst + dstIdx)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_exp_D6(int rows, int cols, int srcStep, int dstStep, int srcOffset, int dstOffset, __global double *src, __global double *dst)
{
int x = get_global_id(0);
int y = get_global_id(1);
if(x < cols && y < rows )
{
x = x << 3;
int srcIdx = mad24( y, srcStep, x + srcOffset);
int dstIdx = mad24( y, dstStep, x + dstOffset);
double src_data = *((__global double *)((__global char *)src + srcIdx));
double dst_data = exp(src_data);
*((__global double *)((__global char *)dst + dstIdx )) = dst_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
typedef double F ;
typedef double4 F4;
#define convert_F4 convert_double4
#define convert_F  double
#else
typedef float F;
typedef float4 F4;
#define convert_F4 convert_float4
#define convert_F  float
#endif
inline uchar round2_uchar(F v)
{
return convert_uchar_sat(round(v));
}
inline ushort round2_ushort(F v)
{
return convert_ushort_sat(round(v));
}
inline short round2_short(F v)
{
return convert_short_sat(round(v));
}
inline int round2_int(F v)
{
return convert_int_sat(round(v));
}
__kernel void arithm_div_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int2 coor = (int2)(get_global_id(0), get_global_id(1));
if (coor.x < cols && coor.y < rows)
{
coor.x = coor.x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int2 src_index = (int2)(mad24(coor.y, src1_step, coor.x + src1_offset - dst_align),
mad24(coor.y, src2_step, coor.x + src2_offset - dst_align));
int4 dst_args  = (int4)(mad24(coor.y, dst_step, dst_offset),
mad24(coor.y, dst_step, dst_offset + dst_step1),
mad24(coor.y, dst_step, dst_offset + coor.x & (int)0xfffffffc),
0);
uchar4 src1_data = vload4(0, src1 + src_index.x);
uchar4 src2_data = vload4(0, src2 + src_index.y);
uchar4 dst_data  = *((__global uchar4 *)(dst + dst_args.z));
F4 tmp      = convert_F4(src1_data) * scalar;
uchar4 tmp_data;
tmp_data.x = ((tmp.x == 0) || (src2_data.x == 0)) ? 0 : round2_uchar(tmp.x / src2_data.x);
tmp_data.y = ((tmp.y == 0) || (src2_data.y == 0)) ? 0 : round2_uchar(tmp.y / src2_data.y);
tmp_data.z = ((tmp.z == 0) || (src2_data.z == 0)) ? 0 : round2_uchar(tmp.z / src2_data.z);
tmp_data.w = ((tmp.w == 0) || (src2_data.w == 0)) ? 0 : round2_uchar(tmp.w / src2_data.w);
dst_data.x = ((dst_args.z + 0 >= dst_args.x) && (dst_args.z + 0 < dst_args.y)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_args.z + 1 >= dst_args.x) && (dst_args.z + 1 < dst_args.y)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_args.z + 2 >= dst_args.x) && (dst_args.z + 2 < dst_args.y)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_args.z + 3 >= dst_args.x) && (dst_args.z + 3 < dst_args.y)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_args.z)) = dst_data;
}
}
__kernel void arithm_div_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
F4 tmp   = convert_F4(src1_data) * scalar;
ushort4 tmp_data;
tmp_data.x = ((tmp.x == 0) || (src2_data.x == 0)) ? 0 : round2_ushort(tmp.x / (F)src2_data.x);
tmp_data.y = ((tmp.y == 0) || (src2_data.y == 0)) ? 0 : round2_ushort(tmp.y / (F)src2_data.y);
tmp_data.z = ((tmp.z == 0) || (src2_data.z == 0)) ? 0 : round2_ushort(tmp.z / (F)src2_data.z);
tmp_data.w = ((tmp.w == 0) || (src2_data.w == 0)) ? 0 : round2_ushort(tmp.w / (F)src2_data.w);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_div_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
F4 tmp   = convert_F4(src1_data) * scalar;
short4 tmp_data;
tmp_data.x = ((tmp.x == 0) || (src2_data.x == 0)) ? 0 : round2_short(tmp.x / (F)src2_data.x);
tmp_data.y = ((tmp.y == 0) || (src2_data.y == 0)) ? 0 : round2_short(tmp.y / (F)src2_data.y);
tmp_data.z = ((tmp.z == 0) || (src2_data.z == 0)) ? 0 : round2_short(tmp.z / (F)src2_data.z);
tmp_data.w = ((tmp.w == 0) || (src2_data.w == 0)) ? 0 : round2_short(tmp.w / (F)src2_data.w);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_div_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int data2 = *((__global int *)((__global char *)src2 + src2_index));
F tmp  = (convert_F)(data1) * scalar;
int tmp_data = (tmp == 0 || data2 == 0) ? 0 : round2_int(tmp / (convert_F)(data2));
*((__global int *)((__global char *)dst + dst_index)) =tmp_data;
}
}
__kernel void arithm_div_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
F tmp  = (convert_F)(data1) * scalar;
float tmp_data = (tmp == 0 || data2 == 0) ? 0 : convert_float(tmp / (convert_F)(data2));
*((__global float *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_div_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, double scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
double tmp  = data1 * scalar;
double tmp_data = (tmp == 0 || data2 == 0) ? 0 : (tmp / data2);
*((__global double *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#endif
__kernel void arithm_s_div_D0 (__global uchar *src, int src_step, int src_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src_index = mad24(y, src_step, x + src_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src_data = vload4(0, src + src_index);
uchar4 dst_data  = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data;
tmp_data.x = ((scalar == 0) || (src_data.x == 0)) ? 0 : round2_uchar(scalar / (F)src_data.x);
tmp_data.y = ((scalar == 0) || (src_data.y == 0)) ? 0 : round2_uchar(scalar / (F)src_data.y);
tmp_data.z = ((scalar == 0) || (src_data.z == 0)) ? 0 : round2_uchar(scalar / (F)src_data.z);
tmp_data.w = ((scalar == 0) || (src_data.w == 0)) ? 0 : round2_uchar(scalar / (F)src_data.w);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_s_div_D2 (__global ushort *src, int src_step, int src_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src_index = mad24(y, src_step, (x << 1) + src_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src_data = vload4(0, (__global ushort *)((__global char *)src + src_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
ushort4 tmp_data;
tmp_data.x = ((scalar == 0) || (src_data.x == 0)) ? 0 : round2_ushort(scalar / (F)src_data.x);
tmp_data.y = ((scalar == 0) || (src_data.y == 0)) ? 0 : round2_ushort(scalar / (F)src_data.y);
tmp_data.z = ((scalar == 0) || (src_data.z == 0)) ? 0 : round2_ushort(scalar / (F)src_data.z);
tmp_data.w = ((scalar == 0) || (src_data.w == 0)) ? 0 : round2_ushort(scalar / (F)src_data.w);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_s_div_D3 (__global short *src, int src_step, int src_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src_index = mad24(y, src_step, (x << 1) + src_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src_data = vload4(0, (__global short *)((__global char *)src + src_index));
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
short4 tmp_data;
tmp_data.x = ((scalar == 0) || (src_data.x == 0)) ? 0 : round2_short(scalar / (F)src_data.x);
tmp_data.y = ((scalar == 0) || (src_data.y == 0)) ? 0 : round2_short(scalar / (F)src_data.y);
tmp_data.z = ((scalar == 0) || (src_data.z == 0)) ? 0 : round2_short(scalar / (F)src_data.z);
tmp_data.w = ((scalar == 0) || (src_data.w == 0)) ? 0 : round2_short(scalar / (F)src_data.w);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_s_div_D4 (__global int *src, int src_step, int src_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index = mad24(y, src_step, (x << 2) + src_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data = *((__global int *)((__global char *)src + src_index));
int tmp_data = (scalar == 0 || data == 0) ? 0 : round2_int(scalar / (convert_F)(data));
*((__global int *)((__global char *)dst + dst_index)) =tmp_data;
}
}
__kernel void arithm_s_div_D5 (__global float *src, int src_step, int src_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, F scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index = mad24(y, src_step, (x << 2) + src_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data = *((__global float *)((__global char *)src + src_index));
float tmp_data = (scalar == 0 || data == 0) ? 0 : convert_float(scalar / (convert_F)(data));
*((__global float *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_div_D6 (__global double *src, int src_step, int src_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1, double scalar)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index = mad24(y, src_step, (x << 3) + src_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data = *((__global double *)((__global char *)src + src_index));
double tmp_data = (scalar == 0 || data == 0) ? 0 : (scalar / data);
*((__global double *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
__kernel void arithm_compare_ne_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ne_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1)& 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ne_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1)& 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ne_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2)& 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ne_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_ne_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data != src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
__kernel void arithm_compare_lt_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global  uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_lt_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_lt_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_lt_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_lt_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_lt_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data < src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
__kernel void arithm_compare_le_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_le_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_le_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_le_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2)& 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data =convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_le_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2)& 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_le_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3)& 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data <= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
__kernel void arithm_compare_eq_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ne_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1)& 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_eq_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_eq_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_eq_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_eq_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data == src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
__kernel void arithm_compare_gt_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_gt_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_gt_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_gt_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_gt_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_gt_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data > src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
__kernel void arithm_compare_ge_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ge_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ge_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1)& 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ge_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2)& 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_compare_ge_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2)& 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_compare_ge_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3)& 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 tmp_data = convert_uchar4((src1_data >= src2_data));
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#define CV_PI   3.1415926535897932384626433832795
#ifndef DBL_EPSILON
#define DBL_EPSILON 0x1.0p-52
#endif
__kernel void arithm_cartToPolar_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst1, int dst1_step, int dst1_offset,
__global float *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst1_index = mad24(y, dst1_step, (x << 2) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 2) + dst2_offset);
float x = *((__global float *)((__global char *)src1 + src1_index));
float y = *((__global float *)((__global char *)src2 + src2_index));
float x2 = x * x;
float y2 = y * y;
float magnitude = sqrt(x2 + y2);
float cartToPolar;
float tmp = y >= 0 ? 0 : CV_PI*2;
tmp = x < 0 ? CV_PI : tmp;
float tmp1 = y >= 0 ? CV_PI*0.5 : CV_PI*1.5;
cartToPolar = y2 <= x2 ? x*y/(x2 + 0.28f*y2 + (float)DBL_EPSILON)  + tmp :
tmp1 - x*y/(y2 + 0.28f*x2 + (float)DBL_EPSILON);
cartToPolar = angInDegree == 0 ? cartToPolar : cartToPolar * (float)(180/CV_PI);
*((__global float *)((__global char *)dst1 + dst1_index)) = magnitude;
*((__global float *)((__global char *)dst2 + dst2_index)) = cartToPolar;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_cartToPolar_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst1, int dst1_step, int dst1_offset,
__global double *dst2, int dst2_step, int dst2_offset,
int rows, int cols, int angInDegree)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst1_index = mad24(y, dst1_step, (x << 3) + dst1_offset);
int dst2_index = mad24(y, dst2_step, (x << 3) + dst2_offset);
double x = *((__global double *)((__global char *)src1 + src1_index));
double y = *((__global double *)((__global char *)src2 + src2_index));
double x2 = x * x;
double y2 = y * y;
double magnitude = sqrt(x2 + y2);
double cartToPolar;
float tmp = y >= 0 ? 0 : CV_PI*2;
tmp = x < 0 ? CV_PI : tmp;
float tmp1 = y >= 0 ? CV_PI*0.5 : CV_PI*1.5;
cartToPolar = y2 <= x2 ? x*y/(x2 + 0.28f*y2 + (float)DBL_EPSILON)  + tmp :
tmp1 - x*y/(y2 + 0.28f*x2 + (float)DBL_EPSILON);
cartToPolar = angInDegree == 0 ? cartToPolar : cartToPolar * (float)(180/CV_PI);
*((__global double *)((__global char *)dst1 + dst1_index)) = magnitude;
*((__global double *)((__global char *)dst2 + dst2_index)) = cartToPolar;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
__kernel void arithm_bitwise_not_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = ~ src1_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_not_D1 (__global char *src1, int src1_step, int src1_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 dst_data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = ~ src1_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global char4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_not_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
ushort4 tmp_data = ~ src1_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_not_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
short4 tmp_data = ~ src1_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_not_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int tmp  = ~ data1;
*((__global int *)((__global char *)dst + dst_index)) = tmp;
}
}
__kernel void arithm_bitwise_not_D5 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index = mad24(y, src_step, (x << 2) + src_offset);
int dst_index = mad24(y, dst_step, (x << 2) + dst_offset);
char4 data;
data = *((__global char4 *)((__global char *)src + src_index));
data = ~ data;
*((__global char4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_bitwise_not_D6 (__global char *src, int src_step, int src_offset,
__global char *dst, int dst_step, int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src_index = mad24(y, src_step, (x << 3) + src_offset);
int dst_index = mad24(y, dst_step,  (x << 3) + dst_offset);
char8 data;
data = *((__global char8 *)((__global char *)src + src_index));
data = ~ data;
*((__global char8 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifndef OP_BINARY
#define OP_BINARY &
#endif
__kernel void arithm_s_bitwise_binary_with_mask_C1_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = (uchar4)(src2.x, src2.x, src2.x, src2.x);
uchar4 mask_data = vload4(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C1_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = (char4)(src2.x, src2.x, src2.x, src2.x);
uchar4 mask_data = vload4(0, mask + mask_index);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C1_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar  *mask, int mask_step, int mask_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort2 src2_data = (ushort2)(src2.x, src2.x);
uchar2  mask_data = vload2(0, mask + mask_index);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
ushort2 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C1_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
short2 src2_data = (short2)(src2.x, src2.x);
uchar2  mask_data = vload2(0, mask + mask_index);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
short2 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C1_D4 (
__global   int   *src1, int src1_step, int src1_offset,
__global   int   *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = src2.x;
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
int data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C1_D5 (
__global char *src1, int src1_step, int src1_offset,
__global char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
char4 src1_data = *((__global char4 *)((__global char *)src1 + src1_index));
char4 src2_data = (char4)(src2.s0, src2.s1, src2.s2, src2.s3);
char4 dst_data  = *((__global char4 *)((__global char *)dst  + dst_index));
char4 data = src1_data OP_BINARY src2_data;
data = mask_data ? data : dst_data;
*((__global char4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_with_mask_C1_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src1_data = *((__global short4 *)((__global char *)src1 + src1_index));
short4 src2_data = (short4)(src2.s0, src2.s1, src2.s2, src2.s3);
short4 dst_data  = *((__global short4 *)((__global char *)dst  + dst_index));
short4 data = src1_data OP_BINARY src2_data;
data = mask_data ? data : dst_data;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_bitwise_binary_with_mask_C2_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = (uchar4)(src2.x, src2.y, src2.x, src2.y);
uchar2 mask_data = vload2(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C2_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = (char4)(src2.x, src2.y, src2.x, src2.y);
uchar2 mask_data = vload2(0, mask + mask_index);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C2_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
ushort2 src_data2 = (ushort2)(src2.x, src2.y);
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
ushort2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C2_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
short2 src_data2 = (short2)(src2.x, src2.y);
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
short2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C2_D4 (
__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C2_D5 (
__global   char *src1, int src1_step, int src1_offset,
__global  char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
char8 src1_data = *((__global char8 *)((__global char *)src1 + src1_index));
char8 src2_data = (char8)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7);
char8 dst_data = *((__global char8 *)((__global char *)dst  + dst_index));
char8 data = src1_data OP_BINARY src2_data;
data = mask_data ? data : dst_data;
*((__global char8 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_with_mask_C2_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
__global uchar *mask, int mask_step, int mask_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
short8 src1_data = *((__global short8 *)((__global char *)src1 + src1_index));
short8 src2_data = (short8)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7);
short8 dst_data = *((__global short8 *)((__global char *)dst  + dst_index));
short8 data = src1_data OP_BINARY src2_data;
data = mask_data ? data : dst_data;
*((__global short8 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_bitwise_binary_with_mask_C4_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 data = src_data1 OP_BINARY src2;
data = mask_data ? data : dst_data;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C4_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
char4 src_data1 = *((__global char4 *)(src1 + src1_index));
char4 dst_data  = *((__global char4 *)(dst  + dst_index));
char4 data = src_data1 OP_BINARY src2;
data = mask_data ? data : dst_data;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C4_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 dst_data  = *((__global ushort4 *)((__global char *)dst  + dst_index));
ushort4 data = src_data1 OP_BINARY src2;
data = mask_data ? data : dst_data;
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C4_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 dst_data  = *((__global short4 *)((__global char *)dst  + dst_index));
short4 data = src_data1 OP_BINARY src2;
data = mask_data ? data : dst_data;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C4_D4 (
__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 dst_data  = *((__global int4 *)((__global char *)dst  + dst_index));
int4 data = src_data1 OP_BINARY src2;
data = mask_data ? data : dst_data;
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_with_mask_C4_D5 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
char16 src1_data = *((__global char16 *)((__global char *)src1 + src1_index));
char16 src2_data = (char16)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7,
src2.s8, src2.s9, src2.sa, src2.sb, src2.sc, src2.sd, src2.se, src2.sf);
char16 dst_data  = *((__global char16 *)((__global char *)dst  + dst_index));
char16 data = src1_data OP_BINARY src2_data;
data = mask_data ? data : dst_data;
*((__global char16 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_with_mask_C4_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
__global uchar *mask, int mask_step, int mask_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src1_data_0 = *((__global short4 *)((__global char *)src1 + src1_index + 0));
short4 src1_data_1 = *((__global short4 *)((__global char *)src1 + src1_index + 8));
short4 src1_data_2 = *((__global short4 *)((__global char *)src1 + src1_index + 16));
short4 src1_data_3 = *((__global short4 *)((__global char *)src1 + src1_index + 24));
short4 src2_data_0 = (short4)(src2.s0, src2.s1, src2.s2, src2.s3);
short4 src2_data_1 = (short4)(src2.s4, src2.s5, src2.s6, src2.s7);
short4 src2_data_2 = (short4)(src2.s8, src2.s9, src2.sa, src2.sb);
short4 src2_data_3 = (short4)(src2.sc, src2.sd, src2.se, src2.sf);
short4 dst_data_0  = *((__global short4 *)((__global char *)dst  + dst_index + 0));
short4 dst_data_1  = *((__global short4 *)((__global char *)dst  + dst_index + 8));
short4 dst_data_2  = *((__global short4 *)((__global char *)dst  + dst_index + 16));
short4 dst_data_3  = *((__global short4 *)((__global char *)dst  + dst_index + 24));
short4 data_0 = src1_data_0 OP_BINARY src2_data_0;
short4 data_1 = src1_data_1 OP_BINARY src2_data_1;
short4 data_2 = src1_data_2 OP_BINARY src2_data_2;
short4 data_3 = src1_data_3 OP_BINARY src2_data_3;
data_0 = mask_data ? data_0 : dst_data_0;
data_1 = mask_data ? data_1 : dst_data_1;
data_2 = mask_data ? data_2 : dst_data_2;
data_3 = mask_data ? data_3 : dst_data_3;
*((__global short4 *)((__global char *)dst + dst_index + 0)) = data_0;
*((__global short4 *)((__global char *)dst + dst_index + 8)) = data_1;
*((__global short4 *)((__global char *)dst + dst_index + 16)) = data_2;
*((__global short4 *)((__global char *)dst + dst_index + 24)) = data_3;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifndef OP_BINARY
#define OP_BINARY &
#endif
__kernel void arithm_s_bitwise_binary_C1_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = (uchar4)(src2.x, src2.x, src2.x, src2.x);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C1_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = (char4)(src2.x, src2.x, src2.x, src2.x);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C1_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort2 src2_data = (ushort2)(src2.x, src2.x);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
ushort2 tmp_data = src1_data OP_BINARY src2_data;
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C1_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
short2 src2_data = (short2)(src2.x, src2.x);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
short2 tmp_data = src1_data OP_BINARY src2_data;
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C1_D4 (
__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = src2.x;
int data = src_data1 OP_BINARY src_data2;
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C1_D5 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
char4 src1_data = *((__global char4 *)((__global char *)src1 + src1_index));
char4 src2_data = (char4)(src2.s0, src2.s1, src2.s2, src2.s3);
char4 data  = *((__global char4 *)((__global char *)dst  + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global char4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_C1_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
short4 src1_data = *((__global short4 *)((__global char *)src1 + src1_index));
short4 src2_data = (short4)(src2.s0, src2.s1, src2.s2, src2.s3);
short4 tmp_data = src1_data OP_BINARY src2_data;
*((__global short4 *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#endif
__kernel void arithm_s_bitwise_binary_C2_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = (uchar4)(src2.x, src2.y, src2.x, src2.y);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = (dst_index + 0 >= dst_start) ? tmp_data.xy : data.xy;
data.zw = (dst_index + 2 <  dst_end  ) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C2_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = (char4)(src2.x, src2.y, src2.x, src2.y);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = (dst_index + 0 >= dst_start) ? tmp_data.xy : data.xy;
data.zw = (dst_index + 2 <  dst_end  ) ? tmp_data.zw : data.zw;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C2_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
ushort2 src_data2 = (ushort2)(src2.x, src2.y);
ushort2 data = src_data1 OP_BINARY src_data2;
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C2_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
short2 src_data2 = (short2)(src2.x, src2.y);
short2 data = src_data1 OP_BINARY src_data2;
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C2_D4 (
__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
int2 data = src_data1 OP_BINARY src_data2;
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C2_D5 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
char8 src1_data = *((__global char8 *)((__global char *)src1 + src1_index));
char8 src2_data = (char8)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7);
char8 tmp_data = src1_data OP_BINARY src2_data;
*((__global char8 *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_C2_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
short8 src1_data = *((__global short8 *)((__global char *)src1 + src1_index));
short8 src2_data = (short8)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7);
short8 tmp_data = src1_data OP_BINARY src2_data;
*((__global short8 *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#endif
__kernel void arithm_s_bitwise_binary_C4_D0 (
__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
uchar4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 data = src_data1 OP_BINARY src2;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C4_D1 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
char4 src_data1 = *((__global char4 *)(src1 + src1_index));
char4 data = src_data1 OP_BINARY src2;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C4_D2 (
__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
ushort4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 data = src_data1 OP_BINARY src2;
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C4_D3 (
__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
short4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 data = src_data1 OP_BINARY src2;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C4_D4 (
__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 data = src_data1 OP_BINARY src2;
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_bitwise_binary_C4_D5 (
__global   char *src1, int src1_step, int src1_offset,
__global   char *dst,  int dst_step,  int dst_offset,
char16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
char16 src1_data = *((__global char16 *)((__global char *)src1 + src1_index));
char16 src2_data = (char16)(src2.s0, src2.s1, src2.s2, src2.s3, src2.s4, src2.s5, src2.s6, src2.s7,
src2.s8, src2.s9, src2.sa, src2.sb, src2.sc, src2.sd, src2.se, src2.sf);
char16 tmp_data = src1_data OP_BINARY src2_data;
*((__global char16 *)((__global char *)dst + dst_index)) = tmp_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_bitwise_binary_C4_D6 (
__global short *src1, int src1_step, int src1_offset,
__global short *dst,  int dst_step,  int dst_offset,
short16 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
short4 src1_data_0 = *((__global short4 *)((__global char *)src1 + src1_index + 0));
short4 src1_data_1 = *((__global short4 *)((__global char *)src1 + src1_index + 8));
short4 src1_data_2 = *((__global short4 *)((__global char *)src1 + src1_index + 16));
short4 src1_data_3 = *((__global short4 *)((__global char *)src1 + src1_index + 24));
short4 src2_data_0 = (short4)(src2.s0, src2.s1, src2.s2, src2.s3);
short4 src2_data_1 = (short4)(src2.s4, src2.s5, src2.s6, src2.s7);
short4 src2_data_2 = (short4)(src2.s8, src2.s9, src2.sa, src2.sb);
short4 src2_data_3 = (short4)(src2.sc, src2.sd, src2.se, src2.sf);
short4 tmp_data_0 = src1_data_0 OP_BINARY src2_data_0;
short4 tmp_data_1 = src1_data_1 OP_BINARY src2_data_1;
short4 tmp_data_2 = src1_data_2 OP_BINARY src2_data_2;
short4 tmp_data_3 = src1_data_3 OP_BINARY src2_data_3;
*((__global short4 *)((__global char *)dst + dst_index + 0 ))= tmp_data_0;
*((__global short4 *)((__global char *)dst + dst_index + 8 ))= tmp_data_1;
*((__global short4 *)((__global char *)dst + dst_index + 16))= tmp_data_2;
*((__global short4 *)((__global char *)dst + dst_index + 24))= tmp_data_3;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifndef OP_BINARY
#define OP_BINARY &
#endif
__kernel void arithm_bitwise_binary_with_mask_C1_D0 (
__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = vload4(0, src2 + src2_index);
uchar4 mask_data = vload4(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D1 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = vload4(0, src2 + src2_index);
uchar4 mask_data = vload4(0, mask + mask_index);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.x = convert_char((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = convert_char((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = convert_char((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = convert_char((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D2 (
__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort2 src2_data = vload2(0, (__global ushort *)((__global char *)src2 + src2_index));
uchar2  mask_data = vload2(0, mask + mask_index);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
ushort2 tmp_data = src1_data OP_BINARY src2_data;
data.x = convert_ushort((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = convert_ushort((mask_data.y) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D3 (
__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
short2 src2_data = vload2(0, (__global short *)((__global char *)src2 + src2_index));
uchar2  mask_data = vload2(0, mask + mask_index);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
short2 tmp_data = src1_data OP_BINARY src2_data;
data.x = convert_short((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = convert_short((mask_data.y) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D4 (
__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int   *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = *((__global int *)((__global char *)src2 + src2_index));
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
int data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D5 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
char4 src_data1 = *((__global char4 *)((__global char *)src1 + src1_index));
char4 src_data2 = *((__global char4 *)((__global char *)src2 + src2_index));
char4 dst_data  = *((__global char4 *)((__global char *)dst  + dst_index));
char4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C1_D6 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
char8 src_data1 = *((__global char8 *)((__global char *)src1 + src1_index));
char8 src_data2 = *((__global char8 *)((__global char *)src2 + src2_index));
char8 dst_data  = *((__global char8 *)((__global char *)dst  + dst_index));
char8 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char8 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D0 (
__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = vload4(0, src2 + src2_index);
uchar2 mask_data = vload2(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D1 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
char4 src1_data = vload4(0, src1 + src1_index);
char4 src2_data = vload4(0, src2 + src2_index);
uchar2 mask_data = vload2(0, mask + mask_index);
char4 data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D2 (
__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
ushort2 src_data2 = *((__global ushort2 *)((__global char *)src2 + src2_index));
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
ushort2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D3 (
__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
short2 src_data2 = *((__global short2 *)((__global char *)src2 + src2_index));
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
short2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D4 (
__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int    *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = *((__global int2 *)((__global char *)src2 + src2_index));
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D5 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
char8 src_data1 = *((__global char8 *)((__global char *)src1 + src1_index));
char8 src_data2 = *((__global char8 *)((__global char *)src2 + src2_index));
char8 dst_data  = *((__global char8 *)((__global char *)dst  + dst_index));
char8 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char8 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C2_D6 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
char16 src_data1 = *((__global char16 *)((__global char *)src1 + src1_index));
char16 src_data2 = *((__global char16 *)((__global char *)src2 + src2_index));
char16 dst_data  = *((__global char16 *)((__global char *)dst  + dst_index));
char16 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char16 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D0 (
__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 src_data2 = *((__global uchar4 *)(src2 + src2_index));
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D1 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
char4 src_data1 = *((__global char4 *)(src1 + src1_index));
char4 src_data2 = *((__global char4 *)(src2 + src2_index));
char4 dst_data  = *((__global char4 *)(dst  + dst_index));
char4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D2 (
__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 src_data2 = *((__global ushort4 *)((__global char *)src2 + src2_index));
ushort4 dst_data  = *((__global ushort4 *)((__global char *)dst  + dst_index));
ushort4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D3 (
__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 src_data2 = *((__global short4 *)((__global char *)src2 + src2_index));
short4 dst_data  = *((__global short4 *)((__global char *)dst  + dst_index));
short4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D4 (
__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int   *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 src_data2 = *((__global int4 *)((__global char *)src2 + src2_index));
int4 dst_data  = *((__global int4 *)((__global char *)dst  + dst_index));
int4 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_bitwise_binary_with_mask_C4_D5 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
char16 src_data1 = *((__global char16 *)((__global char *)src1 + src1_index));
char16 src_data2 = *((__global char16 *)((__global char *)src2 + src2_index));
char16 dst_data  = *((__global char16 *)((__global char *)dst  + dst_index));
char16 data = src_data1 OP_BINARY src_data2;
data = mask_data ? data : dst_data;
*((__global char16 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_bitwise_binary_with_mask_C4_D6 (
__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 5) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
uchar mask_data = *(mask + mask_index);
char8 src_data1_0 = *((__global char8 *)((__global char *)src1 + src1_index + 0));
char8 src_data1_1 = *((__global char8 *)((__global char *)src1 + src1_index + 8));
char8 src_data1_2 = *((__global char8 *)((__global char *)src1 + src1_index + 16));
char8 src_data1_3 = *((__global char8 *)((__global char *)src1 + src1_index + 24));
char8 src_data2_0 = *((__global char8 *)((__global char *)src2 + src2_index + 0));
char8 src_data2_1 = *((__global char8 *)((__global char *)src2 + src2_index + 8));
char8 src_data2_2 = *((__global char8 *)((__global char *)src2 + src2_index + 16));
char8 src_data2_3 = *((__global char8 *)((__global char *)src2 + src2_index + 24));
char8 dst_data_0  = *((__global char8 *)((__global char *)dst  + dst_index + 0));
char8 dst_data_1  = *((__global char8 *)((__global char *)dst  + dst_index + 8));
char8 dst_data_2  = *((__global char8 *)((__global char *)dst  + dst_index + 16));
char8 dst_data_3  = *((__global char8 *)((__global char *)dst  + dst_index + 24));
char8 data_0 = src_data1_0 OP_BINARY src_data2_0;
char8 data_1 = src_data1_1 OP_BINARY src_data2_1;
char8 data_2 = src_data1_2 OP_BINARY src_data2_2;
char8 data_3 = src_data1_3 OP_BINARY src_data2_3;
data_0 = mask_data ? data_0 : dst_data_0;
data_1 = mask_data ? data_1 : dst_data_1;
data_2 = mask_data ? data_2 : dst_data_2;
data_3 = mask_data ? data_3 : dst_data_3;
*((__global char8 *)((__global char *)dst + dst_index + 0)) = data_0;
*((__global char8 *)((__global char *)dst + dst_index + 8)) = data_1;
*((__global char8 *)((__global char *)dst + dst_index + 16)) = data_2;
*((__global char8 *)((__global char *)dst + dst_index + 24)) = data_3;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifndef OP_BINARY
#define OP_BINARY &
#endif
__kernel void arithm_bitwise_binary_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = src1_data OP_BINARY src2_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_binary_D1 (__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
char4 src1_data = vload4(0, src1 + src1_index_fix);
char4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
char4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
char4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
char4 dst_data = *((__global char4 *)(dst + dst_index));
char4 tmp_data = src1_data OP_BINARY src2_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global char4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_binary_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index_fix));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
ushort4 tmp_data = src1_data OP_BINARY src2_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_binary_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index_fix));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
short4 tmp_data = src1_data OP_BINARY src2_data;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_bitwise_binary_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int data2 = *((__global int *)((__global char *)src2 + src2_index));
int tmp  = data1 OP_BINARY data2;
*((__global int *)((__global char *)dst + dst_index)) = tmp;
}
}
__kernel void arithm_bitwise_binary_D5 (__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
char4 data1 = *((__global char4 *)((__global char *)src1 + src1_index));
char4 data2 = *((__global char4 *)((__global char *)src2 + src2_index));
char4 tmp = data1 OP_BINARY data2;
*((__global char4 *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_bitwise_binary_D6 (__global char *src1, int src1_step, int src1_offset,
__global char *src2, int src2_step, int src2_offset,
__global char *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
char8 data1 = *((__global char8 *)((__global char *)src1 + src1_index));
char8 data2 = *((__global char8 *)((__global char *)src2 + src2_index));
*((__global char8 *)((__global char *)dst + dst_index)) = data1 OP_BINARY data2;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifdef ARITHM_ADD
#define ARITHM_OP(A,B) ((A)+(B))
#elif defined ARITHM_SUB
#define ARITHM_OP(A,B) ((A)-(B))
#endif
__kernel void arithm_s_add_with_mask_C1_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int mask_index_fix = mask_index < 0 ? 0 : mask_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
int4 src2_data = (int4)(src2.x, src2.x, src2.x, src2.x);
uchar4 mask_data = vload4(0, mask + mask_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(mask_index < 0)
{
uchar4 tmp;
tmp.xyzw = (mask_index == -2) ? mask_data.zwxy:mask_data.yzwx;
mask_data.xyzw = (mask_index == -1) ? mask_data.wxyz:tmp.xyzw;
}
uchar4 data = *((__global uchar4 *)(dst + dst_index));
int4 tmp = ARITHM_OP(convert_int4_sat(src1_data), src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C1_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar  *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
uchar2  mask_data = vload2(0, mask + mask_index);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), src2_data);
ushort2 tmp_data = convert_ushort2_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C1_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
uchar2  mask_data = vload2(0, mask + mask_index);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), src2_data);
short2 tmp_data = convert_short2_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C1_D4 (__global   int   *src1, int src1_step, int src1_offset,
__global   int   *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = src2.x;
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
int data = convert_int_sat(ARITHM_OP((long)src_data1, (long)src_data2));
data = mask_data ? data : dst_data;
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C1_D5 (__global   float   *src1, int src1_step, int src1_offset,
__global   float   *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
float src_data1 = *((__global float *)((__global char *)src1 + src1_index));
float src_data2 = src2.x;
float dst_data  = *((__global float *)((__global char *)dst  + dst_index));
float data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global float *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_with_mask_C1_D6 (__global   double   *src1, int src1_step, int src1_offset,
__global   double   *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
double src_data1 = *((__global double *)((__global char *)src1 + src1_index));
double src_data2 = src2.x;
double dst_data  = *((__global double *)((__global char *)dst  + dst_index));
double data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global double *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_add_with_mask_C2_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
int4   src2_data = (int4)(src2.x, src2.y, src2.x, src2.y);
uchar2 mask_data = vload2(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
int4  tmp = ARITHM_OP(convert_int4_sat(src1_data), src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C2_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), src_data2);
ushort2 data = convert_ushort2_sat(tmp);
data = mask_data ? data : dst_data;
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C2_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), src_data2);
short2 data = convert_short2_sat(tmp);
data = mask_data ? data : dst_data;
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C2_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = convert_int2_sat(ARITHM_OP(convert_long2_sat(src_data1), convert_long2_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C2_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
float2 src_data1 = *((__global float2 *)((__global char *)src1 + src1_index));
float2 src_data2 = (float2)(src2.x, src2.y);
float2 dst_data  = *((__global float2 *)((__global char *)dst  + dst_index));
float2 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global float2 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_with_mask_C2_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
double2 src_data1 = *((__global double2 *)((__global char *)src1 + src1_index));
double2 src_data2 = (double2)(src2.x, src2.y);
double2 dst_data  = *((__global double2 *)((__global char *)dst  + dst_index));
double2 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global double2 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_add_with_mask_C4_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 data = convert_uchar4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
data = mask_data ? data : dst_data;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C4_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 dst_data  = *((__global ushort4 *)((__global char *)dst  + dst_index));
ushort4 data = convert_ushort4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
data = mask_data ? data : dst_data;
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C4_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 dst_data  = *((__global short4 *)((__global char *)dst  + dst_index));
short4 data = convert_short4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
data = mask_data ? data : dst_data;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C4_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 dst_data  = *((__global int4 *)((__global char *)dst  + dst_index));
int4 data = convert_int4_sat(ARITHM_OP(convert_long4_sat(src_data1), convert_long4_sat(src2)));
data = mask_data ? data : dst_data;
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_with_mask_C4_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
float4 src_data1 = *((__global float4 *)((__global char *)src1 + src1_index));
float4 dst_data  = *((__global float4 *)((__global char *)dst  + dst_index));
float4 data = ARITHM_OP(src_data1, src2);
data = mask_data ? data : dst_data;
*((__global float4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_with_mask_C4_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
__global   uchar *mask, int mask_step, int mask_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
uchar mask_data = *(mask + mask_index);
double4 src_data1 = *((__global double4 *)((__global char *)src1 + src1_index));
double4 dst_data  = *((__global double4 *)((__global char *)dst  + dst_index));
double4 data = ARITHM_OP(src_data1, src2);
data = mask_data ? data : dst_data;
*((__global double4 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifdef ARITHM_ADD
#define ARITHM_OP(A,B) ((A)+(B))
#elif defined ARITHM_SUB
#define ARITHM_OP(A,B) ((A)-(B))
#endif
__kernel void arithm_s_add_C1_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
int4 src2_data = (int4)(src2.x, src2.x, src2.x, src2.x);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
uchar4 data = *((__global uchar4 *)(dst + dst_index));
int4 tmp = ARITHM_OP(convert_int4_sat(src1_data), src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C1_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), src2_data);
ushort2 tmp_data = convert_ushort2_sat(tmp);
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C1_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), src2_data);
short2 tmp_data = convert_short2_sat(tmp);
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C1_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = src2.x;
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
int data = convert_int_sat(ARITHM_OP((long)src_data1, (long)src_data2));
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C1_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float src_data1 = *((__global float *)((__global char *)src1 + src1_index));
float src_data2 = src2.x;
float dst_data  = *((__global float *)((__global char *)dst  + dst_index));
float data = ARITHM_OP(src_data1, src_data2);
*((__global float *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_C1_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double src_data1 = *((__global double *)((__global char *)src1 + src1_index));
double src2_data = src2.x;
double dst_data  = *((__global double *)((__global char *)dst  + dst_index));
double data = ARITHM_OP(src_data1, src2_data);
*((__global double *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_add_C2_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
int4 src2_data = (int4)(src2.x, src2.y, src2.x, src2.y);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
int4 tmp = ARITHM_OP(convert_int4_sat(src1_data), src2_data);
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.xy = (dst_index + 0 >= dst_start) ? tmp_data.xy : data.xy;
data.zw = (dst_index + 2 <  dst_end  ) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C2_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), src_data2);
ushort2 data = convert_ushort2_sat(tmp);
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C2_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), src_data2);
short2 data = convert_short2_sat(tmp);
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C2_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = convert_int2_sat(ARITHM_OP(convert_long2_sat(src_data1), convert_long2_sat(src_data2)));
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C2_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
float2 src_data1 = *((__global float2 *)((__global char *)src1 + src1_index));
float2 src_data2 = (float2)(src2.x, src2.y);
float2 dst_data  = *((__global float2 *)((__global char *)dst  + dst_index));
float2 data = ARITHM_OP(src_data1, src_data2);
*((__global float2 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_C2_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
double2 src_data1 = *((__global double2 *)((__global char *)src1 + src1_index));
double2 src_data2 = (double2)(src2.x, src2.y);
double2 dst_data  = *((__global double2 *)((__global char *)dst  + dst_index));
double2 data = ARITHM_OP(src_data1, src_data2);
*((__global double2 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_add_C4_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 data = convert_uchar4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C4_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 data = convert_ushort4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C4_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 data = convert_short4_sat(ARITHM_OP(convert_int4_sat(src_data1), src2));
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C4_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 data = convert_int4_sat(ARITHM_OP(convert_long4_sat(src_data1), convert_long4_sat(src2)));
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_add_C4_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
float4 src_data1 = *((__global float4 *)((__global char *)src1 + src1_index));
float4 data = ARITHM_OP(src_data1, src2);
*((__global float4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_add_C4_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
double4 src_data1 = *((__global double4 *)((__global char *)src1 + src1_index));
double4 data = ARITHM_OP(src_data1, src2);
*((__global double4 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
typedef double F;
#else
typedef float F;
#endif
__kernel void addWeighted_D0 (__global uchar *src1,int src1_step,int src1_offset,
__global uchar *src2, int src2_step,int src2_offset,
F alpha,F beta,F gama,
__global uchar *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
uchar4 src1_data ,src2_data;
src1_data.x= src1_index+0 >= 0 ? src1[src1_index+0] : 0;
src1_data.y= src1_index+1 >= 0 ? src1[src1_index+1] : 0;
src1_data.z= src1_index+2 >= 0 ? src1[src1_index+2] : 0;
src1_data.w= src1_index+3 >= 0 ? src1[src1_index+3] : 0;
src2_data.x= src2_index+0 >= 0 ? src2[src2_index+0] : 0;
src2_data.y= src2_index+1 >= 0 ? src2[src2_index+1] : 0;
src2_data.z= src2_index+2 >= 0 ? src2[src2_index+2] : 0;
src2_data.w= src2_index+3 >= 0 ? src2[src2_index+3] : 0;
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
short4 tmp;
tmp.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp.w = src1_data.w * alpha + src2_data.w * beta + gama;
uchar4 tmp_data = convert_uchar4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void addWeighted_D2 (__global ushort *src1, int src1_step,int src1_offset,
__global ushort *src2, int src2_step,int src2_offset,
F alpha,F beta,F gama,
__global ushort *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset -( dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset -( dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset +( x<< 1) & (int)0xfffffff8);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index_fix));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
ushort4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
int4 tmp;
tmp.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp.w = src1_data.w * alpha + src2_data.w * beta + gama;
ushort4 tmp_data = convert_ushort4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void addWeighted_D3 (__global short *src1, int src1_step,int src1_offset,
__global short *src2,  int src2_step,int src2_offset,
F alpha,F beta,F gama,
__global short *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset -( dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset -( dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset +( x<< 1) - (dst_align << 1 ));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index_fix));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
short4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
short4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
int4 tmp;
tmp.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp.w = src1_data.w * alpha + src2_data.w * beta + gama;
short4 tmp_data = convert_short4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void addWeighted_D4 (__global int *src1, int src1_step,int src1_offset,
__global int *src2, int src2_step,int src2_offset,
F alpha,F beta, F gama,
__global int *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#define bitOfInt  (sizeof(int)== 4 ? 2: 3)
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> bitOfInt) & 3)
int src1_index = mad24(y, src1_step, (x << bitOfInt) + src1_offset - (dst_align << bitOfInt));
int src2_index = mad24(y, src2_step, (x << bitOfInt) + src2_offset - (dst_align << bitOfInt));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << bitOfInt) -(dst_align << bitOfInt));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int4 src1_data = vload4(0, (__global int *)((__global char *)src1 + src1_index_fix));
int4 src2_data = vload4(0, (__global int *)((__global char *)src2 + src2_index_fix));
if(src1_index < 0)
{
int4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
int4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
int4 dst_data = *((__global int4 *)((__global char *)dst + dst_index));
float4 tmp;
tmp.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp.w = src1_data.w * alpha + src2_data.w * beta + gama;
int4 tmp_data = convert_int4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 8 >= dst_start) && (dst_index + 8 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 12 >= dst_start) && (dst_index + 12 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global int4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void addWeighted_D5 (__global float *src1,int src1_step,int src1_offset,
__global float *src2, int src2_step,int src2_offset,
F alpha,F beta, F gama,
__global float *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 2) & 3)
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset - (dst_align << 2));
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset - (dst_align << 2));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 2) -(dst_align << 2));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
float4 src1_data = vload4(0, (__global float  *)((__global char *)src1 + src1_index_fix));
float4 src2_data = vload4(0, (__global float *)((__global char *)src2 + src2_index_fix));
float4 dst_data = *((__global float4 *)((__global char *)dst + dst_index));
if(src1_index < 0)
{
float4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
float4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
float4 tmp_data;
tmp_data.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp_data.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp_data.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp_data.w = src1_data.w * alpha + src2_data.w * beta + gama;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 8 >= dst_start) && (dst_index + 8 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 12 >= dst_start) && (dst_index + 12 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global float4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void addWeighted_D6 (__global double *src1, int src1_step,int src1_offset,
__global double *src2, int src2_step,int src2_offset,
F alpha,F beta, F gama,
__global double *dst,  int dst_step,int dst_offset,
int rows,  int cols,int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 3) & 3)
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset - (dst_align << 3));
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset - (dst_align << 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 3) -(dst_align << 3));
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
double4 src1_data = vload4(0, (__global double  *)((__global char *)src1 + src1_index_fix));
double4 src2_data = vload4(0, (__global double  *)((__global char *)src2 + src2_index_fix));
double4 dst_data = *((__global double4 *)((__global char *)dst + dst_index));
if(src1_index < 0)
{
double4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
double4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
double4 tmp_data;
tmp_data.x = src1_data.x * alpha + src2_data.x * beta + gama;
tmp_data.y = src1_data.y * alpha + src2_data.y * beta + gama;
tmp_data.z = src1_data.z * alpha + src2_data.z * beta + gama;
tmp_data.w = src1_data.w * alpha + src2_data.w * beta + gama;
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 8 >= dst_start) && (dst_index + 8 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 16 >= dst_start) && (dst_index + 16 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 24 >= dst_start) && (dst_index + 24 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global double4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
#ifdef ARITHM_ADD
#define ARITHM_OP(A,B) ((A)+(B))
#elif defined ARITHM_SUB
#define ARITHM_OP(A,B) ((A)-(B))
#endif
__kernel void arithm_add_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
short4 tmp      = ARITHM_OP(convert_short4_sat(src1_data), convert_short4_sat(src2_data));
uchar4 tmp_data = convert_uchar4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_add_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
int4    tmp = ARITHM_OP(convert_int4_sat(src1_data), convert_int4_sat(src2_data));
ushort4 tmp_data = convert_ushort4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_add_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
short4 dst_data = *((__global short4 *)((__global char *)dst + dst_index));
int4   tmp = ARITHM_OP(convert_int4_sat(src1_data), convert_int4_sat(src2_data));
short4 tmp_data = convert_short4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_add_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int data2 = *((__global int *)((__global char *)src2 + src2_index));
long tmp  = ARITHM_OP((long)(data1), (long)(data2));
*((__global int *)((__global char *)dst + dst_index)) = convert_int_sat(tmp);
}
}
__kernel void arithm_add_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = ARITHM_OP(data1, data2);
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_add_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
*((__global double *)((__global char *)dst + dst_index)) = ARITHM_OP(data1, data2);
}
}
#endif
__kernel void arithm_add_with_mask_C1_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
int mask_index_fix = mask_index < 0 ? 0 : mask_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
uchar4 mask_data = vload4(0, mask + mask_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
if(mask_index < 0)
{
uchar4 tmp;
tmp.xyzw = (mask_index == -2) ? mask_data.zwxy:mask_data.yzwx;
mask_data.xyzw = (mask_index == -1) ? mask_data.wxyz:tmp.xyzw;
}
uchar4 data = *((__global uchar4 *)(dst + dst_index));
short4 tmp = ARITHM_OP(convert_short4_sat(src1_data), convert_short4_sat(src2_data));
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((mask_data.z) && (dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((mask_data.w) && (dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C1_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort2 src2_data = vload2(0, (__global ushort *)((__global char *)src2 + src2_index));
uchar2  mask_data = vload2(0, mask + mask_index);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), convert_int2_sat(src2_data));
ushort2 tmp_data = convert_ushort2_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C1_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
short2 src2_data = vload2(0, (__global short *)((__global char *)src2 + src2_index));
uchar2  mask_data = vload2(0, mask + mask_index);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src1_data), convert_int2_sat(src2_data));
short2 tmp_data = convert_short2_sat(tmp);
data.x = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.x : data.x;
data.y = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C1_D4 (__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int   *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = *((__global int *)((__global char *)src2 + src2_index));
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
int data = convert_int_sat(ARITHM_OP((long)src_data1, (long)src_data2));
data = mask_data ? data : dst_data;
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C1_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
float src_data1 = *((__global float *)((__global char *)src1 + src1_index));
float src_data2 = *((__global float *)((__global char *)src2 + src2_index));
float dst_data  = *((__global float *)((__global char *)dst  + dst_index));
float data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global float *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_add_with_mask_C1_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
double src_data1 = *((__global double *)((__global char *)src1 + src1_index));
double src_data2 = *((__global double *)((__global char *)src2 + src2_index));
double dst_data  = *((__global double *)((__global char *)dst  + dst_index));
double data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global double *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_add_with_mask_C2_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset / 2) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int mask_index = mad24(y, mask_step, x + mask_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
uchar4 src2_data = vload4(0, src2 + src2_index);
uchar2 mask_data = vload2(0, mask + mask_index);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
short4   tmp = ARITHM_OP(convert_short4_sat(src1_data), convert_short4_sat(src2_data));
uchar4 tmp_data = convert_uchar4_sat(tmp);
data.xy = ((mask_data.x) && (dst_index + 0 >= dst_start)) ? tmp_data.xy : data.xy;
data.zw = ((mask_data.y) && (dst_index + 2 <  dst_end  )) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C2_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
ushort2 src_data2 = *((__global ushort2 *)((__global char *)src2 + src2_index));
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), convert_int2_sat(src_data2));
ushort2 data = convert_ushort2_sat(tmp);
data = mask_data ? data : dst_data;
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C2_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
short2 src_data2 = *((__global short2 *)((__global char *)src2 + src2_index));
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
int2    tmp = ARITHM_OP(convert_int2_sat(src_data1), convert_int2_sat(src_data2));
short2 data = convert_short2_sat(tmp);
data = mask_data ? data : dst_data;
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C2_D4 (__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int    *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = *((__global int2 *)((__global char *)src2 + src2_index));
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = convert_int2_sat(ARITHM_OP(convert_long2_sat(src_data1), convert_long2_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C2_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
float2 src_data1 = *((__global float2 *)((__global char *)src1 + src1_index));
float2 src_data2 = *((__global float2 *)((__global char *)src2 + src2_index));
float2 dst_data  = *((__global float2 *)((__global char *)dst  + dst_index));
float2 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global float2 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_add_with_mask_C2_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
double2 src_data1 = *((__global double2 *)((__global char *)src1 + src1_index));
double2 src_data2 = *((__global double2 *)((__global char *)src2 + src2_index));
double2 dst_data  = *((__global double2 *)((__global char *)dst  + dst_index));
double2 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global double2 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_add_with_mask_C4_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar mask_data = *(mask + mask_index);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 src_data2 = *((__global uchar4 *)(src2 + src2_index));
uchar4 dst_data  = *((__global uchar4 *)(dst  + dst_index));
uchar4 data = convert_uchar4_sat(ARITHM_OP(convert_short4_sat(src_data1), convert_short4_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C4_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 src_data2 = *((__global ushort4 *)((__global char *)src2 + src2_index));
ushort4 dst_data  = *((__global ushort4 *)((__global char *)dst  + dst_index));
ushort4 data = convert_ushort4_sat(ARITHM_OP(convert_int4_sat(src_data1), convert_int4_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C4_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
uchar mask_data = *(mask + mask_index);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 src_data2 = *((__global short4 *)((__global char *)src2 + src2_index));
short4 dst_data  = *((__global short4 *)((__global char *)dst  + dst_index));
short4 data = convert_short4_sat(ARITHM_OP(convert_int4_sat(src_data1), convert_int4_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C4_D4 (__global int   *src1, int src1_step, int src1_offset,
__global int   *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global int   *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 src_data2 = *((__global int4 *)((__global char *)src2 + src2_index));
int4 dst_data  = *((__global int4 *)((__global char *)dst  + dst_index));
int4 data = convert_int4_sat(ARITHM_OP(convert_long4_sat(src_data1), convert_long4_sat(src_data2)));
data = mask_data ? data : dst_data;
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_add_with_mask_C4_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global uchar *mask, int mask_step, int mask_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 4) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
uchar mask_data = *(mask + mask_index);
float4 src_data1 = *((__global float4 *)((__global char *)src1 + src1_index));
float4 src_data2 = *((__global float4 *)((__global char *)src2 + src2_index));
float4 dst_data  = *((__global float4 *)((__global char *)dst  + dst_index));
float4 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global float4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_add_with_mask_C4_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global uchar  *mask, int mask_step, int mask_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 5) + src2_offset);
int mask_index = mad24(y, mask_step,  x       + mask_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
uchar mask_data = *(mask + mask_index);
double4 src_data1 = *((__global double4 *)((__global char *)src1 + src1_index));
double4 src_data2 = *((__global double4 *)((__global char *)src2 + src2_index));
double4 dst_data  = *((__global double4 *)((__global char *)dst  + dst_index));
double4 data = ARITHM_OP(src_data1, src_data2);
data = mask_data ? data : dst_data;
*((__global double4 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#ifdef cl_khr_fp64
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#elif defined (cl_amd_fp64)
#pragma OPENCL EXTENSION cl_amd_fp64:enable
#endif
#endif
__kernel void arithm_absdiff_D0 (__global uchar *src1, int src1_step, int src1_offset,
__global uchar *src2, int src2_step, int src2_offset,
__global uchar *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int src2_index = mad24(y, src2_step, x + src2_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
int src2_index_fix = src2_index < 0 ? 0 : src2_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
uchar4 src2_data = vload4(0, src2 + src2_index_fix);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
if(src2_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src2_index == -2) ? src2_data.zwxy:src2_data.yzwx;
src2_data.xyzw = (src2_index == -1) ? src2_data.wxyz:tmp.xyzw;
}
uchar4 dst_data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = abs_diff(src1_data, src2_data);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global uchar4 *)(dst + dst_index)) = dst_data;
}
}
__kernel void arithm_absdiff_D2 (__global ushort *src1, int src1_step, int src1_offset,
__global ushort *src2, int src2_step, int src2_offset,
__global ushort *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
ushort4 src1_data = vload4(0, (__global ushort *)((__global char *)src1 + src1_index));
ushort4 src2_data = vload4(0, (__global ushort *)((__global char *)src2 + src2_index));
ushort4 dst_data = *((__global ushort4 *)((__global char *)dst + dst_index));
ushort4 tmp_data = abs_diff(src1_data, src2_data);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global ushort4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_absdiff_D3 (__global short *src1, int src1_step, int src1_offset,
__global short *src2, int src2_step, int src2_offset,
__global short *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 3)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int src2_index = mad24(y, src2_step, (x << 1) + src2_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffff8);
short4 src1_data = vload4(0, (__global short *)((__global char *)src1 + src1_index));
short4 src2_data = vload4(0, (__global short *)((__global char *)src2 + src2_index));
short4  dst_data = *((__global short4 *)((__global char *)dst + dst_index));
ushort4 tmp = abs_diff(src1_data, src2_data);
short4  tmp_data = convert_short4_sat(tmp);
dst_data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : dst_data.x;
dst_data.y = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.y : dst_data.y;
dst_data.z = ((dst_index + 4 >= dst_start) && (dst_index + 4 < dst_end)) ? tmp_data.z : dst_data.z;
dst_data.w = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end)) ? tmp_data.w : dst_data.w;
*((__global short4 *)((__global char *)dst + dst_index)) = dst_data;
}
}
__kernel void arithm_absdiff_D4 (__global int *src1, int src1_step, int src1_offset,
__global int *src2, int src2_step, int src2_offset,
__global int *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int data1 = *((__global int *)((__global char *)src1 + src1_index));
int data2 = *((__global int *)((__global char *)src2 + src2_index));
uint tmp = abs_diff(data1, data2);
int  tmp_data = convert_int_sat(tmp);
*((__global int *)((__global char *)dst + dst_index)) = tmp_data;
}
}
__kernel void arithm_absdiff_D5 (__global float *src1, int src1_step, int src1_offset,
__global float *src2, int src2_step, int src2_offset,
__global float *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 2) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float data1 = *((__global float *)((__global char *)src1 + src1_index));
float data2 = *((__global float *)((__global char *)src2 + src2_index));
float tmp = fabs(data1 - data2);
*((__global float *)((__global char *)dst + dst_index)) = tmp;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_absdiff_D6 (__global double *src1, int src1_step, int src1_offset,
__global double *src2, int src2_step, int src2_offset,
__global double *dst,  int dst_step,  int dst_offset,
int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int src2_index = mad24(y, src2_step, (x << 3) + src2_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double data1 = *((__global double *)((__global char *)src1 + src1_index));
double data2 = *((__global double *)((__global char *)src2 + src2_index));
double tmp = fabs(data1-data2);
*((__global double *)((__global char *)dst + dst_index)) = tmp;
}
}
#endif
__kernel void arithm_s_absdiff_C1_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (dst_offset & 3)
int src1_index = mad24(y, src1_step, x + src1_offset - dst_align);
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + x & (int)0xfffffffc);
int src1_index_fix = src1_index < 0 ? 0 : src1_index;
uchar4 src1_data = vload4(0, src1 + src1_index_fix);
int4 src2_data = (int4)(src2.x, src2.x, src2.x, src2.x);
if(src1_index < 0)
{
uchar4 tmp;
tmp.xyzw = (src1_index == -2) ? src1_data.zwxy:src1_data.yzwx;
src1_data.xyzw = (src1_index == -1) ? src1_data.wxyz:tmp.xyzw;
}
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4_sat(abs_diff(convert_int4_sat(src1_data), src2_data));
data.x = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end)) ? tmp_data.x : data.x;
data.y = ((dst_index + 1 >= dst_start) && (dst_index + 1 < dst_end)) ? tmp_data.y : data.y;
data.z = ((dst_index + 2 >= dst_start) && (dst_index + 2 < dst_end)) ? tmp_data.z : data.z;
data.w = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end)) ? tmp_data.w : data.w;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C1_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
ushort2 src1_data = vload2(0, (__global ushort *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
ushort2 data = *((__global ushort2 *)((__global uchar *)dst + dst_index));
ushort2 tmp_data = convert_ushort2_sat(abs_diff(convert_int2_sat(src1_data), src2_data));
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global ushort2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C1_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
short2 src1_data = vload2(0, (__global short *)((__global char *)src1 + src1_index));
int2 src2_data = (int2)(src2.x, src2.x);
short2 data = *((__global short2 *)((__global uchar *)dst + dst_index));
ushort2 tmp = convert_ushort2_sat(abs_diff(convert_int2_sat(src1_data), src2_data));
short2 tmp_data = convert_short2_sat(tmp);
data.x = (dst_index + 0 >= dst_start) ? tmp_data.x : data.x;
data.y = (dst_index + 2 <  dst_end  ) ? tmp_data.y : data.y;
*((__global short2 *)((__global uchar *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C1_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
int src_data1 = *((__global int *)((__global char *)src1 + src1_index));
int src_data2 = src2.x;
int dst_data  = *((__global int *)((__global char *)dst  + dst_index));
uint tmp_data = abs_diff(src_data1, src_data2);
int  data = convert_int_sat(tmp_data);
*((__global int *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C1_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
float src_data1 = *((__global float *)((__global char *)src1 + src1_index));
float src_data2 = src2.x;
float dst_data  = *((__global float *)((__global char *)dst  + dst_index));
float data = fabs(src_data1 - src_data2);
*((__global float *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_absdiff_C1_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
double src_data1 = *((__global double *)((__global char *)src1 + src1_index));
double src2_data = src2.x;
double dst_data  = *((__global double *)((__global char *)dst  + dst_index));
double data = fabs(src_data1 - src2_data);
*((__global double *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_absdiff_C2_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align ((dst_offset >> 1) & 1)
int src1_index = mad24(y, src1_step, (x << 1) + src1_offset - (dst_align << 1));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x << 1) & (int)0xfffffffc);
uchar4 src1_data = vload4(0, src1 + src1_index);
int4 src2_data = (int4)(src2.x, src2.y, src2.x, src2.y);
uchar4 data = *((__global uchar4 *)(dst + dst_index));
uchar4 tmp_data = convert_uchar4_sat(abs_diff(convert_int4_sat(src1_data), src2_data));
data.xy = (dst_index + 0 >= dst_start) ? tmp_data.xy : data.xy;
data.zw = (dst_index + 2 <  dst_end  ) ? tmp_data.zw : data.zw;
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C2_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
ushort2 src_data1 = *((__global ushort2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
ushort2 dst_data  = *((__global ushort2 *)((__global char *)dst  + dst_index));
ushort2 data = convert_ushort2_sat( abs_diff(convert_int2_sat(src_data1), src_data2));
*((__global ushort2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C2_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
short2 src_data1 = *((__global short2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
short2 dst_data  = *((__global short2 *)((__global char *)dst  + dst_index));
ushort2 tmp = convert_ushort2_sat(abs_diff(convert_int2_sat(src_data1), src_data2));
short2 data = convert_short2_sat(tmp);
*((__global short2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C2_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
int2 src_data1 = *((__global int2 *)((__global char *)src1 + src1_index));
int2 src_data2 = (int2)(src2.x, src2.y);
int2 dst_data  = *((__global int2 *)((__global char *)dst  + dst_index));
int2 data = convert_int2_sat(abs_diff(src_data1, src_data2));
*((__global int2 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C2_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
float2 src_data1 = *((__global float2 *)((__global char *)src1 + src1_index));
float2 src_data2 = (float2)(src2.x, src2.y);
float2 dst_data  = *((__global float2 *)((__global char *)dst  + dst_index));
float2 data = fabs(src_data1 - src_data2);
*((__global float2 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_absdiff_C2_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
double2 src_data1 = *((__global double2 *)((__global char *)src1 + src1_index));
double2 src_data2 = (double2)(src2.x, src2.y);
double2 dst_data  = *((__global double2 *)((__global char *)dst  + dst_index));
double2 data = fabs(src_data1 - src_data2);
*((__global double2 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
__kernel void arithm_s_absdiff_C3_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 2;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (((dst_offset % dst_step) / 3 ) & 3)
int src1_index = mad24(y, src1_step, (x * 3) + src1_offset - (dst_align * 3));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 3) - (dst_align * 3));
uchar4 src1_data_0 = vload4(0, src1 + src1_index + 0);
uchar4 src1_data_1 = vload4(0, src1 + src1_index + 4);
uchar4 src1_data_2 = vload4(0, src1 + src1_index + 8);
int4 src2_data_0 = (int4)(src2.x, src2.y, src2.z, src2.x);
int4 src2_data_1 = (int4)(src2.y, src2.z, src2.x, src2.y);
int4 src2_data_2 = (int4)(src2.z, src2.x, src2.y, src2.z);
uchar4 data_0 = *((__global uchar4 *)(dst + dst_index + 0));
uchar4 data_1 = *((__global uchar4 *)(dst + dst_index + 4));
uchar4 data_2 = *((__global uchar4 *)(dst + dst_index + 8));
uchar4 tmp_data_0 = convert_uchar4_sat(abs_diff(convert_int4_sat(src1_data_0), src2_data_0));
uchar4 tmp_data_1 = convert_uchar4_sat(abs_diff(convert_int4_sat(src1_data_1), src2_data_1));
uchar4 tmp_data_2 = convert_uchar4_sat(abs_diff(convert_int4_sat(src1_data_2), src2_data_2));
data_0.xyz = ((dst_index + 0 >= dst_start)) ? tmp_data_0.xyz : data_0.xyz;
data_0.w   = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end))
? tmp_data_0.w : data_0.w;
data_1.xy  = ((dst_index + 3 >= dst_start) && (dst_index + 3 < dst_end))
? tmp_data_1.xy : data_1.xy;
data_1.zw  = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_1.zw : data_1.zw;
data_2.x   = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_2.x : data_2.x;
data_2.yzw = ((dst_index + 9 >= dst_start) && (dst_index + 9 < dst_end))
? tmp_data_2.yzw : data_2.yzw;
*((__global uchar4 *)(dst + dst_index + 0)) = data_0;
*((__global uchar4 *)(dst + dst_index + 4)) = data_1;
*((__global uchar4 *)(dst + dst_index + 8)) = data_2;
}
}
__kernel void arithm_s_absdiff_C3_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (((dst_offset % dst_step) / 6 ) & 1)
int src1_index = mad24(y, src1_step, (x * 6) + src1_offset - (dst_align * 6));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 6) - (dst_align * 6));
ushort2 src1_data_0 = vload2(0, (__global ushort *)((__global char *)src1 + src1_index + 0));
ushort2 src1_data_1 = vload2(0, (__global ushort *)((__global char *)src1 + src1_index + 4));
ushort2 src1_data_2 = vload2(0, (__global ushort *)((__global char *)src1 + src1_index + 8));
int2 src2_data_0 = (int2)(src2.x, src2.y);
int2 src2_data_1 = (int2)(src2.z, src2.x);
int2 src2_data_2 = (int2)(src2.y, src2.z);
ushort2 data_0 = *((__global ushort2 *)((__global char *)dst + dst_index + 0));
ushort2 data_1 = *((__global ushort2 *)((__global char *)dst + dst_index + 4));
ushort2 data_2 = *((__global ushort2 *)((__global char *)dst + dst_index + 8));
ushort2 tmp_data_0 = convert_ushort2_sat(abs_diff(convert_int2_sat(src1_data_0), src2_data_0));
ushort2 tmp_data_1 = convert_ushort2_sat(abs_diff(convert_int2_sat(src1_data_1), src2_data_1));
ushort2 tmp_data_2 = convert_ushort2_sat(abs_diff(convert_int2_sat(src1_data_2), src2_data_2));
data_0.xy = ((dst_index + 0 >= dst_start)) ? tmp_data_0.xy : data_0.xy;
data_1.x  = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end))
? tmp_data_1.x : data_1.x;
data_1.y  = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_1.y : data_1.y;
data_2.xy = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_2.xy : data_2.xy;
*((__global ushort2 *)((__global char *)dst + dst_index + 0))= data_0;
*((__global ushort2 *)((__global char *)dst + dst_index + 4))= data_1;
*((__global ushort2 *)((__global char *)dst + dst_index + 8))= data_2;
}
}
__kernel void arithm_s_absdiff_C3_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
x = x << 1;
#ifdef dst_align
#undef dst_align
#endif
#define dst_align (((dst_offset % dst_step) / 6 ) & 1)
int src1_index = mad24(y, src1_step, (x * 6) + src1_offset - (dst_align * 6));
int dst_start  = mad24(y, dst_step, dst_offset);
int dst_end    = mad24(y, dst_step, dst_offset + dst_step1);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 6) - (dst_align * 6));
short2 src1_data_0 = vload2(0, (__global short *)((__global char *)src1 + src1_index + 0));
short2 src1_data_1 = vload2(0, (__global short *)((__global char *)src1 + src1_index + 4));
short2 src1_data_2 = vload2(0, (__global short *)((__global char *)src1 + src1_index + 8));
int2 src2_data_0 = (int2)(src2.x, src2.y);
int2 src2_data_1 = (int2)(src2.z, src2.x);
int2 src2_data_2 = (int2)(src2.y, src2.z);
short2 data_0 = *((__global short2 *)((__global char *)dst + dst_index + 0));
short2 data_1 = *((__global short2 *)((__global char *)dst + dst_index + 4));
short2 data_2 = *((__global short2 *)((__global char *)dst + dst_index + 8));
short2 tmp_data_0 = convert_short2_sat(abs_diff(convert_int2_sat(src1_data_0), src2_data_0));
short2 tmp_data_1 = convert_short2_sat(abs_diff(convert_int2_sat(src1_data_1), src2_data_1));
short2 tmp_data_2 = convert_short2_sat(abs_diff(convert_int2_sat(src1_data_2), src2_data_2));
data_0.xy = ((dst_index + 0 >= dst_start)) ? tmp_data_0.xy : data_0.xy;
data_1.x  = ((dst_index + 0 >= dst_start) && (dst_index + 0 < dst_end))
? tmp_data_1.x : data_1.x;
data_1.y  = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_1.y : data_1.y;
data_2.xy = ((dst_index + 6 >= dst_start) && (dst_index + 6 < dst_end))
? tmp_data_2.xy : data_2.xy;
*((__global short2 *)((__global char *)dst + dst_index + 0))= data_0;
*((__global short2 *)((__global char *)dst + dst_index + 4))= data_1;
*((__global short2 *)((__global char *)dst + dst_index + 8))= data_2;
}
}
__kernel void arithm_s_absdiff_C3_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x * 12) + src1_offset);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 12));
int src1_data_0 = *((__global int *)((__global char *)src1 + src1_index + 0));
int src1_data_1 = *((__global int *)((__global char *)src1 + src1_index + 4));
int src1_data_2 = *((__global int *)((__global char *)src1 + src1_index + 8));
int src2_data_0 = src2.x;
int src2_data_1 = src2.y;
int src2_data_2 = src2.z;
int data_0 = *((__global int *)((__global char *)dst + dst_index + 0));
int data_1 = *((__global int *)((__global char *)dst + dst_index + 4));
int data_2 = *((__global int *)((__global char *)dst + dst_index + 8));
int tmp_data_0 = convert_int_sat(abs_diff(src1_data_0, src2_data_0));
int tmp_data_1 = convert_int_sat(abs_diff(src1_data_1, src2_data_1));
int tmp_data_2 = convert_int_sat(abs_diff(src1_data_2, src2_data_2));
*((__global int *)((__global char *)dst + dst_index + 0))= tmp_data_0;
*((__global int *)((__global char *)dst + dst_index + 4))= tmp_data_1;
*((__global int *)((__global char *)dst + dst_index + 8))= tmp_data_2;
}
}
__kernel void arithm_s_absdiff_C3_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x * 12) + src1_offset);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 12));
float src1_data_0 = *((__global float *)((__global char *)src1 + src1_index + 0));
float src1_data_1 = *((__global float *)((__global char *)src1 + src1_index + 4));
float src1_data_2 = *((__global float *)((__global char *)src1 + src1_index + 8));
float src2_data_0 = src2.x;
float src2_data_1 = src2.y;
float src2_data_2 = src2.z;
float data_0 = *((__global float *)((__global char *)dst + dst_index + 0));
float data_1 = *((__global float *)((__global char *)dst + dst_index + 4));
float data_2 = *((__global float *)((__global char *)dst + dst_index + 8));
float tmp_data_0 = fabs(src1_data_0 - src2_data_0);
float tmp_data_1 = fabs(src1_data_1 - src2_data_1);
float tmp_data_2 = fabs(src1_data_2 - src2_data_2);
*((__global float *)((__global char *)dst + dst_index + 0))= tmp_data_0;
*((__global float *)((__global char *)dst + dst_index + 4))= tmp_data_1;
*((__global float *)((__global char *)dst + dst_index + 8))= tmp_data_2;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_absdiff_C3_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x * 24) + src1_offset);
int dst_index  = mad24(y, dst_step, dst_offset + (x * 24));
double src1_data_0 = *((__global double *)((__global char *)src1 + src1_index + 0 ));
double src1_data_1 = *((__global double *)((__global char *)src1 + src1_index + 8 ));
double src1_data_2 = *((__global double *)((__global char *)src1 + src1_index + 16));
double src2_data_0 = src2.x;
double src2_data_1 = src2.y;
double src2_data_2 = src2.z;
double data_0 = *((__global double *)((__global char *)dst + dst_index + 0 ));
double data_1 = *((__global double *)((__global char *)dst + dst_index + 8 ));
double data_2 = *((__global double *)((__global char *)dst + dst_index + 16));
double tmp_data_0 = fabs(src1_data_0 - src2_data_0);
double tmp_data_1 = fabs(src1_data_1 - src2_data_1);
double tmp_data_2 = fabs(src1_data_2 - src2_data_2);
*((__global double *)((__global char *)dst + dst_index + 0 ))= tmp_data_0;
*((__global double *)((__global char *)dst + dst_index + 8 ))= tmp_data_1;
*((__global double *)((__global char *)dst + dst_index + 16))= tmp_data_2;
}
}
#endif
__kernel void arithm_s_absdiff_C4_D0 (__global   uchar *src1, int src1_step, int src1_offset,
__global   uchar *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 2) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 2) + dst_offset);
uchar4 src_data1 = *((__global uchar4 *)(src1 + src1_index));
uchar4 data = convert_uchar4_sat(abs_diff(convert_int4_sat(src_data1), src2));
*((__global uchar4 *)(dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C4_D2 (__global   ushort *src1, int src1_step, int src1_offset,
__global   ushort *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
ushort4 src_data1 = *((__global ushort4 *)((__global char *)src1 + src1_index));
ushort4 data = convert_ushort4_sat(abs_diff(convert_int4_sat(src_data1), src2));
*((__global ushort4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C4_D3 (__global   short *src1, int src1_step, int src1_offset,
__global   short *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 3) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 3) + dst_offset);
short4 src_data1 = *((__global short4 *)((__global char *)src1 + src1_index));
short4 data = convert_short4_sat(abs_diff(convert_int4_sat(src_data1), src2));
*((__global short4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C4_D4 (__global   int *src1, int src1_step, int src1_offset,
__global   int *dst,  int dst_step,  int dst_offset,
int4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
int4 src_data1 = *((__global int4 *)((__global char *)src1 + src1_index));
int4 data = convert_int4_sat(abs_diff(src_data1, src2));
*((__global int4 *)((__global char *)dst + dst_index)) = data;
}
}
__kernel void arithm_s_absdiff_C4_D5 (__global   float *src1, int src1_step, int src1_offset,
__global   float *dst,  int dst_step,  int dst_offset,
float4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 4) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 4) + dst_offset);
float4 src_data1 = *((__global float4 *)((__global char *)src1 + src1_index));
float4 data = fabs(src_data1 - src2);
*((__global float4 *)((__global char *)dst + dst_index)) = data;
}
}
#if defined (DOUBLE_SUPPORT)
__kernel void arithm_s_absdiff_C4_D6 (__global   double *src1, int src1_step, int src1_offset,
__global   double *dst,  int dst_step,  int dst_offset,
double4 src2, int rows, int cols, int dst_step1)
{
int x = get_global_id(0);
int y = get_global_id(1);
if (x < cols && y < rows)
{
int src1_index = mad24(y, src1_step, (x << 5) + src1_offset);
int dst_index  = mad24(y, dst_step,  (x << 5) + dst_offset);
double4 src_data1 = *((__global double4 *)((__global char *)src1 + src1_index));
double4 data = fabs(src_data1 - src2);
*((__global double4 *)((__global char *)dst + dst_index)) = data;
}
}
#endif
#if defined (DOUBLE_SUPPORT)
#pragma OPENCL EXTENSION cl_khr_fp64:enable
#endif
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics:enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable
#define CV_PI   3.1415926535897932384626433832795
char round_char(double v){
char v1=(char)v;
return convert_char_sat(v+(v>=0 ? 0.5 : -0.5));
}
unsigned char round_uchar(double v){
unsigned char v1=(unsigned char)v;
return convert_uchar_sat(v+(v>=0 ? 0.5 : -0.5));
}
short round_short(double v){
short v1=(short)v;
return convert_short_sat(v+(v>=0 ? 0.5 : -0.5));
}
unsigned short round_ushort(double v){
unsigned short v1=(unsigned short)v;
return convert_ushort_sat(v+(v>=0 ? 0.5 : -0.5));
}
int round_int(double v){
int v1=(int)v;
return convert_int_sat(v+(v>=0 ? 0.5 : -0.5));
}
char round2_char(double v){
char v1=(char)v;
if((v-v1)==0.5&&v1%2==0)
return v1;
else
return convert_char_sat(v+(v>=0 ? 0.5 : -0.5));
}
unsigned char round2_uchar(double v){
unsigned char v1=(unsigned char)v;
if((v-v1)==0.5&&v1%2==0)
return v1;
else
return convert_uchar_sat(v+(v>=0 ? 0.5 : -0.5));
}
short round2_short(double v){
short v1=(short)v;
if((v-v1)==0.5&&v1%2==0)
return v1;
else
return convert_short_sat(v+(v>=0 ? 0.5 : -0.5));
}
unsigned short round2_ushort(double v){
unsigned short v1=(unsigned short)v;
if((v-v1)==0.5&&v1%2==0)
return v1;
else
return convert_ushort_sat(v+(v>=0 ? 0.5 : -0.5));
}
int round2_int(double v){
int v1=(int)v;
if((v-v1)==0.5&&v1%2==0)
return v1;
else
return convert_int_sat(v+(v>=0 ? 0.5 : -0.5));
}
__kernel void arithm_op_exp_5 (int rows,int cols,int srcStep,__global float *src1Mat,
__global float * dstMat,int channels)
{
size_t x = get_global_id(0);
size_t y = get_global_id(1);
if (x < cols && y < rows)
{
size_t idx = y * ( srcStep >> 2 ) + x;
dstMat[idx] = (float)exp((float)src1Mat[idx]);
}
}
__kernel void arithm_op_exp_6 (int rows,int cols,int srcStep,__global double *src1Mat,
__global double * dstMat,int channels)
{
size_t x = get_global_id(0);
size_t y = get_global_id(1);
if (x < cols && y < rows)
{
size_t idx = y * ( srcStep >> 3 ) + x;
dstMat[idx] = exp(src1Mat[idx]);
}
}
__kernel void arithm_op_log_5 (int rows,int cols,int srcStep,__global float *src1Mat,
__global float * dstMat,int channels)
{
size_t x = get_global_id(0);
size_t y = get_global_id(1);
if (x < cols && y < rows)
{
size_t idx = y * ( srcStep >> 2 ) + x;
dstMat[idx] =(float) log((float)src1Mat[idx]);
}
}
__kernel void arithm_op_log_6 (int rows,int cols,int srcStep,__global double *src1Mat,
__global double * dstMat,int channels)
{
size_t x = get_global_id(0);
size_t y = get_global_id(1);
if (x < cols && y < rows)
{
size_t idx = y * ( srcStep >> 3 ) + x;
dstMat[idx] = log(src1Mat[idx]);
}
}
"??>+?>+ "??>+?>+ `K'?X?? -??-?RSDS\7??C?濴???+C:\Users\vp\work\pkg\ocv.build\vs2010_64\bin\Release\opencv_ocl246.pdb?,H' '`'x'?'?,????@H'(?,????@?'?'?'??, '?'0 '@ '??,????@ '??,? 'h '? '? '??,????@? '??,!'? ' !'0!'??,????@!' ?,?!'X!'?!'?!' ?,????@?!'P?,?!'?!'"'("'? 'P?,????@?!'??,x"'P"'?"'?"'0!'??,????@x"'??,?"'?"'#'(#'?!'??,????@?"'??,x#'P#'?#'?#'?!'??,????@x#'0?,?#'?#'$'($'?!'0?,????@?#'h?,x$'P$'?$'?$'@ 'h?,????@x$'??,?$'?$'%'0%'?$'@ '??,????@?$'??,?%'X%'?%'?%'@ '??,????@?%'??,&'?%'&'0&'X&'??,????@&'??,????@?&'?&'X&'??,?&'?&'?&'''0&'X&'??,????@?&'`?,X''0''p''?''?''`?,????@X''??,????@?''?''?''?,(('('@('X('?''?,????@(('?`?,?('?('
?(')'@)'?)'8*'?+'?+'?+'8*'?+'?+'`?,	????@?('??,????@h)'	?)'@)'?)'8*'?+'?+'?+'8*'?+'?+'?,????@?)'*'?)'8*'?+'?+'X?,P`*'x*'?*'?*'+'X?,????@`*'??,????@?*'+'?*'+'??,????@@+'X+'h+'??,????@@+'??,@?*'??,@@+'??,????@,' ,'H,'8*'?+'?+'??,????@,'?@?,?,'p,'
?,'-'@)'?)'8*'?+'?+'?+'8*'?+'?+'@?,	????@?,'??,X-'0-'p-'?-'??,????@X-'??,?-'?-'?-'.'?-'??,????@?-'??,P.'(.'h.'?.'?'??,????@P.'?,?.'?.'?.'?.'?,????@?.'??,?&' /'0?,p/'H/'?/'?/'0?,????@p/'`?,?/'?/'0'0'`?,????@?/'??,`0'80'x0'?0'??,????@`0'??,?0'?0'?0'1'??,????@?0'??,P1'(1'h1'x1'??,????@P1'?,?1'?1'?1'?1'?,????@?1'0?,@2'2'X2'h2'0?,????@@2'p?,?2'?2'?2'?2'p?,????@?2'??,03'3'H3'`3'?2'??,????@03'??,?3'?3'?3'?3'?2'??,????@?3'?,04'4'H4'X4'?,????@04'(?,?4'?4'?4'?4'5'(?,????@?4'??,P?&'(?,?4'(5'X?,x5'P5'?5'?5'5'X?,????@x5'X?,x5'?5'??, 6'?5'86'h6'?4'5'?6'5'??,????@ 6'X?,????@x5'??, 6'?6' ??, 6'?6'??,07'7'H7'?7'h6'?4'5'?6'5'??,????@07'??,07'?7'x??,07'?7'??, 8'?7'88'p8'h6'?4'5'?6'5'??,????@ 8'??, 8'?8'P??, 8'?8'??,9'?8'(9'H9'?4'5'??,????@9'X??,9'p9'?,?9'?9'?9'?9'?4'5'?,????@?9'0?,?9' :'8?,p:'H:'?:'?:'?4'5'8?,????@p:' 8?,p:'?:'h?, ;'?:'8;'X;'?4'5'h?,????@ ;'@h?, ;'?;'??,?;'?;'?;'<'?4'5'??,????@?;'h??,?;'0<'??,?<'X<'?<'?<'?4'5'??,????@?<'@??,?<'?<'??,0='='H='h='?4'5'??,????@0='??,0='?=' ?,?='?='?=' >'h='?4'5' ?,????@?='( ?,?='H>'H?,?>'p>'?>'?>'h='?4'5'H?,????@?>'0H?,?>'?'p?,P?'(?'h?'??'h='?4'5'p?,????@P?'0p?,P?'??'??,@'??' @'@@'?5'5'??,????@@'(??,@'h@'??,?@'?@'?@'?@'A'X&'??,????@?@'??,????@@A'XA'A'X&'(?,?A'pA'?A'?A'?A'(?,????@?A'`?,????@B'0B'?A'??,hB'@B'?B'?B'??,????@hB'??,?B'?B'?B'C'??,????@?B'??,XC'0C'pC'?C'X&'??,????@XC'?,?C'?C'?C'D'?4'5'?,????@?C'8?,?C'8D'H?,?D'`D'?D'?D'?4'5'H?,????@?D'(H?,?D'?D'??,8E'E'PE'pE'?5'5'??,????@8E'(??,8E'?E'??,?E'?E'F'F'??,????@?E'??,`F'8F'xF'?F'??,????@`F' -?F'?F'?F'G' -????@?F'H-PG'(G'hG'xG'H-????@PG'p-?G'?G'?G'?G'?A'p-????@?G'`?,B' H'??,@A'HH'?-?H'pH'?H'?H'A'X&'?-????@?H'?- I'?H'8I'HI'?-????@ I'-?I'pI'?I'?I'HI'-????@?I'0-J'?I'0J'@J'0-????@J'`-?J'hJ'?J'?J'`-????@?J'?-K'?J' K'8K'?J'?-????@K'h-?K'`K'?K'?K'h-????@?K'R06????????????7A????	b6??????? ?P????4	
Rp6??????0??????t2020B
?6?H?????@??????????20

4
2p2020

4
2pd42pB2020B
?6???????P? ????^j????
R06???????`????????????

4
2p20

4
2pB
?6???????p?` ????? ? ????d
4	
Rp6???????????!?????!?!?!????
R06?8??????????!?????!"????2P
R06?`???????"????&"4	
Rp6?????????#????S#?#????
R06?????????#?????#?#????
?6????????P$?????$?$????2P4	
Rp6??????@? ?0?@%????l%y%?%2P4	
Rp6?(???????p????%?????%?%?%2P4	
Rp6?P???????????&????,&9&C&2P4	
Rp6?x?????0?? ?`&?????&?&?&20

4
2p

2P6???&
&t"d4?
??	?6????P'p?8????`????????(????)*)*)*?*????p?}???! +;+`Q'!d +;+`Q'

4
2p

4
2pBP06???

2P6???%%4
R?p`6????Q'?Q'?H??8???????? ,?????,?,?????????????/h
4p?????????@?`-????. .????2P	"6??????P??.?????.?.????20!p/?/,S'!?/?/S'!??/?/S'!Tp/?/,S'--d
4	
2p2P	"6?@?????p?@0????V0i0????

2P6?h?4	R?p`6?h??S'??8?????????0?????0?0????????dT42pd42p?202p2p20R0

4
2p=
,h?(4????
??p`P????????????????????????? ?0?@?P?
`??4?????5?5?566+6Z6?6????t7(8_8?8?8?9	?9.:?:
?;?;
8<n?x?????????;*hB??	??p`0P???????p???????????????????????p@????*AZA?A?A?A?AB5B?????B?C?C?CD
,D?E	PEVFgF
HHHuH????20!?H?HW'!4?H?HW'

RP6???t
d4
r?6???\W' ?H????????@I?????I?I???? ?-?4#t6452P?????????@?P?`?p? J????tK?K?K?K?KL LEL????2P
R06??????????L?????L	06????????M????PM\M????B2P2P4
Rp6?8?????????????N????fNyN?????N?N????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P??`?R?????? ?0?@?P?`?p?????	??
??????
?????? ?P????????@?p??????0?`??????????N????OeO?O?O?O?O?OP'PGP????LP?P?PQ(Q1Q;Q[Q{Q?Q	
R
1RYRbRlR
?R	?RS
$SKSsS|S?S?S
?StUGVZV?V?V?W?WBXNXYY?Y?YbZuZ?Z?Z?[?[8\H\]]?]?]Z^o^?^?^?`?`????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4WN?
???p`P??0?b???????? ?0?@?P?`?p???	??
??????
????????@?p??????0?`??????? ?P?????????Pa?????a?ab?^?~??????????6?]?????????؛O?	s?
??œ˜՜
??	?"?
??
?
????
j??
???
??Ӣ
H?T?
?+?
????
n???
???
??Ѧ
@?L?
?.?
????
i?~?
???
?F?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4[R?
???p`P????????????????? ?0?@?P?`?	p?
??????
??
??
?
@?
p?
??
??
?
0?
`?
??
??
??
 ?
P?
??
??
?????????L?o?????Ĭά??.?????3???ƭ????(?H?h?߮	?
*?R?[?e?
??	????
????
&?6?
???
????
N?c?
ص?
????
*?:?
???
????
L?a?
йܹ
????
-?=?
???
z???
??ֽ????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P????R???????????? ?0?@?P?`?	p?	??	??	?	0?	`?	??	??	??	 ?	P?	??	??	??	?	@?	p?	??	??0?????????"?I?q?z?????Ŀ2?V?}?????????????	|?
??	?*?	???	u?
??	>?Q?	????	????	?#?	????	g?s?	0?C?	????	~???	???	????	M?Y?	?%?	????	????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P????R?????????? ?0?@?P?`?p?	??	??	??	?	@?	p?	??	??	?	0?	`?	??	??	??	 ?	P?	??	??	?? ??????????C?k?t?~?????0?T?{???????????G?	?
-?	????	????	?
?	????	c?o?	0?C?	????	????	??	????	O?[?	&?9?	????	t???	???	????	8?D?	i???????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P?? ?R???????? ?0?@?P?`?p???	??	??	??	 ?	P?	??	??	??	?	@?	p?	??	??	?	0?	`?	??	??	????????I??????+?4?>?^?~????;?c?l?v???????	k?
~?		??	????	d?
p?	-?@?	????	????	??	????	V?b?	?2?	????	w???	???	????	F?R?		??	????	????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P??P?Z?????? ?0?@?P?`?p?????	??	??	?	0?	`?	??	??	??	 ?	P?	??	??	??	?	@?	p?	??	??	?0????????,?S?{?????????@?d????????????{?	N?
a?	????	????	G?
S?	?#?	????	d?w?	????	??	9E		??	Zm	??	??	)5	?	lx	??????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P????Z????? ?0?@?P?`?p???????	??	??	?	@?	p?	??	??	?	0?	`?	??	??	??	 ?	P?	??	??	??	? ??????	C	k	t	~	?	?	0
T
{
?
?
?
?
?
?
	_
r	?
	??	X
d	!4	??	u?	?	??	JV	&	??	k~	??	??	:F	?	}?	??????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4YP?
???p`P????r???? ?0?@?P?`?p?????????	??	??	 ?	P?	??	??	??	?	@?	p?	??	??	?	0?	`?	??	??	??	 ?0?????,S{????@d?????% 	? 
!	?!?!	j"}"	?"
?"	?#?#	A$M$	%!%	?%?%	b&u&	?&?&	?'?'	-(9(	))	?)?)	R*e*	?*?*	?+?+	,",	N-z-????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4WN?
???p`P????b????0?@?P?`?p???????????	??	?	0?	`?	??	??	??	 ?	P?	??	??	??	?	@?	p?	??	??	?	0??-????9.?.?.?./$/./N/n/?/0+0S0\0f0?0?0?2	o3
?3	
44	?4?4	h5
t5	16D6	?6?6	?7?7	88	?8?8	Z9f9	#:6:	?:?:	{;?;	?;<	?<?<	J=V=	
>">	?>?>	????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4YP?
???p`P???r????@?P?`?p?????????????	??	?	@?	p?	??	??	?	0?	`?	??	??	??	 ?	P?	??	??	??	?	@?@@?????@A]^^?^?^T_g_?_?_?`?`,ayQy?y?y?z?z {,{'|S|????-	?	??p`P0??@?????????|?????|?}????)?p`P0????????????}????~y~????)?p`P0???????????~????C?????+	?p`P0???????? ????????????+	?p`P0??@??????0@`?????߁W?????/h
4p??p??????P`???????k?????6	%h!4A:p`P?????????p?????????Ѓ????M?s?????ʄԄ??????g???????d4?p6?????????????)?p`0P??0????????????????!?w???????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4OF?
???p`P??p?"???? 0@P`p???	?	?	?		0	P	p	?	?	?	?			0		P		p		?		?		?		?		
	0
???????z???ň???? ?@??????
?? ?@?`???	p?
??	
??	ٍ?	\?
l?	*?=?	????	{???	???	Α?	Q?]?	?*?	????	d?w?	???	??ĕ	4?@?	??
?	}???	=?R?	y???	.?Y?????4	8?	??p`0P?????????@
P
`
p
?
?
??????H????B?k?t?~?????0?????t?2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4???
???p`P????2?????
?
?
?
?
?
 P???@p??
0
`
?
???????N?r?????ȞҞ??8?K?נ?????6?F?
?	???
??i?|????¥
եM?]? ?3?????n?????ͩ????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(47.?
???p`P??p?j?????
?
?
?
 P???@p??0`??? P?0?????????~????&????d?t?1?D???¯????	?б
?Q?d?)??Q?
????
f?z?
????????d4
?p6?p?????`????p?????0?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P????R??????????? 	0
@P`
p??????0Pp????0Pp??????a????6?^?g?q??????*?Q?y?????????!?	E?
l???????
??	??a?
???????????
%?T?0?C????????? ?0???
?z???N?a?????????-?=????????M?b?????? ?!5o?????9	(4A8??p`P???????????????????????? ?????u?????A??????AJTy??????C????2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
G
??	??p`0P?? ?"????0@P`p?????	?
?? 
   0 @ P p ? ? ? ? !0!P!p!?!?!?!?!"??????5Y??????S	w	?	?	?	?	?	
z
	?

?
?
?

 	@?
??#,6V
v??????1
?
??dw????=M#??fy?????O!??1\????4?p6??????? "?????4?p6???????0"0????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4SJ?
???p`P???B????@"P"`"p"?"?"?"?"?"# #@#`#?#?#?#?#$ $@$`$?$?$?$?$% %@%`%?????Kn?????
-????2???fv6I?	??
?%??m 
} =!P!?!?!?"?"##?#?#i$y$9%L%?%?%?&?&
''?'?'](i(#)8)_)o)?)*????04?p`0P??0??????p%?%?%?%?????%`*?????*+G+q+z+?+?+?+????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P????R?????%?%?%?%&& &0&@&P&	`&
p&?&?&
?&
?&
?&
'
 '
@'
`'
?'
?'
?'
?'
(
 (
@(
`(
?(
?(p,?????,-9-]-?-?-?-?-?-?-?????-G.k.?.?.?.?.?.
/y/	?/
?/?/?/?/
0	?0c1
82K2
?2?2
?3?3
<4H4
55
?5?5
e6x6
?6?6
?7?7
C8O8
9"9
?9?9
g:z:
?:?:
?;?;
<<H<
-=Y=????4	8?	??p`0P?????????(?(?(?(?????())?=????Q>u>?>?>?>?>?>?????????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?
.tQ*dP&4OH?
???P????2???? )0)@)P)`)p)?)?)?)?)* *@*`*?*?*?*?*+ +@+`+?+?+?+?+, ,@,@@?????@?@A*ARA[AeA?A?A?A?????A?BYClC?C
D?D?DWE	cE)F
SbS?S?S?S?S?ST????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4RH?
???p`P??@?2?????,?,?,?,?,?,- -@-`-?-?-?-?-. .@.`.?.?.?.?./ /@/`/?/?/?/?T????4U}U?U?U?U?U?UV?V_V????dVWXX?X?XrY?Y?Y	Z?Z
?Z?[?[P\c\?\
?\?]?]C^S^_,_?_?_m`?`?`a?a?aEbQbc$c?c?cmd?d?de?e?eff?f&g????25	??p`0P??p???????/?/?/0????0 000@0????P0????`0?g????h%hMhwh?h?h?h?h????xi?i?i?i?ij)jIj????2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(43*?
???p`P??P?B????p0?0?0?01@1p1?1?1202`2?2?2?2 3 k????tk?l?l}m?mRnen?n?n?o?o/pCpqq?q?q]r	pr?r
?r?s?s7tGt?t
u~u?ubv????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(44*?
???p`P????B????03@3p3?3?3404`4?4?4?4 5P5?5?5?56@6p6?6?67?v????$w?xy?y?ykz~z?z{?{?{K|_|!}4}?}?}~	?~
??`?p?2?
E???ˁ?????&????j?z?2?G???Å>?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(47.?
???p`P????b????7 707`7?7?7?7 8P8?8?8?89@9p9?9?9???????????????y?????֋?`?p?3?F???	͍??
???$????k?
{?6?K???ʑ~???????@
/tE+dD'4C<?
???P?????????9?9::???? :0:@:P:????`:p:???????œ???&?F?f???????ݔ?/?8?B?g???????ܕ
?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
3
??	??p`0P??????????:?:?:?:?:; ;@;`;?;?;?;?;< <@<`<?<?<?<?<p???????P?$?7?ĚԚ????%?1???|???K?^?Ξ	ޞ??
??5?A?????
??_?r??????ϣH?X??&??????C?????+	??p`P0??????????<=??????ܦ9?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4WN?
???p`P????b????= =0=@=P=`=p=?=?=?=	?=
?=?=?=
?=
 >
P>
?>
?>
?>
?
@?
p?
??
??
@
0@
`@
?@
?@
?@????????h?????ۨ???.????????!?A?a???	٪
?(?1?;?
[?	{?L?
?2?
??ͮ
????
?$?
???
h?t?
5?H?
??Ʋ
????

??
Ӵ?
T?`?
!?4?
????
i?~?
???
A?l?????/

??	??p`P0?? ??????AA?????????????+	??p`P0??P?????? A0A?????L???????,4	p?????????@APA???????
?????-	?	??p`0P?????????`ApA?A`?????'???????-	?	??p`0P??0???????A?A?A?????¿C?????-	 ?	??p`0P??????????A?A?A?A??????3?z??9?????-	?	??p`0P?????????BB B`?????"???????-	?	??p`0P??0??????0B@BPB????????O?????-	?	??p`0P??p??????`BpB?B??????R???????$P6????????B?????B?????B ?????^?a????????????.?@?????k?|???????2P
R06????????B????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4SH?
???p`P??2?????BCC C0C@CPC`CpC?C	?C	?C	?C	?C	D	0D	PD	pD	?D	?D	?D	?D	E	0E	PE	pE	?E?????Y?????????%?E?e??????????????=?F?P?p????	??
?	????	j??	??
?	????	T?`?	$?9?	????	????	?!?	????	v???	H?]?	????	????	)?9?	????????4#4D>p`P??p??????E?E?E?E?????E?EF0???????
?1?Y?b?l?????????????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PC24R&H????p`P???2????F F0F@F????PF`FpF?F?????F?F?F?FG G@G`G?G?G?G?GH H@H`H?H?H?H?H????????????????0?P?????????	?1?:?D?d???????L?!?	4???
??????"?2???
?~???M?`?????????'?7???????b?u?????????K?b?"?7?????N	&	?
?	j}	?	??	IY	 3	??	~?	
	??	ht	9 L 	? ? 	?!?!	 "0"	
##	L#`#	?##$????6	%h!4A:p`P??p????? R0R@RPR????`RpRp$????V%}%?%?%?%?%&$&?????&?&????L;?6?1x-h)4H>??
??p`P????????R?R?R?R0'?????'?'(A(J(T(y(?(????L;?6?1x-h)4H>??
??p`P??@??????R?R?R?R?*????+>+g+?+?+?+?+?+????6
K
??	??p`0P??pB????SS S0S????@S????PS????`S????pS?S?????S?-????\.?.?.?.?.?./!/?????/?/????u0,1	2????6
K
??	??p`0P???B?????S?S?S?S?????S?????S?????S????TT????T?2????3@3e3?3?3?3?3?3????Q4]4????55?5	?6????6
I
??	??p`0P??2???? T0T@TPT????`T????pT?????T?????T?T?????TP7?????7?7#8L8U8_88?8????99?????9?:	?;????6
I
??	??p`0P??02?????T?T?T?T?????T????U????U???? U0U????0U <?????<?<?<=%=/=O=o=?????=?=?????>x?	v@????6
I
??	??p`0P??`2????@UPU`UpU?????U?????U?????U?????U?U?????U?@????zA?A?A?A?A?AB?B?????B?B?????CHD	3E????6
I
??	??p`0P???2?????U?U?UV????V???? V????0V????@VPV????PV?E????:F^F?F?F?F?F?F?F????rG~G????OHI	?I????6
I
??	??p`0P???2????`VpV?V?V?????V?????V?????V?????V?V?????VpJ?????JKCKlKuKK?K?K????1L=L????M?M	?N????6
9
??	??p`0P?????????VWW W????0W@WPW`W O?????O?OP7P@PJPmP?P?????P
Q2Q[QdQnQ?Q?Q????6
9
??	??p`0P??@?????pW?W?W?W?????W?W?W?W?T????`U?U?U?U?U?U
V-V?????V?V?V?VWW.WNW????5$482p`P??p??????WXX X@Z?????Z?Z[=[F[P[u[?[????5$482p`P????????0X@XPX`X0\?????\?\]-]6]@]e]?]????5$482p`P????????pX?X?X?X ^?????^?^?^_&_0_U_z_????4	2?	??p`0P????????X?X?X?X?????XYY Y`?????`?`?`a!a+aKapa?????ab/bYbbblb?b?b????6
3
??	??p`0P??0?????0Y@YPY`Y c?????c?c	d3diIiSi2P$$t* 4)&P6??????p[0[@[P[`[?[?[?i????j"j)j8j?j?j?j
6? ?????[?j????)k7k????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t/'d.#4-&?
???P??H*?????[?[\ \@\`\?\?\?\?\] ]@]`]?]?]?]?]^ ^0^pk?????l?m?mn-n?noto?oGpZp?p?p?q?q r0r?r	svs
?sQtdt?t?t?u
?u>vNvw&w?w?whx}x?xy0y?y?y????BB
?6??????@^?}?????}?}????
?6??????P^?}????;~G~????2P	"6?	????`^p??????????2P"6?8	?????^??????1?????2P	"6?`	?????^p?????????????42pB
?6??	?????^ ?????o?{?????

4
2p2P	b6??	?????^??????????????2P
b6??	?????^І??????????
?6?
????_@?????????????
?6?(
???? _??????>?J?????
R06?P
????0_??????????????
R06?x
????@_??????Ɖ̉????
R06??
????P_??????????????2P	"6??
????`_`?????v???????2P"6??
?????_????????Պ????2P	"6??????_????????ŋ????

t42P	b6?@?????_????????ˎ????
?6?h?????_ ?????o?{?????!????'!

d4????'

T
2p2P	b6???????_Б???????????2P
b6??????` ?????:?K?????  t)4($P6??????0`@`P```p`?`?``????????????*?7?@?_?l?u?~?????2P"6??????`??????Ɣ?????dT42pdT42p!??Ֆ`(!td

T	4??Ֆ`(B??!?????(!t
d4?????("42P	b6?0?????`??????ʙۙ????202P
b6?X?????`@?????Z?k?????!??ĜH(!t	d??ĜH(T4
R
?

2P6??hd4?p6???(a8???????? ?????G???????a
atd
T	42???

2P6??4	R?p`6??<( a8????????@?????c??????? a-a!??ȣ?(!%%??td
T4??ȣ?(Bb??B2pP06??4
R	?p`6??((@aH??????????????Ц??????@aOa!????(!d4????(tT?b2pP06?
""4Rp6?
?(?aH????????P?????}????????a?a42p2pP06?(
""4Rp6?(
?(?aH?????????????-?`??????a?a20R0?b!0?L?(!40?L?(Rp?42p?20

RP6?P
t
d4
r?6?P
?(bH???????????????
?????b
bB2P2P4
Rp6?x
???? b????@b0?????????????Į߮????

4
2p20R0d	4Rp2P2PR?
??	p`P06??
????`b?????b0??????!?????????????

R042p!p???(!

tdp???(20

R06
Q
??	??p`0P???
r?????b?????b?b?b?b?????bcc c0c	@c ????????????$?H?o???????е???????!???۷?	-?
6?	C?c????C?????2P2P4
Rp6??????Pc????pc???????1?????T?o?????

4	
Rpd42pbP06??*!????p`06???(?cX??????????????????????c?cd
T	4Rp2020R020bP06??*!????p`06???	(?cX??????????????????????c?c8	't6#d5442P?? ?????d d0d@d??????9?a????????????????!?????
(!?

t	T?????
(

2	?`0	"6?x????Pd ?????;*d=&4;4?	??pP????????`dpd?d?d?????d?d?d?dP?????s???????????"?B????????????'?1?S?s?????=,4:2?
???p`P??(??????d?dee0????????5?_?h?r?????????;*d<&4;4?	??pP???????? e0e@ePe????`epe?e?e?????e?e	?e
?e`??????????F?O?Y?~????????'?P?z?????????????;?_?	??
????
??	???????9	(4>8??p`P?????????e?eff???? f????????????????1?Q????????????20?B2020T4R?p`!?????(!

t?	?????(2`P0

RP6??6?(0fH??????????????????????0f=f!????x(!T????x(d42pd42p?!?+??(!t	
T4?+??(2`b/!43,p`P??8R????Pf`f????`fpf?f?f???????%???????I?????08?p`0P??`??????f?f?????f?f?f?f?f?f?f??????%?4????????????????--?A)t@%d?!4><P6???????fgg g0g???????Q????#3?	|
?Tg???
?*>?|?Re????!1?s?> S ? ? ?!?!?!????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA04A 6??
??	p`P??p?????xx@xpx?x?xy0y`y?y?y?y zPz?z?z?z{@{p{?{?{|0|`|?|?|0"?????"$$?$?$w%?%?%	&?&?&S'j'2(E(?(?(?)	?)*
*?*?*e+u+6,
I,?,?,?-?-..?.?.c/s/00C0?0?0?1?122?2?2N3^3?3A4a4????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA04A 6??
??	p`P?????????|?|?| }P}?}?}?}~@~p~?~?~0`??? ?P????????@?P??4????x5?6?6-7=7?78?8?8V9i9?9?9?:?:;;K;<	&<?<
?<l==?=?=?>
?>B?V?@&@?@?@jA}A?A?A?B?B9CIC
DD?D?DVEkE?E?EWF?F?F????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?
.t?*d>&4=6?
???P????????`?p???Ё?0?`??????? ?P????????@?p???Є?0?`?????@G?????GI%I?I?I{J?J?JK?K?KOL_L M3M?M?MtN	?N?N

O?O?OTPhP&Q
9Q?Q?QzR?R?RS?S?SPT`T"U5U?U?UpV?V?VW.W?W?W????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?
.t?*d>&4=6?
???P??0??????????? ?P????????@?p???Ї?0?`??????? ?P?????????0X?????XZZ?Z?Zk[~[?[?[?\?\?]O]^#^?^?^d_	w_?_
?_?`?`DaXab
)b?b?bjc}c?c?c?d?d@ePef%f?f?f`gug?g?gh?h?h????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?
.t?*d>&4=6?
???P??X???????@?p???Њ?0?`??????? ?P????????@?p???Ѝ?? i?????i?j?j|k?kMl`l?l?l?m?m!n1n?noto?oFp	Yp?p
?p?q?qr/r?r
sss?sEtXt?t?t?u?uv+v?v?vhwxw?wx?N???~???X?k??????ЬK?	`?'?
:???ʮ9?|??????dT42p202P	b6??????0??????
?(?????!0??? :(!d0??? :(42p

B	p`P06??##4??p`6??p:(`?X????P?????????????ر?(?????`?p?

B	p`P06??  4R?p`6??;(??X????????@?????q??????????? 	 dT4p6????????????????????!	!h
d4p6?@?????г???? ??????bd
T	4Rpbd4p6?h?????p???????C?????4	2?	??p`0P???????? ?0?@?P?????`?p?????p??????B?i???????Ƹ?????N?v???˹Թ޹?(?????4P6?????????????????'?S?]?????=,4D<?
???p`P?? ???????М????????? ?0?????@????????f?o?y?????????7?_???????????
?????#?L?????}?	??????!p??0A(!dp??0A(42p!????dA(!

d4????dA(

T
2p??!?????A(!????A(!?????A(!?
tT
?????A(

R	?`0BR0

RP6??t
d4
r?6??,B(??H??????????????B?j???????͞B2P2P4
Rp6?????????????P?????????????????????

4	
Rp2P2P=,4C8?
???p`P???????? ?0?@?P?????`?p?????????????	??
П???????
?????? ?????0?????P? ?????H?k????????????????v????????????=?????????	??
?"?
,?	L?l?????????
?E?N?X?
x???????/?=???????????A?Z?????=,4?6?
???p`P???????p???????????????Р???????	?
 ?????0??????s???????????"?B????????????'?1?S?s?????????	(?
R?[?
e?	?????????-?????6
7
??	??p`0P????????@?P?`?p???????????????????С	?
???????????@???????????$?-?7?W?|????????8?a?j?t????????? ?D?	k?
????
??	??????????????????
?????6
;
??	??p`0P??x????? ?0?@?P?????`?p?????????????	??
Т??????
?????? ?????0????????????)?2?1>?> ?|?!??S@"f@?@#?@?A$?A,B%dmdwd????2020! fDf?b(!t fDf?b(

4
2`d42pBt4?P6?P ????0?@g?????gIh????2020d42p**d%T 4
R??
??p6?x ????@?P?`????????? ??i?????i$jpj?j?j?j?j?j?jk????3	%4/&??p`P??? "????@?P?`?p?????????????@k???? lal?l?lm$mcm?m????qn?n?????no????
R06?? ???????????? ?@?`????o?????o$pap?p?pqUqjqxq~q????04?p`0P?? !????????????? ?@?`?????	??
??й?q?????q?q#rbr?r?rs4sBs?s	?s
?stt#t
Ht	ht?t????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(4-$?
???p`P???!??????? ?@?`????????? ?@?`????????? ?@?`????????t????Bu]u+v>v?v?v?w?wx+x?xyqy?yDzWz?z	?z?{
?{*|A|}}?}
?}Z~m~?~?~??3?C???????\?o?߂?????.?>???????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t1'd0#4/(?
???P???!2????м?? ?P???????@?p???о?0?`?????? ?P????????@?p?`???????Ά?f?v?7?J???Ȉ????
??ۊ?\?	l?4?
G???Ō????
?
$????l???E?X?Ɛ֐?????)????k?{??Q???
???????*?????k?{??F?????&&x!hd'4&$p6?P#????????????????8?????????B1?%,x&(h'P
??	?p`0P??x#B??????????????????????????????????????????8?X?????????????D?n?????????????B1?$,x%(h&N
??	?p`0P???#2???? ?0?@?P?????`?????p??????????????????????
?*?J?????????????R?|?????????????&&x+!h,d^4]Zp6?0$??????@????????????? 	 h+d[4ZXp6?X$????????????.?c?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,41(???
?p`P???$2?????????? ?P????????@?p??????0?`?????????????????????a?t???????????K??!?????d?	w???
??????H?[??
/?????h?}???????????2P2P2P2P2P2P2P2P2P2P2P2P9
+t/'d.#4-&?
???P???$*?????????@?p??????0?`??????? ??????P?4?G?????????+?;????}???N?a??????	?!
1?l|$????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,41(???
?p`P??%2????0?@?p??????0?`??????? ?P????????@???????????Qd????/;?	?	?	T
	g
?

?
??8K


?
?
Xm???????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,41(???
?p`P??0%2????P?`??????? ?P????????@?p??????0?`??????AH[????IU+??n???	?N
^1??|
??
??HX????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,41&???
?p`P??`%*????p????????@?p??????0?`??????? ?P???????`???????0@??V i ? ? ?!?!,"<"#	#?#
?#_$r$?$?$?%
?%3&C&''?'?'P(e(?(?(?)????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,41(???
?p`P???%2???????0?`??????? ?P????????@?p???????)????A*H+[+?+?+?,?,I-U-.+.?.?.n/?/?/0?0	?0N1
^1212?2?2|3
?3?3
4?4?4H5X56????=,4]R?
???p`P???%?
????? ?0?@?????P?`?p???????????	??
??????????
???????? ?0?@?????P?`?p???????????????????????????????  ?!0?"@?`6????717Y7?7?7?7?7?7????/818????n8?8?8?8?8?89B9?????9:	6:
g:p:
}:	?:?:????o;?;
?;<<<
K<z<????#=S=?=?=?=?=?=.>?????>?>%?V?_?l?????????E@u@?@?@?@?@AMA????B;BbB?B?B?B?B?B????}C ?C!?C"D#D"*D!YD ?D?????D2P2P2P2P2P2P2P2P2P2P2P2P<+4RH?
???p`P???&2????P?`?p??????????????????0?P?p??????????0?pE?????EF/FWF`FjF?F?F????G*G?GH?H?HeIxI?I	?I?J
?J:KJK	LL?L
?L_MrM?M?M?N?N1OAO?O?OP0P????B4	2?	??p`0P???,?????@?P?`?p?T????FUxU?U?U?U?UV%V????3"442P??(-??????????????V?????VW(WRW[WeW?W?W????20202020BBBBBBh?020!?[?[ؒ(!t?[?[ؒ(

4
2`20!?\?\?(!t?\?\?(

4
2`20!p]?]H?(!tp]?]H?(

4
2`
R06??-????????P^????~^?^?^????d4p6?8.???????^????
R06?`.??????? _????6_@_????
R06??.????? ?P_????~_?_?_????d4p6??.????0??_????
R06??.????@?P? `????6`@`????202020202020	"6?/????`??b?????b?b????R0	"6?X/????p? c????
R06??/??????@c????
R06??/?????????c?????c?c?c????R0
R06??/????????@d????Vd`d????4	
Rp6?0????????pd?????d?d????
R06?80????????d?????dee????R0
R06?x0????? ??e?????e?e????4	
Rp6??0????0?@??e?????e?e????4	
Rp6??0????P?`?f????f'f????4	
Rp6??0????p???Pf????mfwf????20202020,'	??p`0P??1"????????Ph????ibi?i
j????
R06?@1?????????j?????j?j????
R06??1????????0k????Fk?k????2P4
R
p`P6??1????0????? ??k?????k?k?kll@l4	
Rp6??1????`?p??????????l?????l?lm????????
p`P
0
R06?2?????????????????o?????o?o?o????4	
Rp6?@2?????????? ?@?`??o????pAp`p?p?p	qFqnq????4	
Rp6??2??????????????????q?????q?q?q?q?qr@r????2Pd
4	
Rp6??2????0? ?`r?????r?r4	
Rp6??2????`?p?`s????}s?s????

4
2p

4
2p3"452P???2?????????????@t?????t?tu+u4u>u^u?u????

4
2p<+t9'd8#472??P??x3??????????????????? ?0?????@?P?	`?
p?v?????v?vw0w9wCwcw?w????x(xSx}x?x?x?x?x?????ygy	?y
?y?y
?y	?yz???? 	 dT4p6??4????????pz?????z?z{{????!@{}{|?(!&
&??	d
T4@{}{|?(

???p$
$d T4???p6??4???????????? }?????}?}?????}?}????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4od?
???p`P?? 5?????????????? ?0?@?P?`?
p????????????????? ?P????????@?p??????0?`???P~?????~????Հ????0?P???Ձ?(?	1?;?_????
.?Y???
??????
܃3?W?|???????ׄ??(???????]?p?ވ?????.?:???
?x???A?T?ŒΌ??????ώ?O? _?-?!4?{???Ɛ????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4od?
???p`P??P6?????????????????? ?0?@?
P?`?p??????????????0?`??????? ?P????????@?p??????P????N?
? ?????W?j?ذ?????"?.????l?x?/?D??? ????!??۵?&?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4od?
???p`P???6????`?p??????????????????
? ?0?@?P?`?p????????? ?P????????@?p??????0?`??????? ??????
?? ?@?`?????8?	A?K?o????
>?i???
????Ȼ
?C?g???????Ǽ??8???????m???????????>?J???????Q?d??????????(?????_? o?=?!D???????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4od?
???p`P???6????@?P?`?p???????????????
???? ?0?@?P?`?p??????0?`??????? P????????`???L?p????????????m???????	?????C???
???A?
J?T?x?
?????????|?????T??? ????!?????6?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4}r?
???p`P??7????? 0@P`p???
????? 0`??? P???@p??p???????*?p?r?3?V?z???????????O?s?????	?????????
?????
??5?
U????????$?.?N?n?q?=?P?????????'?7???	?w???r???? %0%@%P%????`%p%?%?% ??????
?8?d?m?z??????????Ԓ?˓ؓj???Ԕ??????????!????T?(!4????T?(??<+4J@?
???p`P??P>??????%?%?%?%?%?????????ך??&?/?9?Y?y???????Л2P2P2P2P2P2P2P2P2P2P<+4j`?
???p`P???>??????%&& &????0&@&P&`&????p&?&	?&
?&?????&?&
?&?&?????&'' '????0'@'P'`'????p'?'?'?'?' (P(?(?(?()@)p)?????t???????????B?G?q?2P?06?P@????P*0*@*???????d?d4?p6??@?????*??????G?n?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
e
??	??p`0P???@?????*?*?*?*?????*?*?*+????+ +	0+
@+P+`+
p+
?+
?+
,
0,
`,
?,
?,
?,
 -
P-
?-
?-
?-
.
@.
p.??????K?o?????Ŵϴ??????p??????????6????????	?
-?U?^?h?
??	??ȷ??????
??ù
L?\?
?2?
????
r???
??
?
˽޽
L?\?
?0?
????
o???
???
????
B?R?
	??
????
|???????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4kb?
???p`P??@A?????.?.?.?.?????.?.?.?.????//	 /
0/@/P/
`/
?/
?/
?/
 0
P0
?0
?0
?0
1
@1
p1
?1
?1
2
02
`2?????????????????%?E????????????%?/?O?o????????	?????W?;?
??
????
q???
???
????
G?[?
?0?
????
p???
???
????
D?T?
?)?
????
b?w?
????
????????2P;*d>&4=6?	??pP??B??????:P:`:p:?:?:?:P????????E?o?x????????u?????2P?06??B????;?:?:??????D???d4?p6??B????0;??????l???????2P2	$4)"??p`P???B?????;@;P;`;p;?;??????C??????Q?U?Z?????2P2	$4)"??p`P??@C????<?;?;?;?;<?????t??????????2P4???
p	`P6??C????`<@<P<@?????.l6
9
??	??p`0P???C??????<?<?<?<?????<????????@d?????????2P,/	??p`0P??Db????=?<?<?????<?4
&h/	??p`0P??0DR????0=@=?????K3	?	????4
&h/	??p`0P??`DR????P=`=?	????o
?
??????:)h %4KB
??p`P???D?????p=?=?=?=?????=?=?=?=?????=P?????
-
W
`
j
?
?
????9]???????????????2P@/?/*x0&h1e?	?p`0P??0E?????p>>> >0>@>P>`>??????Fqz???I?????;*x&h;?	?p`0P???E??????>?>?>?>?????>?????]?????
-??????????3"442P???E??????>?? ?`??????2;Ee?????BB
?6?`F????0?P??????????
?6??F????@??????????20202020

4
?p

4
?p2020d42p
?6??F????P?p$?????$?$????
?6??F????`?&????N&Z&????2P	"6?G????p? '????6'G'????2P"6?(G???????'?????'?'????

4
2p2P	"6?PG???????(?????(?(????2020202P	"6?xG??????@+????V+g+????
R06??G???????+????2P"6??G????@ ,????6,G,????20202P	"6??G???? @-????-'-????20

4
?pdT42p!?/?/??(!d?/?/??(t	T42?20

4
?p2P"6?H????@@?1?????1?1????20! 2?2d?(!t 2?2d?(20

2P6?@Hhd
4rp6?@H??(`@8?????????2?????2?2????`@m@

2P6?hH4	r?p`6?hH4?(?@8????????3???? 3U3?????@?@

2P6??H4	R?p`6??H??(?@8?????????3?????3?3?????@?@!?344?(!td4?344?(
????P0!?7?7??(!?7?7??(!t??7?7??(!?d4?7?7??(???P2020!0:O:??(!t0:O:??(20???&&42&(????p`P!0EkEP?(!88d,t$4+0EkEP?(%???P
4?????
p`P?020R0?dT4?p	td4P20

RP6??Ht
d4
r?6??H?(?@H????????@O?????O?O?????@?@B2P2P4
Rp6??H?????@????A?P????6QGQ????jQyQ????!?Q?Q??(!4?Q?Q??(d4?p

4
2p

4
?p

4	
Rp2P2P4
Rp6?I???? A????@A?T????&U7U????ZUiU????d42p20!0VXV??(!td40VXV??(

???P20

4
?p20

4	
Rp20

4
?p2P	b6?`I????`A0Z????JZhZ????202P2P2P2P2P2P2P2P4&d+"4*$?	??pP???I?????A?A?A?A?AB B@B`B?B?B?B?Z????:[_[)\<\?\?\?]?]^*^?^_t_?_B`W`?`	?`?a?a????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA04U J??
??	p`P???IJ?????B?B?B?BCC0CPCpC?C?C?C?CD0DPDpD?D?D?D?DE0EPE`EpEPb?????b?b?bLc?c?cfdydee?e?e_fof-g	@g?g
?g~h?hii?i
?i_jvj4kGk?k?k?l?lmm?m?m_nvn.oCo?o?o?p?q?q1r?r?r?rs????204
p`P!?v?v)!T?v?v)d42p2P	b6?8J?????E?w?????w?w????20

B	p`P06?`J  4R?p`6?`J?)?EX????????x????1xXx?????E?E5't)#d'4&"??P???J?????E?EFpx????*yQyvz?z????d4?p

B	p`P06??J##4??p`6??J?) FX????F?????{?????{?{	|H|???? F0F!`|o|8)!d`|o|8)42p?3	>?	??p`0P???J?????pF?F?F?F?F?|????0}@}~?~?~׀$??????!p??)!dp??)42pR0!??<)!d??<)42p

RP6?Kt
d4
r?6?K?)?FH????????p?????҂???????F?F!`?t??)!

d4`?t??)

T
2p!???X)!?C?<)!??C?<)!?
tT
???X)

R	?`0B

4	
Rp202P2P2P2PC2?,-x-)h._?
??	?p`0P??@K??????F?F?FG????G G0G@G????PG????`G????pG
?G
?G?G
?G?G?GH H@H??????0?T?{???????܇??????q???????????=??????????????	??????ӊ
??????
????
ӋY?
?????g?u??2????????y?
ڒ?
&?????BBB20
?6??K????PH??????˗ח????2P	"6? L????`H???????????B202P	"6?HL?????H?????&?0?????20
?6?pL?????H???????K?????2020d42pBBB
?6??L?????HО?????'?????
?6??L?????H@?????????????
?6??L?????H?????????????

4
2p2P	"6?M?????HР??????????2P"6?8M????I???????????2P"6?`M???? I0?????F?Q?????!?????)!d?????)!?
dT?????)

4	
2p20
?6??M????@I????????????202P	"6??M????PI????????????2P	"6?N????pI?????&?0?????202P	"6?0N?????I????????է????
?6?XN?????I??????Ϩۨ????20202P	"6??N?????I???????????2P	"6??N?????I ?????6?\?????
?6??N????J?????/?;?????
?6??N????Jp???????ˬ????
?6? O???? J?????O?[?????

4
2p2P	"6?HO????0J??????!?????2P"6?pO????PJ0?????F?P?????2P"6??O????pJ`?????v???????2P	"6??O?????J??????5?????2020
4

2P6??O4	R?p`6??O)?J8????????????????ʲ?????J?J2P	"6?P?????J???????????2P	"6?8P?????J ?????6?\?????

2P6?`P4	R?p`6?`P)K8????????p?????????????KK202P"6??P????0Kp?????????????2P"6??P????PK??????????????

2P6??Ptd
4R?6??P)pK8?????????????b?z?????pK}KR0

2P6?Q4	r?p`6?Q?)?K8????????`??????????????K?K?

2P6?(Q4	R?p`6?(Q$)?K8?????????????3?Z??????K?K

2P6?PQd
4rp6?PQ?)?K8????????p???????ʷ?????K?K?20!0?Q?,)!40?Q?,)dT2p

2P6?xQ

2P6?xQ.
.d*4?????p6?xQ?)?) L8?K8??????????????????????????????i????????K?K L-LB?R0??R0! ?^??)!^?o??)!t^?o??)!4 ?^??)

2`2P2P4
Rp6??Q????@L????`L????????????3??9?4x0h,43 (????
p`P6?`U???? P????0P????PP????????????????????????????6(4?
???p`P???U?????pP?P??????O???`???????2P2P2P2P2P2P2P2P2P2P2P2P2P2PVE?p=?q5?r0xs,ht??
??	?p`0P???U??????P?P?P?P?P?P?PQQ Q	0Q@QPQ`Q
pQ?Q?Q?Q?Q?Q?Q?Q?QRR R0RPRpR?R?R?R?R ?R!?R"S#S$ S%0S%@S%PS%`S)pS)?S)?S)?S)?S)T)0T)PT)pT)?T)?T?T5?T6?T7?T8U9U8 U;0U??????g?|???-?]????????????????	?	;?
D?	Q??????J?}?
????
????%???????2?;?H?w???L???4?d?????????	?	?	?	H	T	?	?	?	?			K	?		 ?	!?	"	#Y	$?	%?	&!		%H		'?		%
	(?
	%V	)2	*E	)?	+?	)?	,?	)E	-Y	)(	.;	)?	/?	)?	0?	)$	1;	)	2	)?	3?	)	%H	$U	#b	"l	!?	 B	O	\	i	?	?	53	6[	7p	8` 	9?!	8W$	;?)	8?)	7*	69*	5F*	?,	-	L-	????2P2P2P2P2P2P2P2P2P2PA0x#,h$(4UJ??
??p`P??W"????@UPU`UpU?????U?U?U?U?????U?U	?U
?U????VV0VPVpV?V?V?V?VW0WPW?-	????w.	?.	?.	?.	?.	/	(/	H/	?????/	?/	?/	0	0	'0	G0	g0	?????0	?0		1	
61	?1	
I1		i1	?1	????k5	*6	
=6	?6	?6	?7	?7	8	8	?8	?8	d9	y9	;:	N:	?:	?:	?;	?;	<	3<	?<	?<	?<	?????<	?=	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P@
/hS+4????
??p`P??(W"????`WpW?W?W?W?W?W?W?W?W	X
X X0X@XPX`XpX?X?X?X?XY0YPYpY?Y?Y?Y?YZ0ZPZpZ?Z?Z?Z$?Z?	????E@	Q@	]@	?@	?@	A	:A	CA	PA	A	?A	1B	?B	?C	?C		=D	
vD	?D	
E	
?E	?E	pF	?F	G	AH	"I	6I	?I	?I	?J	?J	>K	NK	&L	:L	?L	?L	?M	?M	$N	4N	O	O	?O	?O	}P	?P	
Q	Q	?Q	?Q	xR	?R	`S	tS	?S	 T	?T	!?T	[U	"oU	?W	?W	?W	
?W		?W	gX	1Y	$z]	~^	?^	?^	????BB
?6?`_?????Zc	????[c	gc	????
?6??_?????Z?c	?????c	?c	????2P	"6??_????[?d	?????d	?d	????

4
2p2P"6??_???? [ e	????6e	Ae	????2020

4
2p4
?6? `????@[`i	?????i	?i	????
?6?P`????P[?i	????/j	;j	????2P	"6??`????`[k	????k	!k	????

4
2p2P	"6??`?????[?k	?????k	?k	????2P"6??`?????[?k	?????k	?k	????BB20202P	"6?a?????[0m	????Fm	em	????!t?m	?m	?-)!t?m	?m	?-)20

4
2p4

t41	#td4P??@a??????[?p	????r	r	????2P	"6?pa?????[?r	?????r	?r	????B2P"6??a????\?r	????s	s	????B20202P	"6??a????0\t	????&t	Et	????Rp!?t	u	L/)!4?t	u	L/)dT2p20

2P6?btd
4R?6?b?/)P\8?????????u	?????u	
v	????P\]\

2P6?0b4	R?p`6?0b,0)p\8????????pv	?????v	?v	????p\}\!?v	-w	?0)!t?v	-w	?0)4`

2P6?`b4Rp6?`b?0)?\8?????????w	?????w	?w	?????\?\!x	gx	T1)!?4x	gx	T1)

d
T
?p!0y	Qy	?1)!40y	Qy	?1)dT2p20B?b?b!?z	&{	?1)!t?z	&{	?1)

4
2`2P2P4
Rp6??b?????\?????\|	????f|	r|	?????|	?|	????!?|	?|	x2)!t?|	?|	x2)

4
2`R0d	4Rp

R0d	4Rp2020

RP6??bt
d4
r?6??b3)?\H?????????	????B?	j?	?????\?\

2P6??b4R
??	?p`6??b?3)]8??????????	????t?	ʁ	????]]

RP6? c#r??p`06? c4)0]H????????P?	?????	??	????0]=]4#t8474P??Pc?????P]`]?]?]?]?]^ ^0^@^	P^`^p^?^
?^?^?^?^?^?^?^__ _0_@_P_?	?????	?	??	Å	?	=?	z?	ʆ	?	?		C?	
L?		V?	{?	??	?	'?	Q?	
{?	??	
??	??	ш	5?	Y?	??	??	??	??	?	?	c?	??	??	ۊ	?	?	?	1?	??	‹	?	?	?	)?	L?	l?	?	????<+4`V?
???p`P???d?????`_p_?_?_?_?_?_P?	??????	ʏ	?	?	U?	H?	l?	??	??	Ǒ	ԑ	??	?	4?	????20!??	ے	?7)!4??	ے	?7)B??2P2P4
Rp6?0e?????_?????_??	????6?	G?	????j?	y?	????

RP6?`e	?6?`e?8)`H??????????	??????	??	????``b20B/!4*$p`P???e????0`@`P`??	?????	??	??	ȗ	?	f?	????2P
R06??e????``??	?????	2P
R06????????` ?	????a?	2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P7)h)
??	??p`0P??@?"?????`?`?`a a@a`a?a?a?a?ab b@b`b?b?b?b?bc c@c`c?c?c?c?c??	????ڙ	'?	??	Ǜ	U?	e?	+?	>?	??	ȝ	??	??	?	+?	?	?	~?		??	Q?	
d?	ס	?	??	??	4?	
H?	?	?	??	??	h?	{?	?	?	Ŧ	ئ	K?	_?	"?	5?	??	??	x?	??	??	?	?	1?	^?	n?	F?	f?	????2P2P2P2P2P2P2P2P2P2P2P2P-	&?	??p`0P????*?????cdd@dpd?d?de0e`e?e?e?e fPf`f??	?????	"?	??	?	??	??	Z?	m?	߰	?	??	ȱ	:?	N?	?	*?	??		??	n?	
??	?	
?	Ƶ	۵	G?	
S?	?	8?	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(42(?
???p`P??p?:????pf?f?f?f?f gPg?g?g?gh@hph?h?hi0i`i?i?i?i jPj?j?j?jk k??	?????	??	?	
?	??	??	w?	??	??	
?	?	?	??	??	]?	p?	?		?	׾	?	o?	?	C?	V?	??	??	?	2?	??	??	q?	??	??		?	??	??	N?	b?	#?	6?	??	??	|?	??	?	?	??	??	?	 ?	??	??	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P4&d-"4,$?	??pP????????0k@kPkpk?k?k?k?kl0lPlpl?l?l?l?lm0mPmpm?m?	????n?	}?	??	??	y?	??	M?	`?	??	??	??	??	3?	C?	
?	?	??		??	b?	
u?	??	??	??	??	H?	
\?	 ?	3?	??	??	??	??	
?	?	??	??	\?	l?	??	?	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P4&d-"4,$?	??pP??@??????m?m?m?mn n@n`n?n?n?n?no o@o`o?o?o?o?op p@pP?	??????	??	.?	A?	??	??	??	??	$?	8?	??	?	??	??	Z?	m?	??		??	??	
??	9?	I?	
?	 ?	??	
??	l?	?	??	?	??	??	R?	f?	1?	D?	??	??	??	??	?	?	??	??	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P;-40&??
??	p`P????*????Pp`ppp?p?p?p?pq0qPqpq?q?q?q?qr0rPrpr?r?r?r?rs0s?	????r?	??	??	??	Y?	m?	/?	B?	??	??	??	??	?	$?	??	??	k?		?	A?	
T?	??	??	??	??	?	
/?	??	?	s?	??	E?	X?	??	??	??	??	!?	8?	??	?	??	??	T?	i?	??	??	U?	??	????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P;-40&??
??	p`P????*????@sPs`s?s?s?s?st t@t`t?t?t?t?tu u@u`u?u?u?u?uv v??	????B?	Q?	??	??	-?	A?	?	?	??	??	_?	r?	??	??	??	??	?
	S


(
?
?
q
?
?


?
?
G
W

,
?
?
p
?
?

?
?
T
i
(	
=	
?	
?	
)

T

????25	??p`0P??0??????0v@vPv`v?

????
F
k
?
?
?
?
?
????dT
4?p5	8?
???p0P?????????pv?v?v?v?????v?v?v?v?
????
9
d
?
?
?
?
?
????
*
N
u
~
?
?
?
????2P2P=
,h(4K@??
??p`P??@???????vww w????0w@wPw`w????pw?w	?w
?w?????w?????w?
????@
d
?
?
?
?
?

????b
?
?
?
?
?

(
?????
"
	I

q
z

?
	?
?
????^
o
?????

?
????2P2P2P2PK:?&5?'0x(,h)(4_T??
??p`P????R????x x0x@x????Px`xpx?x?????x?x?xyy y
0y@yPy`y?y?
?????
?
?


$
D
d
?????
?

=
F
S
s
?
?????
?
	?
1

:
?

i

?
?
?
?
?


5
!
!!
?!
?!
?"
?"
?"
????2P
R06????????yp#
?????#
xhBii?d?^?F?A?.
W.


2P6?8?td
4R?6?8?W)P{8?????????.
????/
/
????P{]{e
etd	T42?

4
2pB??tT42`!?2
?2
?W)!t?2
?2
?W)

4
2`2p202p

4
2p=
,x(h:
??	?p`0P??`??????p{?{?{?{?????{?{?{?{05
?????5
?5
6
-6
66
@6
`6
?6
?????7
	8
08
Y8
b8
l8
?8
?8
????P?0???R?????{|9
????E9
t9
?9
?9
????420P6?P????? |0|@|P|????`|p|?|?????|?9
?????:
P:
?:
?:
?:
,;
f;
?;
?;
?;
????202P""dT
4	
Rp6????????|?;
????<
2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA0x%,h&(4XN??
??p`P????B?????|?|?|}????} }0}P}p}?}?}?}?}~0~P~p~?~?~?~?~0Pp?????<
????d=
?=
?=
?=
?=
?=

>
*>
?????>
0?
??
@
?@
?@
hA
{A
?A
	?A
?B

?B
[C
gC
+D
>D
?D

?D
E
?E
F
F
?F
?F
[G
gG
'H
:H
?H
?H
yI
?I
J

J
?J
?J
UK
jK
-L
@L
?L
?L
?M
?M
?M
?M
N
(N
bN
?N
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA0x&,h'(4ZP??
??p`P????R?????? ?0?????@?P?`?????????? ?@?`?????????? ?@?`?????????? ??N
????O
?O
?O
?O
?O
P
%P
EP
?????P
FQ
R
'R
?R
?R
?S
?S
T
	T
?T

?T
[U
kU
*V
=V
?V

?V
|W
?W
?W
X
?X
?X
MY
YY
Z
'Z
?Z
?Z
b[
u[
?[
?[
?\
?\
7]
G]
^
^
?^
?^
U_
j_
?_
?_
?_
?_
-`
X`
????9(x$h6	?p`0P?? ??????0?@?P?`?????p????????`
????7a
^a
?a
?a
?a
?a
?a
b
?????b
?b
?b
?b
c
c
7c
\c
????2P2P2P2P2P2P2P2P2P2P2P2P5
M
??	??p`0P????R????????Ѓ?????????? ?????0?@?	P?
`?????p???
????????????Є???0?P?p?????Ѕ???0?P?d
?????d
?d
?d

e
e
 e
@e
`e
?????e
	f
0f
Xf
af
kf
?f
?f
????g
@g
	gg

?g
?g

?g
	?g
?g
????Ih
qh

?h
?h
?h
?h

?h
i
????ui
ck
Hl
[l
?l
?l
?m
?m
8n
Hn
o
o
?o
?o
bp
up
?p
?p
?q
?q
;r
Kr
	s
s
?s
?s
?w
?w
(x
Sx
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA0x&,h'(4ZP??
??p`P???R????`?p?????????????????? ?@?`?????????? ?@?`?????????? ?@??x
????=y
ay
?y
?y
?y
?y
?y
z
????}{
?|
e}
x}
?}
~
?~
?~
V
	f
1?

D?
??
̀
??
??
?

.?
?
?
?
??
T?
g?
??
??
??
Ʌ
B?
N?
?
'?
??
??
m?
??
??
?
??
ω
B?
N?
:?
V?
??
??
????@/?*x&h9?	?p`0P??x??????P?`?p???????????????????Љ??	??
?????? ?
0?@?????P?`?p????????????????
????̍
?
?
E?
N?
X?
x?
??
?????
(?
S?
}?
??
??
??
ڏ
????0?
X?
	??

??
??

??
	?

?
????y?
??

̑
??
??
	?

.?
S?
?????
?
A?
k?
t?
~?
??
ȓ
??????
Ӕ
??
(?
1?
;?
`?
??
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P4#4[Tp`P????????Њ?????????? ?0?@?????P?`?	p?
??????????????
??????? ?@?`?????????? ?@?`???????Ѝ??!???#?$ ?%0??
??????
??
ݖ
?
?
?
??
a?
??????
?
?
:?
C?
P?
q?
??
??????
?
	J?

u?
~?

??
	??
Ι
????3?
O?
????T?

o?
? ?@0?A@?BP?`??
??????
Ǫ
?
?
"?
/?
O?
o?
??????
?
A?
l?
u?
??
??
¬
????A?
e?
	??

??
??

ͭ
	??

?
??????
??

Ϯ
??
?
?

0?
P?
????^?
??
??
б
ٱ
?
?
&?
????y?
?
??
Ƴ
M?
]?
?
0?
??
??
r?
??
?
?
·
׷
P?
\?
?
1?
??
??
g?
 |?
?
!??
??
"??
.?
#>?
?
?
ֽ
$??
%?
&J?
'S?
&`?
%??
$??
?
(E?
)v?
*??
+??
*??
)??
(?
??
,??
-??
.!?
/*?
.7?
-f?
,??
U?
0??
1??
2??
3??
2?
1/?
0^?
??
4??
5??
6?
7(?
65?
5d?
4??
??
8??
9?
:Q?
;Z?
:g?
9??
8??
??
<??
=??
>1?
?:?
>G?
=v?
<??
9?
@i?
A??
B??
C??
B??
A?
@??
??
"?
????t?
2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
c
??	??p`0P????????p???????????????????Г?? ?P????????@?p???Е?0?`?????? ?P????????@???
????,?
P?
u?
??
??
??
??
??
??????
??
??
?
{?
G?
	Z?
??

??
??
??
1?
A?

?

?
??
??
`?
s?
??
??
??
??
9?
E?
?
?
??
??
Z?
m?
??
??
??
??
A?
Q?
?
'?
??
??
^?
s?
??
??
`?
s?
??
??
?
?
??
??
??
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
e
??	??p`0P???????P?`?p?????????????????????0?`?????? ?P????????@?p???Л?0?`?????? ? ?
??????
??
?
-?
6?
@?
`?
??
?????
O?
??
??
Y?
%?
	8?
??

??
??
??
?
?
??

??
o?
{?
>?
Q?
??
??
??
??
?
#?
??
??
i?
u?
8?
K?
??
??
??
??
?
/?
??
?
y?
??
?
Q?
v?
??
??
??
d?
??
??
????=,4UJ?
???p`P??P?B????0?@?P?`?????p???????????????	Н
?????????
??????
??
??
?
?
(?
M?
m?
??????
??
&?
P?
Y?
c?
??
??
????$?
H?
	s?

??
??

??
	??
??
??????
K?
????=,4]R?
???p`P??H???????? ?0?????@?P?`?p?????????	??
??????????
????|?
??
??
??
??
-M??????09Ch?????(	S
}?
?	???????L????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4mb?
???p`P??p?????О????????? ?0?@?????P?`?	p?
??
??
??
??
?
 ?
@?
`?
??
??
??
?
?
 ?
@?
`?
??
??
??
С?????Kz???? O??????KTa??????3U		
?	?	
?
?

U
h
??
??
8
L

"
??
l
?
??
HX
*
??
m?
?
??
?S
M	x?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4`V?
???p`P????????????????? ?0?@?`????????? ?@?`????????? ?@?P?p?????Ф?????5Y~?????????m???Td':?	??
?
??g 
{ :!M!?!?!?"?"##?#?#e$u$8%K%?%?%_'r'?'?'?(?(;)K)?*?*????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:
!;????
p	`0P???????????0?`?????? ?P???????@?p???Ч?0?`?????? ?P???+????f+l,=-P-?-?-?.?.4/D/00?0?0X1k1?1	?1?2
?2,3<3?344
?4Q5d5?5?5?6?6$747?78v8?8G9Z9?9?9?:?:;*;?;?;e<u<q=?=????5	6?
???p0P??p??????????????????Щ???????? ?	0?
@?????P??=????m>?>?>?>?>?>?7???????????@ @*@O@o@?????@A	2A
\AeA
oA	?A?A????CBKB????5	6?
???p0P?????????`?p???????????????Ъ??????	?
????? ??B????-CQCxC?C?C?C?C?C????^D?D?D?D?D?DE/E?????E?E	?E
F%F
/F	TFtF????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P>
%E????p
`0P????????0?@?P?`?p???????????	Ы	?	?	0?	P?	p?	??	??	Ь	?	?	0?	P?	p?	??	??	Э	?	?	0?	P?`G?????G?GH3H[HdHnH?H?HI&IMIuI~I?I?I?I?J	kK
~K	LL	?L?L	WM
gM	*N=N	?N?N	?O?O	PP	?P?P	YQiQ	,R?R	?R?R	~S?S	TT	?T?T	WUgU	-V@V	?V?V	?W?W	X&X	?XY????<+h<?	??p`0P????????`?p???????????????Ю?????@Y?????Y?YZ7Z@ZJZoZ?Z?????Z$[K[u[~[?[?[?[????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
 G??
??	p`0P????"??????? ?0?@?P?`?p?????
??
??
?
?
 ?
@?
`?
??
??
??
?
?
 ?
@?
`?
??
??
??
?
?
 ??\????
]T]x]?]?]?]?]?]^p^?^?^?^	?^?^_6_`
?`?`
wa?a
Jb
]b
?b?b
?c?c
#d3d
?d
e
ze?e
Mf`f
?f?f
?g?g
"h2h
?h	i
yi?i
Lj_j
?j?j
?k?k
%l5l
?lm
.m>m
fn?n?n????<+h B?	??p`0P??P??????0?@?P?`?????p????????????????n????Poto?o?o?o?o?op?????p?p?p?pqq0qPq????r$r????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t1'd0#4/(?
???P??x?2????в???0?P?p?????г??0?P?p?????д??0?@?`????????r?????r?s?t?tKu[u v3v?v?v?w?wx+x?xy?y	?ymz
?z{{?{?{x|
?|W}j}?}?}?~?~br;?N?р?~????????u???????????2P2P2P2P2P2P4&d,"4+$?	??pP????????е???0?P?p?????0??????????‡I?Y??0?????n?????w???????4#4HBp`P?????????ж??????????????]?????Ό׌??!???????֍?
?????2P2P2P2P2P2P<+4B8?
???p`P??H?????? ?0?@?P?`????????? ?@?????ӎ	?????r???? ????i?}?;?P???	ՓY???????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(4.&?
???p`P??x?*????0?@?p???и?0?`?????? ?P???????@?P?`?p??????Y?&?9???ϖ?????#????h?x?:?M???̚??	???
'????n???G?
Z?̞?????&?=?j?٠????????ء??????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P:,4-$???
?p`P??????????????л??0?P?p?????м??0?P?p?????н??0?P?`?P???????????#?3????|???P?c?Ԧ?????,???!?????|???	??????x???Y?l??? ????!??M?"]?+?#>???$????%???&.???'????*?
Y?	f?s?}???????????6	%h!4;4p`P???????????? ?@???????!?E?o?x???????????2P2P2P2P2P2P2P2P2P2P2P2P<+4QH?
???p`P??p?2????0?@?P?`?p???????????	??
?????
? ?0?@?P?`?p????????????0?P?p?????????? ?????{??????? ?)?3?S?s??????:?C?M?m?????	?
/?W?`?j?
??	??)?
M?t?????????
??H?l??????????????????B?R??,?????p??????????E?U??-?????f? {???!????
?????08?p`0P????????? ?0?@?P?????`?p?????????????	??
??????????`????????? ?J?S?]?}????????? ?K?u?~???????????6?]?	??
????
??	??
?????m???????P6??????????????:?\?????????P6??????? ?0??????????+?5?????B2020B

4
2p

4
2p

4
2pBBBd
4rp6???????@?P?????z?3?????
?6??????P???????????????
?6?@?????`??????[?g?????
?6?h?????p???????????????
?6??????????????K?W?????2P	"6?????????@?????V?a?????

4
2p

4
2p2P"6???????????????????????202020d42pBB
?6??????????????;?G?????
?6?0???????`?????????????

4
2p20?R0d	4Rp
p0??
p0??BdT4?p!?
t	d??4?)!?

t	d??4?)		2?P0204	
Rp6???????????????9????20BBBB

4
2p20d42p!???)!t???)20

4
2p4	Rp6?@???????????I

????
?6?h???????????????
?6??????? ????????????
?6???????0? ????o{????
?6???????@?????O[????2P	"6??????P????????????

4
2p

4
2p2P"6?0?????p?p??????????20BBB202020r06?X???????????Zf????
?6?????????????O[????
?6???????????????????

4
2p?2p
R06?????????????0z????!4??ж)!MMt4??ж)!4??ж)2`!????)!4????)

d
2p
t	dT42?X
Xtd	T42?!?	????)!?v p?)!??v p?)!?

?	d????)2pP0

4
2pr06?????????`"?????"?"????!?#$??)!t?#$??)T42`B2P"6??????????%?????%?%????BB20202020

4
2p20

4
2pB
R06???????? ??(????)*)????
r06??????@?????P?@)?????)?)????20204	
Rp6?@?????`??*?????*+????

2P6?h?td
4R?6?h???)p?8???????? +?????+?+????p?}?

2P6???td
4R?6??? ?)??8?????????+????R,j,????????!?,?,??)!4?,?,??)dT2p!@-a-ĺ)!4@-a-ĺ)dT2p

2P6???td
4R?6????)??8?????????-????".:.????????B20!?./??)!4?./??)dT2p

4
2p
R06??????????/????4	Rp6??????????/????*040????20202Pd
4	
Rp6?0????? ?P?p? 1????r1?1?1????dT
4	Rp6?h??????????1????
22????BBB!p3?3??)!?
t	Tp3?3??)		2?`0B<V>??)!t >V>??)

4
2`4	
Rp6??????0?????@?@?????20202P	b6?0?????P?@????-@X@????2P
b6?X?????p?`@????w@?@????d	42p20206(4?
???p`P????????????A?????BD????D6D????YDvD????1
#td4???P????j???????D????SE?F?????F	G????4	
Rp6?????????PG?????G?G????
R06????????????????G????4	
Rp6? ????????G????.H5H????d42p202P	b6?H????????H????
I8I????2P
b6?p??????@I????]I?I????#4?p????B????0??I?????IJ????Mr????!Pr_r??)!dPr_r??)42p!?r?r?)!

d4?r?r?)

T
2p!0s\sh?)!\s?sL?)!?\s?sL?)!?
tT
0s\sh?)

R	?`0R04	Rp6?????? ?@? t????Ztgt????20

4
2p42p

2P6?(?d	4Rp6?(??)`?8????????v?????~?????????8	't>#d=4<:P??????????????????? ? ?????|?????????ǽ???:?^???????þ??/?u?????BB

4
2pBBBR0$4?p????b????0?@?p?????????????????

4
2p8	't9#d8474P????????P?`?p???p???????!?I?s?|???????????8	't9#d8474P??P?????????????????????1?Y???????????????BR06?x???????????????????????? ?)?A?????!`?r???)!4`?r???)2p

4
2p2P2P2P2P2P2P2P2P2P2P2P2P7	!$???p`
0P?????????? ?@?`?????????? ?@?`??????????~???w????&?????o??C?V?????????"?	6???

?????S?h???
??????????2P2P2P2P2P2P2P2P2P2P2P2P6	 $???p
`0P?????????????????0?P?p??????????0?P??????l?{?o???
??????b?r?6?I??????????	0???
?{???M?b???
??????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t/'d.#4-&?
???P???"????`?p?????????? ?@?`?????????? ?@?`?????????? ?@???????i???????,??%??xh?2pP06???!!4?	?p`6???t?)`?H????P??????	
?????	
?	
?	


????`?o??3"442P?? ??????????????P

?????

?

?

 
)
3
S
x
????

RP6???"
"td4
r???6?????)??H?????????
????G
m
????????2p	"6????????? ?@?`??

?????


+
@
U
????
R06?????????????????`
????v
?
?
?
?
????!?
%
??)!T	?
%
??)d4
Rp2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4SJ?
???p`P?? ?B?????? ?0?????@?P?`?p?????????	??
??????????
??
?
 ?
@?
`?
??
??
??
??
?
 ?
@?
`?
??
??
??
??
?????
?
?
!
*
4
T
t
????
C
j
?
?
?
?
?
????\
?
	?

?
?

?
	
"
????q
?

N
a

?
?

?
?

>
N


(

?
?

o
?

?


?
?

X
d


2

?
?

|
?

?


?
?

F
R

? 
? 

? 
!
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4SJ?
???p`P????B???????? ?????0?@?P?`?????p???	??
??????????
??
??
?
0?
P?
p?
??
??
??
??
?
0?
P?
p?
??
??
??p!
????"
2"
Y"
?"
?"
?"
?"
?"
????#
?#
?#
?#
?#
$
%$
E$
?????$
?$
	%

/%
8%

B%
	b%
?%
?????%
?%

?&
?&

H'
X'

(
.(

?(
?(

u)
?)

?)
*

?*
?*

[+
g+

,,
?,

?,
?,

-
?-

.
.

?.
?.

_/
k/

$0
90

?0
?0

?1
2

L2
w2
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(4.$?
???p`P??8?????????? ?@?`?????????? ?@?`???????????2
????(3
?3
^4
q4
?4
5
?5
?5
N6
^6
7
07
?7
?7
o8
?8
?8
	9
?9

?9
H:
X:
;
.;
?;

?;
q<
?<
?<
=
?=
?=
C>
S>
?>
?>
????d42p2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
5
??	??p`0P??x??????????? ?????0?@?P?p??????????0?P?p??????????0?P?p????????????
?????@
?@
?????@

A
????FA
UA
"B
5B
?B
?B
?C
?C
D
 D
?D
?D
gE
	|E
CF

VF
?F
?F
?G
?G
(H

4H
?H
I
|I
?I
HJ
[J
?J
?J
?K
?K
3L
?L
M
M
?M
?M
ZN
mN
?N
?N
?O
?O
.P
:P
?P
	Q
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
U
??	??p`0P????????? ?0?@?P?????`?p?????????? ?@?`?????????? ?@?`??????????? ?0?@?PQ
?????Q
?Q
R
JR
SR
`R
?R
?R
????@S
?S
pT
?T
	U
U
?U
?U
bV
	nV
)W

?
 Q?
??
!??
??
"??
?
#!?
??
$??
c?
%s?
4?
&G?
??
'??
??
(??
??
)??
??
?
1?
????d4?p6??????@??
????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2PA0x$,h%(4VL??
??p`P??2????P`?????0Pp????0Pp????0Pp???@?
??????
??
?
)?
?>?>?>????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?	.4???
?p`P???R????P`p???????????????	?
???? 
0@P`p????0Pp????0Pp??$??p?????/@_@?@?@?@?@A7A?????A?AB;BDBQB?B?B?????C?C	.D
bDkD
xD	?D?D????(E]E
?EF?F?FlGGHH?H?HfIzI>JQJ?J?J?K?K$L8L?LM?M?M[NnN?N?N?O?OAPUPQ (Q?Q!?Q}R"?R$T#,TxT$?T&U
U3U_UiU
sU}U????/!470p`P??hr??????U????
V?V????dT42pBB
?6???????@[?????[?[????
?6????????[?????[\????2P	"6???????@\????V\u\????B
?6?	???? ?]????+^7^????44
?6?0	???? ?a?????a?a????
?6?X	????  ?b?????b?b????02P	"6??	????0 ?c?????c?c????
?6??	????P ?d?????d?d????2P	"6??	????` ?e?????ef????t
d4B

4
2p!`j?j6*!$$????
dT`j?j6*"p02P	"6??	????? @l????Vlul????

2P6? 
4	R?p`6? 
?6*? 8?????????l?????l?l????? ? 2P"6?H
????? ?l?????lm????4b

4
2p

2P6?p
d4
rp6?p
`7*? 8?????????o?????op????? ? B

2P6??
4	R?p`6??
?7*!8????????`p?????p?p????!
!

2P6??
d
4rp6??
x8* !8?????????p?????p
q???? !-!?2P"6??
????@!@q????Vquq????!?q?q49*!td

T	4?q?q49*B??!Prnrp9*!?t
T4Prnrp9*`b	"6?????`!p!?!?s?????s?s?s????d
4	
Rp6?8?????!?!?!t???? tHtmt????B??R0td
T	42???2P"6?`?????!?x?????x?x????!?x?x?:*!4?x?x?:*Rp2020R0

RP6??t
d4
r?6??;*?!H?????????z?????z{?????!?!

2P6??4	R?p`6???;*"8????????p{?????{?{????"
"20

RP6??t
d4
r?6??,<* "H????????|????r|?|???? "-"20B20?Bd
T	4Rp2P4#t8464P????????"@"P"`"p"?"?"?"???????F?n?w?????ƀ????4Rp`P6???????"?"#@?????v?????ҁ????202P2P4
Rp6??????#????0# ?????v?????????ς????20

4	
RpB

4	
Rpd
4	
Rp6??????P#`#Є???????????

RP6??(
(d 4r??
??p6???>*p#H????????P?????υ??????p#}#20204Rp`P6? 
?????#?#??????Ɔކ?????2P2P8
?
??	??p`0P??H
??????#?#?#?#?????#$$ $ $0$	@$@$P$`$p$?$?$?$?$?$?$%0%@%@%P%`%p%?%?%?%???????·??3?????d
4	Rp6?8-????@9?>????d	4Rp6?`-????`90?????d
4	Rp6??-?????9??????d	4Rp6??-?????9 @????d
4	Rp6??-?????9?@????d	4Rp6?.?????9A????d
4	Rp6?(.????:B????d	4Rp6?P.???? :pB????d
4	Rp6?x.????@:C????d	4Rp6??.????`:`C????d
4	Rp6??.?????:?C????d	4Rp6??.?????:pD????d
4	Rp6?/?????:?????: E????d	4Rp6?@/????;???? ;?E????d
4	Rp6?h/????@;????`;`F????d	4Rp6??/?????;?????;?F????d
4	Rp6??/?????;?????;?G????d	4Rp6??/????<???? < H????d
4	Rp6?0????@<?H????d	4Rp6?00????`<@I????2P(d4?p??X0B?????<?<?I????J!J2P(d4?p???0B?????<?<?J?????J?J4	
Rp6??0????==0=P=p=?=?=?K?????K?K?K?K?KkLxL????4	
Rp6??0?????=?=> >@>`>?>?L????M'M;MOMcMwM?M?M????

4
2p?
R06??0?????>?>?>?>?pO?????O?O?O?O?O????4	
Rp6? 1???? ?0?@?`????O????%P3PGP[PoP????

4
2p	"6?H1????????????@ Q????UQ?Q?Q	RFRlR????
R06?p1???? @0@@@?R?????R?R?R????4	
Rp6??1????`@p@?@?R????SS$S????

4
2p2P2P2P2P2P
R06??1?????@?@APA?A?A?AB0B?S?????S?S?S?S?ST4TQTnT????""d
T4
rp6??1????PBpB?B?B?T?????U?UVV????dT4
2????p	"6?2?????B?B?[????$\O\U\????4	
Rp6?82?????BC`\?????\?\?\????

4
2p,4	p??`2?????C?\????l]z]????
?6??2???? C@b?????b?b????
?6??2????0C?b????1c=c????
?6??2????@C?c?????c?c????
?6?3????PCpd?????d?d????
?6?(3????`C e????neze????
?6?P3????pC?e????f*f????
?6?x3?????C?f?????f?f????
?6??3?????C0g????g?g????
?6??3?????C?g????/h;h????
?6??3?????C?h?????h?h????
?6?4?????C@i?????i?i????
?6?@4?????C?i????>jJj????
?6?h4?????C?j?????j?j????
?6??4?????C?k?????k?k????
?6??4????D?l????>mJm????2020d42p2020202020d42p202020202020202020

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2pr06??4????D0z?????z?z????r06?5???? D?z????
{{????2020202020202020202020!)@u*!?
td)@u*

4	
2P20202020202020!??	??u*!?
td??	??u*

4	
2P
?6?05????0D`?????????????20R06?X5????@D??????2P	"6??5????PDp?????????????2P	"6??5????pDЇ??????????2P	"6??5?????D ?????6?q?????2P	"6??5?????D??????????????2P	"6? 6?????D??????ֈ??????2P	"6?H6?????D???????%?????2P	"6?p6????E0?????F?^?????20

4
2p2P"6??6????0E??????!?????2P"6??6????PE0?????F?Q?????2P"6??6????pEp?????????????2P"6?7?????E??????Ƌ?????2P"6?87?????E????????????2P"6?`7?????E0?????F?Q?????2P"6??7?????Ep?????????????2P"6??7????FЌ??????????2P"6??7????0F?????&?>?????2P"6?8????PFP?????f?p?????2P"6?(8????pF??????????????2P"6?P8?????FЍ???????????2P	b6?x8?????F?????*?;?????2P	"6??8?????FP?????f???????202P
b6??8?????F?????????????2P"6??8????G?????&?A?????
?6?9????0G????????
?????202P	"6?@9????@G`?????v???????2P"6?h9????`GА??????????
?6??9?????Gp???????ˑ????d
4	
Rp6??9?????G?G?G?????????z?????4	
Rp6??9?????G?G?G????????&?????

4
2pd
4	
Rp6?:????H H0H?????????z?????4	
Rp6?0:????PH`HpH????????&?????

4
2p4#ti4hdP??X:?????H?H?H?H?Hp????????2?a?|?????^?șҙ????
R06??:?????H?HIP?????z??????????4	
Rp6??:???? I0I@I?????8?F?Z???????2020?

4
2p

4
2p20

4
2p

4
2p

4
2p20

4
2p20

4
2p

4
2p

4
2p20

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2p

4
2pr06??:????`I????????????r06??:????pI@?????????????20d42p20d42p20d42p20d42p20d42p20B20d42p2020d42p20d42p20d42p20202020202020!`??`?*!t`??`?*204	Rp6?0;?????I??????

4
2pd42p2P	"6?X;?????I@?????V???????2P	b6??;?????I??????+?????2P"6??;?????I@?????V?a?????2P"6??;?????I??????????????2P"6??;????J??????ֺ??????2P"6? <????0J?????? ?????2P"6?H<????PJ@?????V?a?????2P"6?p<????pJp?????????????2P	"6??<?????J??????ƻ?????2P"6??<?????J??????A?????2P"6??<?????JP?????f?q?????2P"6?=?????J??????????????2P"6?8=????Kм??????????2P"6?`=????0K??????5?????2P"6??=????PKP?????f?~?????20

4
2p2P
b6??=????pK`?????z???????2P"6??=?????K????????վ????2P	b6?>?????K????????????

2P6?(>4	R?p`6?(>?*?K8????????@?????c????????K?K2P
b6?P>?????K????????ݿ????

4
2p2P	"6?x>????L`?????v???????2P"6??>????0L?????????????

4
2p	"6??>????PL`LpLp???????0?????????2P
R06??>?????L????????B
R06???????L?LP?????c???????2P4	
Rp6?@?????M0M@M????????%?o???????

4
2p?06???????PM???????? ?????20
R06???????`M?M??????????????2P4	
Rp6?@?????M?M?M?????A?g?????????

4
2p20
R06?p@?????MN ?????6??????20
R06??@????0NPN?????????????2P
R06??@????pN?N?N ?????Y????????20204	
Rp6?@A?????N?N?N@?????v?????????

4
2p	"6?xA?????NOO0OPOpO?O?O?O ?????T??????6?s???????????4	
Rp6??A?????OPP0PPPpP?P?P?P????????&?:?N?b?v?????????

4
2p20202020!?????*!4?????*dT2p!???*!4???*dT2p!????P?*!4????P?*dT2p! ?A???*!4 ?A???*dT2p!??????*!t??????*20! ?a??*!d ?a??*T42pd42p! ?A?,?*!

?d ?A?,?*T	42p!P?q?d?*!

?dP?q?d?*T	42p

2P6??A4Rp6??A??*?P8?????????????3?d??????P?P

2P6??A4Rp6??A0?*Q8??????????????????????QQ

2P6?B4Rp6?B??*0Q8???????????????F?????0Q=Q

2P6?@B4	R?p`6?@B0????4	
Rp6?PO?????[\\0\P\p\?\?\?\1?????1?1?1?12^2?2?2?2????d
4	
Rp6??O?????\]?2????383????4	
Rp6??O????] ]0]@]P]p3?????3?3?3?3?3????d
4	
Rp6??O????p]?]?]?]?]4????04j4?4?4?4????	"6? P?????] 5????
R06?HP?????]P5????
R06?pP?????]?5????

4
2p
R06??P????^^0^P^p^?^06????L6?6?6?67Z7a7????d
4	
Rp6?Q?????^?^?^_ _@_p7?????7?7?7?7?7888????

4
2p!?8?8ĸ*!t?8?8ĸ*

4
2`<+t9'd8#472??P??0Q?????`_p_?_?_?????_?_?_?_9?????9:8:b:k:u:?:?:????N;v;?;?;?;?;<(<????2P
r06??Q?????_ =????q=2P
r06? R????`?=?????=2Pr06?HR????@`>????I>2P
R06?pR????p``>?????>2Pr06??R?????`?>????	?2P
R06??R?????` ?????b?2PR06??R????a????????8	't6#d5442P??S?????0a@aPa`a??????9@a@?@?@?@?@?@A????!pA?AԻ*!d	pA?AԻ*!d	pA?AԻ*

4

Rp

RP6?8S##t
d4r?6?8S ?*paH?????????B????LClC????pa}a!?C?C??*!d	?C?C??*!d	?C?C??*

4

Rp!?D?D?*!d	?D?D?*!d	?D?D?*

4

Rp!?E?Eh?*!T
4	?E?Eh?*!uF|F@?*!4	uF|F@?*!T
?E?Eh?*!T
?E?Eh?*

d
Rp

4	
Rp! InI??*!d	 InI??*!d	 InI??*

4

Rp!pJ?J8?*!T
4	pJ?J8?*!KK?*!4	KK?*!T
pJ?J8?*!T
pJ?J8?*

d
Rp

4	
Rp

RP6?`S##t
d4r?6?`S??*?aH?????????M????gN?N?????a?a20! ORO?*!t ORO?*T42`

R0R0??!pP?P??*!d
T	pP?P??*!d
T	pP?P??*!T	pP?P??*

4
Rp2P2P4
Rp6??S?????a?????aR?????R?R?????RS????20

RP6??S##t
d4r?6??S-x0)h1e?
??	?p`0P???f????? ?0?@?P?????`?p?????????????	??
Ђ????????
?????? ?0?@?P?????`?p???????????????????Ѓ??P?????*?R??????????????????????%?.?;?j????????C?	z?
????
??	???????????
???&?3?
b?????????#?V???????????????????????L?l???????
?????B?V????C???=?G?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(42(?
???p`P??@h2????????0?P?p?????Є???0?P?p?????Ѕ???0?P?p?????І??? ???????h???????U?i?,???????????
??????d?	t?7?
J??????????
?????l?|?-h$K
??	??p`0P??ph2????0?@?P?`?????p???????????????	Ї
?????????
? ?????0?????@?????P?????`?????p?????????????m????????????1?????????????!?A?a?????????	??
%?.?
8?	X?x?????????
?A?J?T?
t???????????????Rb??????????BR???????????????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P6(4.$?
???p`P???h??????????Ј???0?P?p?????Љ???0?P?p?????Њ???0?P????????`p4G????)?	z		?	G

Z
?
?
??0
<

?
?
bu????KW%??)]?????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P?
.tU*dS&4RL?
???P?? iR????@?P?`?p???????????????? ?@?`?????????? ?@?`?????????? ????????5U?????J.????	 ?
?ht8M?
??? ??fr6K??? ? !!?!?!g"s"B#W#?#?#?%?%????=,4g^?
???p`P??0j?????0?@?P?`?????p???????????????	Ў
?????????
? ?????0?@?P?`?@&?????&?&':'C'M'm'?'?????'(1([(d(n(?(?(????4)^)	?)
?)?)
?)	?)*????m*?*
?*?*?*+
"+D+?????+?+,-,6,C,c,?,????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4VL?
???p`P???jR????p???????????????Џ???0?P?p?????А??0?P?p?????Б??0?P?p???-?????-?-?-...?._.?????.?0?1?1*2:233?3	?3Y4
l4?4?4?5?5:6
J67#7?7?7`8s8?8?8?9?98:H:;;?;?;[<n<?<?<?=?=9>I>c?v?????U@?@????=,4<2?
???p`P??k???????????В?@????FAmA?A?A?A?A?AB????

4
2p	"6?8k?????????D?????D?D8E????4#t8474P??`k????? ?0?@?`?p???????????	Г????
??F????_G?G?G	H-HXH?H?H?H?H?HAIeI?I	?I
?I	?I?IJyJ?J?J
?J?J
K'KGKlK????2P2P2P2P2P2P2P2P2P2P:,4+"???
?p`P??l
???? ?0?@?`?????????? ?@?`????K????LNLM0M?M?M?N?NO!O?O?OePuP5QHQ?Q	?Q?R
?R
S!SUS]S?S?S????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P<+4UL?
???p`P??PlR????????????Е??0?P?p?????Ж??0?P?p?????З??0?P?p???T?????T?T?T1UBU7VWW?W?WiX|X?X?X?Y?Y=Z	MZ
[
 [?[?[^\q\?\
?\?]?].^:^?^_s__>`Q`?`?`?a?abb?b?bTcdcd1d?d?d?deLexe????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P;-4/$??
??	p`P???l????????????? ?@?`?????????? ?@?`?????????? ?@??e?????f?f?g?g5hEh	ii?i?i`jsj?j?j?k?k:l	Jl
m
 m?m?m_nrn?n
?n?o?o4pDpqq?q?qdrwr?r?r?s?sBtNt?t?t?t?t????+
+?#'t"#d!4 ??P6??l????P?`?@u????v{vxx?????!
!?xh
4
?pBd
4	
Rp6? m????p????{?????{|????8	'h#t:496P??Hm???????Л??? ?0?@?P?`?p?
??????p|????W}l}?}?}?}'~0~:~_~~?~	3]	fp??I?
m?????
ʀԀ??
??>?>?>??@?o?????]@-EKE>FHFBH????	"6?w?????? ?0?P?p?????н?	?
0?P?p?
????о?H?????H?H
II\I?I?IJPJ?J	?J
KDK?K
?K?K8L?L????202P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t-'d,#4+$?
???P??0w???????0?P?p?????п??0?P?p???????pM?????N?N?O?O9PIPQ#Q?Q?QiR|R?RS?S?SLT	\TU
2U?U?UuV?V?V
W?W?WHXXX?X?X????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t3'd2#41*?
???P??pwB????????? ?@?`?????????? ?@?`?????????? ?@?`???????PY????o[~[L\_\?\]?]?]G^S^_!_?_?_\`o`?`	?`?a
?a5bEbcc?c
?c^dqd?d?d?e?e;fKfg(g?g?grh?h?hi?i?iCjVj[k?k????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P9
+t1'd0#4/(?
???P???w:???????????0?P?p??????????0?P?p??????????0?P?p??????k????"n=noo?o?ovp?pqq?q?qRr^rs0s?s	?sst
?t?tu?u?uLv
\v#w6w?w?w?x?xyy?y?y`zpz:{M{?{?{?|?|}#}?~%????2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P2P5
S
??	??p`0P???w??????????????????? ?@?`?????????? ?@?`?????????? ?@?`???????????"?F?q?z?????ǀ????[?j?9?L?Ԅ?????.?	>???

?~???F?Y?ʈ
ֈ????!?5????????X?k?ߌ???эB?R??%?????k???????1?????N=?[5?\0x],h^??
??	?p`0P??px????????????????????????? ?0?@?	P?
`?p?????????????????A?u????????????+?a?????P?????	?
(?^???
????Y???????4???ٚ̚
?	??
??'?4?A?N?????D3?.x*h=?
??	?p`0P???x????????????????? ?0?@?????P?`?	p?
??????????
?????????????????????A?i???????˜??????o??????????D???????Ğ	?
? ?
*?	L?q???????&?
O?y?????
??Ӡ????$?L?u???????ԡ??????B

4
2p20R06?('?????\?????y???????R06?P'?????Ȱ?????"?????d42p
t	dT42?B2P	4
r?p`d??8?(?8?2Pb?p`0d?{???i?2P20d?ߴE???B20B2PR??
p`0d??M???2Pd
4R??pd???????20?t
T	42???2P2Pt
d	4R?d?ú?????????;?d42p

4
2p

4
2p2P	Bd?????`???

4
2pPA+ A+HA+?,?????(?,????????A+?A+HA+8?,??????Ʀ?A+B+HA+??,???????H+dh+??Q+?k+ ??P+~o+???L+??+???Q+N?+???G+??+???C+
?+???E+??+???B+.?+??+??+?+?+.?+J?+h?+|?+??+??+??+ؼ+?+??+?+޻+?+`?+??+?+?+X?+??+??+??+4?+`?+z?+??+?+?+(?+D?+??+¯+??+D?+??+԰+?+b?+??+ʱ+?+L?+??+ڲ+(?+j?+??+³+?+B?+x?+?+?+X?+??+?+ ?+V?+??+?+4?+x?+??+?+?+??+֨+??+b?+??+?+,?+j?+??+̪+?+6?+x?+??+??+D?+L?+V?+\?+f?+??+??+Ĺ+̹+Թ+޹+?+??+?+?+?+&?+0?+8?+B?+N?+X?+b?+j?+r?+z?+??+??+??+Ժ+?+??+?+?+?+$?+:?+.?+$?+?+?+?+ܸ+??+??+??+??+n?+J?+.?+?+Ƹ+??+??+n?+\?+N?+>?+0?+f?+??+??+??+֥+?+??+?+*?+D?+`?+z?+??+??+??+Φ+?+??+?+$?+6?+N?+j?+|?+??+??+??+Χ+ڧ+?+?+?+,?+>?+R?+h?+??+??+|?+:`+?_+?_+?_+X_+6_+_+_+?^+?^+?^+?^+n^+F^+^+?]+?]+?]+?]+P]+&]+?\+?\+?\+|\+T\+2\+\+?[+?[+?[+t[+T[+ [+?Z+?Z+VZ+*Z+
Z+rY+j`+dX+6X+X+?W+?W+?W+?W+zW+nW+\W+RW+HW+W+W+?V+?V+?V+jV+NV+4V+V+?U+?U+?U+zU+FU+U+?T+?T+?T+?T+S+$T+T+?S+?S+?S+|S+XS+.S+?`+?`+$a+ba+?a+?a+b+Pb+?b+?b+?b+.c+dc+?c+?c+?c+,d+^d+?d+?d+?d+e+Le+ze+?e+?e+?e+`f+?f+?f+?f+g+0g+\g+?g+?g+
h+Fh+?X+?+?o+?o+?o+p+*p+?p+q+>q+bq+?q+?q+r+tr+?r+s+8s+?s+?s+?s+Lt+lt+?t+u+?u+?u+v+Bv+?v+Xw+?w+?w+2x+`x+?x+?x+ y+By+?y+?y+z+Bz+hz+?z+?z+??+@?+?+??+z?+>?+?+ؑ+??+??+x?+8?+??+Ώ+??+??+X?+(?+??+Ѝ+Č+??+n?+F?+?+?+T?+?+?+??+8?+?+??+x?+0?+??+h?+(?+?+b?+.?+܅+??+?+?+??+n?+@?+?+ƃ+??+d?+8?+??+Ȃ+??+N?+?+??+́+??+??+\?+>?+:?+8+?~+?~+?~+|~+~+?}+?}+|}+X}+,}+?|+l|+4|+|+?{+?{+?{+b{+?z+?augAssignMultiply@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAVMat@2@@Z=?augAssignDivide@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAVMat@2@@Z<?augAssignAnd@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAVMat@2@@Z??augAssignOr@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAVMat@2@@ZA?augAssignXor@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAVMat@2@@Z
?add@MatOp@cv@@UEBAXAEBVMatExpr@2@AEBV?$Scalar_@N@2@AEAV32@@Z	?add@MatOp@cv@@UEBAXAEBVMatExpr@2@0AEAV32@@Z??subtract@MatOp@cv@@UEBAXAEBV?$Scalar_@N@2@AEBVMatExpr@2@AEAV42@@Z??subtract@MatOp@cv@@UEBAXAEBVMatExpr@2@0AEAV32@@Z??multiply@MatOp@cv@@UEBAXAEBVMatExpr@2@NAEAV32@@Z??multiply@MatOp@cv@@UEBAXAEBVMatExpr@2@0AEAV32@N@Z??divide@MatOp@cv@@UEBAXNAEBVMatExpr@2@AEAV32@@Z??divide@MatOp@cv@@UEBAXAEBVMatExpr@2@0AEAV32@N@Z?abs@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAV32@@Z??transpose@MatOp@cv@@UEBAXAEBVMatExpr@2@AEAV32@@Z??matmul@MatOp@cv@@UEBAXAEBVMatExpr@2@0AEAV32@@Z??invert@MatOp@cv@@UEBAXAEBVMatExpr@2@HAEAV32@@Z??size@MatOp@cv@@UEBA?AV?$Size_@H@2@AEBVMatExpr@2@@Z??type@MatOp@cv@@UEBAHAEBVMatExpr@2@@Z??create@SparseMat@cv@@QEAAXHPEBHH@Z1??0SparseMatConstIterator@cv@@QEAA@PEBVSparseMat@1@@Z???ESparseMatConstIterator@cv@@QEAAAEAV01@XZ??normHamming@cv@@YAHPEBE0H@Zx??1CvOpenGlFuncTab@@UEAA@XZ??delete_obj@?$Ptr@UCvFileStorage@@@cv@@QEAAXXZ?readRaw@FileNodeIterator@cv@@QEAAAEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAE_K@Z???0Mat@cv@@QEAA@AEBV01@AEBV?$Rect_@H@1@@Z???0Mat@cv@@QEAA@AEBV01@PEBVRange@1@@Z???RSVD@cv@@QEAAAEAV01@AEBV_InputArray@1@H@Z,??0SparseMat@cv@@QEAA@AEBVMat@1@@Z??copyTo@SparseMat@cv@@QEBAXAEAV12@@Z??convertTo@SparseMat@cv@@QEBAXAEAV12@HN@Z??open@FileStorage@cv@@UEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H0@Z??isOpened@FileStorage@cv@@UEBA_NXZ%?release@FileStorage@cv@@UEAAXXZ??transpose@cv@@YAXAEBV_InputArray@1@AEBV_OutputArray@1@@Z??diag@Mat@cv@@QEBA?AV12@H@Zopencv_core246.dll	?invertAffineTransform@cv@@YAXAEBV_InputArray@1@AEBV_OutputArray@1@@Z??getStructuringElement@cv@@YA?AVMat@1@HV?$Size_@H@1@V?$Point_@H@1@@Z??getDerivKernels@cv@@YAXAEBV_OutputArray@1@0HHH_NH@Z??getGaussianKernel@cv@@YA?AVMat@1@HNH@Z?cvPointSeqFromMat???0Moments@cv@@QEAA@AEBUCvMoments@@@Z??1BaseRowFilter@cv@@UEAA@XZK?reset@BaseColumnFilter@cv@@UEAAXXZ??1BaseColumnFilter@cv@@UEAA@XZ??1BaseFilter@cv@@UEAA@XZ"??1FilterEngine@cv@@UEAA@XZ%??1GeneralizedHough@cv@@UEAA@XZL?reset@BaseFilter@cv@@UEAAXXZ^?start@FilterEngine@cv@@UEAAHAEBVMat@2@AEBV?$Rect_@H@2@_NH@Z_?start@FilterEngine@cv@@UEAAHV?$Size_@H@2@V?$Rect_@H@2@H@Z/?proceed@FilterEngine@cv@@UEAAHPEBEHHPEAEH@Z\?apply@FilterEngine@cv@@UEAAXAEBVMat@2@AEAV32@AEBV?$Rect_@H@2@V?$Point_@H@2@_N@Zopencv_imgproc246.dll{??1IndexParams@flann@cv@@QEAA@XZ4??0KDTreeIndexParams@flann@cv@@QEAA@H@Z"??0CompositeIndexParams@flann@cv@@QEAA@HHHW4flann_centers_init_t@cvflann@@M@Z ??0AutotunedIndexParams@flann@cv@@QEAA@MMMM@Z.??0HierarchicalClusteringIndexParams@flann@cv@@QEAA@HW4flann_centers_init_t@cvflann@@HH@Z5??0KMeansIndexParams@flann@cv@@QEAA@HHW4flann_centers_init_t@cvflann@@M@Zb??0SearchParams@flann@cv@@QEAA@HM_N@Z0?build@Index@flann@cv@@UEAAXAEBV_InputArray@3@AEBUIndexParams@23@W4flann_distance_t@cvflann@@@Zf?knnSearch@Index@flann@cv@@UEAAXAEBV_InputArray@3@AEBV_OutputArray@3@1HAEBUSearchParams@23@@Zw?radiusSearch@Index@flann@cv@@UEAAHAEBV_InputArray@3@AEBV_OutputArray@3@1NHAEBUSearchParams@23@@Z??save@Index@flann@cv@@UEBAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Zg?load@Index@flann@cv@@UEAA_NAEBV_InputArray@3@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Zz?release@Index@flann@cv@@UEAAXXZz??1Index@flann@cv@@UEAA@XZopencv_flann246.dll}?empty@FeatureDetector@cv@@UEBA_NXZ"??1FeatureDetector@cv@@UEAA@XZz?empty@DescriptorExtractor@cv@@UEBA_NXZ??1DescriptorExtractor@cv@@UEAA@XZ[?detectImpl@BRISK@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z8??RBRISK@cv@@UEBAXAEBV_InputArray@1@0AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEBV_OutputArray@1@_N@ZN?descriptorSize@BRISK@cv@@UEBAHXZT?descriptorType@BRISK@cv@@UEBAHXZ?computeImpl@BRISK@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV32@@Ze??0BRISK@cv@@QEAA@HHM@Z??1BRISK@cv@@UEAA@XZc?detectImpl@ORB@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z@??RORB@cv@@UEBAXAEBV_InputArray@1@0AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEBV_OutputArray@1@_N@ZQ?descriptorSize@ORB@cv@@UEBAHXZW?descriptorType@ORB@cv@@UEBAHXZ!?computeImpl@ORB@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV32@@Z???0ORB@cv@@QEAA@HMHHHHHH@Z??1FREAK@cv@@UEAA@XZb?detectImpl@MSER@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z???0MSER@cv@@QEAA@HHHNNHNNH@Zg?detectImpl@StarDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z???0StarDetector@cv@@QEAA@HHHHH@Z_?detectImpl@FastFeatureDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z???0FastFeatureDetector@cv@@QEAA@H_N@Z`?detectImpl@GFTTDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z???0GFTTDetector@cv@@QEAA@HNNH_NN@Ze?detectImpl@SimpleBlobDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z??findBlobs@SimpleBlobDetector@cv@@MEBAXAEBVMat@2@0AEAV?$vector@UCenter@SimpleBlobDetector@cv@@V?$allocator@UCenter@SimpleBlobDetector@cv@@@std@@@std@@@Z???0SimpleBlobDetector@cv@@QEAA@AEBUParams@01@@Z???0Params@SimpleBlobDetector@cv@@QEAA@XZ\?detectImpl@DenseFeatureDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z{??0DenseFeatureDetector@cv@@QEAA@MHMHH_N0@Z^?detectImpl@FastAdjuster@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z8?tooFew@FastAdjuster@cv@@UEAAXHH@Z;?tooMany@FastAdjuster@cv@@UEAAXHH@Z??good@FastAdjuster@cv@@UEBA_NXZ?clone@FastAdjuster@cv@@UEBA?AV?$Ptr@VAdjusterAdapter@cv@@@2@XZ???0FastAdjuster@cv@@QEAA@H_NHH@Zf?detectImpl@StarAdjuster@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z9?tooFew@StarAdjuster@cv@@UEAAXHH@Z<?tooMany@StarAdjuster@cv@@UEAAXHH@Z??good@StarAdjuster@cv@@UEBA_NXZ?clone@StarAdjuster@cv@@UEBA?AV?$Ptr@VAdjusterAdapter@cv@@@2@XZ???0StarAdjuster@cv@@QEAA@NNN@Zh?detectImpl@SurfAdjuster@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z:?tooFew@SurfAdjuster@cv@@UEAAXHH@Z=?tooMany@SurfAdjuster@cv@@UEAAXHH@Z??good@SurfAdjuster@cv@@UEBA_NXZ?clone@SurfAdjuster@cv@@UEBA?AV?$Ptr@VAdjusterAdapter@cv@@@2@XZ???0SurfAdjuster@cv@@QEAA@NNN@ZO?descriptorSize@BriefDescriptorExtractor@cv@@UEBAHXZU?descriptorType@BriefDescriptorExtractor@cv@@UEBAHXZ?computeImpl@BriefDescriptorExtractor@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV32@@Zj??0BriefDescriptorExtractor@cv@@QEAA@H@Z??1DescriptorMatcher@cv@@UEAA@XZN?write@DescriptorMatcher@cv@@UEBAXAEAVFileStorage@2@@Z??read@DescriptorMatcher@cv@@UEAAXAEBVFileNode@2@@Z??info@BFMatcher@cv@@UEBAPEAVAlgorithmInfo@2@XZ??add@DescriptorMatcher@cv@@UEAAXAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@@Z?clear@DescriptorMatcher@cv@@UEAAXXZ{?empty@DescriptorMatcher@cv@@UEBA_NXZ??train@DescriptorMatcher@cv@@UEAAXXZ?clone@BFMatcher@cv@@UEBA?AV?$Ptr@VDescriptorMatcher@cv@@@2@_N@Z??knnMatchImpl@BFMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@HAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Z??radiusMatchImpl@BFMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@MAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Z\??0BFMatcher@cv@@QEAA@H_N@Z'??1GenericDescriptorMatcher@cv@@UEAA@XZE??1VectorDescriptorMatcher@cv@@UEAA@XZ??1BOWTrainer@cv@@UEAA@XZ??1BOWKMeansTrainer@cv@@UEAA@XZ??1BOWImgDescriptorExtractor@cv@@UEAA@XZ??info@GFTTDetector@cv@@UEBAPEAVAlgorithmInfo@2@XZ??info@BriefDescriptorExtractor@cv@@UEBAPEAVAlgorithmInfo@2@XZS?write@SimpleBlobDetector@cv@@UEBAXAEAVFileStorage@2@@Z??info@StarDetector@cv@@UEBAPEAVAlgorithmInfo@2@XZ??info@DenseFeatureDetector@cv@@UEBAPEAVAlgorithmInfo@2@XZ??info@ORB@cv@@UEBAPEAVAlgorithmInfo@2@XZ?read@SimpleBlobDetector@cv@@UEAAXAEBVFileNode@2@@Z??info@MSER@cv@@UEBAPEAVAlgorithmInfo@2@XZ??info@SimpleBlobDetector@cv@@MEBAPEAVAlgorithmInfo@2@XZM?write@BriefDescriptorExtractor@cv@@UEBAXAEAVFileStorage@2@@Z??info@BRISK@cv@@UEBAPEAVAlgorithmInfo@2@XZ??info@FastFeatureDetector@cv@@UEBAPEAVAlgorithmInfo@2@XZ??read@BriefDescriptorExtractor@cv@@UEAAXAEBVFileNode@2@@Z??empty@GridAdaptedFeatureDetector@cv@@UEBA_NXZa?detectImpl@GridAdaptedFeatureDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z??info@GridAdaptedFeatureDetector@cv@@UEBAPEAVAlgorithmInfo@2@XZ???0GridAdaptedFeatureDetector@cv@@QEAA@AEBV?$Ptr@VFeatureDetector@cv@@@1@HHH@Z??empty@PyramidAdaptedFeatureDetector@cv@@UEBA_NXZd?detectImpl@PyramidAdaptedFeatureDetector@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@ZR?descriptorSize@OpponentColorDescriptorExtractor@cv@@UEBAHXZX?descriptorType@OpponentColorDescriptorExtractor@cv@@UEBAHXZ??empty@OpponentColorDescriptorExtractor@cv@@UEBA_NXZ"?computeImpl@OpponentColorDescriptorExtractor@cv@@MEBAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV32@@ZQ?write@OpponentColorDescriptorExtractor@cv@@UEBAXAEAVFileStorage@2@@Z??read@OpponentColorDescriptorExtractor@cv@@UEAAXAEBVFileNode@2@@Z???0FREAK@cv@@QEAA@_N0MHAEBV?$vector@HV?$allocator@H@std@@@std@@@Z??1DescriptorCollection@DescriptorMatcher@cv@@UEAA@XZ???0FlannBasedMatcher@cv@@QEAA@AEBV?$Ptr@UIndexParams@flann@cv@@@1@AEBV?$Ptr@USearchParams@flann@cv@@@1@@Z|??0DescriptorCollection@DescriptorMatcher@cv@@QEAA@AEBV012@@ZO?write@FlannBasedMatcher@cv@@UEBAXAEAVFileStorage@2@@Z??read@FlannBasedMatcher@cv@@UEAAXAEBVFileNode@2@@Z??info@FlannBasedMatcher@cv@@UEBAPEAVAlgorithmInfo@2@XZ??add@FlannBasedMatcher@cv@@UEAAXAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@@Z?clear@FlannBasedMatcher@cv@@UEAAXXZ??isMaskSupported@FlannBasedMatcher@cv@@UEBA_NXZ@?train@FlannBasedMatcher@cv@@UEAAXXZ
?clone@FlannBasedMatcher@cv@@UEBA?AV?$Ptr@VDescriptorMatcher@cv@@@2@_N@Z??knnMatchImpl@FlannBasedMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@HAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Z??radiusMatchImpl@FlannBasedMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@MAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Z?clear@BOWTrainer@cv@@UEAAXXZ?cluster@BOWKMeansTrainer@cv@@UEBA?AVMat@2@AEBV32@@Z?cluster@BOWKMeansTrainer@cv@@UEBA?AVMat@2@XZ???0KeyPointCollection@GenericDescriptorMatcher@cv@@QEAA@AEBV012@@Z??add@GenericDescriptorMatcher@cv@@UEAAXAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@AEAV?$vector@V?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@V?$allocator@V?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@@2@@4@@Z?clear@GenericDescriptorMatcher@cv@@UEAAXXZA?train@GenericDescriptorMatcher@cv@@UEAAXXZ??read@GenericDescriptorMatcher@cv@@UEAAXAEBVFileNode@2@@ZP?write@GenericDescriptorMatcher@cv@@UEBAXAEAVFileStorage@2@@Z?empty@GenericDescriptorMatcher@cv@@UEBA_NXZ??add@VectorDescriptorMatcher@cv@@UEAAXAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@AEAV?$vector@V?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@V?$allocator@V?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@@2@@4@@Z
?clear@VectorDescriptorMatcher@cv@@UEAAXXZ??isMaskSupported@VectorDescriptorMatcher@cv@@UEAA_NXZB?train@VectorDescriptorMatcher@cv@@UEAAXXZ?read@VectorDescriptorMatcher@cv@@UEAAXAEBVFileNode@2@@ZT?write@VectorDescriptorMatcher@cv@@UEBAXAEAVFileStorage@2@@Z??empty@VectorDescriptorMatcher@cv@@UEBA_NXZ?clone@VectorDescriptorMatcher@cv@@UEBA?AV?$Ptr@VGenericDescriptorMatcher@cv@@@2@_N@Z??knnMatchImpl@VectorDescriptorMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@5@HAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Z??radiusMatchImpl@VectorDescriptorMatcher@cv@@MEAAXAEBVMat@2@AEAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@5@MAEBV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@5@_N@Zopencv_features2d246.dll?groupRectangles@cv@@YAXAEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@AEAV?$vector@HV?$allocator@H@std@@@3@HN@Z??groupRectangles@cv@@YAXAEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@HN@Z???1LatentSvmDetector@cv@@UEAA@XZ??read@FeatureEvaluator@cv@@UEAA_NAEBVFileNode@2@@Z%?clone@FeatureEvaluator@cv@@UEBA?AV?$Ptr@VFeatureEvaluator@cv@@@2@XZv?getFeatureType@FeatureEvaluator@cv@@UEBAHXZ??setImage@FeatureEvaluator@cv@@UEAA_NAEBVMat@2@V?$Size_@H@2@@Z??setWindow@FeatureEvaluator@cv@@UEAA_NV?$Point_@H@2@@Z?calcOrd@FeatureEvaluator@cv@@UEBANH@Z?calcCat@FeatureEvaluator@cv@@UEBAHH@Z???1FeatureEvaluator@cv@@UEAA@XZ???1CascadeClassifier@cv@@UEAA@XZ??name@ColorGradient@linemod@cv@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ??read@ColorGradient@linemod@cv@@UEAAXAEBVFileNode@3@@Z??write@ColorGradient@linemod@cv@@UEBAXAEAVFileStorage@3@@Z??processImpl@ColorGradient@linemod@cv@@MEBA?AV?$Ptr@VQuantizedPyramid@linemod@cv@@@3@AEBVMat@3@0@Z??name@DepthNormal@linemod@cv@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ??read@DepthNormal@linemod@cv@@UEAAXAEBVFileNode@3@@Z??write@DepthNormal@linemod@cv@@UEBAXAEAVFileStorage@3@@Z??processImpl@DepthNormal@linemod@cv@@MEBA?AV?$Ptr@VQuantizedPyramid@linemod@cv@@@3@AEBVMat@3@0@Zi??0CascadeClassifier@cv@@QEAA@XZe?empty@CascadeClassifier@cv@@UEBA_NXZ??read@CascadeClassifier@cv@@UEAA_NAEBVFileNode@2@@ZQ?detectMultiScale@CascadeClassifier@cv@@UEAAXAEBVMat@2@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@AEAV?$vector@HV?$allocator@H@std@@@5@AEAV?$vector@NV?$allocator@N@std@@@5@NHHV?$Size_@H@2@4_N@ZR?detectMultiScale@CascadeClassifier@cv@@UEAAXAEBVMat@2@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@NHHV?$Size_@H@2@2@Zz?getOriginalWindowSize@CascadeClassifier@cv@@UEBA?AV?$Size_@H@2@XZW?detectSingleScale@CascadeClassifier@cv@@MEAA_NAEBVMat@2@HV?$Size_@H@2@HHNAEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@AEAV?$vector@HV?$allocator@H@std@@@6@AEAV?$vector@NV?$allocator@N@std@@@6@_N@Z??runAt@CascadeClassifier@cv@@MEAAHAEAV?$Ptr@VFeatureEvaluator@cv@@@2@V?$Point_@H@2@AEAN@Z@?delete_obj@?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAXXZ??setSVMDetector@HOGDescriptor@cv@@UEAAXAEBV_InputArray@2@@Z??read@HOGDescriptor@cv@@UEAA_NAEAVFileNode@2@@Z??write@HOGDescriptor@cv@@UEBAXAEAVFileStorage@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z??load@HOGDescriptor@cv@@UEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z??save@HOGDescriptor@cv@@UEBAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z2?copyTo@HOGDescriptor@cv@@UEBAXAEAU12@@Z+?compute@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV?$vector@MV?$allocator@M@std@@@std@@V?$Size_@H@2@2AEBV?$vector@V?$Point_@H@cv@@V?$allocator@V?$Point_@H@cv@@@std@@@5@@ZO?detect@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV?$vector@V?$Point_@H@cv@@V?$allocator@V?$Point_@H@cv@@@std@@@std@@NV?$Size_@H@2@2AEBV45@@ZN?detect@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV?$vector@V?$Point_@H@cv@@V?$allocator@V?$Point_@H@cv@@@std@@@std@@AEAV?$vector@NV?$allocator@N@std@@@5@NV?$Size_@H@2@3AEBV45@@ZT?detectMultiScale@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@NV?$Size_@H@2@2NN_N@ZS?detectMultiScale@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@AEAV?$vector@NV?$allocator@N@std@@@5@NV?$Size_@H@2@3NN_N@Z,?computeGradient@HOGDescriptor@cv@@UEBAXAEBVMat@2@AEAV32@1V?$Size_@H@2@2@Z#?clear@LatentSvmDetector@cv@@UEAAXXZg?empty@LatentSvmDetector@cv@@UEBA_NXZP?detect@LatentSvmDetector@cv@@UEAAXAEBVMat@2@AEAV?$vector@UObjectDetection@LatentSvmDetector@cv@@V?$allocator@UObjectDetection@LatentSvmDetector@cv@@@std@@@std@@MH@Zopencv_objdetect246.dllOclReleaseMemObjectclCreateBuffer/clEnqueueWriteBuffer(clEnqueueReadBuffer-clEnqueueUnmapMemObject!clEnqueueMapBufferNclReleaseKernelKclReleaseContextJclReleaseCommandQueue)clEnqueueReadBufferRect0clEnqueueWriteBufferRectclEnqueueCopyBufferRect7clGetDeviceInfoclCreateCommandQueueclCreateContextRclRetainCommandQueueSclRetainContextFclGetProgramInfoAclGetKernelWorkGroupInfoPclReleaseProgramclCreateKernelEclGetProgramBuildInfoclCreateProgramWithSourceclBuildProgramclCreateProgramWithBinary3clFlush&clEnqueueNDRangeKernel\clSetKernelArg2clFinishMclReleaseEvent9clGetEventProfilingInfoaclWaitForEventsDclGetPlatformInfo6clGetDeviceIDsCclGetPlatformIDsclEnqueueFillBufferclEnqueueCopyBufferToImageclCreateImage2DclCreateImageOpenCL.dll??_Xlength_error@std@@YAXPEBD@Z??_Xout_of_range@std@@YAXPEBD@ZK?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ??flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ??tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ??good@ios_base@std@@QEBA_NXZS?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ
?uncaught_exception@std@@YA_NXZ??setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z,?width@ios_base@std@@QEAA_J_J@Z??sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z??sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z??flags@ios_base@std@@QEBAHXZ-?width@ios_base@std@@QEBA_JXZQ?_Orphan_all@_Container_base0@std@@QEAAXXZ??max@?$numeric_limits@N@std@@SANXZ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Zk?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z??cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@Ay?_Swap_all@_Container_base0@std@@QEAAXAEAU12@@Z??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z??cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A??_Decref@facet@locale@std@@QEAAPEAV123@XZ??_Getgloballocale@locale@std@@CAPEAV_Locimp@12@XZ??_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ??always_noconv@codecvt_base@std@@QEBA_NXZ???1_Lockit@std@@QEAA@XZ??_Incref@facet@locale@std@@QEAAXXZ??_Getcat@?$codecvt@DDH@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z:??Bid@locale@std@@QEAA_KXZ??id@?$codecvt@DDH@std@@2V0locale@2@A`??0_Lockit@std@@QEAA@H@Z??pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ???1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ&??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ??showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ5?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z8?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z??gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ??getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ??_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z7?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ??_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ
?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ??setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z??sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ,?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z??gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z??pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z??_BADOFF@std@@3_JBY?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZx??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZu??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ
??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ0?in@?$codecvt@DDH@std@@QEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z??setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z??_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ??out@?$codecvt@DDH@std@@QEBAHAEAHPEBD1AEAPEBDPEAD3AEAPEAD@Z?unshift@?$codecvt@DDH@std@@QEBAHAEAHPEAD1AEAPEAD@ZQ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z??tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZu?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z?epsilon@?$numeric_limits@N@std@@SANXZ??max@?$numeric_limits@F@std@@SAFXZMSVCP100.dll(__CxxFrameHandler3]??1exception@std@@UEAA@XZ"??0exception@std@@QEAA@AEBQEBD@Z
?what@exception@std@@UEBAPEBDXZe??3@YAXPEAX@Z?memcpy?memmovec??2@YAPEAX_K@Z_CxxThrowException$??0exception@std@@QEAA@AEBV01@@Z?sqrt?sprintfz??_V@YAXPEAX@Z?memset?_purecall?malloccfree?memcmpIexp?memchr??0bad_cast@std@@QEAA@PEBD@ZY??1bad_cast@std@@UEAA@XZ??0bad_cast@std@@QEAA@AEBV01@@ZPfgetc]fputcungetc?_lock_file\_unlock_fileOfflush?setvbuf?memcpy_snfwriteLfcloseYfopenQfgetpos1_fseeki64jfsetpos?printfafreadkftellifseekl??4exception@std@@QEAAAEAV01@AEBV01@@Z?powf?logMSVCR100.dll?terminate@@YAXXZ__C_specific_handler[_unlockH__dllonexit?_lock?_onexit_malloc_crt?_initterm?_initterm_e?_encoded_null?_amsg_exit__CppXcptFilter??_type_info_dtor_internal_method@type_info@@QEAAXXZF__crt_debugger_hook@__clean_type_info_names_internal?EncodePointer?DecodePointer?Sleep?TerminateProcess?GetCurrentProcess?UnhandledExceptionFilter?SetUnhandledExceptionFilterIsDebuggerPresent&RtlVirtualUnwindRtlLookupFunctionEntryRtlCaptureContext?QueryPerformanceCounter?GetTickCount?GetCurrentThreadId?GetCurrentProcessId?GetSystemTimeAsFileTimeKERNEL32.dll$N?Q?+++h?+?+??+??????P]]?\(?,P,2@]`]p]?yz?]`@DpD? 
?
?
 ???? ^?0^?pP#@`#?b	0d	0q?r??pt??t??r?`pY0rP`0X`r?`Y(
@tut`?s0u?Xg?t?s0??p????b	??pEpF?zp{?E?F?&?0 % -p?p???^?p??c0c@c?z?z?g?c@E`EP{?q?
?
?
`{r?$0{%??@?@???n?]?]@?pp p?????P\?4PKPb??@?p[`??\ ???P(
???o?q ??X?A?A ?0????????????p?p?P????n@n????0????????@?????????p?`? (1???]@op)0? ?`??6@5???O Q??????@????L?	@&??`?`|?'?8`8 88??0???0@ ?0? ?`P?'P?+0,?g?'?,P?0??p)?,?.p??P?p?p?P??p??[?

0? ?P??7`Z???Z06 ??d?H??0? ???``^??????* ?P??)0* *??021?@4???мн?????????R?F?D?b??@??T@????W???5 5@?0? ??Ѝ@7?
`3@?
? J9p@"?,
0??\`\?!?[P?0]?+0q?r??????p?`?@g???f???f?-
Я??p?@??hа ????0:???????]p\0]?[@?p\?(
?i??????P?P?? ???????e????@?pOP????K??P????&?????P??????@@?`???`
???p7???c??p? `????@?p????
?????Rb?S?2p?P5?"??!0? |?'?WXpy??0X?C?p???`?? ?????@^p#@pq0s ??????Ъ0??Ю??i ?p??k?C?yD??^?X X?y??PX?C??????@??Т`?P????yP|??{?z`?????5?Kо`???{?????m?Ap?????0???????????????@???`???y ???%????????????? ??(???z@
@? ??6 ??P???M??@?@p??????T0????8Б??????p?0??? ?@?@??@?`???3???5p{?P?@?0? ?`?@????0????7?p`q??@?@? )???|????0?@????)@?`??????
0?????p?@S?~0V`X??0Z`?p?`7P??)?)??"`??\`????@ZPZ`Z?Z[??

??
*
@???p`??P??j	P??`???Y?X`Y?e0P?????W?@???P???
 (???@? ???`????`?P*`?`???
??
"??P??YpXPY?e??p??`?**????&@-)???`?? `?`?@??(?@ ?%@%h`&????0???`? ????0?00???*??Px@???p??L??e?i?fp?
?0?
??P?
??
X???!pA?Z?Z(P(?-?+?-?-H!p!??T`?#??0`88Y??h??0??xN?O@ Z(P?+H^p????F8(]????8??? ?"?P?@A?0@X@? h???X ? ?^??(??hp?!????HP?`??8@8Ah@8??? p???0???????p?@????????p?`? ? ?? ?????? ???0^?? ?P????????????P?`????N??@??????????????????????????@?????????-	??P|?	?0\??????f@f?~??@pP
p
PZ?Y0?Y0
?

??
?
??&?@??m?F?{?F@-?
????  ?0?????4??@??`??`??`??????pk???EPPU`	?1???R??
л? o	 D?-??p/????I?J?-?=/?. ??>?LpE???
?

????????0? ?
`??
??
??
??=???B?@k?Ph??
P??.
??
??
?k???P?`r@???`E????? p?Z0?ZP?Zp)
P???g???!??,??[????
?
?	?V?) ??jЃ??
?Wp?
??`p`??"???К@??????@???Tz??????0?`?g	P? ?p#
?n	?
?????p????????
??
??	 ?	?7 z@_	????0?@?P?p??(
???	?????????
0????0z??ЭP?05?p? ????P?@?0? ?@???? m0`*?? ?????0?`?P?????p??
??
@Y?n??4?
?B?B?j c`???h????p4?40??p@`-?7h	?_	 ???????U?^??0#@$????0?????@??p?????0?S?=?g+p$????`g	???? ?`????????????P?????0???@??????p+`???`????}|bp{`a?{?a?+
~?~P}`|php~?|p?} 2e???????Ж
`??r?d
0?
?
?' =P.?-`>>?P?4?p? ??@?@?p?P?	?@??0????"p?P?0C C ^0?Pk`?h?g?@Z `( ? ??`
00?0??? ???@??????
?-??
??
(?+`?+??+??+??+;?+??+??+??+B?+t?+??+??+??+?+9?+W?+y?+??+??+??+??+?+>?+`?+~?+??+??+??+?+!?+B?+^?+x?+??+??+??+??+"?+C?+_?+y?+??+??+?+H?+??+??+	?+,E>,o>,?>,?>,?>,?>,?,\?,??,??,@,E@,u@,?@,?@,?@,%A,NA,~A,?A,?A,?A,+B,PB,}B,?B,?B,C,/C,UC,{C,?C,?C,D,HD,D,?D,?D,?D,'E,SE,?E,?E,?E,F,=F,sF,?F,?F,G,DG,rG,?G,?G,H,%H,MH,oH,?H,?H,?H,I,JI,nI,?I,?I,?I,J,@J,gJ,?J,?J,?J,K,/K,[K,?K,?K,?K,L,YL,?L,?L,?L,M,@M,xM,?M,?M,N,5N,]N,N,?N,?N,?N,-O,\O,?O,?O,?O,P,IP,rP,?P,?P,Q,g,Tg,jg,?g,?g,?g,?g,
h,.h,Kh,ph,?h,?h,?h,?h,i,Ni,`i,~i,?i,?i,?i,j,9j,\j,?j,?j,?j,?j,k,8k,jk,?k,?k,?k,?k,'l,Dl,\l,ul,?l,?l,?l,?l,m,7m,\m,?m,?m,?m,?m,n,5n,Xn,?n,?n,?n,?n,?n,o,0o,Uo,}o,?o,?o,p,Lp,?p,?p,?p,	q,4q,Yq,?q,?q,?q,?q,r,)r,Er,mr,?r,?r,?r,?r,s,0s,\s,?s,?s,?s,?s,?s,t,9t,ft,?t,?t,?t,?t,?t,u,0u,Yu,~u,?u,?u,?u,v,'v,Av,av,~v,?v,?v,?v,w,1w,Tw,qw,?w,?w,?w,?w,x,(x,Qx,?x,?x,?x,?x,y,'y,Iy,fy,?y,?y,?y,z,Gz,oz,?z,?z,?z,?z,?z,{,D{,n{,?{,?{,?{,;|,k|,?|,?|,=},?},"~,P~,z~,?~,?~,,=,q,?,?,T?,?,??,?,?,E?,z?,??,߁,?,I?,t?,??,Ղ,?,??,q?,??,҃,?,3?,s?,??,??,ڄ,?,(?,I?,j?,??,??,Ņ,?,?,*?,[?,}?,??,φ,?,3?,k?,??,ه,#?,V?,??,ˈ,??,@?,s?,??,?,7?,??,ߊ,/?,??,?,?,E?,_?,?,??,Ҍ,?,E?,w?,??,??,ٍ,?,W?,r?,??,??,?,?,=?,v?,??,ԏ,?,^?,??,??,ɐ,?,
?,:?,i?,??,%?,L?,{?,??,?,(?,i?,??,œ,??,?,(?,U?,??,?,P?,??,ߕ,H?,??,?,|?,?,??,??,?,?,B?,x?,??,?,?,U?,??,??,?,'?,Q?,??,??,?,(?,a?,??,՜,
?,G?,y?,??,؝,??,?,??,/?,̟,?,#?,{?,??,Š,?,?,??,͡,?,?,-?,N?,p?,??,??,آ,?,?,@?,q?,??,٣,0?,L?,??,ݤ,?,N?,d?,??,??,??,X?,??,ݦ,?,a?,??,??,9?,??,?,e?,??,n?,??,?,??,??,??,C?,n?,??,??,Ѭ,?,?,1?,`?,{?,??,?,#?,R?,??,??,ݮ,?, ?,=?,e?,??,??,߯,??,$?,A?,a?,?,ٰ,??,??,??,??,??,j?,??,?,Z?,??,??,?,?,??,+?,?,B?,ú,C?,ɻ,N?,??,Լ,!?,k?,??,?,?,j?,??,?,>?,b?,??,??,?,??,??,}?,H?,?,??,??,??,k?,??,:?,??,??,,?,r?,??,??,?,,?,{?,??,??,?,#?,??,X?,r?,??,??,??,??,?,A?,m?,Q?,v?,?,??,??,??,??,
?,r?,??,??,??,2?,f?,??,??,?,/?,c?,??,??,??,%?,X?,??,??,??,?,_?,??,??,??,?,=?,[?,t?,??,??,??,#?,S?,??,??,??,&?,A?,d?,??,??,??,?,M?,y?,??,'?,E?,s?,??,??,?,W?,??,??,??,??,?,0?,[?,??,??,I?,t?,??,??,??,!?,Q?,??,??,??,!?,L?,q?,??,??,??,?,3?,N?,d?,??,??,??,??,??,?,0?,x?,	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????	

 !"#$%&'()*opencv_ocl246.dll??$queryDeviceInfo@$00_N@ocl@cv@@YA_NPEAU_cl_kernel@@@Z??$queryDeviceInfo@$0A@H@ocl@cv@@YAHPEAU_cl_kernel@@@Z??$queryDeviceInfo@$0A@_K@ocl@cv@@YA_KPEAU_cl_kernel@@@Z??0?$AutoBuffer@H$0EAI@@cv@@QEAA@_K@Z??0?$BruteForceMatcher_OCL@UHamming@ocl@cv@@@ocl@cv@@QEAA@AEBV012@@Z??0?$BruteForceMatcher_OCL@UHamming@ocl@cv@@@ocl@cv@@QEAA@UHamming@12@@Z??0?$BruteForceMatcher_OCL@UHamming@ocl@cv@@@ocl@cv@@QEAA@XZ??0?$MatConstIterator_@Tcl_float2@@@cv@@QEAA@AEBV01@@Z??0?$MatConstIterator_@Tcl_float2@@@cv@@QEAA@PEBV?$Mat_@Tcl_float2@@@1@@Z??0?$MatIterator_@Tcl_float2@@@cv@@QEAA@AEBV01@@Z??0?$MatIterator_@Tcl_float2@@@cv@@QEAA@PEAV?$Mat_@Tcl_float2@@@1@@Z??0?$Matx@E$03$00@cv@@QEAA@PEBE@Z??0?$Matx@E$03$00@cv@@QEAA@XZ??0?$Matx@F$01$00@cv@@QEAA@XZ??0?$Matx@F$03$00@cv@@QEAA@PEBF@Z??0?$Matx@F$03$00@cv@@QEAA@XZ??0?$Matx@H$03$00@cv@@QEAA@HHHH@Z??0?$Matx@H$03$00@cv@@QEAA@PEBH@Z??0?$Matx@I$03$00@cv@@QEAA@PEBI@Z??0?$Matx@I$03$00@cv@@QEAA@XZ??0?$Matx@M$01$00@cv@@QEAA@MM@Z??0?$Matx@M$02$00@cv@@QEAA@MMM@Z??0?$Matx@M$03$00@cv@@QEAA@MMMM@Z??0?$Matx@M$03$00@cv@@QEAA@PEBM@Z??0?$Matx@M$03$00@cv@@QEAA@XZ??0?$Matx@N$01$00@cv@@QEAA@NN@Z??0?$Matx@N$02$00@cv@@QEAA@NNN@Z??0?$Matx@N$03$00@cv@@QEAA@NNNN@Z??0?$Matx@N$03$00@cv@@QEAA@PEBN@Z??0?$Matx@N$03$00@cv@@QEAA@XZ??0?$Point_@H@cv@@QEAA@AEBV01@@Z??0?$Point_@H@cv@@QEAA@HH@Z??0?$Point_@H@cv@@QEAA@XZ??0?$Point_@M@cv@@QEAA@AEBUCvPoint2D32f@@@Z??0?$Point_@M@cv@@QEAA@AEBV01@@Z??0?$Point_@M@cv@@QEAA@MM@Z??0?$Point_@M@cv@@QEAA@XZ??0?$Point_@N@cv@@QEAA@AEBUCvPoint@@@Z??0?$Point_@N@cv@@QEAA@AEBV01@@Z??0?$Point_@N@cv@@QEAA@NN@Z??0?$Point_@N@cv@@QEAA@XZ??0?$Ptr@UCvFileStorage@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@UCvMemStorage@@@cv@@QEAA@PEAUCvMemStorage@@@Z??0?$Ptr@UIndexParams@flann@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@UIndexParams@flann@cv@@@cv@@QEAA@PEAUIndexParams@flann@1@@Z??0?$Ptr@USearchParams@flann@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@USearchParams@flann@cv@@@cv@@QEAA@PEAUSearchParams@flann@1@@Z??0?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAA@PEAVBaseColumnFilter_GPU@ocl@1@@Z??0?$Ptr@VBaseFilter@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAA@PEAVBaseFilter_GPU@ocl@1@@Z??0?$Ptr@VBaseRowFilter@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAA@PEAVBaseRowFilter_GPU@ocl@1@@Z??0?$Ptr@VCLAHE@cv@@@cv@@QEAA@PEAVCLAHE@1@@Z??0?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VFeatureDetector@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VFeatureDetector@cv@@@cv@@QEAA@PEAVFeatureDetector@1@@Z??0?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAA@PEAVFilterEngine_GPU@ocl@1@@Z??0?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAA@XZ??0?$Ptr@VIndex@flann@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VModality@linemod@cv@@@cv@@QEAA@AEBV01@@Z??0?$Ptr@VTextureCL@ocl@cv@@@cv@@QEAA@PEAVTextureCL@ocl@1@@Z??0?$Rect_@H@cv@@QEAA@AEBUCvRect@@@Z??0?$Rect_@H@cv@@QEAA@AEBV01@@Z??0?$Rect_@H@cv@@QEAA@AEBV?$Point_@H@1@AEBV?$Size_@H@1@@Z??0?$Rect_@H@cv@@QEAA@HHHH@Z??0?$Rect_@H@cv@@QEAA@XZ??0?$Scalar_@E@cv@@QEAA@AEBV01@@Z??0?$Scalar_@E@cv@@QEAA@EEEE@Z??0?$Scalar_@F@cv@@QEAA@AEBV01@@Z??0?$Scalar_@F@cv@@QEAA@FFFF@Z??0?$Scalar_@I@cv@@QEAA@AEBV01@@Z??0?$Scalar_@I@cv@@QEAA@IIII@Z??0?$Scalar_@N@cv@@QEAA@AEBV01@@Z??0?$Scalar_@N@cv@@QEAA@N@Z??0?$Scalar_@N@cv@@QEAA@NNNN@Z??0?$Scalar_@N@cv@@QEAA@XZ??0?$Seq@UCvAvgComp@@@cv@@QEAA@PEBUCvSeq@@@Z??0?$Size_@H@cv@@QEAA@AEBUCvSize@@@Z??0?$Size_@H@cv@@QEAA@AEBV01@@Z??0?$Size_@H@cv@@QEAA@HH@Z??0?$Size_@H@cv@@QEAA@XZ??0?$Size_@M@cv@@QEAA@AEBUCvSize2D32f@@@Z??0?$Size_@M@cv@@QEAA@AEBV01@@Z??0?$Size_@M@cv@@QEAA@XZ??0?$Vec@E$03@cv@@QEAA@AEBV01@@Z??0?$Vec@E$03@cv@@QEAA@XZ??0?$Vec@F$01@cv@@QEAA@XZ??0?$Vec@F$03@cv@@QEAA@AEBV01@@Z??0?$Vec@F$03@cv@@QEAA@XZ??0?$Vec@H$03@cv@@QEAA@AEBV01@@Z??0?$Vec@H$03@cv@@QEAA@HHHH@Z??0?$Vec@I$03@cv@@QEAA@AEBV01@@Z??0?$Vec@I$03@cv@@QEAA@XZ??0?$Vec@M$01@cv@@QEAA@MM@Z??0?$Vec@M$02@cv@@QEAA@MMM@Z??0?$Vec@M$03@cv@@QEAA@AEBV01@@Z??0?$Vec@M$03@cv@@QEAA@MMMM@Z??0?$Vec@M$03@cv@@QEAA@XZ??0?$Vec@N$01@cv@@QEAA@NN@Z??0?$Vec@N$02@cv@@QEAA@NNN@Z??0?$Vec@N$03@cv@@QEAA@AEBV01@@Z??0?$Vec@N$03@cv@@QEAA@NNNN@Z??0?$Vec@N$03@cv@@QEAA@XZ??0AdjusterAdapter@cv@@QEAA@AEBV01@@Z??0AdjusterAdapter@cv@@QEAA@XZ??0Algorithm@cv@@QEAA@AEBV01@@Z??0AutoLock@cv@@QEAA@AEAVMutex@1@@Z??0BFMatcher@cv@@QEAA@AEBV01@@Z??0BFMatcher_OCL@ocl@cv@@QEAA@AEBV012@@Z??0BFMatcher_OCL@ocl@cv@@QEAA@H@Z??0BOWImgDescriptorExtractor@cv@@QEAA@AEBV01@@Z??0BOWKMeansTrainer@cv@@QEAA@AEBV01@@Z??0BOWTrainer@cv@@QEAA@AEBV01@@Z??0BRISK@cv@@QEAA@AEBV01@@Z??0BaseColumnFilter@cv@@QEAA@AEBV01@@Z??0BaseColumnFilter_GPU@ocl@cv@@QEAA@AEBV012@@Z??0BaseColumnFilter_GPU@ocl@cv@@QEAA@HHH@Z??0BaseFilter@cv@@QEAA@AEBV01@@Z??0BaseFilter_GPU@ocl@cv@@QEAA@AEBV012@@Z??0BaseFilter_GPU@ocl@cv@@QEAA@AEBV?$Size_@H@2@AEBV?$Point_@H@2@AEBH@Z??0BaseRowFilter@cv@@QEAA@AEBV01@@Z??0BaseRowFilter_GPU@ocl@cv@@QEAA@AEBV012@@Z??0BaseRowFilter_GPU@ocl@cv@@QEAA@HHH@Z??0BriefDescriptorExtractor@cv@@QEAA@AEBV01@@Z??0BruteForceMatcher_OCL_base@ocl@cv@@QEAA@AEBV012@@Z??0BruteForceMatcher_OCL_base@ocl@cv@@QEAA@W4DistType@012@@Z??0CLAHE@cv@@QEAA@AEBV01@@Z??0CLAHE@cv@@QEAA@XZ??0CannyBuf@ocl@cv@@QEAA@AEBU012@@Z??0CannyBuf@ocl@cv@@QEAA@AEBV?$Size_@H@2@H@Z??0CannyBuf@ocl@cv@@QEAA@AEBVoclMat@12@0@Z??0CannyBuf@ocl@cv@@QEAA@XZ??0CascadeClassifier@cv@@QEAA@AEBV01@@Z??0Center@SimpleBlobDetector@cv@@QEAA@AEBU012@@Z??0Center@SimpleBlobDetector@cv@@QEAA@XZ??0ColorGradient@linemod@cv@@QEAA@AEBV012@@Z??0CommandLineParser@cv@@QEAA@AEBV01@@Z??0Context@ocl@cv@@IEAA@XZ??0CvOpenGlFuncTab@@QEAA@AEBV0@@Z??0CvOpenGlFuncTab@@QEAA@XZ??0DMatch@cv@@QEAA@HHHM@Z??0DMatch@cv@@QEAA@HHM@Z??0DMatch@cv@@QEAA@XZ??0DenseFeatureDetector@cv@@QEAA@AEBV01@@Z??0DepthNormal@linemod@cv@@QEAA@AEBV012@@Z??0DescriptorExtractor@cv@@QEAA@AEBV01@@Z??0DescriptorExtractor@cv@@QEAA@XZ??0DescriptorMatcher@cv@@QEAA@AEBV01@@Z??0DescriptorMatcher@cv@@QEAA@XZ??0Detector@linemod@cv@@QEAA@AEBV012@@Z??0Exception@cv@@QEAA@AEBV01@@Z??0FastAdjuster@cv@@QEAA@AEBV01@@Z??0FastFeatureDetector@cv@@QEAA@AEBV01@@Z??0Feature2D@cv@@QEAA@AEBV01@@Z??0Feature2D@cv@@QEAA@XZ??0Feature@linemod@cv@@QEAA@HHH@Z??0Feature@linemod@cv@@QEAA@XZ??0FeatureDetector@cv@@QEAA@AEBV01@@Z??0FeatureDetector@cv@@QEAA@XZ??0FeatureEvaluator@cv@@QEAA@AEBV01@@Z??0FeatureEvaluator@cv@@QEAA@XZ??0FileNode@cv@@QEAA@AEBV01@@Z??0FileNode@cv@@QEAA@PEBUCvFileStorage@@PEBUCvFileNode@@@Z??0FileNode@cv@@QEAA@XZ??0FileStorage@cv@@QEAA@AEBV01@@Z??0FilterEngine@cv@@QEAA@AEBV01@@Z??0FilterEngine_GPU@ocl@cv@@QEAA@AEBV012@@Z??0FilterEngine_GPU@ocl@cv@@QEAA@XZ??0FlannBasedMatcher@cv@@QEAA@AEBV01@@Z??0Formatted@cv@@QEAA@AEBU01@@Z??0Formatter@cv@@QEAA@AEBV01@@Z??0Formatter@cv@@QEAA@XZ??0GFTTDetector@cv@@QEAA@AEBV01@@Z??0GeneralizedHough@cv@@QEAA@AEBV01@@Z??0GeneralizedHough@cv@@QEAA@XZ??0GenericDescriptorMatcher@cv@@QEAA@AEBV01@@Z??0GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAA@AEBV012@@Z??0GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAA@HNNH_NN@Z??0GridAdaptedFeatureDetector@cv@@QEAA@AEBV01@@Z??0HOGDescriptor@cv@@QEAA@AEBU01@@Z??0HOGDescriptor@cv@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z??0HOGDescriptor@cv@@QEAA@V?$Size_@H@1@000HHNHN_NH@Z??0HOGDescriptor@cv@@QEAA@XZ??0HOGDescriptor@ocl@cv@@QEAA@AEBU012@@Z??0HOGDescriptor@ocl@cv@@QEAA@V?$Size_@H@2@000HNN_NH@Z??0Hdr@SparseMat@cv@@QEAA@AEBU012@@Z??0Index@flann@cv@@QEAA@AEBV012@@Z??0Info@ocl@cv@@QEAA@AEBV012@@Z??0Info@ocl@cv@@QEAA@XZ??0KDTree@cv@@QEAA@AEBV01@@Z??0KeyPoint@cv@@QEAA@AEBV01@@Z??0KeyPoint@cv@@QEAA@MMMMMHH@Z??0KeyPoint@cv@@QEAA@V?$Point_@M@1@MMMHH@Z??0KeyPoint@cv@@QEAA@XZ??0KeyPointsFilter@cv@@QEAA@XZ??0LatentSvmDetector@cv@@QEAA@AEBV01@@Z??0MSER@cv@@QEAA@AEBV01@@Z??0MSize@Mat@cv@@QEAA@PEAH@Z??0MStep@Mat@cv@@QEAA@XZ??0MStep@Mat@cv@@QEAA@_K@Z??0MaskGenerator@CascadeClassifier@cv@@QEAA@AEBV012@@Z??0MaskGenerator@CascadeClassifier@cv@@QEAA@XZ??0Mat@cv@@QEAA@AEBV01@@Z??0Mat@cv@@QEAA@HHH@Z??0Mat@cv@@QEAA@HHHAEBV?$Scalar_@N@1@@Z??0Mat@cv@@QEAA@HHHPEAX_K@Z??0Mat@cv@@QEAA@HPEBHH@Z??0Mat@cv@@QEAA@HPEBHHAEBV?$Scalar_@N@1@@Z??0Mat@cv@@QEAA@V?$Size_@H@1@H@Z??0Mat@cv@@QEAA@V?$Size_@H@1@HAEBV?$Scalar_@N@1@@Z??0Mat@cv@@QEAA@V?$Size_@H@1@HPEAX_K@Z??0Mat@cv@@QEAA@XZ??0MatAllocator@cv@@QEAA@AEBV01@@Z??0MatAllocator@cv@@QEAA@XZ??0MatConstIterator@cv@@QEAA@AEBV01@@Z??0MatConstIterator@cv@@QEAA@PEBVMat@1@@Z??0MatConstIterator@cv@@QEAA@PEBVMat@1@HH@Z??0MatConstIterator@cv@@QEAA@PEBVMat@1@V?$Point_@H@1@@Z??0MatConstIterator@cv@@QEAA@XZ??0MatExpr@cv@@QEAA@AEBV01@@Z??0MatExpr@cv@@QEAA@PEBVMatOp@1@HAEBVMat@1@11NNAEBV?$Scalar_@N@1@@Z??0MatExpr@cv@@QEAA@XZ??0MatOp@cv@@QEAA@AEBV01@@Z??0MatOp@cv@@QEAA@XZ??0Match@linemod@cv@@QEAA@AEBU012@@Z??0Match@linemod@cv@@QEAA@HHMAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z??0Match@linemod@cv@@QEAA@XZ??0MatchTemplateBuf@ocl@cv@@QEAA@AEBU012@@Z??0MatchTemplateBuf@ocl@cv@@QEAA@XZ??0Modality@linemod@cv@@QEAA@AEBV012@@Z??0Modality@linemod@cv@@QEAA@XZ??0ORB@cv@@QEAA@AEBV01@@Z??0ObjectDetection@LatentSvmDetector@cv@@QEAA@AEBU012@@Z??0OclCascadeClassifier@ocl@cv@@QEAA@AEBV012@@Z??0OclCascadeClassifier@ocl@cv@@QEAA@XZ??0OclCascadeClassifierBuf@ocl@cv@@QEAA@AEBV012@@Z??0OclCascadeClassifierBuf@ocl@cv@@QEAA@XZ??0OpponentColorDescriptorExtractor@cv@@QEAA@AEBV01@@Z??0OpticalFlowDual_TVL1_OCL@ocl@cv@@QEAA@AEBV012@@Z??0OpticalFlowDual_TVL1_OCL@ocl@cv@@QEAA@XZ??0PCA@cv@@QEAA@AEBV01@@Z??0ParallelLoopBody@cv@@QEAA@AEBV01@@Z??0ParallelLoopBody@cv@@QEAA@XZ??0Param@cv@@QEAA@AEBU01@@Z??0PyrLKOpticalFlow@ocl@cv@@QEAA@AEBV012@@Z??0PyrLKOpticalFlow@ocl@cv@@QEAA@XZ??0PyramidAdaptedFeatureDetector@cv@@QEAA@AEBV01@@Z??0RNG@cv@@QEAA@XZ??0RNG@cv@@QEAA@_K@Z??0Range@cv@@QEAA@AEBUCvSlice@@@Z??0Range@cv@@QEAA@HH@Z??0Range@cv@@QEAA@XZ??0RotatedRect@cv@@QEAA@AEBUCvBox2D@@@Z??0RotatedRect@cv@@QEAA@AEBV01@@Z??0RotatedRect@cv@@QEAA@AEBV?$Point_@M@1@AEBV?$Size_@M@1@M@Z??0RotatedRect@cv@@QEAA@XZ??0SVD@cv@@QEAA@AEBV01@@Z??0SVD@cv@@QEAA@AEBV_InputArray@1@H@Z??0SVD@cv@@QEAA@XZ??0SimpleBlobDetector@cv@@QEAA@AEBV01@@Z??0SparseMat@cv@@QEAA@AEBV01@@Z??0SparseMat@cv@@QEAA@HPEBHH@Z??0SparseMat@cv@@QEAA@XZ??0SparseMatConstIterator@cv@@QEAA@AEBV01@@Z??0SparseMatConstIterator@cv@@QEAA@XZ??0SparseMatIterator@cv@@QEAA@AEBV01@@Z??0SparseMatIterator@cv@@QEAA@PEAVSparseMat@1@@Z??0SparseMatIterator@cv@@QEAA@XZ??0StarAdjuster@cv@@QEAA@AEBV01@@Z??0StarDetector@cv@@QEAA@AEBV01@@Z??0StereoBM_OCL@ocl@cv@@QEAA@AEBV012@@Z??0StereoBM_OCL@ocl@cv@@QEAA@HHH@Z??0StereoBM_OCL@ocl@cv@@QEAA@XZ??0StereoBeliefPropagation@ocl@cv@@QEAA@AEBV012@@Z??0StereoBeliefPropagation@ocl@cv@@QEAA@HHHH@Z??0StereoBeliefPropagation@ocl@cv@@QEAA@HHHMMMMH@Z??0StereoConstantSpaceBP@ocl@cv@@QEAA@AEBV012@@Z??0StereoConstantSpaceBP@ocl@cv@@QEAA@HHHHH@Z??0StereoConstantSpaceBP@ocl@cv@@QEAA@HHHHMMMMHH@Z??0Subdiv2D@cv@@QEAA@AEBV01@@Z??0SurfAdjuster@cv@@QEAA@AEBV01@@Z??0Template@linemod@cv@@QEAA@AEBU012@@Z??0Template@linemod@cv@@QEAA@XZ??0TermCriteria@cv@@QEAA@AEBUCvTermCriteria@@@Z??0TermCriteria@cv@@QEAA@HHN@Z??0TermCriteria@cv@@QEAA@XZ??0TextureCL@ocl@cv@@QEAA@PEAU_cl_mem@@HHH@Z??0VectorDescriptorMatcher@cv@@QEAA@AEBV01@@Z??0Vertex@Subdiv2D@cv@@QEAA@AEBU012@@Z??0_InputArray@cv@@QEAA@AEBV01@@Z??0_InputArray@cv@@QEAA@AEBV?$Scalar_@N@1@@Z??0_OutputArray@cv@@QEAA@AEBV01@@Z??0oclMat@ocl@cv@@QEAA@AEBV012@@Z??0oclMat@ocl@cv@@QEAA@AEBV012@AEBV?$Rect_@H@2@@Z??0oclMat@ocl@cv@@QEAA@AEBV012@AEBVRange@2@1@Z??0oclMat@ocl@cv@@QEAA@AEBVMat@2@@Z??0oclMat@ocl@cv@@QEAA@HHH@Z??0oclMat@ocl@cv@@QEAA@HHHAEBV?$Scalar_@N@2@@Z??0oclMat@ocl@cv@@QEAA@HHHPEAX_K@Z??0oclMat@ocl@cv@@QEAA@V?$Size_@H@2@H@Z??0oclMat@ocl@cv@@QEAA@V?$Size_@H@2@HAEBV?$Scalar_@N@2@@Z??0oclMat@ocl@cv@@QEAA@V?$Size_@H@2@HPEAX_K@Z??0oclMat@ocl@cv@@QEAA@XZ??0oclMatExpr@ocl@cv@@QEAA@AEBV012@@Z??0oclMatExpr@ocl@cv@@QEAA@AEBVoclMat@12@0H@Z??0oclMatExpr@ocl@cv@@QEAA@XZ??1?$AutoBuffer@H$0EAI@@cv@@QEAA@XZ??1?$BruteForceMatcher_OCL@UHamming@ocl@cv@@@ocl@cv@@QEAA@XZ??1?$Mat_@Tcl_float2@@@cv@@QEAA@XZ??1?$Ptr@UCvFileStorage@@@cv@@QEAA@XZ??1?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAA@XZ??1?$Ptr@UCvMemStorage@@@cv@@QEAA@XZ??1?$Ptr@UIndexParams@flann@cv@@@cv@@QEAA@XZ??1?$Ptr@USearchParams@flann@cv@@@cv@@QEAA@XZ??1?$Ptr@VAdjusterAdapter@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseFilter@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseRowFilter@cv@@@cv@@QEAA@XZ??1?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAA@XZ??1?$Ptr@VCLAHE@cv@@@cv@@QEAA@XZ??1?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAA@XZ??1?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAA@XZ??1?$Ptr@VFeatureDetector@cv@@@cv@@QEAA@XZ??1?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAA@XZ??1?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAA@XZ??1?$Ptr@VIndex@flann@cv@@@cv@@QEAA@XZ??1?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAA@XZ??1?$Ptr@VModality@linemod@cv@@@cv@@QEAA@XZ??1?$Ptr@VQuantizedPyramid@linemod@cv@@@cv@@QEAA@XZ??1?$Ptr@VTextureCL@ocl@cv@@@cv@@QEAA@XZ??1AdjusterAdapter@cv@@UEAA@XZ??1AutoLock@cv@@QEAA@XZ??1AutotunedIndexParams@flann@cv@@QEAA@XZ??1BFMatcher@cv@@UEAA@XZ??1BFMatcher_OCL@ocl@cv@@QEAA@XZ??1BaseColumnFilter_GPU@ocl@cv@@UEAA@XZ??1BaseFilter_GPU@ocl@cv@@UEAA@XZ??1BaseRowFilter_GPU@ocl@cv@@UEAA@XZ??1BriefDescriptorExtractor@cv@@UEAA@XZ??1BruteForceMatcher_OCL_base@ocl@cv@@QEAA@XZ??1CLAHE@cv@@UEAA@XZ??1CannyBuf@ocl@cv@@QEAA@XZ??1ColorGradient@linemod@cv@@UEAA@XZ??1CommandLineParser@cv@@QEAA@XZ??1CompositeIndexParams@flann@cv@@QEAA@XZ??1Context@ocl@cv@@QEAA@XZ??1DenseFeatureDetector@cv@@UEAA@XZ??1DepthNormal@linemod@cv@@UEAA@XZ??1Detector@linemod@cv@@QEAA@XZ??1DynamicAdaptedFeatureDetector@cv@@UEAA@XZ??1FastAdjuster@cv@@UEAA@XZ??1FastFeatureDetector@cv@@UEAA@XZ??1Feature2D@cv@@UEAA@XZ??1FilterEngine_GPU@ocl@cv@@UEAA@XZ??1FlannBasedMatcher@cv@@UEAA@XZ??1Formatted@cv@@QEAA@XZ??1Formatter@cv@@UEAA@XZ??1GFTTDetector@cv@@UEAA@XZ??1GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAA@XZ??1GridAdaptedFeatureDetector@cv@@UEAA@XZ??1HOGDescriptor@cv@@UEAA@XZ??1HOGDescriptor@ocl@cv@@QEAA@XZ??1Hdr@SparseMat@cv@@QEAA@XZ??1HierarchicalClusteringIndexParams@flann@cv@@QEAA@XZ??1Info@ocl@cv@@QEAA@XZ??1KDTree@cv@@QEAA@XZ??1KDTreeIndexParams@flann@cv@@QEAA@XZ??1KMeansIndexParams@flann@cv@@QEAA@XZ??1KeyPointCollection@GenericDescriptorMatcher@cv@@QEAA@XZ??1LinearIndexParams@flann@cv@@QEAA@XZ??1LshIndexParams@flann@cv@@QEAA@XZ??1MSER@cv@@UEAA@XZ??1MaskGenerator@CascadeClassifier@cv@@UEAA@XZ??1Mat@cv@@QEAA@XZ??1MatAllocator@cv@@UEAA@XZ??1MatExpr@cv@@QEAA@XZ??1MatOp@cv@@UEAA@XZ??1Match@linemod@cv@@QEAA@XZ??1MatchTemplateBuf@ocl@cv@@QEAA@XZ??1Modality@linemod@cv@@UEAA@XZ??1ORB@cv@@UEAA@XZ??1OclCascadeClassifier@ocl@cv@@UEAA@XZ??1OclCascadeClassifierBuf@ocl@cv@@UEAA@XZ??1OpponentColorDescriptorExtractor@cv@@UEAA@XZ??1OpticalFlowDual_TVL1_OCL@ocl@cv@@QEAA@XZ??1PCA@cv@@QEAA@XZ??1Param@cv@@QEAA@XZ??1PyrLKOpticalFlow@ocl@cv@@QEAA@XZ??1PyramidAdaptedFeatureDetector@cv@@UEAA@XZ??1SVD@cv@@QEAA@XZ??1SavedIndexParams@flann@cv@@QEAA@XZ??1SearchParams@flann@cv@@QEAA@XZ??1SimpleBlobDetector@cv@@UEAA@XZ??1SparseMat@cv@@QEAA@XZ??1StarAdjuster@cv@@UEAA@XZ??1StarDetector@cv@@UEAA@XZ??1StereoBM_OCL@ocl@cv@@QEAA@XZ??1StereoBeliefPropagation@ocl@cv@@QEAA@XZ??1StereoConstantSpaceBP@ocl@cv@@QEAA@XZ??1Subdiv2D@cv@@QEAA@XZ??1SurfAdjuster@cv@@UEAA@XZ??1Template@linemod@cv@@QEAA@XZ??1TextureCL@ocl@cv@@QEAA@XZ??1oclMat@ocl@cv@@QEAA@XZ??1oclMatExpr@ocl@cv@@QEAA@XZ??4?$AutoBuffer@H$0EAI@@cv@@QEAAAEAV01@AEBV01@@Z??4?$BruteForceMatcher_OCL@UHamming@ocl@cv@@@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4?$MatIterator_@Tcl_float2@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@E$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@F$01$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@F$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@H$01$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@H$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@I$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@M$00$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@M$01$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@M$02$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@M$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@N$00$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@N$01$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@N$02$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@N$03$00@cv@@QEAAAEAV01@AEBV01@@Z??4?$Matx@N$03$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Point_@H@cv@@QEAAAEAV01@AEBV01@@Z??4?$Point_@M@cv@@QEAAAEAV01@AEBV01@@Z??4?$Point_@N@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@UCvFileStorage@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@UIndexParams@flann@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@USearchParams@flann@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VBaseFilter@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VBaseRowFilter@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VFeatureDetector@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VIndex@flann@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Ptr@VModality@linemod@cv@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Rect_@H@cv@@QEAAAEAV01@AEBV01@@Z??4?$Scalar_@E@cv@@QEAAAEAV01@AEBV01@@Z??4?$Scalar_@F@cv@@QEAAAEAV01@AEBV01@@Z??4?$Scalar_@I@cv@@QEAAAEAV01@AEBV01@@Z??4?$Scalar_@N@cv@@QEAAAEAV01@AEBV01@@Z??4?$Seq@UCvAvgComp@@@cv@@QEAAAEAV01@AEBV01@@Z??4?$Size_@H@cv@@QEAAAEAV01@AEBV01@@Z??4?$Size_@M@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@E$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@F$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@F$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@H$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@H$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@I$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@M$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@M$02@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@M$03@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@N$01@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@N$02@cv@@QEAAAEAV01@AEBV01@@Z??4?$Vec@N$03@cv@@QEAAAEAV01@AEBV01@@Z??4AdjusterAdapter@cv@@QEAAAEAV01@AEBV01@@Z??4Algorithm@cv@@QEAAAEAV01@AEBV01@@Z??4AlgorithmInfo@cv@@QEAAAEAV01@AEBV01@@Z??4AutotunedIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4BFMatcher@cv@@QEAAAEAV01@AEBV01@@Z??4BFMatcher_OCL@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4BOWImgDescriptorExtractor@cv@@QEAAAEAV01@AEBV01@@Z??4BOWKMeansTrainer@cv@@QEAAAEAV01@AEBV01@@Z??4BOWTrainer@cv@@QEAAAEAV01@AEBV01@@Z??4BRISK@cv@@QEAAAEAV01@AEBV01@@Z??4BaseColumnFilter@cv@@QEAAAEAV01@AEBV01@@Z??4BaseColumnFilter_GPU@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4BaseFilter@cv@@QEAAAEAV01@AEBV01@@Z??4BaseFilter_GPU@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4BaseRowFilter@cv@@QEAAAEAV01@AEBV01@@Z??4BaseRowFilter_GPU@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4BriefDescriptorExtractor@cv@@QEAAAEAV01@AEBV01@@Z??4BruteForceMatcher_OCL_base@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4CLAHE@cv@@QEAAAEAV01@AEBV01@@Z??4CannyBuf@ocl@cv@@QEAAAEAU012@AEBU012@@Z??4CascadeClassifier@cv@@QEAAAEAV01@AEBV01@@Z??4Center@SimpleBlobDetector@cv@@QEAAAEAU012@AEBU012@@Z??4ColorGradient@linemod@cv@@QEAAAEAV012@AEBV012@@Z??4CommandLineParser@cv@@QEAAAEAV01@AEBV01@@Z??4CompositeIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4Context@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4CvDataMatrixCode@@QEAAAEAU0@AEBU0@@Z??4CvModule@@QEAAAEAU0@AEBU0@@Z??4CvOpenGlFuncTab@@QEAAAEAV0@AEBV0@@Z??4CvType@@QEAAAEAU0@AEBU0@@Z??4DMatch@cv@@QEAAAEAU01@AEBU01@@Z??4DTree@Data@CascadeClassifier@cv@@QEAAAEAU0123@AEBU0123@@Z??4DTreeNode@Data@CascadeClassifier@cv@@QEAAAEAU0123@AEBU0123@@Z??4DenseFeatureDetector@cv@@QEAAAEAV01@AEBV01@@Z??4DepthNormal@linemod@cv@@QEAAAEAV012@AEBV012@@Z??4DescriptorCollection@DescriptorMatcher@cv@@QEAAAEAV012@AEBV012@@Z??4DescriptorExtractor@cv@@QEAAAEAV01@AEBV01@@Z??4DescriptorMatcher@cv@@QEAAAEAV01@AEBV01@@Z??4Detector@linemod@cv@@QEAAAEAV012@AEBV012@@Z??4DrawMatchesFlags@cv@@QEAAAEAU01@AEBU01@@Z??4Exception@cv@@QEAAAEAV01@AEBV01@@Z??4FastAdjuster@cv@@QEAAAEAV01@AEBV01@@Z??4FastFeatureDetector@cv@@QEAAAEAV01@AEBV01@@Z??4Feature2D@cv@@QEAAAEAV01@AEBV01@@Z??4Feature@linemod@cv@@QEAAAEAU012@AEBU012@@Z??4FeatureDetector@cv@@QEAAAEAV01@AEBV01@@Z??4FeatureEvaluator@cv@@QEAAAEAV01@AEBV01@@Z??4FileNode@cv@@QEAAAEAV01@AEBV01@@Z??4FileNodeIterator@cv@@QEAAAEAV01@AEBV01@@Z??4FileStorage@cv@@QEAAAEAV01@AEBV01@@Z??4FilterEngine@cv@@QEAAAEAV01@AEBV01@@Z??4FilterEngine_GPU@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4FlannBasedMatcher@cv@@QEAAAEAV01@AEBV01@@Z??4Formatted@cv@@QEAAAEAU01@AEBU01@@Z??4Formatter@cv@@QEAAAEAV01@AEBV01@@Z??4GFTTDetector@cv@@QEAAAEAV01@AEBV01@@Z??4GeneralizedHough@cv@@QEAAAEAV01@AEBV01@@Z??4GenericDescriptorMatcher@cv@@QEAAAEAV01@AEBV01@@Z??4GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4GridAdaptedFeatureDetector@cv@@QEAAAEAV01@AEBV01@@Z??4HOGDescriptor@cv@@QEAAAEAU01@AEBU01@@Z??4HOGDescriptor@ocl@cv@@QEAAAEAU012@AEBU012@@Z??4Hamming@cv@@QEAAAEAU01@AEBU01@@Z??4Hamming@ocl@cv@@QEAAAEAU012@AEBU012@@Z??4Hdr@SparseMat@cv@@QEAAAEAU012@AEBU012@@Z??4HierarchicalClusteringIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4Index@flann@cv@@QEAAAEAV012@AEBV012@@Z??4IndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4Info@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4KDTree@cv@@QEAAAEAV01@AEBV01@@Z??4KDTreeIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4KMeansIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4KeyPoint@cv@@QEAAAEAV01@AEBV01@@Z??4KeyPointCollection@GenericDescriptorMatcher@cv@@QEAAAEAV012@AEBV012@@Z??4KeyPointsFilter@cv@@QEAAAEAV01@AEBV01@@Z??4LatentSvmDetector@cv@@QEAAAEAV01@AEBV01@@Z??4LineIterator@cv@@QEAAAEAV01@AEBV01@@Z??4LinearIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4LshIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4MSER@cv@@QEAAAEAV01@AEBV01@@Z??4MSize@Mat@cv@@QEAAAEAU012@AEBU012@@Z??4MStep@Mat@cv@@QEAAAEAU012@_K@Z??4MaskGenerator@CascadeClassifier@cv@@QEAAAEAV012@AEBV012@@Z??4Mat@cv@@QEAAAEAV01@AEBV01@@Z??4Mat@cv@@QEAAAEAV01@AEBVMatExpr@1@@Z??4MatAllocator@cv@@QEAAAEAV01@AEBV01@@Z??4MatConstIterator@cv@@QEAAAEAV01@AEBV01@@Z??4MatExpr@cv@@QEAAAEAV01@AEBV01@@Z??4MatOp@cv@@QEAAAEAV01@AEBV01@@Z??4Match@linemod@cv@@QEAAAEAU012@AEBU012@@Z??4MatchTemplateBuf@ocl@cv@@QEAAAEAU012@AEBU012@@Z??4Matx_AddOp@cv@@QEAAAEAU01@AEBU01@@Z??4Matx_MatMulOp@cv@@QEAAAEAU01@AEBU01@@Z??4Matx_MulOp@cv@@QEAAAEAU01@AEBU01@@Z??4Matx_ScaleOp@cv@@QEAAAEAU01@AEBU01@@Z??4Matx_SubOp@cv@@QEAAAEAU01@AEBU01@@Z??4Matx_TOp@cv@@QEAAAEAU01@AEBU01@@Z??4Modality@linemod@cv@@QEAAAEAV012@AEBV012@@Z??4Moments@cv@@QEAAAEAV01@AEBV01@@Z??4NAryMatIterator@cv@@QEAAAEAV01@AEBV01@@Z??4Node@SparseMat@cv@@QEAAAEAU012@AEBU012@@Z??4ORB@cv@@QEAAAEAV01@AEBV01@@Z??4ObjectDetection@LatentSvmDetector@cv@@QEAAAEAU012@AEBU012@@Z??4OclCascadeClassifier@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4OclCascadeClassifierBuf@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4OpponentColorDescriptorExtractor@cv@@QEAAAEAV01@AEBV01@@Z??4OpticalFlowDual_TVL1_OCL@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4PCA@cv@@QEAAAEAV01@AEBV01@@Z??4ParallelLoopBody@cv@@QEAAAEAV01@AEBV01@@Z??4Param@cv@@QEAAAEAU01@AEBU01@@Z??4Params@SimpleBlobDetector@cv@@QEAAAEAU012@AEBU012@@Z??4PyrLKOpticalFlow@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4PyramidAdaptedFeatureDetector@cv@@QEAAAEAV01@AEBV01@@Z??4QuadEdge@Subdiv2D@cv@@QEAAAEAU012@AEBU012@@Z??4RNG@cv@@QEAAAEAV01@AEBV01@@Z??4RNG_MT19937@cv@@QEAAAEAV01@AEBV01@@Z??4Range@cv@@QEAAAEAV01@AEBV01@@Z??4RotatedRect@cv@@QEAAAEAV01@AEBV01@@Z??4SVD@cv@@QEAAAEAV01@AEBV01@@Z??4SavedIndexParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4SearchParams@flann@cv@@QEAAAEAU012@AEBU012@@Z??4SimpleBlobDetector@cv@@QEAAAEAV01@AEBV01@@Z??4SparseMat@cv@@QEAAAEAV01@AEBV01@@Z??4SparseMat@cv@@QEAAAEAV01@AEBVMat@1@@Z??4SparseMatConstIterator@cv@@QEAAAEAV01@AEBV01@@Z??4SparseMatIterator@cv@@QEAAAEAV01@AEBV01@@Z??4Stage@Data@CascadeClassifier@cv@@QEAAAEAU0123@AEBU0123@@Z??4StarAdjuster@cv@@QEAAAEAV01@AEBV01@@Z??4StarDetector@cv@@QEAAAEAV01@AEBV01@@Z??4StereoBM_OCL@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4StereoBeliefPropagation@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4StereoConstantSpaceBP@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4Subdiv2D@cv@@QEAAAEAV01@AEBV01@@Z??4SurfAdjuster@cv@@QEAAAEAV01@AEBV01@@Z??4Template@linemod@cv@@QEAAAEAU012@AEBU012@@Z??4TermCriteria@cv@@QEAAAEAV01@AEBV01@@Z??4VectorDescriptorMatcher@cv@@QEAAAEAV01@AEBV01@@Z??4Vertex@Subdiv2D@cv@@QEAAAEAU012@AEBU012@@Z??4WriteStructContext@cv@@QEAAAEAV01@AEBV01@@Z??4_InputArray@cv@@QEAAAEAV01@AEBV01@@Z??4_OutputArray@cv@@QEAAAEAV01@AEBV01@@Z??4oclMat@ocl@cv@@QEAAAEAV012@AEBV012@@Z??4oclMat@ocl@cv@@QEAAAEAV012@AEBV?$Scalar_@N@2@@Z??4oclMat@ocl@cv@@QEAAAEAV012@AEBVMat@2@@Z??4oclMat@ocl@cv@@QEAAAEAV012@AEBVoclMatExpr@12@@Z??4oclMatExpr@ocl@cv@@QEAAAEAV012@AEBV012@@Z??8MSize@Mat@cv@@QEBA_NAEBU012@@Z??8Match@linemod@cv@@QEBA_NAEBU012@@Z??9MSize@Mat@cv@@QEBA_NAEBU012@@Z??A?$Vec@E$03@cv@@QEAAAEAEH@Z??A?$Vec@E$03@cv@@QEBAAEBEH@Z??A?$Vec@F$01@cv@@QEBAAEBFH@Z??A?$Vec@H$03@cv@@QEAAAEAHH@Z??A?$Vec@H$03@cv@@QEBAAEBHH@Z??A?$Vec@M$01@cv@@QEBAAEBMH@Z??A?$Vec@M$03@cv@@QEAAAEAMH@Z??A?$Vec@M$03@cv@@QEBAAEBMH@Z??A?$Vec@N$01@cv@@QEBAAEBNH@Z??A?$Vec@N$03@cv@@QEAAAEANH@Z??A?$Vec@N$03@cv@@QEBAAEBNH@Z??AMSize@Mat@cv@@QEAAAEAHH@Z??AMSize@Mat@cv@@QEBAAEBHH@Z??AMStep@Mat@cv@@QEAAAEA_KH@Z??AMStep@Mat@cv@@QEBAAEB_KH@Z??AMatConstIterator@cv@@QEBAPEAE_J@Z??B?$AutoBuffer@H$0EAI@@cv@@QEAAPEAHXZ??B?$Point_@H@cv@@QEBA?AUCvPoint@@XZ??B?$Point_@M@cv@@QEBA?AUCvPoint2D32f@@XZ??B?$Ptr@UCvFileStorage@@@cv@@QEAAPEAUCvFileStorage@@XZ??B?$Ptr@UCvFileStorage@@@cv@@QEBAPEBUCvFileStorage@@XZ??B?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAPEAUCvHaarClassifierCascade@@XZ??B?$Ptr@UCvMemStorage@@@cv@@QEAAPEAUCvMemStorage@@XZ??B?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseColumnFilter_GPU@ocl@1@XZ??B?$Ptr@VBaseFilter@cv@@@cv@@QEBAPEBVBaseFilter@1@XZ??B?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseFilter_GPU@ocl@1@XZ??B?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseRowFilter_GPU@ocl@1@XZ??B?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAPEAVFilterEngine_GPU@ocl@1@XZ??B?$Ptr@VTextureCL@ocl@cv@@@cv@@QEAAPEAVTextureCL@ocl@1@XZ??B?$Rect_@H@cv@@QEBA?AUCvRect@@XZ??B?$Size_@H@cv@@QEBA?AUCvSize@@XZ??B?$Size_@M@cv@@QEBA?AUCvSize2D32f@@XZ??BFileNode@cv@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ??BFileNode@cv@@QEBAHXZ??BFileNode@cv@@QEBAMXZ??BFileNode@cv@@QEBANXZ??BMSize@Mat@cv@@QEBAPEBHXZ??BMStep@Mat@cv@@QEBA_KXZ??BMat@cv@@QEBA?AUCvMat@@XZ??BMatExpr@cv@@QEBA?AVMat@1@XZ??BRNG@cv@@QEAACXZ??BRNG@cv@@QEAAEXZ??BRNG@cv@@QEAAFXZ??BRNG@cv@@QEAAGXZ??BRNG@cv@@QEAAHXZ??BRNG@cv@@QEAAIXZ??BRNG@cv@@QEAAMXZ??BRNG@cv@@QEAANXZ??BRange@cv@@QEBA?AUCvSlice@@XZ??BRotatedRect@cv@@QEBA?AUCvBox2D@@XZ??BTermCriteria@cv@@QEBA?AUCvTermCriteria@@XZ??BTextureCL@ocl@cv@@QEAAPEAU_cl_mem@@XZ??BoclMat@ocl@cv@@QEAA?AV_InputArray@2@XZ??BoclMat@ocl@cv@@QEAA?AV_OutputArray@2@XZ??BoclMat@ocl@cv@@QEBA?AVMat@2@XZ??BoclMatExpr@ocl@cv@@QEBA?AVoclMat@12@XZ??C?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAPEAUCvHaarClassifierCascade@@XZ??C?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseColumnFilter_GPU@ocl@1@XZ??C?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseFilter_GPU@ocl@1@XZ??C?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAAPEAVBaseRowFilter_GPU@ocl@1@XZ??C?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAPEAVFilterEngine_GPU@ocl@1@XZ??CFileNodeIterator@cv@@QEBA?AVFileNode@1@XZ??D?$MatIterator_@Tcl_float2@@@cv@@QEBAAEATcl_float2@@XZ??DFileNode@cv@@QEAAPEAUCvFileNode@@XZ??DFileNode@cv@@QEBAPEBUCvFileNode@@XZ??DFileNodeIterator@cv@@QEBA?AVFileNode@1@XZ??DFileStorage@cv@@QEAAPEAUCvFileStorage@@XZ??DFileStorage@cv@@QEBAPEBUCvFileStorage@@XZ??DLineIterator@cv@@QEAAPEAEXZ??DMatConstIterator@cv@@QEBAPEAEXZ??Docl@cv@@YA?AVoclMatExpr@01@AEBVoclMat@01@0@Z??E?$MatIterator_@Tcl_float2@@@cv@@QEAA?AV01@H@Z??E?$MatIterator_@Tcl_float2@@@cv@@QEAAAEAV01@XZ??ELineIterator@cv@@QEAA?AV01@H@Z??ELineIterator@cv@@QEAAAEAV01@XZ??EMatConstIterator@cv@@QEAA?AV01@H@Z??EMatConstIterator@cv@@QEAAAEAV01@XZ??ESparseMatConstIterator@cv@@QEAA?AV01@H@Z??ESparseMatIterator@cv@@QEAA?AV01@H@Z??ESparseMatIterator@cv@@QEAAAEAV01@XZ??F?$MatIterator_@Tcl_float2@@@cv@@QEAAAEAV01@XZ??FMatConstIterator@cv@@QEAA?AV01@H@Z??FMatConstIterator@cv@@QEAAAEAV01@XZ??Gocl@cv@@YA?AVoclMatExpr@01@AEBVoclMat@01@0@Z??Hocl@cv@@YA?AVoclMatExpr@01@AEBVoclMat@01@0@Z??Iocl@cv@@YA?AVoclMat@01@AEBV201@0@Z??Kocl@cv@@YA?AVoclMatExpr@01@AEBVoclMat@01@0@Z??MDMatch@cv@@QEBA_NAEBU01@@Z??MMatch@linemod@cv@@QEBA_NAEBU012@@Z??R?$Matx@N$03$00@cv@@QEBAAEBNHH@Z??R?$Matx@N$03$03@cv@@QEBAAEBNHH@Z??RGoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAAXAEBVoclMat@12@AEAV312@0@Z??RHamming@cv@@QEBAHPEBE0H@Z??RHamming@ocl@cv@@QEBAHPEBE0H@Z??RMSize@Mat@cv@@QEBA?AV?$Size_@H@2@XZ??RMat@cv@@QEBA?AV01@AEBV?$Rect_@H@1@@Z??RMat@cv@@QEBA?AV01@PEBVRange@1@@Z??RMat@cv@@QEBA?AV01@VRange@1@0@Z??ROpticalFlowDual_TVL1_OCL@ocl@cv@@QEAAXAEBVoclMat@12@0AEAV312@1@Z??RRNG@cv@@QEAAII@Z??RRNG@cv@@QEAAIXZ??RStereoBM_OCL@ocl@cv@@QEAAXAEBVoclMat@12@0AEAV312@@Z??RStereoBeliefPropagation@ocl@cv@@QEAAXAEBVoclMat@12@0AEAV312@@Z??RStereoBeliefPropagation@ocl@cv@@QEAAXAEBVoclMat@12@AEAV312@@Z??RStereoConstantSpaceBP@ocl@cv@@QEAAXAEBVoclMat@12@0AEAV312@@Z??RoclMat@ocl@cv@@QEBA?AV012@AEBV?$Rect_@H@2@@Z??RoclMat@ocl@cv@@QEBA?AV012@VRange@2@0@Z??Socl@cv@@YA?AVoclMat@01@AEBV201@@Z??Tocl@cv@@YA?AVoclMat@01@AEBV201@0@Z??Uocl@cv@@YA?AVoclMat@01@AEBV201@0@Z??XoclMat@ocl@cv@@QEAAAEAV012@AEBV012@@Z??YMatConstIterator@cv@@QEAAAEAV01@_J@Z??YoclMat@ocl@cv@@QEAAAEAV012@AEBV012@@Z??ZMatConstIterator@cv@@QEAAAEAV01@_J@Z??ZoclMat@ocl@cv@@QEAAAEAV012@AEBV012@@Z??_0oclMat@ocl@cv@@QEAAAEAV012@AEBV012@@Z??_7AdjusterAdapter@cv@@6BAlgorithm@1@@??_7AdjusterAdapter@cv@@6BFeatureDetector@1@@??_7Algorithm@cv@@6B@??_7BFMatcher@cv@@6B@??_7BOWImgDescriptorExtractor@cv@@6B@??_7BOWKMeansTrainer@cv@@6B@??_7BOWTrainer@cv@@6B@??_7BRISK@cv@@6BAlgorithm@1@@??_7BRISK@cv@@6BDescriptorExtractor@1@@??_7BRISK@cv@@6BFeatureDetector@1@@??_7BaseColumnFilter@cv@@6B@??_7BaseColumnFilter_GPU@ocl@cv@@6B@??_7BaseFilter@cv@@6B@??_7BaseFilter_GPU@ocl@cv@@6B@??_7BaseRowFilter@cv@@6B@??_7BaseRowFilter_GPU@ocl@cv@@6B@??_7BriefDescriptorExtractor@cv@@6BAlgorithm@1@@??_7BriefDescriptorExtractor@cv@@6BDescriptorExtractor@1@@??_7CLAHE@cv@@6B@??_7CascadeClassifier@cv@@6B@??_7ColorGradient@linemod@cv@@6B@??_7CvOpenGlFuncTab@@6B@??_7DenseFeatureDetector@cv@@6BAlgorithm@1@@??_7DenseFeatureDetector@cv@@6BFeatureDetector@1@@??_7DepthNormal@linemod@cv@@6B@??_7DescriptorExtractor@cv@@6B01@@??_7DescriptorExtractor@cv@@6BAlgorithm@1@@??_7DescriptorMatcher@cv@@6B@??_7Exception@cv@@6B@??_7FastAdjuster@cv@@6BAlgorithm@1@@??_7FastAdjuster@cv@@6BFeatureDetector@1@@??_7FastFeatureDetector@cv@@6BAlgorithm@1@@??_7FastFeatureDetector@cv@@6BFeatureDetector@1@@??_7Feature2D@cv@@6BAlgorithm@1@@??_7Feature2D@cv@@6BDescriptorExtractor@1@@??_7Feature2D@cv@@6BFeatureDetector@1@@??_7FeatureDetector@cv@@6B01@@??_7FeatureDetector@cv@@6BAlgorithm@1@@??_7FeatureEvaluator@cv@@6B@??_7FileStorage@cv@@6B@??_7FilterEngine@cv@@6B@??_7FilterEngine_GPU@ocl@cv@@6B@??_7FlannBasedMatcher@cv@@6B@??_7Formatter@cv@@6B@??_7GFTTDetector@cv@@6BAlgorithm@1@@??_7GFTTDetector@cv@@6BFeatureDetector@1@@??_7GeneralizedHough@cv@@6B@??_7GenericDescriptorMatcher@cv@@6B@??_7GridAdaptedFeatureDetector@cv@@6BAlgorithm@1@@??_7GridAdaptedFeatureDetector@cv@@6BFeatureDetector@1@@??_7HOGDescriptor@cv@@6B@??_7Index@flann@cv@@6B@??_7LatentSvmDetector@cv@@6B@??_7MSER@cv@@6BAlgorithm@1@@??_7MSER@cv@@6BFeatureDetector@1@@??_7MaskGenerator@CascadeClassifier@cv@@6B@??_7MatAllocator@cv@@6B@??_7MatOp@cv@@6B@??_7Modality@linemod@cv@@6B@??_7ORB@cv@@6BAlgorithm@1@@??_7ORB@cv@@6BDescriptorExtractor@1@@??_7ORB@cv@@6BFeatureDetector@1@@??_7OclCascadeClassifier@ocl@cv@@6B@??_7OclCascadeClassifierBuf@ocl@cv@@6B@??_7OpponentColorDescriptorExtractor@cv@@6BAlgorithm@1@@??_7OpponentColorDescriptorExtractor@cv@@6BDescriptorExtractor@1@@??_7ParallelLoopBody@cv@@6B@??_7PyramidAdaptedFeatureDetector@cv@@6BAlgorithm@1@@??_7PyramidAdaptedFeatureDetector@cv@@6BFeatureDetector@1@@??_7SimpleBlobDetector@cv@@6BAlgorithm@1@@??_7SimpleBlobDetector@cv@@6BFeatureDetector@1@@??_7StarAdjuster@cv@@6BAlgorithm@1@@??_7StarAdjuster@cv@@6BFeatureDetector@1@@??_7StarDetector@cv@@6BAlgorithm@1@@??_7StarDetector@cv@@6BFeatureDetector@1@@??_7SurfAdjuster@cv@@6BAlgorithm@1@@??_7SurfAdjuster@cv@@6BFeatureDetector@1@@??_7VectorDescriptorMatcher@cv@@6B@??_7_InputArray@cv@@6B@??_7_OutputArray@cv@@6B@??_8AdjusterAdapter@cv@@7B@??_8BRISK@cv@@7BDescriptorExtractor@1@@??_8BRISK@cv@@7BFeatureDetector@1@@??_8BriefDescriptorExtractor@cv@@7B@??_8DenseFeatureDetector@cv@@7B@??_8DescriptorExtractor@cv@@7B@??_8FastAdjuster@cv@@7B@??_8FastFeatureDetector@cv@@7B@??_8Feature2D@cv@@7BDescriptorExtractor@1@@??_8Feature2D@cv@@7BFeatureDetector@1@@??_8FeatureDetector@cv@@7B@??_8GFTTDetector@cv@@7B@??_8GridAdaptedFeatureDetector@cv@@7B@??_8MSER@cv@@7B@??_8ORB@cv@@7BDescriptorExtractor@1@@??_8ORB@cv@@7BFeatureDetector@1@@??_8OpponentColorDescriptorExtractor@cv@@7B@??_8PyramidAdaptedFeatureDetector@cv@@7B@??_8SimpleBlobDetector@cv@@7B@??_8StarAdjuster@cv@@7B@??_8StarDetector@cv@@7B@??_8SurfAdjuster@cv@@7B@??_DAdjusterAdapter@cv@@QEAAXXZ??_DBRISK@cv@@QEAAXXZ??_DBriefDescriptorExtractor@cv@@QEAAXXZ??_DDenseFeatureDetector@cv@@QEAAXXZ??_DDescriptorExtractor@cv@@QEAAXXZ??_DDynamicAdaptedFeatureDetector@cv@@QEAAXXZ??_DFREAK@cv@@QEAAXXZ??_DFastAdjuster@cv@@QEAAXXZ??_DFastFeatureDetector@cv@@QEAAXXZ??_DFeature2D@cv@@QEAAXXZ??_DFeatureDetector@cv@@QEAAXXZ??_DGFTTDetector@cv@@QEAAXXZ??_DGridAdaptedFeatureDetector@cv@@QEAAXXZ??_DMSER@cv@@QEAAXXZ??_DORB@cv@@QEAAXXZ??_DOpponentColorDescriptorExtractor@cv@@QEAAXXZ??_DPyramidAdaptedFeatureDetector@cv@@QEAAXXZ??_DSimpleBlobDetector@cv@@QEAAXXZ??_DStarAdjuster@cv@@QEAAXXZ??_DStarDetector@cv@@QEAAXXZ??_DSurfAdjuster@cv@@QEAAXXZ??_FAutotunedIndexParams@flann@cv@@QEAAXXZ??_FBFMatcher@cv@@QEAAXXZ??_FBFMatcher_OCL@ocl@cv@@QEAAXXZ??_FBRISK@cv@@QEAAXXZ??_FBriefDescriptorExtractor@cv@@QEAAXXZ??_FBruteForceMatcher_OCL_base@ocl@cv@@QEAAXXZ??_FCompositeIndexParams@flann@cv@@QEAAXXZ??_FDenseFeatureDetector@cv@@QEAAXXZ??_FFREAK@cv@@QEAAXXZ??_FFastAdjuster@cv@@QEAAXXZ??_FFastFeatureDetector@cv@@QEAAXXZ??_FFlannBasedMatcher@cv@@QEAAXXZ??_FGFTTDetector@cv@@QEAAXXZ??_FGoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAAXXZ??_FGridAdaptedFeatureDetector@cv@@QEAAXXZ??_FHOGDescriptor@ocl@cv@@QEAAXXZ??_FHierarchicalClusteringIndexParams@flann@cv@@QEAAXXZ??_FKDTreeIndexParams@flann@cv@@QEAAXXZ??_FKMeansIndexParams@flann@cv@@QEAAXXZ??_FMSER@cv@@QEAAXXZ??_FORB@cv@@QEAAXXZ??_FSearchParams@flann@cv@@QEAAXXZ??_FSimpleBlobDetector@cv@@QEAAXXZ??_FStarAdjuster@cv@@QEAAXXZ??_FStarDetector@cv@@QEAAXXZ??_FStereoBeliefPropagation@ocl@cv@@QEAAXXZ??_FStereoConstantSpaceBP@ocl@cv@@QEAAXXZ??_FSurfAdjuster@cv@@QEAAXXZ?Canny@ocl@cv@@YAXAEBVoclMat@12@0AEAUCannyBuf@12@AEAV312@NN_N@Z?Canny@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@NN_N@Z?Canny@ocl@cv@@YAXAEBVoclMat@12@AEAUCannyBuf@12@AEAV312@NNH_N@Z?Canny@ocl@cv@@YAXAEBVoclMat@12@AEAV312@NNH_N@Z?CreateBaseBufs@OclCascadeClassifierBuf@ocl@cv@@AEAAXHHHH@Z?CreateFactorRelatedBufs@OclCascadeClassifierBuf@ocl@cv@@AEAAXHHHNQEB_KUCvSize@@1@Z?GaussianBlur@ocl@cv@@YAXAEBVoclMat@12@AEAV312@V?$Size_@H@2@NNH@Z?GenResult@OclCascadeClassifierBuf@ocl@cv@@AEAAXAEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@AEBV45@AEBV?$vector@HV?$allocator@H@std@@@5@@Z?Init@OclCascadeClassifierBuf@ocl@cv@@AEAAXHHNHHQEB_KUCvSize@@1@Z?KERNEL_SIZE@BriefDescriptorExtractor@cv@@2HB?LUT@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?Laplacian@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHN@Z?PATCH_SIZE@BriefDescriptorExtractor@cv@@2HB?Scharr@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHHNNH@Z?Sobel@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHHHNNH@Z?absSum@ocl@cv@@YA?AV?$Scalar_@N@2@AEBVoclMat@12@@Z?absdiff@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?absdiff@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@@Z?add@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@@Z?add@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@0@Z?add@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?add@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@0@Z?addWeighted@ocl@cv@@YAXAEBVoclMat@12@N0NNAEAV312@@Z?addref@?$Ptr@UCvFileStorage@@@cv@@QEAAXXZ?addref@?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAXXZ?addref@?$Ptr@UIndexParams@flann@cv@@@cv@@QEAAXXZ?addref@?$Ptr@USearchParams@flann@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseFilter@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseRowFilter@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VFeatureDetector@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VIndex@flann@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAAXXZ?addref@?$Ptr@VModality@linemod@cv@@@cv@@QEAAXXZ?addref@Mat@cv@@QEAAXXZ?addref@SparseMat@cv@@QEAAXXZ?adjustROI@oclMat@ocl@cv@@QEAAAEAV123@HHHH@Z?all@?$Scalar_@E@cv@@SA?AV12@E@Z?all@?$Scalar_@F@cv@@SA?AV12@F@Z?all@?$Scalar_@I@cv@@SA?AV12@I@Z?all@?$Scalar_@N@cv@@SA?AV12@N@Z?all@?$Vec@M$03@cv@@SA?AV12@M@Z?all@Range@cv@@SA?AV12@XZ?allocate@?$AutoBuffer@H$0EAI@@cv@@QEAAX_K@Z?area@?$Rect_@H@cv@@QEBAHXZ?area@?$Size_@H@cv@@QEBAHXZ?assign@oclMatExpr@ocl@cv@@QEBAXAEAVoclMat@23@@Z?assignTo@Mat@cv@@QEBAXAEAV12@H@Z?assignTo@SparseMat@cv@@QEBAXAEAV12@H@Z?assignTo@oclMat@ocl@cv@@QEBAXAEAV123@H@Z?begin@FileNode@cv@@QEBA?AVFileNodeIterator@2@XZ?begin@SparseMat@cv@@QEAA?AVSparseMatIterator@2@XZ?begin@SparseMat@cv@@QEBA?AVSparseMatConstIterator@2@XZ?bilateralFilter@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HNNH@Z?bindTexture@ocl@cv@@YAPEAU_cl_mem@@AEBVoclMat@12@@Z?bindTexturePtr@ocl@cv@@YA?AV?$Ptr@VTextureCL@ocl@cv@@@2@AEBVoclMat@12@@Z?bitwise_and@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@0@Z?bitwise_and@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@0@Z?bitwise_not@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?bitwise_or@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@0@Z?bitwise_or@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@0@Z?bitwise_xor@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@0@Z?bitwise_xor@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@0@Z?blendLinear@ocl@cv@@YAXAEBVoclMat@12@000AEAV312@@Z?boxFilter@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HV?$Size_@H@2@V?$Point_@H@2@H@Z?buildWarpAffineMaps@ocl@cv@@YAXAEBVMat@2@_NV?$Size_@H@2@AEAVoclMat@12@3@Z?buildWarpCylindricalMaps@ocl@cv@@YAXV?$Size_@H@2@V?$Rect_@H@2@AEBVMat@2@2MAEAVoclMat@12@3@Z?buildWarpPerspectiveMaps@ocl@cv@@YAXAEBVMat@2@_NV?$Size_@H@2@AEAVoclMat@12@3@Z?buildWarpPlaneMaps@ocl@cv@@YAXV?$Size_@H@2@V?$Rect_@H@2@AEBVMat@2@22MAEAVoclMat@12@3@Z?buildWarpSphericalMaps@ocl@cv@@YAXV?$Size_@H@2@V?$Rect_@H@2@AEBVMat@2@2MAEAVoclMat@12@3@Z?calcHist@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?cartToPolar@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@1_N@Z?channels@Mat@cv@@QEBAHXZ?channels@SparseMat@cv@@QEBAHXZ?channels@oclMat@ocl@cv@@QEBAHXZ?checkDetectorSize@HOGDescriptor@ocl@cv@@IEBA_NXZ?checkIfGpuCallReasonable@StereoBM_OCL@ocl@cv@@SA_NXZ?clCxt@Context@ocl@cv@@0V?$auto_ptr@VContext@ocl@cv@@@std@@A?clear@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXXZ?clone@Mat@cv@@QEBA?AV12@XZ?clone@SparseMat@cv@@QEBA?AV12@XZ?clone@oclMat@ocl@cv@@QEBA?AV123@XZ?clone_op@DescriptorMatcher@cv@@KA?AVMat@2@V32@@Z?clone_op@KeyPointCollection@GenericDescriptorMatcher@cv@@CA?AVMat@3@V43@@Z?col@Mat@cv@@QEBA?AV12@H@Z?col@oclMat@ocl@cv@@QEBA?AV123@H@Z?colRange@Mat@cv@@QEBA?AV12@AEBVRange@2@@Z?colRange@Mat@cv@@QEBA?AV12@HH@Z?colRange@oclMat@ocl@cv@@QEBA?AV123@AEBVRange@3@@Z?colRange@oclMat@ocl@cv@@QEBA?AV123@HH@Z?collectGarbage@OpticalFlowDual_TVL1_OCL@ocl@cv@@QEAAXXZ?columnSum@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?compare@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@H@Z?computeBlockHistograms@HOGDescriptor@ocl@cv@@IEAAXAEBVoclMat@23@@Z?computeGradient@HOGDescriptor@ocl@cv@@IEAAXAEBVoclMat@23@AEAV423@1@Z?computeUnits@Context@ocl@cv@@QEAA_KXZ?conj@?$Vec@M$01@cv@@QEBA?AV12@XZ?conj@?$Vec@M$03@cv@@QEBA?AV12@XZ?conj@?$Vec@N$01@cv@@QEBA?AV12@XZ?conj@?$Vec@N$03@cv@@QEBA?AV12@XZ?convertTo@oclMat@ocl@cv@@QEBAXAEAV123@HNN@Z?convolve@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?copyMakeBorder@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHHHHAEBV?$Scalar_@N@2@@Z?copyTo@?$Seq@UCvAvgComp@@@cv@@QEBAXAEAV?$vector@UCvAvgComp@@V?$allocator@UCvAvgComp@@@std@@@std@@AEBVRange@2@@Z?copyTo@oclMat@ocl@cv@@QEBAXAEAV123@@Z?copyTo@oclMat@ocl@cv@@QEBAXAEAV123@AEBV123@@Z?cornerHarris@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHNH@Z?cornerHarris_dxdy@ocl@cv@@YAXAEBVoclMat@12@AEAV312@11HHNH@Z?cornerMinEigenVal@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHH@Z?cornerMinEigenVal_dxdy@ocl@cv@@YAXAEBVoclMat@12@AEAV312@11HHH@Z?countNonZero@ocl@cv@@YAHAEBVoclMat@12@@Z?create@CannyBuf@ocl@cv@@QEAAXAEBV?$Size_@H@3@H@Z?create@Mat@cv@@QEAAXHHH@Z?create@Mat@cv@@QEAAXV?$Size_@H@2@H@Z?create@oclMat@ocl@cv@@QEAAXHHH@Z?create@oclMat@ocl@cv@@QEAAXV?$Size_@H@3@H@Z?createBoxFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HHAEBV?$Size_@H@2@AEBV?$Point_@H@2@H@Z?createCLAHE@ocl@cv@@YA?AV?$Ptr@VCLAHE@cv@@@2@NV?$Size_@H@2@@Z?createDerivFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HHHHHH@Z?createEx@oclMat@ocl@cv@@QEAAXHHHW4DevMemRW@23@W4DevMemType@23@@Z?createEx@oclMat@ocl@cv@@QEAAXV?$Size_@H@3@HW4DevMemRW@23@W4DevMemType@23@@Z?createFilter2D_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@V?$Ptr@VBaseFilter_GPU@ocl@cv@@@2@@Z?createGaussianFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HV?$Size_@H@2@NNH@Z?createLinearFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HHAEBVMat@2@AEBV?$Point_@H@2@H@Z?createMorphologyFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HHAEBVMat@2@AEBV?$Point_@H@2@H@Z?createSeparableFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@AEBV?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@2@AEBV?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@2@@Z?createSeparableLinearFilter_GPU@ocl@cv@@YA?AV?$Ptr@VFilterEngine_GPU@ocl@cv@@@2@HHAEBVMat@2@0AEBV?$Point_@H@2@NH@Z?cross@?$Vec@M$02@cv@@QEBA?AV12@AEBV12@@Z?cross@?$Vec@N$02@cv@@QEBA?AV12@AEBV12@@Z?cvtColor@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HH@Z?deallocate@?$AutoBuffer@H$0EAI@@cv@@QEAAXXZ?delete_obj@?$Ptr@UIndexParams@flann@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@USearchParams@flann@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VAdjusterAdapter@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseFilter@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseRowFilter@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VCLAHE@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VFeatureDetector@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VIndex@flann@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VModality@linemod@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VQuantizedPyramid@linemod@cv@@@cv@@QEAAXXZ?delete_obj@?$Ptr@VTextureCL@ocl@cv@@@cv@@QEAAXXZ?dense@PyrLKOpticalFlow@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@1PEAV423@@Z?depth@Mat@cv@@QEBAHXZ?depth@SparseMat@cv@@QEBAHXZ?depth@oclMat@ocl@cv@@QEBAHXZ?detect@HOGDescriptor@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@V?$Point_@H@cv@@V?$allocator@V?$Point_@H@cv@@@std@@@std@@NV?$Size_@H@3@2@Z?detectMultiScale@HOGDescriptor@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@NV?$Size_@H@3@2NH@Z?detectMultiScale@OclCascadeClassifierBuf@ocl@cv@@QEAAXAEAVoclMat@23@AEAV?$vector@V?$Rect_@H@cv@@V?$allocator@V?$Rect_@H@cv@@@std@@@std@@NHHV?$Size_@H@3@2@Z?dft@ocl@cv@@YAXAEBVoclMat@12@AEAV312@V?$Size_@H@2@H@Z?diag@Mat@cv@@SA?AV12@AEBV12@@Z?dilate@ocl@cv@@YAXAEBVoclMat@12@AEAV312@AEBVMat@2@V?$Point_@H@2@HHAEBV?$Scalar_@N@2@@Z?dims@SparseMat@cv@@QEBAHXZ?divide@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@N@Z?divide@ocl@cv@@YAXNAEBVoclMat@12@AEAV312@@Z?download@oclMat@ocl@cv@@QEBAXAEAVMat@3@@Z?downloadPoints@GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@V?$Point_@M@cv@@V?$allocator@V?$Point_@M@cv@@@std@@@std@@@Z?elemSize1@Mat@cv@@QEBA_KXZ?elemSize1@SparseMat@cv@@QEBA_KXZ?elemSize1@oclMat@ocl@cv@@QEBA_KXZ?elemSize@Mat@cv@@QEBA_KXZ?elemSize@SparseMat@cv@@QEBA_KXZ?elemSize@oclMat@ocl@cv@@QEBA_KXZ?empty@BruteForceMatcher_OCL_base@ocl@cv@@QEBA_NXZ?empty@FileNode@cv@@QEBA_NXZ?empty@Mat@cv@@QEBA_NXZ?empty@Range@cv@@QEBA_NXZ?empty@oclMat@ocl@cv@@QEBA_NXZ?end@FileNode@cv@@QEBA?AVFileNodeIterator@2@XZ?end@SparseMat@cv@@QEAA?AVSparseMatIterator@2@XZ?end@SparseMat@cv@@QEBA?AVSparseMatConstIterator@2@XZ?equalizeHist@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?erode@ocl@cv@@YAXAEBVoclMat@12@AEAV312@AEBVMat@2@V?$Point_@H@2@HHAEBV?$Scalar_@N@2@@Z?error@ocl@cv@@YAXPEBD0H0@Z?estimateRecommendedParams@StereoBeliefPropagation@ocl@cv@@SAXHHAEAH00@Z?estimateRecommendedParams@StereoConstantSpaceBP@ocl@cv@@SAXHHAEAH000@Z?exp@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?filter2D@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HAEBVMat@2@V?$Point_@H@2@H@Z?finish@ocl@cv@@YAXXZ?flip@ocl@cv@@YAXAEBVoclMat@12@AEAV312@H@Z?gemm@ocl@cv@@YAXAEBVoclMat@12@0N0NAEAV312@H@Z?getBlockHistogramSize@HOGDescriptor@ocl@cv@@QEBA_KXZ?getBoxFilter_GPU@ocl@cv@@YA?AV?$Ptr@VBaseFilter_GPU@ocl@cv@@@2@HHAEBV?$Size_@H@2@V?$Point_@H@2@H@Z?getContext@Context@ocl@cv@@SAPEAV123@XZ?getDefaultPeopleDetector@HOGDescriptor@ocl@cv@@SA?AV?$vector@MV?$allocator@M@std@@@std@@XZ?getDescriptorSize@HOGDescriptor@ocl@cv@@QEBA_KXZ?getDescriptors@HOGDescriptor@ocl@cv@@QEAAXAEBVoclMat@23@V?$Size_@H@3@AEAV423@H@Z?getDevMemType@ocl@cv@@YAHAEAW4DevMemRW@12@AEAW4DevMemType@12@@Z?getDevice@ocl@cv@@YAHAEAV?$vector@VInfo@ocl@cv@@V?$allocator@VInfo@ocl@cv@@@std@@@std@@H@Z?getFirstTopLevelNode@FileStorage@cv@@QEBA?AVFileNode@2@XZ?getLinearColumnFilter_GPU@ocl@cv@@YA?AV?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@2@HHAEBVMat@2@HHN@Z?getLinearFilter_GPU@ocl@cv@@YA?AV?$Ptr@VBaseFilter_GPU@ocl@cv@@@2@HHAEBVMat@2@AEBV?$Size_@H@2@V?$Point_@H@2@H@Z?getLinearRowFilter_GPU@ocl@cv@@YA?AV?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@2@HHAEBVMat@2@HH@Z?getModalities@Detector@linemod@cv@@QEBAAEBV?$vector@V?$Ptr@VModality@linemod@cv@@@cv@@V?$allocator@V?$Ptr@VModality@linemod@cv@@@cv@@@std@@@std@@XZ?getMorphologyFilter_GPU@ocl@cv@@YA?AV?$Ptr@VBaseFilter_GPU@ocl@cv@@@2@HHAEBVMat@2@AEBV?$Size_@H@2@V?$Point_@H@2@@Z?getOclMatRef@ocl@cv@@YAAEAVoclMat@12@AEBV_InputArray@2@@Z?getOclMatRef@ocl@cv@@YAAEAVoclMat@12@AEBV_OutputArray@2@@Z?getPeopleDetector48x96@HOGDescriptor@ocl@cv@@SA?AV?$vector@MV?$allocator@M@std@@@std@@XZ?getPeopleDetector64x128@HOGDescriptor@ocl@cv@@SA?AV?$vector@MV?$allocator@M@std@@@std@@XZ?getT@Detector@linemod@cv@@QEBAHH@Z?getTrainDescriptors@BruteForceMatcher_OCL_base@ocl@cv@@QEBAAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@XZ?getWinSigma@HOGDescriptor@ocl@cv@@IEBANXZ?getoclCommandQueue@ocl@cv@@YAPEAXXZ?getoclContext@ocl@cv@@YAPEAXXZ?hash@SparseMat@cv@@QEBA_KH@Z?hash@SparseMat@cv@@QEBA_KHH@Z?hash@SparseMat@cv@@QEBA_KHHH@Z?hash@SparseMat@cv@@QEBA_KPEBH@Z?info@Algorithm@cv@@UEBAPEAVAlgorithmInfo@2@XZ?initEmpty@Mat@cv@@IEAAXXZ?init_buffer@HOGDescriptor@ocl@cv@@IEAAXAEBVoclMat@23@V?$Size_@H@3@@Z?initializeMask@MaskGenerator@CascadeClassifier@cv@@UEAAXAEBVMat@3@@Z?initialized@ocl@cv@@YA_NXZ?integral@ocl@cv@@YAXAEBVoclMat@12@AEAV312@1@Z?integral@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?interpolateFrames@ocl@cv@@YAXAEBVoclMat@12@00000MAEAV312@1@Z?isContinuous@Mat@cv@@QEBA_NXZ?isContinuous@oclMat@ocl@cv@@QEBA_NXZ?isInt@FileNode@cv@@QEBA_NXZ?isMap@FileNode@cv@@QEBA_NXZ?isMaskSupported@BFMatcher@cv@@UEBA_NXZ?isMaskSupported@BruteForceMatcher_OCL_base@ocl@cv@@QEBA_NXZ?isNamed@FileNode@cv@@QEBA_NXZ?isNone@FileNode@cv@@QEBA_NXZ?isReal@FileNode@cv@@QEBA_NXZ?isSeparable@FilterEngine@cv@@QEBA_NXZ?isSeq@FileNode@cv@@QEBA_NXZ?isString@FileNode@cv@@QEBA_NXZ?isSubmatrix@Mat@cv@@QEBA_NXZ?knnMatch2Collection@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@110@Z?knnMatch2Convert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@00AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?knnMatch2Download@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@00AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?knnMatch@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@H0_N@Z?knnMatch@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@HAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@6@_N@Z?knnMatchConvert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@0AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?knnMatchDownload@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@0AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?knnMatchSingle@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@11H0@Z?load_constant@ocl@cv@@YAPEAU_cl_mem@@PEAU_cl_context@@PEAU_cl_command_queue@@PEBX_K@Z?locateROI@oclMat@ocl@cv@@QEBAXAEAV?$Size_@H@3@AEAV?$Point_@H@3@@Z?log@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?magnitude@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?magnitudeSqr@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?magnitudeSqr@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?makeGpuCollection@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEAVoclMat@23@0AEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@@Z?match@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@0@Z?match@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@AEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@6@@Z?matchCollection@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@110@Z?matchConvert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@00AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@Z?matchConvert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@0AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@Z?matchDownload@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@00AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@Z?matchDownload@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@0AEAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@Z?matchSingle@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@10@Z?matchTemplate@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@H@Z?matchTemplate@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@HAEAUMatchTemplateBuf@12@@Z?meanShiftFiltering@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HHVTermCriteria@2@@Z?meanShiftProc@ocl@cv@@YAXAEBVoclMat@12@AEAV312@1HHVTermCriteria@2@@Z?meanShiftSegmentation@ocl@cv@@YAXAEBVoclMat@12@AEAVMat@2@HHHVTermCriteria@2@@Z?meanStdDev@ocl@cv@@YAXAEBVoclMat@12@AEAV?$Scalar_@N@2@1@Z?medianFilter@ocl@cv@@YAXAEBVoclMat@12@AEAV312@H@Z?merge@ocl@cv@@YAXAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@AEAVoclMat@12@@Z?merge@ocl@cv@@YAXPEBVoclMat@12@_KAEAV312@@Z?minMax@ocl@cv@@YAXAEBVoclMat@12@PEAN10@Z?minMaxLoc@ocl@cv@@YAXAEBVoclMat@12@PEAN1PEAV?$Point_@H@2@20@Z?minMax_buf@ocl@cv@@YAXAEBVoclMat@12@PEAN10AEAV312@@Z?morphologyEx@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HAEBVMat@2@V?$Point_@H@2@HHAEBV?$Scalar_@N@2@@Z?multiply@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@N@Z?multiply@ocl@cv@@YAXNAEBVoclMat@12@AEAV312@@Z?next@RNG@cv@@QEAAIXZ?node@SparseMat@cv@@QEAAPEAUNode@12@_K@Z?node@SparseMat@cv@@QEBAPEBUNode@12@_K@Z?node@SparseMatConstIterator@cv@@QEBAPEBUNode@SparseMat@2@XZ?node@SparseMatIterator@cv@@QEBAPEAUNode@SparseMat@2@XZ?norm@ocl@cv@@YANAEBVoclMat@12@0H@Z?norm@ocl@cv@@YANAEBVoclMat@12@H@Z?numClasses@Detector@linemod@cv@@QEBAHXZ?numPartsWithin@HOGDescriptor@ocl@cv@@KA?AV?$Size_@H@3@V43@00@Z?numPartsWithin@HOGDescriptor@ocl@cv@@KAHHHH@Z?nzcount@SparseMat@cv@@QEBA_KXZ?oclCommandQueue@Context@ocl@cv@@QEAAPEAXXZ?oclContext@Context@ocl@cv@@QEAAPEAXXZ?oclHaarDetectObjects@OclCascadeClassifier@ocl@cv@@QEAAPEAUCvSeq@@AEAVoclMat@23@PEAUCvMemStorage@@NHHUCvSize@@2@Z?ocl_moments@ocl@cv@@YA?AVMoments@2@AEBV_InputArray@2@_N@Z?oclchannels@oclMat@ocl@cv@@QEBAHXZ?ocltype@oclMat@ocl@cv@@QEBAHXZ?openCLCopyBuffer2D@ocl@cv@@YAXPEAVContext@12@PEAX_KHPEBX222H@Z?openCLCreateBuffer@ocl@cv@@YAPEAU_cl_mem@@PEAVContext@12@_K1@Z?openCLExecuteKernel2@ocl@cv@@YAXPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHPEADW4FLUSH_MODE@12@@Z?openCLExecuteKernel2@ocl@cv@@YAXPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHW4FLUSH_MODE@12@@Z?openCLExecuteKernel@ocl@cv@@YAXPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HH@Z?openCLExecuteKernel@ocl@cv@@YAXPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHPEBD@Z?openCLExecuteKernelInterop@ocl@cv@@YANPEAVContext@12@PEAPEBDHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHPEBD_N66@Z?openCLExecuteKernelInterop@ocl@cv@@YANPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHPEBD_N66@Z?openCLExecuteKernel_@ocl@cv@@YAXPEAVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEA_K3AEAV?$vector@U?$pair@_KPEBX@std@@V?$allocator@U?$pair@_KPEBX@std@@@2@@5@HHPEBD@Z?openCLFree@ocl@cv@@YAXPEAX@Z?openCLGetKernelFromSource@ocl@cv@@YAPEAU_cl_kernel@@PEBVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z?openCLGetKernelFromSource@ocl@cv@@YAPEAU_cl_kernel@@PEBVContext@12@PEAPEBDV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z?openCLMallocPitch@ocl@cv@@YAXPEAVContext@12@PEAPEAXPEA_K_K3@Z?openCLMallocPitchEx@ocl@cv@@YAXPEAVContext@12@PEAPEAXPEA_K_K3W4DevMemRW@12@W4DevMemType@12@@Z?openCLMemcpy2D@ocl@cv@@YAXPEAVContext@12@PEAX_KPEBX222W4openCLMemcpyKind@12@H@Z?openCLReadBuffer@ocl@cv@@YAXPEAVContext@12@PEAU_cl_mem@@PEAX_K@Z?openCLVerifyKernel@ocl@cv@@YAXPEBVContext@12@PEAU_cl_kernel@@PEA_K@Z?phase@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@_N@Z?polarToCart@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@1_N@Z?pos@LineIterator@cv@@QEBA?AV?$Point_@H@2@XZ?pow@ocl@cv@@YAXAEBVoclMat@12@NAEAV312@@Z?procOneScale@OpticalFlowDual_TVL1_OCL@ocl@cv@@AEAAXAEBVoclMat@23@0AEAV423@1@Z?process@Modality@linemod@cv@@QEBA?AV?$Ptr@VQuantizedPyramid@linemod@cv@@@3@AEBVMat@3@0@Z?ptr@Mat@cv@@QEAAPEAEH@Z?ptr@Mat@cv@@QEAAPEAEHH@Z?ptr@Mat@cv@@QEAAPEAEHHH@Z?ptr@Mat@cv@@QEAAPEAEPEBH@Z?ptr@Mat@cv@@QEBAPEBEH@Z?ptr@Mat@cv@@QEBAPEBEHH@Z?ptr@Mat@cv@@QEBAPEBEHHH@Z?ptr@Mat@cv@@QEBAPEBEPEBH@Z?ptr@oclMat@ocl@cv@@QEAAPEAEH@Z?ptr@oclMat@ocl@cv@@QEBAPEBEH@Z?pyrDown@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?pyrUp@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?pyramidLevels@Detector@linemod@cv@@QEBAHXZ?radiusMatch@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@M0_N@Z?radiusMatch@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@MAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@6@_N@Z?radiusMatchCollection@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@AEAV423@111MAEBV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@@Z?radiusMatchConvert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@000AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?radiusMatchConvert@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVMat@3@00AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?radiusMatchDownload@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@000AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?radiusMatchDownload@BruteForceMatcher_OCL_base@ocl@cv@@SAXAEBVoclMat@23@00AEAV?$vector@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@V?$allocator@V?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@@2@@std@@_N@Z?radiusMatchSingle@BruteForceMatcher_OCL_base@ocl@cv@@QEAAXAEBVoclMat@23@0AEAV423@11M0@Z?readRaw@FileNode@cv@@QEBAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAE_K@Z?release@?$Ptr@UCvFileStorage@@@cv@@QEAAXXZ?release@?$Ptr@UCvHaarClassifierCascade@@@cv@@QEAAXXZ?release@?$Ptr@UCvMemStorage@@@cv@@QEAAXXZ?release@?$Ptr@UIndexParams@flann@cv@@@cv@@QEAAXXZ?release@?$Ptr@USearchParams@flann@cv@@@cv@@QEAAXXZ?release@?$Ptr@VAdjusterAdapter@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseColumnFilter@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseColumnFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseFilter@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseRowFilter@cv@@@cv@@QEAAXXZ?release@?$Ptr@VBaseRowFilter_GPU@ocl@cv@@@cv@@QEAAXXZ?release@?$Ptr@VCLAHE@cv@@@cv@@QEAAXXZ?release@?$Ptr@VDescriptorExtractor@cv@@@cv@@QEAAXXZ?release@?$Ptr@VDescriptorMatcher@cv@@@cv@@QEAAXXZ?release@?$Ptr@VFeatureDetector@cv@@@cv@@QEAAXXZ?release@?$Ptr@VFeatureEvaluator@cv@@@cv@@QEAAXXZ?release@?$Ptr@VFilterEngine_GPU@ocl@cv@@@cv@@QEAAXXZ?release@?$Ptr@VIndex@flann@cv@@@cv@@QEAAXXZ?release@?$Ptr@VMaskGenerator@CascadeClassifier@cv@@@cv@@QEAAXXZ?release@?$Ptr@VModality@linemod@cv@@@cv@@QEAAXXZ?release@?$Ptr@VQuantizedPyramid@linemod@cv@@@cv@@QEAAXXZ?release@?$Ptr@VTextureCL@ocl@cv@@@cv@@QEAAXXZ?release@CannyBuf@ocl@cv@@QEAAXXZ?release@Context@ocl@cv@@QEAAXXZ?release@Info@ocl@cv@@QEAAXXZ?release@Mat@cv@@QEAAXXZ?release@OclCascadeClassifierBuf@ocl@cv@@QEAAXXZ?release@SparseMat@cv@@QEAAXXZ?release@oclMat@ocl@cv@@QEAAXXZ?releaseMemory@GoodFeaturesToTrackDetector_OCL@ocl@cv@@QEAAXXZ?releaseMemory@PyrLKOpticalFlow@ocl@cv@@QEAAXXZ?releaseTexture@ocl@cv@@YAXAEAPEAU_cl_mem@@@Z?remap@ocl@cv@@YAXAEBVoclMat@12@AEAV312@11HHAEBV?$Scalar_@N@2@@Z?reshape@oclMat@ocl@cv@@QEBA?AV123@HH@Z?resize@ocl@cv@@YAXAEBVoclMat@12@AEAV312@V?$Size_@H@2@NNH@Z?row@Mat@cv@@QEBA?AV12@H@Z?row@oclMat@ocl@cv@@QEBA?AV123@H@Z?rowRange@Mat@cv@@QEBA?AV12@AEBVRange@2@@Z?rowRange@Mat@cv@@QEBA?AV12@HH@Z?rowRange@oclMat@ocl@cv@@QEBA?AV123@AEBVRange@3@@Z?rowRange@oclMat@ocl@cv@@QEBA?AV123@HH@Z?savetofile@ocl@cv@@YAHPEBVContext@12@AEAPEAU_cl_program@@PEBD@Z?seekEnd@SparseMatConstIterator@cv@@QEAAXXZ?sepFilter2D@ocl@cv@@YAXAEBVoclMat@12@AEAV312@HAEBVMat@2@2V?$Point_@H@2@NH@Z?setBinaryDiskCache@ocl@cv@@YAXHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z?setBinpath@ocl@cv@@YAXPEBD@Z?setContext@Context@ocl@cv@@SAXAEAVInfo@23@@Z?setDevMemType@ocl@cv@@YAHW4DevMemRW@12@W4DevMemType@12@@Z?setDevice@ocl@cv@@YAXAEAVInfo@12@H@Z?setDeviceEx@ocl@cv@@YAXAEAVInfo@12@PEAX1H@Z?setSVMDetector@HOGDescriptor@ocl@cv@@QEAAXAEBV?$vector@MV?$allocator@M@std@@@std@@@Z?setTo@oclMat@ocl@cv@@QEAAAEAV123@AEBV?$Scalar_@N@3@AEBV123@@Z?size@?$Rect_@H@cv@@QEBA?AV?$Size_@H@2@XZ?size@FileNode@cv@@QEBA_KXZ?size@Range@cv@@QEBAHXZ?size@SparseMat@cv@@QEBAHH@Z?size@SparseMat@cv@@QEBAPEBHXZ?size@oclMat@ocl@cv@@QEBA?AV?$Size_@H@3@XZ?solveZ@SVD@cv@@SAXAEBV_InputArray@2@AEBV_OutputArray@2@@Z?sparse@PyrLKOpticalFlow@ocl@cv@@QEAAXAEBVoclMat@23@00AEAV423@1PEAV423@@Z?split@ocl@cv@@YAXAEBVoclMat@12@AEAV?$vector@VoclMat@ocl@cv@@V?$allocator@VoclMat@ocl@cv@@@std@@@std@@@Z?split@ocl@cv@@YAXAEBVoclMat@12@PEAV312@@Z?sqrSum@ocl@cv@@YA?AV?$Scalar_@N@2@AEBVoclMat@12@@Z?step1@Mat@cv@@QEBA_KH@Z?step1@oclMat@ocl@cv@@QEBA_KXZ?subtract@ocl@cv@@YAXAEBV?$Scalar_@N@2@AEBVoclMat@12@AEAV412@1@Z?subtract@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@0@Z?subtract@ocl@cv@@YAXAEBVoclMat@12@0AEAV312@@Z?subtract@ocl@cv@@YAXAEBVoclMat@12@AEBV?$Scalar_@N@2@AEAV312@0@Z?sum@ocl@cv@@YA?AV?$Scalar_@N@2@AEBVoclMat@12@@Z?support_image2d@ocl@cv@@YA_NPEAVContext@12@@Z?supportsFeature@Context@ocl@cv@@QEAA_NH@Z?swap@oclMat@ocl@cv@@QEAAXAEAV123@@Z?t@oclMat@ocl@cv@@QEBA?AV123@XZ?threshold@ocl@cv@@YANAEBVoclMat@12@AEAV312@NNH@Z?tl@?$Rect_@H@cv@@QEBA?AV?$Point_@H@2@XZ?total@Mat@cv@@QEBA_KXZ?transpose@ocl@cv@@YAXAEBVoclMat@12@AEAV312@@Z?type@FileNode@cv@@QEBAHXZ?type@Mat@cv@@QEBAHXZ?type@SparseMat@cv@@QEBAHXZ?type@oclMat@ocl@cv@@QEBAHXZ?uniform@RNG@cv@@QEAAHHH@Z?uniform@RNG@cv@@QEAAMMM@Z?uniform@RNG@cv@@QEAANNN@Z?upload@oclMat@ocl@cv@@QEAAXAEBVMat@3@@Z?val@Context@ocl@cv@@0HA?warpAffine@ocl@cv@@YAXAEBVoclMat@12@AEAV312@AEBVMat@2@V?$Size_@H@2@H@Z?warpPerspective@ocl@cv@@YAXAEBVoclMat@12@AEAV312@AEBVMat@2@V?$Size_@H@2@H@Z?'?.?AVbad_alloc@std@@?'?.?AVexception@std@@p??p??p??p??p??????? ?????0?? ?0??-?@@?0'??*?0'??*?0'??*??-??2?P7? <??@??E?pJ? O??T?????????????|??'?.?AVFilterEngine_GPU@ocl@cv@@?'?.?AVBaseRowFilter_GPU@ocl@cv@@?'?.?AVBaseColumnFilter_GPU@ocl@cv@@?'?.?AVBaseFilter_GPU@ocl@cv@@?'?.?AVGpuLinearRowFilter@?A0xa916a96d@@?'?.?AVGpuLinearColumnFilter@?A0xa916a96d@@?'?.?AVGPUBoxFilter@?A0xa916a96d@@?'?.?AVMorphFilter_GPU@?A0xa916a96d@@?'?.?AVLinearFilter_GPU@?A0xa916a96d@@?'?.?AVFilter2DEngine_GPU@?A0xa916a96d@@?'?.?AVMorphologyFilterEngine_GPU@?A0xa916a96d@@?'?.?AVSeparableFilterEngine_GPU@?A0xa916a96d@@?B8?,???,??'?.?AVCLAHE@cv@@?'?.?AVAlgorithm@cv@@?'?.?AVCLAHE_Impl@?A0x4c81ded0@ocl@cv@@ @?'?.?AVbad_cast@std@@?'?.?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@?'?.?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@?'?.?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@?'?.?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@?'?.?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@?'?.?AV?$basic_istream@DU?$char_traits@D@std@@@std@@?'?.?AV?$basic_ios@DU?$char_traits@D@std@@@std@@?'?.?AVios_base@std@@?'?.?AV?$_Iosb@H@std@@?'?.?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@?'?.?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@?'?.?AV_InputArray@cv@@?'?.?AV_OutputArray@cv@@?'?.?AVException@cv@@??'?.?AVMatAllocator@cv@@?'?.?AVParallelLoopBody@cv@@?'?.?AVFormatter@cv@@?'?.?AVMatOp@cv@@?'?.?AVBaseRowFilter@cv@@?'?.?AVBaseColumnFilter@cv@@?'?.?AVFeatureEvaluator@cv@@?'?.?AVMaskGenerator@CascadeClassifier@cv@@?'?.?AVModality@linemod@cv@@?'?.?AVColorGradient@linemod@cv@@?'?.?AVDepthNormal@linemod@cv@@?'?.?AVIndex@flann@cv@@?'?.?AVFeatureDetector@cv@@?'?.?AVDescriptorExtractor@cv@@?'?.?AVFeature2D@cv@@?'?.?AVBRISK@cv@@?'?.?AVORB@cv@@?'?.?AVMSER@cv@@?'?.?AVStarDetector@cv@@?'?.?AVFastFeatureDetector@cv@@?'?.?AVGFTTDetector@cv@@?'?.?AVSimpleBlobDetector@cv@@?'?.?AVDenseFeatureDetector@cv@@?'?.?AVAdjusterAdapter@cv@@?'?.?AVFastAdjuster@cv@@?'?.?AVStarAdjuster@cv@@?'?.?AVSurfAdjuster@cv@@?'?.?AVBriefDescriptorExtractor@cv@@?'?.?AVBFMatcher@cv@@?'?.?AVDescriptorMatcher@cv@@?'?.?AVOclCascadeClassifier@ocl@cv@@?'?.?AVCascadeClassifier@cv@@?'?.?AVCvOpenGlFuncTab@@?'?.?AVBaseFilter@cv@@?'?.?AVGeneralizedHough@cv@@?'?.?AVGridAdaptedFeatureDetector@cv@@?'?.?AVPyramidAdaptedFeatureDetector@cv@@?'?.?AVOpponentColorDescriptorExtractor@cv@@?'?.?AVBOWImgDescriptorExtractor@cv@@?'?.?AUHOGDescriptor@cv@@?'?.?AVFileStorage@cv@@?'?.?AVFilterEngine@cv@@?'?.?AVOclCascadeClassifierBuf@ocl@cv@@?'?.?AVFlannBasedMatcher@cv@@?'?.?AVBOWTrainer@cv@@?'?.?AVBOWKMeansTrainer@cv@@?'?.?AVLatentSvmDetector@cv@@?'?.?AVGenericDescriptorMatcher@cv@@?'?.?AVVectorDescriptorMatcher@cv@@?'???&?? &?@?%???%?`g%?@%?p?$?P?$?`6$??$??$?P?#??#???"? ?"??$"???!???!???!?`?!???!?@?!??j!?PT!?pE!??"!??!? 	!??? ??? ? ? ??? ??? ??? ??f ?pY ??O ?0 ?`???????0???t?`F??%??? ?????? ????p?????????~??H??#? ??06? 
???????i??X????? G????p???h?Pf?b? `??м??u??/??_?p@?$?????y??'?.?AVtype_info@@u?2??-?+?] ?f???????????J?K'Pw(L'??HL'?
lL''tL'?|L'??L'?.?L'0~?L'???L'?g?L'p??L'?P?L'?#?L'???L'?M' cM'??M' ?M'??LM'`>|M'@??M'???M'???M'` ? ?M'?!?!?M'?!
"N'"?"\N'#?#?N'?#$$?N'P$?$?N'@%?% O'?%?%tO'&Z&?O'`&?&P''?'hP'?'4(pP'?(?*?P' +;+`Q';+]+LQ']+x+??'@g$ ?'p$''$?'0'u*??'?*?-p?'?-?2?'?2D7??'P7<??' <?@??'?@?E??'?EgJ??'pJOh?' O?TL?'?T6Z8?'@Z%\$?'0\^??' ^`4?'`c??' ce??'e?f(0?c???(p??0A(???A(????A(????dA(??0??(>0~0??(?0?0??( 1?1??(?1?1?(228?( 2?2d?(?2j2P?(j2z2@?(?2?2|?(3c3?(?3?3??(?344?(4?5?(?5?6?(?6?7H?(?7?7??(?7?7??(?7H9t?(H9?9d?(?9?9T?(?9:??(:-:??(0:O:??(O:z:??(z:?:??(?:?:??(?:?:??(?:;?(;#E?(0EkEP?(kE?G4?(?G
H$?(H%K`?(0K?Kx?(?K?K??(?K)L??(0L?L??(?L?M??(?MO??(O@O??(@OP??(`P?PX?(?P?Qp?(?Q?Q??(?Q?Q??(?Q?Q??(?Q?R??(?R?R??(S?S?(?S?T?(?TyU,?(?U?Ux?(V$V??(0VXV??(XV?W??(?WIW??(PW?W??(?WX??(X4X??(@X}Y??(?Y?Y??(?Y(Z??(0ZoZ?(pZ?Z?
)@???8
)???h
)P????
)Р???
)?&??
)0?X?)?????)??Q?p)Q???\)???L)?ؤ?)??1??)????)???)?7?)p???H)??ܧX)????)0?`??)???)???) ?c?
)?R?8
)p??h
)?r??
)????
)?(??
)0?W?)`???L)?h?) >V>??)V>?>??)?>9???)@???Ⱦ)??????)??@??)@_@?)`@?@D?)?@At?) ADA??)PAtA??)?A?D??)?DMG??)PG?GP?)?G?G??)?GCH??)PH?H??)?H?H??)?H?I?)@I?I8?)?IPJh?)PJ?O??)?O?PH?)?P?R|?)S?Y?)?Y?Z?)?Z?[ ?)?[I\4?)P\?\D?)?\?\??)?\D]??)`]?]??)?]?]?)?]^?)^^??) ^A^H?)A^?^4?)?^?^$?)?^I_p?)P_?_??)?_?_ ?)?_U`(?)``?`X?)?`pcl?)pc.d??)0d?d8?)?del?) e^e??)`e)h??)0h?h??)?h?hD?)?h?h??)?hFi??)FiHit?)`iwi??)?i?i??)?i?j??)?j$+*@$B%H+*P%?&?+*?'(?+* (?(?+*?(i? ,*p??U?/*?UCW\3*pX?X?3*@YRY?3*Z"Z?3*@[?[?3*?[\?3*@\|\(4*?\?\X4*?]N^`4*P_?_?4*?`?`?4*?ab?4*?bc?4*Pc?c5*?c?c5*?de@5*?efx5*Pf?g?5*Ph?h?5*?hGi?5*`j?j6*?j1l?5*1l8l?5*@l|l6*?l?lX6*?lm?6* mn7*`n?n7*?n$o7*?o*p47*0pTp?7*`p?p?7*?pqL8* q@q?8*@q|q?8*?q?q49*?q6r9*6rCr9*Prnrp9*nr[sP9*[s]s@9*`s?sx9*?s?s?9*t?t?9*?t?t:*?tu :*u0u(:*0uiu0:*puax8:*?x?x\:*?x?x?:*?xXy?:*Xy^y?:*py?y?:*?y?y?:*z9z?:*?zf{?:*p{?{l;*?{|?;*|?|?;*?| }x<* }?}?<*?}?}?<*?}?}?<*?}l~?<*p~??<*?;??<*@??|=*?? ??=* ?߂?=*???8>*?Y?@>*`?x?L>*??„T>*ЄI?`>*P???>* ?D?0?*P?t?8?*????@?*?l???*??B*p???B*??ģ?lO*@?_??O*`???O*P????O*????P*????$P*???,P*???TP*?????P*????P* ?N??P*P?o??P*p?4??P*?????Y*@?(Z*?.XZ*0??Z*?	?Z* 	?	?Z*?	?	[* 
?
H[*?
x[*@\?[*`??[*,?[*0L?[*Pl?[*p??[*???[*???[*?
?[*
,
?[*0
L
?[*P
l
\*p
?
\*?
?
\*?
?
\*?
?
 \*A(\*P?4\*?@\*0aL\*??X\*P?d\*p?p\*Pi?\*i?\*|\*`??\*???\*??\* Z?\*0B?\*0K?\*Pk?\*p??\*??]*??]*??]*?]* J ]*Pz(]*??0]*??8]*?@]* PH]*p?P]*??X]*? `]*P?h]*?p]*~x]*???]*???]*P??]* X ^*? ? P^*? !?^*@!|!?^*?!?!?^*?!"(_*P"w"8_*?"?"p_*?"?"?_*#8#?_*@#f#`*?#?#P`*?#$?`*$8$?`*P$?$?`*?$?$0a*?$?$ha*%B%?a*?%?%?a* &?&?a*?&?&b*?'?'b*?'R(b*+b+Hb*p+?+Tb*?+,,db*0,?,lb*?-?-|b*?-K.?b*P.?.?b*?./c*/d/?f*@>?>g*?>*?@g*0???hg*??@?g* @?@?g*?@
A?g*A?Ah*BjB0h*pB?BXh*CZC?h*`C?C?h*?ChD?h*pDE?h* E?E i*?ERFPi*`F?F?i*?F?G?i*?GH?i* H?Hj*?H:I@j*@I?Ihj*?I?J?j*?JLK?j*?K?L(k*?L?M?k*?M?NHl*?NcOTl*pO?O\l*?O}P?l*?PQ0m* QtR[>(?*`>?>X?*?>???* ?t???*?????*??aA?*pA?AԻ*?AjB??*jB?B??*?B?B??*?B?C?*?C?C??*?CaD??*aD?D|?*?D?Dl?*?D?D?*?D?EԼ*?E?E??*?E?E??*?E?Eh?*?EuFT?*uF|F@?*|FWG,?*WGjG?*jG?G?*?G?G??*?GIt?* InI??*nIJ??*JWJ??*WJeJ??*pJ?J8?*?JK$?*KK?*K?K??*?K
L?*
LVLԽ*VLdLĽ*pL?MD?*?M?N`?*?NOܾ* ORO?*RO?O??*?O?O?*?O?O?*?O P ?*0PGP(?*PPgP0?*pP?P??*?P?Px?*?P?Q`?*?Q?QH?*?Q	R8?*RS??* SPS??*PS.T?*0T?T??*?T?T??*?TMU??*PU?W?*?W?W??*?WQX??*`X?X(?*?X?Y4?*?Y(Z??*0Z_Z??*`Z?Z??*?Z?[??*?[n\X?*p\?\??*?\?\??*?\?\?*]*]$?*0]O]D?*P]?]l?*?]?]??*?]?]??*?]!^??*0^R^?*`^`4?* `?`??*?`	b??*b?b?*?b?c??*?c?d??*?def??*pfRg??*`g?g`?*?g?g??*?g?gx?*?ghh?* hfh??*ph?h??*?h?h??*?h?h??*i4i??*@ipi??*pi?i?*?i?k??*?k?k??*?k9l ?*@l?lH?*?l?l??*?l"m??*0mqm??*?m?m$?*?m4n\?*@n}nh?*?n?n??*?n5o??*@op$?* pjp??*pp?p??*?pTq(?*`q?r4?*?r s@?* s9s??*9s?s??*?s?tp?*?t?tX?*?t?tH?*u?u??*?uv4?* v6v??*6v?wh?*?w?wL?*?w?w+?(?\>+(?[?h>+\?ǰp>+Ȱ3??>+X????>+?????>+?????>+????>+??F??+H????xQ'P?l??R'p?????' >B>??'P>r>??'?>?>??'?>?>??'?>???'?2???'@?b???'p?????'??????'??????'@"@??'0@R@??'`@?@|?'?@?@t?'?@?@l?'?B?BX?'?C?C?'?C?C??'?C?C??'?CD??'D,D??'0DLD??'PDlD??'pD?D??'?D?D??'?D?D??'?D?D??'?DE??'E,E??'0ELE??'PElE??'pE?E??'?F?F??'?F?F??'?F?F??'GG??' G?>??(p?????(???? ?(????d?(??????(@@?( @<@T?(@@\@?(`@w@l?(?@?@??(?@?@??(?@?@??(?@?@h?(AA`?( A???)0?^???)@?\?0?)`?|?h?)??????)??????)????|?)?????)?,? ?)????L?)????) ?*?$?$??*%"%??*?&?&?I*'*'0J*0'Z'pJ*`'?'?J*?'?'?J* (J(?K*?(?((L*p)?)?L*P*z*?M*?*?*?N*P+z+O*?+?+?O*P,z,LP*?,?,?P*P-z-?Q*?-?-?Q*0.Z.lR*/*/,S*?/?/?S*?0?0?T*P1v1?W*?1?1?W*?2?2?]*?2?2^*33H^* 3<3?^*@3\3?^*`3|3?^*?3?30_*?3?3h_*?3?3?_*?3?3?_*44`* 4<4H`*@4\4?`*`4|4?`*?4?4?`*?4?4(a*?4?4`a*?4?4?a* 5F5tb*P5v5?b*?5?5?b*?5?5c*?564c*666dc*@6f6?c*p6?6?c*?<?<?j*?<?<?j*?@?@ln*?@Adn*AAA\n*PA?ATn*?A?ALn*PDlDv*pD?DLv*?D?D?v*?D?D?v*?D?D?v*?DE,w*E,Edw*0ELE?w*PElE?w*pE?E x*?E?EXx*?E?E?x*?E?E?x*?EFy*F,F8y*0FLFpy*PFlF?y*pF?F?y*?F?Fz*?F?FPz*?F?F?z*?FG?z*G,G{*@G\Gp{*`G|G?{*?I?I??*?I?I??*?I?I?*?IJP?*J,J??*0JLJ??*PJlJ??*pJ?J0?*?J?Jh?*?J?J??*?J?J؃*?JK?*K,KH?*0KLK??*PKlK??*pK?K?*?K?K
  
    
      
        
      
    
  
PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPAD?  ?(?0?8?@?H?P?X?p?ȠРؠ 88?@?H???????ȭЭح??? ?(?0???????@?H?P?Яد?04`?h?p?h?p?x??????h?p?x?????? ?(???????@,8?H?P?`?p?x???? ?(?0?h?p?x????????8?? ?(?0?8?@?H?P?X?`??? ?(?0?8?@?H?P?X?`?H?P??(??ȭЭح????????? ?(?0?8??0???? ?(?0?8?@?H?P?X?`?h?p?x???Щة?P??????ȬЬج???????? ?(?0?8?@?H?P?X?`?h?p?x???????????????????ȭd???????????????????ȮЮخ???? ?0?8?@?H?P?X?`?h?p?x???????????????????ȯЯد?????????? ?(?0?8?p?x???????????????????ȠРؠ??????X?`?h?p?x???(?0?8?@?H?P?0?8?@?H?P?X?`?h?????????????ȤФ0?8?@?H?P?X?`?h?p?x?إ????????? ?(?0?8?@??????? ?(?0?8?@?H?P?X?`?ȧЧا????????? ?(?0?ȨШب????????????????ȩЩة`?h?p?x????????? ?(?0?8?@?H?P?X???????? ?(?0?????ȬЬج???P?X?`?h?p?x???????????????????????????????ȮЮخ`?h?p?x????????????????? ?P?X?`?h?p?x?????????????@?H?P?X?`?h?p?x???????????? ?(?0?8?@?H?P?Тآ????????????????? ?(?0??????????????????0h?p?x???????????@d(?0?8?@?H?P?X?`????????? ?(?0?h?p?Цئ????????? ?(?0?8????? ?x???????????P???ȠРؠ??????Фؤ????????0?8?@?H?P?X?`?h?p?x????????? ?(?0?8?@?H?P?X?`?h?p????????????????? ?(?0?8?@?@?H?P?X?`?h?p?x?????????Юخ????????? ?(?p8?H?'x????????,??(?P?X?`?h?p?x?????????????????Рؠ????????? ?(?0?@?H?P?X?`?h?p?x???????? ?P???Ȣ??0?h????p?x?????ؤ8?`????`????X??????@?????ب??0?`?????Щ?0?p???Ъ?(?X?????Ы??8?h?????? ?H?p???Э??(?`???????H???????-? ?H?p???ؠ?0?`???Сء????????? ?(?0?8?@?H?P?X?`?h?p?x???????????????????ȢТآ????????? ?(?0?8?@?H?P?X?`?h?p?x???????????????????ȣУأ????????? ?(?0?8?@?H?P?X?`?h?




© 2015 - 2025 Weber Informatics LLC | Privacy Policy