mhNaC^c)jJ(Js$0r6d*RKX;{*rS-j^TBZ)+67GP5!L+5xt#B^(T{w;xsdw_R4a^yGL9ZFz7nilq@<^@L!y51*C840J3vwX5QLC}=Ieovvk@ft>y
z4KwBxdo$eks43kk^GEsL$$2FS
zYt3Y><@Ka4s?iO7Z7=hpGcZ#cEZdwFO$wrE&D0NZCXIXVLO+|MS6x%!(CpDIELhkg
z#uc-txP9$8+Qr|0Olj(2@L=-j?bjtvnH`N#!!5I#op=el1%>44uY~eBJ!kik3OveG
zRNyk0oBLA(Qa2*#S7ql3V=KROuAr=+FKM4XOm}Gi_2)jv=q8nTT5(c1yPu@_qMx2X
zc#ZA)xfzE6eRhLPRt2(DSQ46(l$#5-sIBUoBTeoZL0{S@h77;fexOyQm=F+Vug64T
z&M?Lt;3^ibuYLF8lY{xJIWi_A{nk1SQv`fcsEVkypwf5vY@iVjnJKGq`>D}`OM17b
zF0U%(E&PuPSdG;coxL>zV|K0v=jjab}+s}HGf|ME$`=1vrw5#3~`{p+#O{fEi#x~gw~(!R9t4O<+E)bfrq
z*GN62{N>;j@C24k5MZi7yENgaH|^?OCozTAEpYMtT1hlRFl(OhCGfPlUnYUFMehH1`8c2*g?sd)7W))-{~p7vp*)M$AI{MemRaU7bVAymOsLS-{P?Hd%4Z?aq@v2%jju
z9HF7=Z^9?FQm(p^zg~U|fZTdf5NmFz)oY{WA0S(NNcmusJ+A3S8qvd%$IB;ujpbCk
z)gCGR58k7t<`@}Pb3Hy)xIA~gd%AR!(XI~FtjGA6*!9;B7J9F}TQ@sOb2qcuq@o_a
z)>Zb8++|p7kKEIVfA}eXF<#Ac!PJ`J$ct5gFy-N#(x
zIM&oI!Kai{8{uRjFp<{0@YI7#_Ewd|SnS#i*W)a-)FA_1>48z4vg7r(`hW}>alg8c
zU0fFYc4f3hN)#)G%KF-@GLLtkbxN2nCDzyWNM&D#|3pIYznQ<}6UD^K++}il*gt^@
zwNLicNAHSHiWSiW4*we2i=Xv<_>HrMhhtfe#cpmZ1E1D8q2%W?|1*-FUEZfl6w#G4
zJsO$@^)UNmE^>oBVSl@N1Sdwg%BnqU(+sTM3HKuD;Toa_$ULi@%m`Yc2dy@+W|w
z-3K!C^Rt2h1@BZwIH`q1^2qu+52(n3Oe77V$*|}8MwBHhR8~G3{9~uu@`hb`GP`tV
z2A|mRbWYGi+hL23b2F9{C4o%Y2h&ggilL%Ea2`KH&{k91_#JhQhbX8k@=ab(
zRxXYGvfqVv5T`S0R>+Hwa!d40c;I@bNxNS^5Y*!&H`6MqSfnSC;Yowtri
zi(2=Y4Lem#4>wf(qvh-prEH6ONvRH4Y1qFViX`?)81yAUV1IeA_eYb+
zxmkMiZro-UDh`d859L8{&~s;ZvXIBUY9Ay;zbjKCtK<%jS@vjrGB;SZ!!cR0lO$5x
zc<`jQu}(U7&tz|Q$As6o*0(-U(HJs0hY`?9)44szc9Okk*!o;CM~*$;dl=KUmHU?G
zB-aj4u{qK7SL~3;?J{0iqGIgO^}o_~B5z511RC*1h5s=*amf=3T^%jOE98
zNjKB($4`{eat!3`3HVFsyeERuHAvi-a&~HTlyl($X=w&6s?)aqJ+#s3a
zQ}NKUnF!^Qhve9eeuzG8aOi2sjKgkCDGxfwF8!I7d(!q3mSYV_nfYiB^jke^$})B9#Si3<`zYoDjWo9EWxbAR{2E2%ZZYflvCzMo$UOQ^K&gc0PhrjFN7`SL<*pkTvM*E{
z>NpyC@Fuu~aIvPmww|9eUznTGV_=g+U$UXYd%~HuDAPO(d8yO7e`My1Fzg*^kWh
ze3O$HJXc(1s@`H}WtTVwUzu{vzR|~LP*XM=Zfc)MAJHf;_SyXX8>1F+adC-abb#S(
zF3Mo}j_7Dvp0Cah`5!wGSKEw-ZtgSEsS@)+eR>cwVPoAEnFdPj@hbC-x@`un2I_=v
zT`p;+QPl#KNqMoq#3>B6Q0oMi_?ca`G&**N#NV7t*zXqF4InI{D{0j;F{ojJlIYiZ
zP*~JE25IxUdLN!HF8|CKa&HIVB#Bcdv~fYWsjfU#0e~v!@>wih3G|U1~SH82U+i%O)|&6}`!2*U2X2
zDAI_b<5{q}_7J1*)BY!q?WIWn(+$3bXUExR#9`&UFS%1JIbN1h`9Ir`xt(+CJjRD8cwHh)M0#h!dd*WAAFp%HcWo>4L
zId+&i&!5C$eUz)tG_)Jk21{rS!_E;(?9?H#!IJvsyt0=1*Uq+g`5U^q8$uD0k4RKs
z1q-_ty*50J_*2MxP&|A3r0S!Y&_?@}<@5#dThkTK@s>(^y6?nU=knEE
z&V9AuE7X}~EmoURdHR4}^LVz=r}({^TyUmuN)2c@DuU=e|DKMh3U5yX`t?_%@oKA2
zw3~UIm_r56x9?sJ{sE=2g+&jrDRnX*+>Udl(C=91e@8Rx3228ql0-7=$51oFXA!DZO#GiyUL1UV5Wf<0>yCS|Z#la4C@f@8)?dF%
zap$7Zx2E$?50_nWvtvX_y1Qpizm%Q;YP0q|=7>7RN{NLcV>O->7C(0#v#?
zGt}I-hfjJt^w+7^6WtA0vciI$_5*j-WMyXx)k>nsWq6gpEDNlB;UQQ?9X9G<&WaJ4
zx3SYvwD-ga+&^|21b3iaST5A@5xaRJvtlzpPHk4&TG$In4g%;g8c+>hR==bvs
z2eM#Pnyel}R#A^=dGgXZv9%B(i#v(*e5Dd?llOyhcC?KK-7+a3E!}sD3x1t93B^BQ
z2Ak?xKmVRMjV0QK4Sk33e#IDHmlnuP;b)ZJ7LPG|{QGy-kovPJyHGZ#mLWBtOuveo
zX-PTnFVdQxBYz}u-6%nKPYWL{7iRIDAQZF%-kEQcK)2)=G%sh!e~JnjO*Ja(vNO#<
zP3)ZL&fgb()JUWG1cRFfM1C>wLD?yqh=0K=rS8!zxtNiz!4LEu%X#hm4mIzky?PBM
zEfh|_i!b=JLUt!HD4($Z3R>=7KJ;#rHfWkq0oW6Fl|SO#t~
z`tcMA`mfw9u;21(wf=P;T|&Lktj`e_pd7HR@QBY&(bUH}bLXN~u|GCvbuv$1hG*GUq39btCFyrYQ^r>#l5+{UX7vkF
zKBu6^*Q4UOMrZkS(M2>fW(-|g7gKbQieDtBPMH4g#G8sGPkwW>i_9Ix)SX!=d0dvU
zbF^aV%Pb=w8gZ~2|83X{(+#-qEo*U^8P_j;N~p8^OH|1gS<=6;p6SiWx|k&%OX_2L
z?ng~wPy3p=wm{Cl@dmlR_p_`IF~{*1UY?IMyNd-***$a;_t1g6pP|IJE9>AMX_rF^
znuZ55{$bI9$&}YTvn(Xi-bPf^ajkxq5^zi5Z7AGn7DpUp98B*#+R`CvnY;82R}ufs
zLH>St;DPS&kW$UgU;L880fFm-GOVpHo%-HGWucQCy6>wu+XE-ChFy10%jY_YR7jKe
z!M88F!!18ar|_eRLyK3K#EyS~R0gU#G;v`cVqLc&DYcM4a2)jU&BVkTvQ-AgZ$y7q
zhI00fd-d*=kC+M^
zUwVW9QT1vP;^hS0Qu?zsE88epCX=ETOGx&QRJjGs+8V||Ln&6@dD3=H0&m?W{&^#*
z*v~mJp)O2lj{X-@#Cf3-In>wq84GCl+$c?LW^cD-+9mZDxs!D=?a4qly~KZfc;34<
zVjIVrg3L$^N
zoOD3TUzAW$Otn#yjRql3{Z2k1l*Ea3o}KnXbHXDz^eaWO0&}t(LW6ZSTJhgyK+*&r
z1b2T0Wezeh8a{5Sq#yLkJe5+ScH?c~3gDUXvXiXddY=4baW&z`>bLiS;_rl>J4l{}
z2|OElCbF79u@ob+x=i!|tH!hw{g>L*Z%7(Ty8czC}2HiSUOmuInf)Al9B
z=RgLhgK+d;w&!cCZ_m6XMOI^i=-CRB2#}2`8bgz$jnUiQULgZ411A2oCkNkdr`unv
zd!o#K+5p}VgElObBoOfe4G!~3hi
z@_v_j9X^38d79-mpU!Q0mD}ZOPmv;mH
z_8A1Ty+o@Gmg}N#(x`)7MG$3c(FQhUAxMOWeBb(l5M&0ABtRMeSb@GA%_v12dl>lr
z@HTC4hAqBsgxO7P_ROd|JRt6ZH*%c%x%R~ps)c36{_d(Oef!#;EvX#7?VHtqkg*J@
z_v?FM48_7?rh`74A<-{X=Qya@ytgO2#0b4V>7$1#$x=UcOz{j+6;qIj{@v3e)s|->XA$IBEF_`B;pD*TfC~>fy
zCA`P=;K#m*L%Y%OPzU3AhFAk?!~1RFOy9nUN0;`{Uzel^lH2UWk%4*8FClQk4P{$O
z78p7vL`rM$#6zB(?~#PSda(`HScLgO9CsdS+vYUpCX3Kk@jAT~Yr;}=GF_z8=CxqT
zEgOVG)1aDbw+8J8=0OQb8RYpKh3R2|Om5K$TegSOlFQ$m#yeKr81Zx|?U|tqBx5KS
zUm=f=vZeifDS9)vCjtgqngp{5HA&V_kScV)u+4Xb$0dHER)0(R_iwI8$)&dQ^qXxF
z`?4GUR25U<~qhF%#ibwtPOs;mvCk367e<8>t$M;9Za$6C6@lhW?I==Lf0hrVm38=
z6%Q9|HCAk&o%~Ubf2L4qNvxs~OjCFVF9p9JvrcVFtbS&=GiXx4Y?g5H>A|xPCWYt=
zIIHb!!JoRAt()-jpEB^DshpdE(W_w8oba4*nnJnK&ESOB0??LGZr2yulQKyq=_0(G
zS?7dO9Lwj>U&5jV*O<+>6?XZS$aCLt&uUn@$Kefh&*n(#2MZhc{g|{)BFPhO%6viMT&s=xFETFg
zTwPm@wjbmhNOP)^8rfM#aD8~xKKAxnRZ%*BIyR_q3CuRX1a
zkFuq;7}f87te}K{i(uoA#7^%RnB^9W_yklW**aOlD%$rA)7BYz?p`P>qW0uIDLT^Q
zfupruoq8k9oP)4Uok0zUdzWLEfrDgtow!X3!P4IG9!cU%Y2u6(Wf}3aQ^<#;ajhVi
zGhYJF&PlU}C*Q5U)Wn9i-r6{2*wYq22B{RWN#D*)w45MzY_DPZZ1UO7bY#(5QS2R8
z&QSYgAxrvgsXq_J+y02FWx1z0%NC%8yNJ1d!8perOYmBzva9#_yrLsFBMM2pRze$R
zN;;gwnFu~&LmmwaTI#B7T)VmQmTu)v-GJTiS}7i~K*|Ke_mTeBgpVnNngzE_{va?*
zJOy@W>B3Lg2|9R`2eHM@9!R(gMgDiWqURvu;>>FECkboP<+#M8)q`hnrq~Yjp!*Nv
z*JLQB96!q7xYrDzM^D)hN6f+25i;^0M!|a7eh@152fl58clGz0Iq%ey?9qjlg>+4s
zwYMx@{}NFq?WiyNywRe{HRPV<8=C7ik1=HuR-G+Bc5*MJY1R7fKAd(k+OLnUxeeN(p@UAdg^
zW?VN3j|88-z>7GbZ9U6Ahn|u}(rmcAh>wbGVam#Q5r)6ylB&D4M)86%V1&qP1YDUj
zyP_pEIl~q@Z_PW9(V{!I%DH~h*wut&Ow!>wrF1lqlA!oq4*z~*zNiUZKQ@1BzH6@Q
zW0s5%+qsfrkld*1ZYjGqx|;tmwSpgR9v$T9EHb4yd%}haAr>+4#QmarCWC*>!dVe(
zL%Rn#y&K^w{kxL-S(QoU@-F}0N2VQXa54Wb@|QN>;*F)BI~nh=rIZltUDB}k+H?L=
zFtQiyEzC
zhCj4VKvK0GXX*kzr}?8jm(v%>OM~_&pPXr`hA3Ubu5Os>oBeB(Rjeu&8{@=ZjLYt3
zdz2_4y?;8*(c0{sf697jzr$uE*8$xm#G88ZmhK}xdl&N3m?buRI#WDsONYCVP1ole
zRIaoY969v61Bo7f_)ZGxUhQYV%@Y1Fj?FL|v*{Z5JM5R0geePk^sSwVeF}rG4cWH`
z>DMWa${+I*{X)DL=gdEgR+db?|LT3d=9aC?O{DftPhP@k<;P7wrr6I)y+P_XLS7QP
zG{7Dx@JDo6*s-lH4jC;&)eTptiF3&+*|C(MX)nSH;=y$^#6#b0LqH6#;05xXx%jV-
z#tJW6$p_q=yE#3nGTo{REm7UP=A_215A~{RV^Uk0CEOWoa*atATkf>!xJTYw$o76U
z10!+CExfmguj_8H&b2S_r`BJhv-Aa+#dUG*+rnRO%SB?IX4E?W{@pTHjCyQd><3;I
z*{}VyX?926Xmb&|3$}AfnEkrRQr}KmFJBvmXDBRp-7PO(95kzl(tVplyzgR=KCeVs
zR$ln5+y-txr=bw`sd6oy-2nQsju)Lmp7@ekZcHSQWl7UN!%4i5S{B4Xly@Y)MCi54
z@P@A5_&onu#ph;!xL}rlAv)+Kyi{23xqw3knMnE^nuF6Rvu>QZSSl)z>XeGJKP&C|lTW#xYtlI@%xlX-*v2Ouzu*BW6Q_2#=|qjQtmW_+_GrO(L3|faq`&S
zcHYH$m$*ZRx0ueE!wL6gqCBv7j}UEEu}p?=uu!PZdtLL7#5Csi-be8{saEa&T(k>D
zsTKF4(38G`4sNon7O#j)w}PHkFT;~sUeqfsLfu=Iy&L>dOC`%lrUlQG+TgzRUZ-$b
zpBIX!v)Uy@8R+u7^o-{*4tvhqmPwh1Hsq62GHXT3^;HHzrmrZd=9mXHoaXSS#+0XT
zny@FSWmDPgH7>s&ja7c%>+SQ1*i)8}TiDi{7A;f?Ip|Fd#1q;LAC|2iCQxu8iBw&D
z@*og?$Bn>ymhnNwaQ*NiO>x%6Pg7Qbq{bK$)(2ly-8A&>6dM{O2eT<1$(bL)EqiRt
z@1!>@Je>LU{DbOp9IGNfr7OGr6GPhsSK3)C_4Pd?)it-+F?Y4%=H8afECts&BIvKB
z1_re6q~&di{1wpbek7q7>gr$H+t!s&VFHU3lyam9B|T_7zRd>Q5qZi?x_~TX>S|C{E42PeC%?3{{DwEqM_MZG5O%creC@
zR_)ZB!tUcM@2SKeJ&gQ0J9oqv*s@x1H<0M@#_qW8so=re)%gccpjdp?!Np@R!8O!2Tf*C;C`+$FtL!BQ3h23~Ff&d57
zzb=s&B}mzuHiV!Z5XqYxIW!~}VLlxfpxT)ts_9!^J1TywP5z{3)J?Fi3eKDV?H0H3
zr{J`4FaDW%}i(vRks1o#C}Hw9ohpQIOXjX&1cFXF&mRnDYUFKdQ
z1BVhuWfn1_t&9XZnm2S#UeK>4g?VWfI@PGwZ$5$VL;Dit`WY
z#GLV*PuBc|VWwLioL?=uR>x9$Y
z4H0Xe{hRLac6}-6i*paMg#+2rPVJ`467F22Pr;6C5xF}?e)lw3LBolu-|}`9VOq`;
zH9>`v_dcsetk(R6rUKD-8-^mrEg1^iC6xR;qq!I1jsc4CQ)798ErSxDIyiYvN^YuJ
z-6l9IQNu1F?kWq_l7fXx6VNmI+HOVFiAw})e@hwyl&Z#<{QG6rVwOdgeQT3@zfav0
zk>C;jIbUv17iqCv9T#dN@GBS{a+8rceZ{T9tVOOm%z7Z`P`M4`qrMX8mPN?KeBA
z$!do~;RAx;oUpL`T(nNv#R`vRY228iBeC=J?HtE9Wji7iMNrj@hgs(f?nR~gmjdM_g@2^dl
z?BaCVQ-=&n9+Y*XUDSpDudC~hr?P+lQB>!)OUO9(&PuXn@0rJ_tRj&eQpU-qWQBu5
z*-9BrDWfG+Mx;mxS(Tm5?>@K7^L_gD&w0PDy*{6FAFs}Ja^I5Mmihi6uQB~*5EsDP
z;d8l3@=d5t{_KF;iw=f6l&|h59Trj)H~BI<5K?gC;F?1(n?;43uld4!Pq#9?Y4J?W
z^(Wi;z8f)%{<$gjyg6g?!7WxX#_T;$2h0krTTRs*V#p^9cHGH$EckH#RH|oqEZqQ_xto*V`KB{fVg+V
z3R0XavH~sQeKXt*oKi!3jk!9rwa!noFmq-{(l5SaR0*B_eqncy?}-xHx%-3n)B<^!
zy1O`VOV%^p;jDz<-22ud?c6M{``JS7U9K*rQoR-YC3Kk>xiU-Uzv15W-e|`uXJ
zEycYpZH72G|Mck+vU>B)ayU%KCrru07byZ>i<@@aYSGk^vwXLFg0~G-
zoEDDTQ>z+1eJGtE^zBIWw4to#Gm1N}dPW7-c8f7i*3nFhEl=QID18_A(phE9X2_|#
z^WAeQZINpGeL@}ayWP73-yC;;M}&l&Z;_9l(jN6I*Oq7Vc(PY4u}f0Xi?(A5sd$e#
zO&NTaE`L?7QK2EEWbmk0kmrJH^{(L<-XW0-!KQVxi%Na*b_74c$dRSjs|-&2^Y81Q
zd%Jq;kameugG^w&RA9WBldM*_0F5EBe#NANKyKE0vUx$jEir}Fi~9HC9tph2Mif20
zW+2P$OU+9QDYz%bEGe<;>w=2nmS-$}JDZ>0=y9;Wr*i)Y?t_r;Tu1FTJB9u-vjO+6
zMEBaU8}AwHa?=(GxT_6atvlPAKC&!V+STu{xlbLv(}$0`(ak8ugZk}$(})4KQ~Amj
z5196MiPx)>O?WlYUL3>YOuYy{agaw%7d8UL{*~4rF+%&cLF)B7hY^rqS2b*-%A+XEy2-uWzI4Ec9Fb?
zR$O8+-CE)7o%|fVhj%KpqC>7N9WtvAa8Rt>cQ*4EV%695)6+@#aVoid37ye~b4FZx
zl+|SafaCcJv(M9Vat~5B_$?m4>{DQWIYES4mNC%Hx@95wiAs@nN3Xg(LSRQEK?;
zkft-cWx$+Z&_7uze#|xe;wtZZKh%xPzaD;c@Y9DUEsT-^)DqhWu`;_1f+gmzqSX_Rh0&K~`l6Q3vO}%dPRWOk;ccU7yo=bO_Wh%r}->
ziibtd3r!U(GiJ9H)n8fm4baTlP3X8XVDo&(dSOdtDowJ@a>`tv^UP>^<0G%Pe=?-a
zGu@7hOn%Rps+n0|c}bWM#+&a-C<$u4>P1;=`Xl_0T9u;cY~2-!xk+zTS}qjAji`zj^l_!dd;pkqeYzROzN?=
z6tnYuHs_h!m5dnZxVL@aALq-)OgOi!Z!?`0;3rumfL
zrQJGo!Az}H71l|CZcohvG6L6GKXB;hj_Y)L7KK-S?;`V<7k+qAcdylA`hW=GfmZPgtL0kv
zYMx1+>FU(+l4NJ{Z4CuGbWdNSa_~)0acpd5O{1zRpc?j<@VwQKoG+bFlNr%?{YQHj
z;~P^U3#QC`3fy4uH#QN4Rq?pKK_{_gK}9P=r1g2Z4eN5e{u=va$D2@=*;`7~|GDdu%wkB2lNj$o9
znXz267WZh(^5yXIA+M`7+x^G8>hCVkdp!=}`C2v^v3=RlYX`-!Zt!7Y!mZ;2erqxT
zM{C)YTPGuo=ai<5dvWo9tm4X3+q{o|OX!&i`I@#c_~;qla>nSP+&J^d6N4knqX>cb
z8np-2UcwvYq^2`Cwrkb(S5B9Puh$>;jcB%4sbxCLFB-Aps3yZ<8!cMH)TL7wQ!mnK
znLB9o-ut2D&@n~EuF7SiS{Q-h0lvQ&KeLk3=w?C_AKS!RAk~l)tyTJw)?_aH%pdQB
z(P%b-@Iv!)&a(rK&l@L+B`oYzH7zoupVs_bh4QLL=V%v7*jEH@=*kOKHRR_IeoB6}
zc3BY!Zk03@(@XtYjK@2bbgsWFr5(1M?Y7>}*J9mgG-9$$AMuCYYfOi5XiakT4nDko
zk*!39?9@E|rN)|WdZCJwwrZ>}uJT5TgwaR$8-@A?vL{VBTW&}*U#WSKuo!O2bgxkV
zr(4-OzO{Gc+9~((^n@6^SALQ%o7S0+YYn)&t^Cx3({t}`yo>Af9r{$?ZfQ)cf4?(>
zUi@9VVGCIoA#9g2t?n{XOvuaDW?av`nz)nlvqSGLg$HfuU0md7u^#P3o|
z>G_$r4}z_}2n1d{S9*$UC*jA8?elf9lj|HO*OgDMk>yX|xpGvZ+}2t~y*DTf=j|Ml
z*AKs1o;0~lz|GFJI8>~Ang`p--snk{VYJZunzeKzmEruAS`V)R0Y3hVCvZ!rVpa!N
zcMmr^7TdLp(tliSC_El*Q6j3J?R+fC&(+B6(Dy|3FT>TV?Qe6h^6Bvrh8E}IXk-Gq
zZHEYyJ^>2Oa=QO~w)Pk;QdrB}mKAu9KrJse;wP!&?>#!%&e_aoAE6(8f{47Srb-`}
zsdFPT{doHQ7Ws;K6@&X&OJqHRP782GSJpPP5sp6){KISZQ)vAG195FU@r>fJA6y@4%Wq{+XsV6hcDQWD
zvd9-KCsPm<`ypDH)s*0r@^N^mlo~*ci{NoB%
z&uQyVFFs$jC<@|toOKpF@FOv7S`Q~Gnyo3CJ*Z-8wQ9b`oBN7kdA9?B#pswAAMtBE
z*GIalxUeQR^EW)_W@yTP#)WNnGuKj8Xy%G5gjk;FyAiww_ent
zT=#BCv`0!tp5-<0cQ6>3=_%yjzN}9rOBJfju)TYLPv!%kjbrsIt{(X_W8t0Rd5g0#
z{m5!j)6AM`g$rYqm0^%Te1bBJc<#323bZo!^N
zli!(C`X@BKo}RrN-h3xtH&?ow+oh0MZ;{+3S(YlYq@CAA!g?%-%ws*55G+up;lt36
z{Ng;3*z|@i;$-TQp0H;$Z2=)IB}cmZDJ4;wqNjV{S$Mh8yq?pk3Y+E7k-|!H5jlUl
z><20d_f?u{TVlc!FB5{}E2lf7zeI%h>+4-KFZ-1IM)dAJ-BU!130(^PJ2tw5X%?)y
zgG7t!Yy6^jjePhRPrC3Lz9O_|N$=J-Zg&)Yu1h95nEc7!g}>9DCCB`VlbRV_^Q-))
z1v?$4Of6#c4Hb8#YJcG^HB{bJ#O|bNb=`+fjEBWBNnLYM$!thH<&E(zd{9*A+mTWG
zHP%m(v>o?DTO*9Rt)Jmn<2M+-b^drEuzz`Y)!8g21?9N6&x&lTv@|?+0^JFLvWjM3{fI4
zHn)qE&>iU<-GN+c^+jjAG1zsAC|N1JS??e&s-PFp2;kC?0sARN)ae++XXY8XYB3(>@Y4;QLV3bl$0Ifj9K+^7sm_&7JBg;Dak!SW%ijDFDF_
z3qV;U1)(hG1;O$=LF6CIAg>T&fq`HlaPe6P6(;4yA&llu0;h!$eGEJhMl&T*)`U?z
zBw!|j_JRa*MG!p6jQN>tGTP!Uxh&fIS
zw0gwAmxwrkz%9@$4iU0QK+Fyj;MDj$!b*H2f$(7Fe@dXmCdI2HiP&NwTN1G&fi$Vj
zSK>)2#2(|k-l7N`L`y?b3Ok5ap9DS~M5mJk1f>yo45UjVHW*lxhTwD#fvb!yFn$Ql
zgfv5PG9VKxgZ7MMr(Xu0auU!w450Kd#6u$s@p#LkEhot|$bveP9Abh|T;CymW>6@OqY%9BQHZDID6oXgVI(eXfi81kN&W-n
zjsFMKhqi#c1=J_j0t^mWK=2xtFdKQ6kST=~blJfQ(rMbF@LPj$q%{bSSc5^eV*s*_
zK~tuWK`+#fLxR_jL&{_)pa^G9fQz;*Aa4V8&b0wwWVR5zi7nhpnYNJfoGlnUW(Qra
zw1Xnh+5>Rg0*&?%vxozXUz`K9a?$~+VSEy@xP1}~lAnTMvpj`ZV{2MnlA7s>Ikw0?
z;)hd+BGyZ4M`-g|M^JmYMd5OSc?T{?KWtRO}Y$J&nHSkj|BmGss+ahGzV5
zh7h&RK<)0Hf#~U6ATb{o7`sm{pnljDK)Nf)EW3i1%~@d8oCOxA8>mOP0c+R|im2ue
ztU`AX-sJ(n)dLK^_kh6AKCu#wJrPkXl@Lz|{F^5+QQVoC$Q|tn~p$2V%rY*pH5&G$S5n5e$5pE%d
zKs05Noil-`9TKPxgn_3B+B%X!(2$xSh=(Bsbi+q9LGw
zm4=-dK=;UF9w
z4$b`-4o90i0u1^`Kvi2Jzz%mLSoVzs@2?}l&i*K1xkZ7U>L}hB{AQhC$N30>S5AL7kGyJ9`C@
z$ACl}G&d>^9);h>p>{|z_^UuUeHB$FQEIQEPDy|v9_=6r*u|rLCxK`2=uJZc`x9X5
z&Lp5iLZVbApvQp(_9lXs!xp%gh+b2_ldMca=jSI?z=C)+qS1{syQ!-2j>DEkK_InR;bGgwL~JB=%-Q4V|)~V)wJbDQcOO$diNc
zVh;6k!0OE$;LqoPhWbsgk#Z9qBGQR$y9r~?c?*E&E%5y87PN>m7aF3Q3l~E{E)jiV-aV$jr+Xxl*PE1-t
zNVG#Y4wCyM{72~eZG;=ks_r(bAC~kV7TFzygA*;K;r`Au*B+zmEBBxu-=)ykt$+EU
z_1FF{fo>_Fulb>GQ~uSVB38;F446EvY=(Y5%4bD=@c$*R
z`te_R3L;%8!i!)n8luSD%Uav{$EwQy6-1L!nMU)tikH}qtFmREg&;L4~
weie=WJo*z3f4gv_!(^F>?iC0ZW getClassInTheSamePackage() {
- if (basename.startsWith("javassist.util.proxy.")) // maybe the super class is java.*
+ if (basename.startsWith(packageForJavaBase)) // maybe the super class is java.*
return this.getClass();
else if (superClass != null && superClass != OBJECT_TYPE)
return superClass;
@@ -921,10 +921,15 @@ public class ProxyFactory {
if (Modifier.isFinal(superClass.getModifiers()))
throw new RuntimeException(superName + " is final");
- if (basename.startsWith("java.") || onlyPublicMethods)
- basename = "javassist.util.proxy." + basename.replace('.', '_');
+ // Since java.base module is not opened, its proxy class should be
+ // in a different (open) module. Otherwise, it could not be created
+ // by reflection.
+ if (basename.startsWith("java.") || basename.startsWith("jdk.") || onlyPublicMethods)
+ basename = packageForJavaBase + basename.replace('.', '_');
}
+ private static final String packageForJavaBase = "javassist.util.proxy.";
+
private void allocateClassName() {
classname = makeProxyName(basename);
}
diff --git a/src/test/javassist/proxyfactory/ProxyFactoryTest.java b/src/test/javassist/proxyfactory/ProxyFactoryTest.java
index 43a96bb6..c69acc9d 100644
--- a/src/test/javassist/proxyfactory/ProxyFactoryTest.java
+++ b/src/test/javassist/proxyfactory/ProxyFactoryTest.java
@@ -140,4 +140,16 @@ public class ProxyFactoryTest extends TestCase {
}
});
}
+
+ public void testJava11jdk() throws Exception {
+ ProxyFactory factory = new ProxyFactory();
+ factory.setSuperclass(jdk.javadoc.doclet.StandardDoclet.class);
+ jdk.javadoc.doclet.StandardDoclet e = (jdk.javadoc.doclet.StandardDoclet)factory.create(null, null, new MethodHandler() {
+ @Override
+ public Object invoke(Object self, Method thisMethod,
+ Method proceed, Object[] args) throws Throwable {
+ return proceed.invoke(self, args);
+ }
+ });
+ }
}
--
2.39.5