From dad76c3b8a102fc2e78d1fd70ba55db73edf3305 Mon Sep 17 00:00:00 2001 From: liuliang <597380732@qq.com> Date: Wed, 4 Dec 2024 11:38:14 +0800 Subject: [PATCH] add --- Assets/Plugins/Google.Protobuf.dll | Bin 0 -> 483936 bytes Assets/Plugins/Google.Protobuf.dll.meta | 33 + Assets/Plugins/Google.Protobuf.pdb | Bin 0 -> 187584 bytes Assets/Plugins/Google.Protobuf.pdb.meta | 7 + Assets/Plugins/Google.Protobuf.xml | 11745 ++++++++++++++++ Assets/Plugins/Google.Protobuf.xml.meta | 7 + Assets/Plugins/System.Buffers.dll | Bin 0 -> 27992 bytes Assets/Plugins/System.Buffers.dll.meta | 33 + Assets/Plugins/System.Memory.dll | Bin 0 -> 148760 bytes Assets/Plugins/System.Memory.dll.meta | 33 + ...System.Runtime.CompilerServices.Unsafe.dll | Bin 0 -> 18024 bytes ...m.Runtime.CompilerServices.Unsafe.dll.meta | 33 + Assets/Scenes/SampleScene.unity | 448 +- Assets/common | 2 +- 14 files changed, 12337 insertions(+), 4 deletions(-) create mode 100644 Assets/Plugins/Google.Protobuf.dll create mode 100644 Assets/Plugins/Google.Protobuf.dll.meta create mode 100644 Assets/Plugins/Google.Protobuf.pdb create mode 100644 Assets/Plugins/Google.Protobuf.pdb.meta create mode 100644 Assets/Plugins/Google.Protobuf.xml create mode 100644 Assets/Plugins/Google.Protobuf.xml.meta create mode 100644 Assets/Plugins/System.Buffers.dll create mode 100644 Assets/Plugins/System.Buffers.dll.meta create mode 100644 Assets/Plugins/System.Memory.dll create mode 100644 Assets/Plugins/System.Memory.dll.meta create mode 100644 Assets/Plugins/System.Runtime.CompilerServices.Unsafe.dll create mode 100644 Assets/Plugins/System.Runtime.CompilerServices.Unsafe.dll.meta diff --git a/Assets/Plugins/Google.Protobuf.dll b/Assets/Plugins/Google.Protobuf.dll new file mode 100644 index 0000000000000000000000000000000000000000..d6605d36cc006403f8ce31ee73c7334f2fb21da6 GIT binary patch literal 483936 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%0Ai<5q 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%0A# zZmqK)KT~!&=eff3t;8xq)dWeq&g4p4F?)`A<_h+8Byue)5`9@&mCU$Gjzg(XsJV0a z+L*BmRW0*zoy{dwSy64~D1ECEnT|x;`ed$?&u7I}vQNDP>V!;bCv=79%EYb$ND}w8 zVlJJTa?EAadWR5-7{;`U0sQIj^4zX4R!#0PhWGI5=wFV9PaR3t27n!)Wt37%c<*N zhOfhnYtk=-NjvLGSGdX*p5qEvyTbE0yvTL)B}q4bzFEF>x{IGQ6I?tqit4+%%S>s7 zlftgdtE?=lUGg%FXMtv~K9Ndf&{S#d9-ZHvWUecV`BvuaX~;IDlDQ8iqqNmX^vHh zYFCU5%R7?a5%3MM(z2&Elg?&WCQ}htnW_*>(&CzG8$SO0^s!)>QVo*Bk`Lm$=#z+!HMi&fWT(8|uGQ*8%wTh!>X?2&X z0O;mqLPyW1A}h^Ey>noW@hq=eH+zndO_6*9svO zo}k&#$dJ3GkZfK{0ou9@_!sr!@!;U@6)^-pu@H}8XF(q0!GipLXbk8IiesE*@>P|V zugdbxv3%90uVMjw%aVz%w%T-CB2EEx5;&~IRE4^1j^l8wtufWr*Ob`Qn@GhIpr~t- zqpa0P3&QLt$jeilwixC|>g^_SX(G{6+m%iwhzGH{x2sEeG5YH6iDk?XJspf0q*y~^ z2F*T(4-T?!Q*SJ%B+SxU6D#hDaE7K_EWQ!P=2(^vHJMDTZw+1s_^C7DE9!}*D2lr} zc(idKg-kJfbO=@!Hi@wU0(>snH6g@pKAmn=BG;L2Thg2CLg6VVDsWda*C!J*r|!*~ zSSHJ1&T4%oi5{I&Ea`1;Ph_mH>}62D*Tj-CM|ndq)qu2h?M>8Cw$r$l`6FZ5PEalh z1o>t(B|5qjDT-~N@iLC~Vg0s7tjaV<`ynbIPar?D;h1 zA^UZ8t=uvRx>D&=*C_)eExRr$t^ANyJ}IpNBrVhJrvVgnu~LGIC%x?$nn+(REsw}w zdSv#>Pd6$_nh(xqo%E`Ea&#;s!{*(v2=hKzM02HkumYm+0He7xlit#h+Ke}(%~omD zZH*^-XnICt4o7Af7$D63E_n(K3@F~+GMkC2s>w%>!aW$2F|x;jh^xl|lU!7dfq*!y zn=8H?=qU>MX=53A0<)iyA#400gYIqztku6%%BHwd;GL7LaHZ8MTkrabm1e_*Dr{<% z)Z35Sc4VRpLth9rKO0l_8K&e()C7P?`Q^PZ?}dBAS+W` z=46Ge)(}$a&07-7CMXS>3FU20E05k@LPT#b5mar1-d=(=TL>3zwi7Oz@{nU^yS=2s z$o3LGbtlk9sWVbz2ruWS{E${YDXjvOw-i?GqM1yRNTp&~Ltsl%D@bR?y`ol7ofmDr zY~v6%uhAmRtFs7hrBJu$6sYgu9Q7Sxs*tF?Qd+OiW*kLXtpp2Fl4=LdAz8H{?W)=` zYxnDbJ558sIii*GHz&ksXsfmJRf|>*YSD9D*D#NpV>MVKH7F*(mGeahbbRZYm(3T= zX*mg6mur{o^4R8>q-r}8@r}%9Azg^C?MlQlg(4_>40Q@ckv5O2G-r(aD-K(gZtI2S zUL3Y2liZA9ZbNrZSAxbtcv;gaXjEd!uIwVwkX;>HEs~5%W7yCrmNnF^T-vgxruoR0 zrn)sXYipVt*Wzb7ByBM*YwPOkju9v2Ut5bnFV~xBX%X2(cPxeGp+zLxpxR2OQ1LP- zT0GI#g0?h{;k6Y7y-p?(ry+TZXw&=|HBh$%*P>tAOj4Ny29@ko+fZ7u9(N(WO`LV3g zB0AERH`CkNX9aLBDPR_KZ7fCdoDHpxsBkvjn~7tn*M+zq>Sv_4oe4876^{zkm5{z1 z-dM$9k|BL3VZ5$yd)z735>F(FPZA;)an22{JQ8bOn(2OvvGiLR~BU~TLq&QhmEEn&T6~nwAJRi!|q}phPLiIfd+>(fG zRFAo;k%xYAfg9?7Zb(=4!A+xJ!#apc;CvzW@603)1z9KVS)>0h3V;V1ZsJz zMYJZcmW7P6*0@QldMzT3`6y~r=IBI*>LOlR&4VX{SCMI&-bi0B+A};2T9xA%%%{6B zqm_YJDwUS43+{U|mF({Au9NRP!m+K6uxbqGl5l}4bKFMMSF{1Br1Hk#%`z41GPDvg8P2HAH6v{}=k2EiK{@1xa&Wm21x zYKJmD2bo+9%WLFOk9DbhlQ}iN)9|5FYr|_o9Z$TIhUwkZ8QBpwk;|ZKf~d`?whB}H z^~nr9)b3c08Y7fM`P&k$y&Y>4ZLv5a@LZ@;q2l93&rs!BlSb7-WlN`l)QwUbiD3;w z)C=1o?tAT^>Tzu%Wv9bMBe}ZWP4Z!xcM)@o9NKsUp_+?rRnLHDDDbzQ6z4`6-3p#4 z9!w`xMp*PV!`Us#_M8=ff`o;fOCNo*9YL2#{Slf7eo~gdJJwT&juvbjRh$;Ip_OS7 zy)-wXHn)vb8Pw7cN~KFpJ9QR#EHSAz(ZX~aP@~nt)Kc`M;utu$4YL;FlDE@W3kFL7K`&hfKB1Jj$3FHr2y9am2aEIgC-LR4lC%cSrM6$SZ{1`MTw~n{$(P|K^V2zRFEnw>a;-R&V4^qIX8_ zIIVATNA(uycHAwxdmvLq&08uX!J{FYbT?qU1-S46=G4q_(Ao# z+YAMMpcy4%L5sa%$0|8EgO!-JFXJ~@aZL)Tr^&7HDmSJh`A^q8mY(-Ve-O$E` zwL@G`nx-NKeKj9d;YrDGfSapZm>jnMXE0M&%pKN@(DY_*^%pIg358Fg6R_%jzmc}C zjz#Lpj*Bv)QmZkjJ@4eJ&1d-m=hKu0o^*ah6ULV-G0M!51~&ndH$g+AwFxK{X*BJO zs@sYIImy`lUYqFd#hjuSgHG^GJ%sD5{+XtMThUMRCD42lUK*+>FBew%sf4KbQbrY5 zh3Ijuqt3r0h4fO1WCgjltxo4?iE16z22xoXd68g479%+JQFcw38-vVYaNorXv}lP3+ZcVFf7*b!%Nh`KA5pU3Suv4(4nJQ2kj8-za{Y1r) zV}23%K~sgwkD|#b+IiH5{ls@=3P&`Uy21QBp=ngQ!u+^pSQ{@;45cLCYMY;^In!Gp z4KM6a$D5zPzN$vH#mlSn&9RRBRJh{>c{wFUR{@LRyqxH5%V%w^30Ys{$3ridPu6zA zb^?l}{1}uBEn{zYfhevG`-`+%;ruL@qieC$dil|$o>0pJ`H|+;VPumZ$t_eq&2?}! zYv=MK`MGD8^c^r>_KNw5IcIKdGx?F6^Zp`XoVX>KO_*jm((cf0wvwNxO7{OKZk`28 zY-q>->$Ci~;=C@mzZ<}Vz5PYfD+Ei@cyCvXRgZ$lFQyv#|BxBhzA(JPn!*0$u;+vnWb0BJsRQ1hR0I0$OyWNXt>X2j z0wq=*Re>0^FLDk`hRk^np@6Y-zKl{H@f*m+r=F!iX51+5Crr* zMuAwWEBlFpQ5CfI`-wEw+4(m`HXHf8R0QjNN`d0=O(?+2E2P2}h_o8i0&(k5FQna` zHTK)lIAm6W`sUFW4Xm%;k^Ci%^$Q~{~iaVG6Maofaej?|r zH$PrIm;4A6WNA7ML&#JvKN78f7eBJvbZ?<})~DwuL!NAmk{`p@wx76KEK_#C%r8F` z)zP(BNyGHGK&(|g4j|Iqlgm$u83E;tVFAClnETspkl^miw2G1;Wz8>zS0}cZEg%`c zVC|b`H?khvjWby^;>D2hn6XMv)5c`a${1oe85SOtPmQ2ZMKP3Av2LJG2M`*ygr#|vzfK1Nyt$V_AE^i zO);9Y)4QsOI2mIoKV1VdRU!E707YR+Y)9FFZtfSL_{n9}iX(1YMwWC<0ow$={DKjD z2MWf}>2Y`W8;1yP`+G1|HS@O#Ghdsr^K){wPCE(C%FS_ZZc=6FrdP%KS`$1{;dXs} zCv+ifpn=*(y394n1Pa`QWySGd(0teg#ExeFRg*g?^~Mj~lCY6aWm z!lV_(0-=5^=w!SOKeI^h35AFLmIaK;OliVe6>zWU28$o$_WOH$*wLk*`YD6 zZg!57Nc(eA!(r*HW;2#UX^pob)x;~`&=sjQa}}1FepdOilAA1OYO(%BZvbjVC;MqZ zotDI57nEQ_W_pWZjRsX!u8&DFamTtifUbbsHCVdvHCq9`Tq~rm)C%(@uYzHCa|Q{O z{#U(m*l;MV4b0)tOsOa1lhK4f)}gAV@>Ax^u`I5~>0vI4PN>r86jU^3a*C}t&2;#p z>=0*V2USKk!SQ-V^sZ^eTx;9>aL#&|)9QrEU8iI%b?&#~`=Z)-80=%}mhQGSNM;08 z9@CGDHNBWUr`V9nB-W*PR8G~JtA@$jFOtdd+h_*r|MQ-1+00rd6kSxQ`cM?w3aKoc z&D@l+zZpc&WO}6`qZy)$g8iWxHLU`)Qx{2ZtyqPrgX2ARzt_Cg z0;;Jtj35$Q*LR}zvEF%XslcVkZ6fBH4%$VHY))$dSUAJHDa+?=kV9hLKf>x|IeBG6 zPvzwar1JA!R(=dp=gy&Re9dXaATQ;Uk4gp9yUp+YkyzlsV9b0+SZ+NwMg`)JH6HIvkK|E(-NW|l|g;3E;TndBf1EwmuNoLZQq@osC3 z{eoE8sks&k)lMa&G}KG-o6jC%YO+~OaJu@Aq75un(;MWrP3rcA8qy|5ly~W2K>cZ3U?Hhc%)drg4=OQWs%` z+m-fJU|8V#1cdA_+&WlhO|>gO2`fPL&I-ug&wNYxHd+y?1Xg$n8#>v7?2C70_^5>0 zPeWI(|4?O7EugR*25JO79WBU%9W6|6u+AmSFzLrA(>CjEFc~U>K5wV>LQAtO?*{r# zrva$EFZr~*6ZyP(PYTDZ%f-#{Ik!w!0F8zkw~IE@13UPHY8mX|i%HOV(5RArTdq;E zk650taj2mNrc`l+bNKQ_ypu#R#CC)+l(Qqz2xIg|8}US(kvf%isU+D7)IsOdqXv|u zJ?Hz<#J*a3Qet@%AE*TEp_nZn#jTNB`7%ej+U zC18fCDNED+umW6rtPtgm7SswS%rwpDFnNWGv%(OzH)97IvW`VC8dF&JiQZpsa{1I& z<45~#F-)&xe?yFN_22|ePGvSF|~4W1C_$&P+pG5SuHuc-51gnRU_yct+f!Y zJa&l7X9v~oa1!=n2`AQqoLUR3*1qn7EvLk z$)9O&OH~w`70nKxgH$q_?30x_ZKp`#&0{~2QYl0+_0$H?Oc6HLYZK^Gz)@0Ob3zqq zldmgjxzX>k<+p5NmcR&cBTNd(NI{UE#6g%lA?)GQOzBO?%`j-g$X1$0guOsHen%ji zz=}RwyerNMqEP$-S_B@SlZaD~XhnC%V1uEuV#8o$4t0iNYD~j=j3tjuc62sjBU_pb z?Gav?-eL!3$(mtE4o$zhH5hK##(uc(u$+ZPatSsk^1zYXRDrU|j+Yu$^;q#9!FWW* z%e4p6X4)JNAu~?yXtp<%_Tw_;VT&qSTDYy|Y_Xio>9DItu(2&|0W8OIQH0z*!a7J1g ztfTKmCNRyFgsR0Dc>42D-GH)=`c`KTPWpjig%;n`8s;-q20USUefZ(2uGfxjY|W<0#>Hl2JGqS7-7V?NMmqv}x?XJi?jwyu zEj-v>&}GLqq-?)=RYxZAd^O&hrrDzARno8-RgETh`H{43fK0{_8SBcEGRp;3Vs|oI zI0y7K?a7W_xzi#41ZLaiIJ@~CWRFf}lXz;)X*;3Phs!k(n_kux>wsd^toO1$bGgyB z#kR6fi(lH8!j2W(#;!iul#-&8R#h~a8rsQ#mz9hLyZWFPAnPJ5{bAdOE~VZ*^t0HS zm9vXr-d|Gm;>&2AT9o;esA0rs+w3&l>9UsH<{DrvCDmLuXXlM>C#7Ye#)WkGxa3xB z2FPi#=6R{BMtQetQFIQnP($;~8U*&6>H`kYUdgITZg_>q&ZvkJ-A(N7Gp7VM^cPBBRN^N^VP%L8|wrmz<@-jFy-dvR!*C>(>n%D zl9vs>eQv9#uut!zxCAav6~e{xCChxI7Qk9wwa+JeWBX)!Si1WgyP|m9pb#~pvuWf&{vx5g4-cZYX?WDRsDIBEJtke-@>ZTkd zrsj@tp;acg09`UK+qN%Z79d-GdKsO^&k%3*{D0BWHsk% z?ciN+xFb#v=zg)q}S_Hn;OS($zY5 z_B!HByKuD2YD=#p8ivL3P6tC((3~}}ZI`*x*CDl@x3Oq%EbB6?jlT}rm9+8K!Qjq2 z_5eE~dHKP?Xhzr$UY~_IBB(XP^QQJ0*X@Wxf2D2Nbw)XM^E#rewMhrd-G_sb9g>4W z6Nz^Y-G+lT*DYxULT~t1(XL)6LmPY@Odaj@bug)T#8Tdl9mI}UwLjI~J?w}ztN#A?_&UT_ zVsuU2q1wXhh;!Q>IU?0-i>}q)$LkQF=2VWf9W)R5*YfUO2ak^15vCyn#xf2LYyH|D zU`G_jAsMGIS;fb;I)qr))Bw|17wz1{>qvqQQrpk#h-$L8_Bwgq1!vM}|C6BhWZmNJR$=O)sw}?aL zOR8rD6$A%!>S)$9p2z5da(|c3(8N{`(;KFT`Fl-Ftcq=AyNEV9Zd9fc9Hm+&`E^HT zu)q(qa6KcQ>*)l~@t8ml!AFcics41e%&X>Rkty^Qao9zfTViQBpb-jaD{O5&6Ir^c zh3W%8WNzOZ+hG@#&6$4WZEcd`PCzplkzsn)YL<%b(B`0h>T>hQ4dxxNx6eqqG;LCG zFRRNoEY`vLD?CDMx9h<-F7e48_|>8xdFjNMm1(RBB_v79loZM4btp*|CL|PQr2%dRAn+NE|0l62ii4EN;s6Ov0aYEiKl|2Un4Iz z(bEA70ht_EDJx_O(!(G>S*X$xOCqbWL`vS2I-0sY;&O260m}sgJQG3VTXUAcXD>Ln z;2x}S40mINqv&EVCft9dYnH-iadVu%n^ZZwX;^RZRESM@)QFDl(CA7jjk&~SO@7pc zxjuQsvaV?oOS(BOoSUQ*VgI0Wmc?1(W)z}blP*4!o8vRNNqMG1EY4Jjrd6JV_MIkm z`7Tmb5~XFHsTKsxduWb@?P(zAQh??%7vR;?D-cr;6Kza!@CMLNcks%p{Pdt~K(Ws0 z2=eQSi4uAZSU!*j3KF&rprYtCGh?AuP+n6#EfY~wt0HJQ-4w@Uh;yZ;PWqPP!wB+3 z{FOizQ0jCQYU*vxN+DR`itcQOfOgZ;bkb<8t|uMuMC*eYGgl0rJM(RnKE89(t8SJZ zu;xfucXZ6EIsN`)InVt^tMlw%U`=nf6Iw<>6x=FzCz%;a-4wAH#?ZR2()pv*NP`7w za{&mp_UR0>{OmBs(ML@fZ}DOb5}6Ixexl9P@&k)nIx|8~hXK@qvelx^)aG{^^U|Rm zb#k&xHnZPUWXZ&`ci@P+|U{fbyfmSH3R(sE}YKF8^W+ z*;{6*;}JYxlU{sIKz?QcZy91JYi-LW7fcV=^d#xCODsnU85UpItd&Bv-o_rRTdYgDz^tZi`c*sdh`s0ST%wR+hVj`MGs|+41GJ zmii2RmOazl8A~;0EOsRp%5{n#ISr!7PKnRN+A~=vNslIHwvtrORt5@;0%ctxEBG#a zG|but%b(rjyxn>@K209U_aKi|C(q;Qm1)e71r5e~rseCp9D;Up!a=k^&^5USi!^b^>kqZ}oe{!4?J<9!_ODm5hhepgSyllH+ zqa{D-LJv~TxSSNa4cUxSW6eT5ab{mn>%xV3tCeyRttJCA&4*`o1u*%7B?Z3lLob7U zQueJ()7TKLDTg=-&$T#+Hi2f+*n7-DGVx#!wFETj7xrd2ZR*Q0+y<}@Z2%wn*0R~B zQ0obpm$zdH0j3)%7{8|kwGRm#oh>{C&8A&8Vp4;p4{&%oELBPlnoCiDrwfqnhq4EC zq@q|J))b0_`JDE92>b>%!8nD7>a-J)1I=m6OM3~KYo!r3NmBM0_px#V&nnGiO_mS! zP-~D(doqJr3i+}GQZ<5EKAFg3N{&rBXxeB&Ml$g{hVc%nv6WKZLS@Uy z1XXK2Ob^QZ>V$}8Nj0#Hio>G_x}(sbizZYj0p$zd0A6O|hEe*smy=$~3>~}-&`3s_ zmx(n0ilSJK&u$_cd~cL9!az=bwL;!kn)$0RCJkvNV{W8&>vDJ%n2aXWo>EIr)jTWA zucrMmA}OvdjPc1)Xq`gP&L2<74m9ZjbQbbQEjbT0apXH=`uXlcs|#~9^Rv1fPx?2V zBRPFh&dkL6Jclf{Lxj?xpn06*vmTt0lc97g)hB#~`SnD;0_W-O|-xu;y=9+Q0mvaom+@;kYes&C|`=r;J{>j+=g}InGsXj&@P}3b;7+3KU?W6W3PF zWqwXd=I7+h{G2RH>V>6dO3vk|YN7vTLt^u*%hY13g)XWwP{C98Yu*64 zHz5(R3?F{5_mK(=IH66(lsjPy)?_-+g{5*F$Gbo6IB5)NhfP_UI@qjT>($5wx6F=J zDsJ?p8Ggs}VyG|9BYDb;`Y6Y4c62g@g-APy)&zFRc9?q`wQCk%VU|~BN2{`6AB2{s zadRTm4h@YhMi0ciD0=*DYHJ1g9IC<3lfy>Y{t(7we^tu1A=AT$|HsYKLV3YuAwVvkFAgBW}o&uNzK& zHi3F&IpMTAayjy`gL0a}eY{wc?!k*1YvV4Hv_aB?5xMlxvy(o4v80y_lcf*sl%lNV zI?;uR#fr^6Vj~=7jZfT~wHiA%H^~7kZNAJVYVieG^jL`$duZ{FJ#<}I-hiz#KXK)y zyp)%;^%!el4Z||M<$I~3DZL)H>}++?G_%z?)rn$|psZ~5NNIMUGfLcC&{4k_X%$!d z;St5D1nS$XdRC@^t~1-_5g40bgBaGavnkiv?5)CjKB_^W)9N&}HEzzb8`cGJJ}3;` zqHHy+i%FwlouP}j_Xg@Qnl-UbJB^9;82R3EL#op>^vWYiHIzrncPWp?=tAGEpy#b- zDtSrdbR~~gHY$0%X-|XZAurBtxTc?;G%a}v=$UP%xr{DJon=gZi&wQ61&s*wB&tf7 zwhVfdsd~m`%3m|bAF{HfH!>j?*2~E4C z(=I)b9;NGbblz0m=$upcqQ_|Z6rHwp96IZqzdB+ZGf_Rp8t&_4f!UrOZI2k$xKodG zjy3fd`80LL8ba!%W+ATAY#{C+$Ua;r*gRY(4rCp!%h{ISI_ot2)??T&zrLqxs4|z( zg=Dwxkh0z#+g@Bxk!LQhN9I|J>yebP!&qF8v}WVxS2*=ZwwNpwLDNvzk5TFAxM6f$ z9KX2^hFSp!!Kz~iBQ*&Qir3fmQ`v(6dtmNJVYXoVH+R>wYlf8zzTKx&)__p{xRoBI zY~$TOb5%eDO#%M`mLBD{p4a144*(T`Z9K2X^Gt*F2|BBp&g(RpC!!zKDW{>l9Q~JMrNbFVuk_0=A@miGBw6eisf2bTIKK0 z+rLeLvQcN=kkUHCM*2>#R3~H$M4%YftfEkSgWlWAyiioR7-XGJ-hbzrbk21WJqlX! z3_chq)rE4xPwG=F(kluASoT+e)iG>r+5+Wh1_ObLxip!^r`l?=@njN->u#vC%;R~zQ z%O4I`$*qU4*amxz-(nw@|U!f-FBGhujvd!zLU|C;!Yj z*811si@6zAxX6WaHR)jn&!(zUC*K@vr4ZxhY1 z+v6V^LP}hL=_NV7Os-C51FQn_4ORhaWtDdeRkRElUExi^2#x|UUsS#}>lbTKGq6xW zvGy>-46z{sHV4Q!%G_qyP@hZ`ta!|H@wE_Jf(;lrwkMX9&4@Oj=UbzP`R3?^x;<`+ zNB^8!`Z%5RsuXqr)1b6`2+}8InKWfN0ILzm5ydkH&RzOAh4iWvcEJ3~m1yAR(h54J z{1z+guTv7^3nw8}%T^j5DOsU38AVzl>lL*aD&T=8I(%6N6yU2ppoF>!2b77aU)$vy z$`zNk^q3n`=z%zcq*#+;3A}3bNg}~hm@a$+&dobNE8S!zFu$fsiD`hLe|MQW2KlKY zyQ?vmpR+T~l(4a)??wCvVa-y^DXeWj)3Qj|rzXn*{9HTAH@p#lNA{Ms}2aU za=dCa4fx&QEZ*ZRx7mm;xSpn3u$lJcNN8VMJ#ZR&u39==8-0_FE2l;~E#lE+<~q~b zIt?s-U5hbnW(`fTmWL{(#&pY;S7V%|v9!FJ1jbByrk3(i6QRez)kov_h0?-3@^hma zL#L*c8buFL3z~BxvS~5DY-g>+;@O}hUX#nfwj6!BK>IF#{Bb4bOHd82N0?3lZM*hc zD*R@;D3Y?(5iFqv`AyZrB#m>q7^mWb^Kem|kBd`zxmdLR85F*zHH%Ru_PIdsjR9Lc zYra$V_7!=BTz9fC0!YcatiqJJ9KEa67Aei02if0fYc5$XaN!urM#ZQKrShj9w_pVK zi%wZB6YGOV`PsOmR?)Y_)DN!7!sA0(dA~KoWiJ>(J01!~v=z#R%2?o6Y6Rs{h=+Y2 z3;^_>oXConUhNksvb5b!U1d8>P31Kxy%iVR^kV{QdeMJc-kACIBlRN>+CB&}Ep!B9 zTlHYd{(T323zTNet|TTwbCFCt%t6e;al0Y|1$1Xz>OwqM??MrDTk*c^FDg#~$7jfA z)$7A*P+OJ9*M{8l<>|C}`a8}$pXI#sX;t$42xTQ5 zAMUvP4jZaCZJWrlg{*pSvTQ!4+wgPtSk}PTOA)~AjgMB-gboJHS&rhUtW+r+ zI#jEAIa#Z6IcfEP@^c|Q2(81RIA+xKj zeG@A-DC7<1=|?YEoKB@%?^AQAT&$KU5|7q9mQO zN@8lm`T1J`x?6dgbQZ~Hxr*e|s)`hja46#Csp(S#j`J7L$+Ki39(Fj1jFq|`!9Wc8w^h<4MnnLZlCTMM#sa;^MGD1WQM`p#pPRTFFv&l{JekNa8ag(SY{ zE&Z5hDoMGg2v+qny=hV}byrr1OjN8uD@z~942*P(H0HO*=Z;^Wp2-72s}ZzKOELbp zlN>-wweT~cK05G;=+XXnC(|U!D<|Um(zSfQ3-RqdX?M!vxj_?`-$3U#%uouDJ-6M4 zbF0SdUhLLEAmS_!EqIIh!TB0Rd0u5JUBwEAO&{DUCmS_p2`Ty2B>)ZRB z@AE4uxI+y=k-PhM#tJ`)mU=hJn(vV+dtQvT5^6E|<% zx^d}tHJRo)SSh*l!UcaYYqBMoS&@^EjpiHI13Zf<=NtbE;|3LrQ$W&!U%x%$B|QF{(vNWYpUz2iDxfX7iIikKzbu zSPpKPm1#;BlbQ2FfnH(wwt6kTfmc>&xP7x4CELzY*wOM=@zw0L#!RvtQIhnSETNQH zl6f}Elb9pI;W7>F?^$|mOGF`N$$owYRT>i} zx!A5he)dG;o?&+QMxfuVGO&*Y)d)70Rwyqa&Jx?F%Oeh&5c@E6`f^GluSS2BBwaKu zxhR6iwfu=tlt?fUmr?taV?+aFw4->o)fz7@c*k2Q6vk^gwei}(mPKhrs@eVH1+gZc zSzX2vBf&ULyg;i?3Xw9Qn~ZN{FoA<@UUqjU~lghMHCV!sqV7fOTlwh~)dv#~r##_?YAx&g! zo#RZsseCT3`B!$-UAZFM`Ot#tml}FW4?;rS@@-51L|CT9DLKKBz1xW4t+4ZknN8!= z6%j^Ur*&FhTfzaE!EXqlhAb^66jrKR@il>DCvnWQ^y3S!xk;xidB<#tYW}pGgd@6W zXyUf#h-Zn)35`CYi_a$Pqb>%t0Jx;j%BdK{zKmifqb;Kxlq#ienI+5Mf}$ZUMS{oM zow*^#<)30wo~m#H4EV0ZfLzjE2$WXim4ck|eRUlXry-`G)Z{L*CnoXC!CJ9akG zrr`kT6{s6|ywpM*;OO>Zn|-9DM?WNrj`xl0_Q?y8sf!LoiNUY z8p%6ql=IN#J-4AWEgze_lD})dQviw~yJdzUyk$;_^ab;hhsj#cUaigSy=*B<0TFh% z*HjIE62Fp-dg_LTVOobjio2EtP1Epa8q6YQO5UIkWccNi9@Cx|C?Uv`thDF7|Ul3 zvV1yt@pk14vzo>DXbX>x&Dzo{ES8ir&X#OI<>M_uRzBXg2&wXDk$q96JaAklNu0SJ zDJ`_KaII*Eko=@}t()VQF7bHl=0y2~;2jo_GAVs&s!Y%|wq_wIU!@J0IOR=UxTVu$ z*60oYG2~9me0b#IB~dzemT3oRBnV~c#dJ$6H$`Fl76OOxxIE&@#Fg7TOX~Ay6F6)X zqQ?n+kJR|G4E>c?eL&aKY1^L+BDuZ%tz@gX#XJFzm_HFvld7DG+i*MydrvK?Y^s*3 ztswGNvvrFFh=}R=?j9yZ$r)C%AI0Iea1@|GqSAiIP5_#A;z7)IuWIl>&F|fjZ1rFB(%`HXmWH9SNMpy^hF|? zDW62z<2h3sQC)4CE(f{v~u@emJ7 z)7p=(TWf{+Retb;ON~@t+v$DU%q<}&w%kw<{oGIa{23i5a}>9#k*}*oiZwQoYQvD? zBDM0y^PryOuK%HE`5?5)~=yicPo>(rlY_w>gS1ODP$i$D8qn_}p#fkfQV z4J5J{n`A(kh@At|2fCzR7A|A&m8DiPI0^I5IaDEoz(h@o<-|ey> zdXy2>$$`UG{9&59`TZ{r<4VSyM~1ZQq_Wfl19^N3m3`Zd$#3^Tr)lcs7UJ#Uk z?Vz}NamIdaTJr<-K8KYQ6EbX3sG-dHJ-h4@eNV6N0FoyNLk{6*j7p_ zm7@rJNErU)l$TTQtr2wd}R>AeH|Vyp)<4bn7DBxq^*+L zh+=D`R<3+$q?%w?D!PrtFd18d;nIrPt2xJot-D53T3@;m+-JZaeHr<4tRsKZ-ez?y zXxT1w@+V4}HN#&e*5t3&UY1?9nWZ#>sJy;{KgVbM@e1M5MY`QV-w!St2SClz5%)^T z*rNqhT;xXl^4Y+uhEv-(#SbPd46rQc0M-%%$`;AhIBaXOmSio~(#i%~q-N3EJ`d>* zb!YE+fwGxAsT2ar(M&rcD0kZ8zr9U=^ttutXvyCuZr@c1sbYxt&e$9qqqHY&=>DSc zS}iDlZrlq}zAHMHSt~B-w0c?E)DC|(U|_obYE~A19JgA|SFJbM6)t)Ny1mw1oeo{S)nHuxBjZYgHTTXGA%pdpwfj`Muo@Y&!>f1umE-@(S1 zk*vX2wx7|aW`Mr3BRvl5e;=;C4pm==8?UCK3GvRY8xK`vk?gwN(Q!TQ)ondjxp@G= zgB=!4;+8@+l~N+CG$lUk&KgB>g$ujvD0}Db*wVkvtTY}O>pm$?mvs@OZnrES%J$t7 zZuC(;?vXQ}J0lAPUPxv0IUnKtLv}d?wBu>C9tR|BsWo1huEvY4yvCcOzw#;}u<@S8 z;eAMIEaAvE7Biw&5^iVPjt!|nKCu}Ygw3gFRL!Y3%N@*`(nn6mr3cPf3yqhO_xP?> zo?2*RPDB--fyRN6vWfJLZuuG?5?Ax+oYybLTjM*6Cqy0N{;51Ic#Bc?h|lu-c`aN9 z+1K@?nx<2)ersECr8#NzRyzOMDAkliD1Mn+5>fa*9Ou}O=};$ub-$;*`F#7c>EWg3 z;nc0Olve7Z{XK{vf!pNbh49{(N+(fUo}@;SzL%O_T*NgUwoyRsG@hr+%P0)MBja!S zEZPI0RZs2M^wg4!d~0dc6xG&Jtz@HR<=bkXG754R?Dwjo8wBmu&f^2)&kA6AQk)@ZmESg)xr_|UeiCNefV^l zHdyEu)-tsjmTAF4?SP?p0*pUA=+5=&#t= zoOY`ydVumGbGde0(A^Z~W{P5CdLA|GQMZ`=pU;%jG_8U+gx)JctUmoN6$9-kD;iB2D&nfqc!#fqaN(P^~fP*YxkYYS2!VKtSYW>j5$psAB;W#6^D& zPxD|01@E|8zoQa^1`Dl^>)&m)Gi|93!&61u_*2ER%Asu^4dpKAIf&ii8`L|PxMr<5 z2?N1v)(a3hG%b4Qq=&YBV;U#0(*H!G{8G?Id%v%Ki?wN7MaQ#6aeANOnFYae1D84y zpuhesmxl6rXZ$|mRwIi(ZVArfjaw=S`A%3nTZ>N@+lse}r`19%FDQW#Ghe>^AoIb3 zvfInDUS>k=T+xVqzM7YhzDjZo%6q&9D(3$5#jNRRRr5uiK=IYV=qB`U$^giL`=C-- z4S+^hzG$I+7?o4Z9X;3SVoG#cUk@;*3;NFi_t|84mz2(0x?psiQ!+5!u^gudUy~PA z-eF2>73ygPC+is0!N`G`Qa9D+b&VJF`UpU|*C);CgfaSx2WBr;UEMG>Y(||GeuCD52y~V z)7gZkb5O&Fir5#tT}Z%LjqgOwdlTH5Jw^iKu) zA;M$?ELv6wwQ}t6?u-V4V`5<{X)FiJ+Bm@CBXvtM7XQA=!oZsXG3vZ@@h zH`J|9=yhB1P&x#ptG|`*Yn;gmZhN_0<44s39Kr=GCx|No4uJ#ViydvS7&EjC7E6)a zv&Cukal1IBzYB>jTWtq$GH06L>?}4A&+whcu_)p8ERiHOY0_r@-~a!i<*L#pu#sdeG$k8$0R+-p#Sfs2OXOen57%oitph*hrgYfKCR(Y1>WV&Z!od??EXcS z`#RxHYaom9AaEN?p}z8+=YWEdCXp%lk&A2j=J1S`6^ke2b?0hngB+B2qBVN(s7h5O z2;b&>Lt>D=4?yAwc+Q1bvZ*ae)V-fj-nR0;{B3(BZ%5^AXXR~IpA zaA*AuRo;dxZ{w9WjVG%&QF*&idCSMQT{8r3-kX)!DQ1=0+Nn9E#3!<}4^ykr+fW57 zL!y~HFUQJI1uH`ptPB-7R)#8A87gwD3>7(6hKd|3Lt+Pc?>Sb6D&raw?dK(PtPEAg zH(VLtaAkbMm02IIjBmIyzTwLFhAZP6u8eQEGQQ!;_=YRv8-~6c^DtZ)-*9Do!^~n< zQuEgj2fwZVeD!L5K2nw7irzQGkz5Pb3h6YJs^f!tLQF4uP*SJ#U-9Iq)>bY7rB$CK zkz(y7!Oli4NP1i>)>DUOp+l{A9aHWxK}B2CzivHCjot7}QBQ087|LPNN_?9Q3D1RU zhsRY~=dU3X3HDdcl=9J_Mp#vwlLCw+gM0+^zS1q(^k%^c{fuAt>(c6<~@C)7cGWanc~LQ-vRIWQP=W>C!d z>_Cl3^i`}dLsJ^_8~VK^%wZ$aMY!q>4Jt{(;EHuZNr&KkIhHFbjp)~0yI8Vkbohm8 zr@oOX5K`$k?|Wgm;q`Zl;yv5M=XQvn?GoSmkoXgPmK8T)Es1}0h@$s3OB=2ugfMs6U2?={&~Vm0T7U-L0}MW+Y0fHC((@^`%xo7M;|VOI zY@*u~8(Z=I;<@EhqRrf%W?bi#ons_HobL+7M;@ewJsOvG&z=4Yrt30%;+o8Iwp$%+ z?$3F3@WC{P31aW(*}R==&Fwsu&Hq#C)pZ`$59Ta5e9RfV60Z47W%Z>s9^*Q%8N8sH zZGY6taDkH%}LL7Ft)n$027Vj|@0qZ^M|M)?L*}5iqre zxa@Uj4rQ!(pmUi3?gE@Qb4XtZv&ft8I_vpO+fCws}oFv?LVAQQ= zb$0`i^+pnHkgTP|D z&G!0;>Lr@S(}RsgU(S}EbVYw9HFZ2AyUc??b3iS@Sube3$m3UwqKQ6pYKF&9%BXMd zegD18+8-;PS9KQ#0>OV!{GkZ!83~D>6pPs<)#e#X*{=7L<7v-Gtjtr-lqGjmQh&d! zw|g0>PnS@&n&dx_>EhW827GQG6rA|zK33L)QHFc|50rMU_>5|NKw}6vtK(=5+tX_C z{YBfS14l7wf1q|!Up|3Vd;t;SHZVDUS3Z(k^xd1((5)hpr=`^AB&oE=t86>@D~rb= zWti)2!JBWHZE}#aU}~w4=H-(Z+qNM}XK9Z|+6A?Y&74IJA-4_ZBCne$ecQUD{9N!3 zHq_X{KCn;FUe{7(t3yD=ua1p>Ts>UX(`{1?QGVKb8g7oOr|_VzILWcdHe%|9Pp-Qp0eD@aqJ!n*A(TULYXXVV$SAZVE_M z;NWxU7RY_b&R)w)=Tn#W66W=)Ww&ki^GDUK4trV`ICUHw3j>NWb6R+Edh*gqQO_BS ziv}N2d2em;viQr}`j6V6!dovjZLS}^{)Qzdl0asOP>eKbNElcvoF{vCkRupGmh_U2 zOG<{F34J9=ANvfWNG!yYJY!_X?n3>l>l;+OtkQS%3trLMAtGS#@~&qwQ+3!DhdOx- zJUYlN6lg87+P?t$X_I~QS#wso8;!KvwkH7r@VdQ--kqY{$^`we2({b1a!MtcH0X7& zQX|;I-5}K^g5MXsRb!Sy|Bczf-R;&Z!78?u0$z%J=Tx7$gVw=%k`!ZSbO}2rqr3&# zpl1IwG!oGrE@IX>N?zT0j#FSO2j_pAg(uV;#}LLO1rm}`mWc}`+8wRIQ%R=o7YhME|hL1mlB|UDphwhqYpU&ZD4ww#Dg1@f)^NHj*{=F!3;BFC)J_#%` zIWI}>l+s5up^1UBYi@R0xU~yK2aiMrg zkmxD{<dv{s(W7b&T1@_8*P+3s`jr7>K9aghs=<#tLO7-VRzG* zTf=%z@a$9F10wW`YCj+In0h*(IXt31FQ{d3h*EJbYyYl6c1@#^NmV`X6yyXr?yR)* zveM3q9g?2L{-)k{Xpx|{>{QEl?A;-GN%c`CE^Dm&RcE{2_sR9j`$fGo3$F{39a{f# z(7b#^e{fxYD9?|bL)!eCHeb&A)3vUX8m(|)E8VC8?l>esGhmT6SJR>TA z!;Fct)zjLf9u^(XDL6;+vfUJ0D<$FgHk-53@qX zZG|+`)o^7Fc8Hp`YhJEsPTtg<>=YHvXs&kX_mce%3)`&Wv(m^eh(dN(>fhD)$BjxV z)H1Ui`W#cs`RX1L6qmKyMzz-Vh(Zpir*YBHsOV&$a!#o{++(}upm{A*_XUl4uVAMH zFi#oyEhqI$Sv{Ax(>@6{}wQ%@73k7J?}xWW$2&dbW#rylp(7_W+l91~7% z$aykhFmBiHHKk37-#I5cuNF?}{h~PENvnUlQ6C%~(ij)Rk&iiX_d8m{U?cT((%y3l z+N=4zX7hPY>vvqROlk~30?yz`)mdr{K{1n4P7VR{G$m|+wOzu&Va?4A&CGys%%iW@^Lo3i-bYn)M0NMss$u7u zG&(=0k_T*^zohx!X7%{>9vl*Ib56Zo)*4CeFk3QO84qK{(9$uD0*c!$n9d2Zg&`Wr zT4EiK8$^c}Z0AjlmEC?ySYe$zZL{}583{|5^$d@=q0;cIe3eYt7!F#`M-3Nm>iH$j z%r&)M-(&OrDDlGGQqr8lP8n^oy54z8T8NH{87OH~j!U@SS>Zdal1Zg6hZ_c^x$Fdv zSl`YAoj**e^$TkMhBzDiepsuq5Z_)dmaYntQMKxO)tJp&NP8#M(^<8QBvX|mQv0kz zC=M=+Oa(1Y=&AL(rsYGTi#Ln{kE-0bQ6TBe4sxYKg4Fkdagocy+##*75xu`Ah$ht& z^a4c4tH`O6sa~$a9+K)EjeuS7mP(FPWT>+lB*)a#UbU7>Mn?tZN0DrLm^tK);t@2- zFb)tVb6j*4#$4XdDnB_(ig%wD_K-zTv8wt&(Tg4BuKwZFEP781gDBYJN-H*_WT*2H zXOx#oR`03i=IWL!RK*jN2vZNbMy-YS)$?1l(Q`_$6K>*Mqj~>Wc#h8rvo3$UBo4-| zz}(iQgwx_s$jJ+@W#17)vKbXdSV@zbN7n@=^&5LNE9!*hUod|5qNs+JuL*)TjTa}K zVZT}kodGQd&WSYZ<f*p|JLjXvWw953XPhKIjT8-sAhxB5UxG z)1qRe^wM3kmNkhTL~G~eW~WIQFT+xTX~C`E$%1lI;|~4XjbCV1757ZnlxAH$blvpd z&Rc{>&i?VI<=7b1@<{NphNU`ewtpoU88TqNt(oBPj+HMAoGN?p8 zP|x>+LPU%yX6z%!3?-cC!$z{yfC34qux*_eL_mf9D(X~!6+3C-!ELowWv+`Ybhh_5 zM6QPP4nzaZTa(jO`EnG2Tn<$MC3gncF9qSx*`c1ZWb4uIlAEkGf}X| zQ7x<++SvDLp3iBkIH#8Hik1+%y@$J^i(@5SykX)28C&ZWHZ8|3`Uas@m+>9UI>aZ?{6`L)@ zV_NXoxQ_?_LPWEecY9};juzTL0+tjTQ5<)^y;RK{#@thpT5=8#H@+fjTs}8mo_Szt zE)B(E7;Uvi;L=xYHE!1$g%>76(|*09PHxkhz#Onm)Q7Of>VDByH^MpwDa5SlmdFp&7=IhlKUAAb>kzUdtiIFqa%d zZjj3BW5n?Jg>rzgRSQSen=6Uz9038wtQV|j4Cz41xuAqqW+^wPxl)P|8k2A_vtL-P z(sHX74ha4*5k81n>`Y0S+XWdT9aYa5oJYlNpsZ0r>#{5! zU(jjUo1{%isvC}pj?r^6*X5(6`JD$hE9q`BbG<(+zkzWP)t#k1>Sf_=xAXK3+;4NM zn%0BS6C+2_n_3WTy{~IUdOWG#Z1){jx#enbZYV?I@>R{6LvydYMc_xx?JmrfuZU)S zRi3p~+1vvyhPw-=l^dzy7x`}N#_Xfwqyz%o&^mD$(Our`+Hj~Vq8u-IR%>rkCE5QU zbj|D+G;W@B$Bes_xT#yZ zFjuPsa*(wXvD@Hsf=218TKGOH6I(Uqt>PmpmF#|$NN+NR&HkyI*cU#ruwUSz^##D8 z8^$|pF$Qo`<-8xiQyOR+Oz&7V@V;8WTcj_NN@ zi^QCFo-@+x_=(-Zl8C4HkZqZWLFU90`;Nqo9l``AU+*tem*_DBeyG2y zf`XHzFdi`cw2C3ANB)ec-VMRch}>%qrQ$Hbn2c%2BW+Tw&`60LH^pJH-ywLpZ~-2M znc^kQ3iXI;@_NomeBHuX4rndlmp@z1=H&)GpeQc2Zuf}`Jj}XnUbSvSgonMT*(JUW zvsK-U_=4~hN--)eA|k$5#*Fz9Z!v0`$Iax5BeSFLOzE#jl#bdP@t#Dh9m!}rVpI1U zA3mp*F`|Ah>EDJ6*bNtM5=wwULU2KRhH zIR`Y~C)M*QJr8S6&RC7TdfThAM511nhnAKRVpGeQJ~8RxtHxBgNA1UYXCbN+o z9-+W(f?&Tve99o$UV#8e531d>DuEQSUmOYU2`ocOA5rZaDpQ5zj7oyNm-WjCgHlkv zT(PUuHgJILvt&W8#X@TRZpwk5gUV>X%3e-xuh0| zuZCZaX;mIqk7GuGdkm774H7WB5G2J66ftZ)fCuIon3<1Q*OMAGu1r=AeO*-^Mz5<% zLqW!91Q&-=p+G1KzTm5k5fNFmQ*gO)oOEK&;eOjxe|a*azTP1?-0ACkS+ha6DmgA> z&}FY`75jfj<6uw1WL!5Xdlc|qQ5!M2b;)p#?OjVth70%HyvM9uGQ>=o8$ol)5Shdy z?&}7YB;_ENJ)C5iWYZ)Wde3%baj%JsauT4GWSC^p!&-S$qBM8iCkorHIZXy# z*5~r#9NEkEN~Upocu}-XWHf6bIW>I8!7XuFG~r<>VJ1N$cvE~Kb0z(byG}JkB<8xCl?GuWtA$E8~X#p4PKFjHb0lkzj@e zak#M1+ryn2k*Uq6*^*Wb-ypaK?u&GWs~I_obyjylxjDUg_eM+GtJO@f1roy{{i0VR zNj^-A9=vfyBZMElppmo7Z&M#{YL?RO00&DlZL>2wVGkGWsAkjUL1d=ZEiSh`xHc_v zjsY2GpXLKe^~?T zSmAxruvZ#}$@n;f$xPrvCx8^bh$N892#Z_9o2`VSqPYpt$%xiIwl`*s9ownyQ_3SK z(&Zv%jPNQ>(P2^LoZnuRk9sNCBT4A&^2|6rv(lgrr-__L=jXrNu1wI*n8pZCNAsM~ zn)Se755vu=Z$@w&6eMslv{oQa^^qNxY5}Y*Pg)I!CN>QmnuH}n-9C2oqGXXn!}c%$ zBVS4f^YwHXE$*`nfUWZ}cL#O-SHiV`bLg z<;^#q)@Bp7?T3kLQGD~Qwi&J7QodVk~gUwH)V87T=&Yz!p zbxkVaXk}Uox}(cEtU9Dq*5hL9HEG~TLIiaYO2hglP}3=rfNnpd$~;bJ9`jk`lvUk^ zPdG_yFB?|-+=_q7D6AFls-A8~Fw?rd$Y0q`JOUu^fT$5`ZPRm+wc?T~ZJ%xP{pV~#u7qS&P z7FPZJC3akj;B+NpIb`#TrkpG(Xx7IY5brlW{_=tl=d_(`BLrZ%EiNdBQ(9Q6kgSGR zK#>dS(e=($I)7gY6YP(eFv{ zT@g;;Hv&wFrny&vRmbiJq#lf!Abow=kcJIsx$}v|v^BpT)BO55Tx5{oVJ{d3;)RD2 z@d7&M`jl}JRt;x=(f+WhVf|U@syR_o7B`Gwr(Rl43m)cyrnwal7{i9=dr$JZ54G5P z7TbBSKcNL2E9J7YvR1L4S)aZx>52J{cmTIIGVg?_vs!$WU{_%EU=d|kghKLNF}M0I zWb@6fN6W*~c|oyT^XTh5c6w~GSl$vu*!DOuv0rr2Y6M6_V3iskhKPlG1FOa30#evD{tf2@dj((lu$Z>OYJIf@PM|Pk&xNtF6i!A3^_cp_qlJH{ z)s6yPBo2fhs`=KE)0z{oKW6-Ox6!;GDq+5`kV09kS11Z^L5>6VEY~Niw0^S1DqKtg zBnbA7?bFC8^vEq9?7!%a(8Z}5_PL+ojAouaD|i+2Ow8y_lPCS7VW0^pu-w-M4IdqrL^Kf)JXonQG+CI zP4n`|E`CEo#PPV!$*u}b`W;PsMIYQ=#yuq`#q;PHZ!CLGbsm!L;K!|E7E&C*Hc=rr zCTtU>x#t@Hbok1{*B*x=JZ1(S0GDOV9%&H1a4aa7wa!K@`f*9~C1Sa@E6tDn zB0)jZ#P_f=mn)0<{VLc=7Qf5KVO~yL*Qd13v4;T(wjoxf-&vRZ#dvGkVerb=HR{Er zng-<0#CN-^^6^;~Y}kq1glB z8RMq6wQIUwh4hPNfMm&iBWQw1*U2Ifmbe((Yg%1MJ$D3gEBP#0509vwh3`jl`Q7h| zLVmx{q#r3xt9k)ISLj$_Yi6&sgg*M3{kaX!}O*f?mL=s0wQ%c6gzM~{}__Bi%+ z(swJJy^#npKXgb`20Lp+Ul1L~&d*vU#u06YSk%3$ch%ahN0$HvT2C><1whMzkukc49}v18oMcqD<)0}j)OAkoIdo5q z>zH;ta+pg&)l(jIY4Dy+HA&(0Fj?XJluZ%}CTcZ@H@ z9jmS>;B7jr{W%Vs{M}@2Wa49+q+StN!SAMr9a@S;&+*OylTz^h+ zTnml46(^ZCJ`E=!dN1h0y}`utEw1g*v-1@A^>R3hdwbD#u+d}HAX+K6;3dB$t8gJ5 zCiR@hS5|NJbzjT!eDjOjjFbM%i4CqLSeezh>Qi-(YOC3}rQOc&1N3-GtWsPCfJc4A zI0;9rTg6P|TF-Lhuzf%0lXt9 zEnlx(=!i_e$>-268PnW|2PH0$;dqO?3x3BDd4HLT4+HzUGY*t>JOfs=3nj#Ccy z$ODT~&a~zVnA3WWUC}RnffmAYvtLw0yn;)~K*l}~=OkXtCH*N;d6hPo>VXy(@8O_m z6Puvhn!^7PmUm7_pEKU^(vmG5GFb7p5y=Lm@IJTg@pT7ZEzTWDcN|=*wM*PLJCR?z z35FuljB6RWy}{@6nCRbE8|x6t@|Lkex_t}VY>b_D{QMJq8|+RR1ngOGD6k%vgCq*W zr^=OYIc0IJ2ihofu+u2%oOoMn2(B*x0oSs!=hb;3Jk0Hv$jPiGRyr%V3PJc(xy*&@ zK(N%YCc>{AaertG=v6_>=wm)hFRC8*47_2pLOoy42gDEEat=>Qwm*-m^Ru@eS8%H~ zHuPrfEPjRBVa>ebq&WidNDU(VRqu@dX))Vx)vx8=C&rBb$vv7_ke~#QE{E?Ds|zjq zcOKm5UY9*4MNjUt48OH|gBRBno4F@(`-^)*Ig{%#uI_Du$9<^8dM*hDf9ISFwqL)C zVV~jnfaaNWzo~%}lbpe2b@(ZPDdB?iFL+9@upHCqUldJHlDo~5%`ndTc{$Fw_{kkC zIGkyv{EX<6*jo0cL+Y8U#o(;$g`5%&FV72Vd5>g^cxTV$ODbdf<%+>rEz9S9Gm>7uM9_AnawncO4Uiv7d+kc`@l{Qtcy$yH_A+9sZ5C82;^J zNs$h%N0PjZ+cjhGFnALCEnfW@@na&9az6#Oz!~+7hKnbJsA=cl_*9W{VzsezFz=lD zzo^t7voOTG`Z?~xiF_1@$?%W^Yw0KZ7!pX0tI8YwB*vbQr zWUzF^cq<owPG_YRzR>y(FK(=F;=cE&_w>$s$I9tm-+iJ6 zPQs^m$`d*MnluyiXWwh8QIS>d7}2uGPn`0@#t=8tAcv=2(eK`99nnzVQQ+HQ+heDI z#_=cS{FhymlXq9OE|WJ29*BJeZvp;fPE1b-itydGy4fPdBl*o1pOVeM&!KY91agw! zy20u?*r08XmR)H?;=;IOp26lFL5mflI;JT>#E!ywbIzY1RtZ0Mjs+gy9Ou)J96nU? zf&6;N)>5y_D8$5p?cG}KaEKHa5>`Z)0H;-gbvz_2xCTHB@?~Kf&uOk-BS{jIu`tJ> z9c&J8PpEI9mfXjBN>t^#{!N46hH5Nc&(GKq1wcKww}Ct7eZ*#=-S~G@7Sck}4sun! z!N0*x$SBwj(Tm}ML{TRl!|CF-D6{n$UifzSF;?P(t!j4gWw#Og4nk}dT$psc`*AkK zkfT_aTtT=p`}WeSGUpS}Ha1GM5r+l)RpJzQhu|P5ZN928>iE=s z9`oB5OIUfz*ui+gdXXzw@FUNLdH(S zX&HE9l5Oc3sQ@c7^Xw6$NC!yp+(?3jAl+4VT#)$u;p^BXs&-29coJ&+txH5Tf;({K zx2W+>oERhFwzV|oLxLRN9oTZLbA!T|QQ9d%obGFb7Y0r|DhGMoV`QKtKE)6e88LI{ zBGq=$pR2KM*m9hHxOocL!78Wr(|j(D8>B#A6L(dMwS!FJ5sr-9As}L@_1OG27ATF# z>XX7a9A>##bqdAWN6#;-=Yv{xH*D^f>KSU-ZKG#?g4Q|h2o4UZ#pTln{D5d9a6tqz z)WCX%*Su(}ipZnIDdd>?g>s1SewbIT%WGSJXJY^>(fiw zNpiiql_Uu#S=?p-&-VR*+tpGWLS4E+&Q7tee(Ty@)x97J=I#?ZCv)H!%d@y9eXO;`)g#xK zd2|?T2JBv;#k^@0kz_@`X>8@U+%{`R?2_WItL5W)6h(ef+T5tll{ z@|tFa8+y1IXn7GxaYI7TW;10XlZBmZY07M^SGAg#M4O9ywB4VLJd142+2Yn#NIrw| zyE&y;KUKqe=4973(e#6yQhZHgIw@P*4ejjcV(xL{mpH;BTBD?Jn`%AcsrgoN-)EPz zTl%fPi|v+v(hm({TI(DggHI5k$89rC0^bfVk4Nz^&;H$Uv^k$Iw_`5<9J}9N!D*U2 z7A{%rp|E7LpAv_L2l4q4*PnraJ2toz5SU$SeM9!_5y4F?2$JGzYB@r&-VS{nR6u@Q(d9_i1ELe5=1Zk9SBCa8LK3Jjgzc^z1Qm+zwNvAZE?!2R#aV zIJhMq(&cod-Upel(B$0aAAXKu%{Cev^X)fC;s-)E#n!-GxYR>hkGS4x(}U1}(cSUp zhsMSmQIdby5QlPa!onx1 z@ft+b4SF|v2ouY{xCQbQWx`FA4B3G+~pnT62C;s83?g4bNq7bQ293CFfT%v_^FC`;+b?mV$@UB1 zUh4kj#UQ$)xzGJnC(GF&zQlPLww=-9IgOG%Z?8)8OZ>J!`RB>FgBv*6QHeO-s~LhP z5w*jbx?*)dq?Y!YMGU(p`My_ihd4J)GK+qr!bR&3`vh^_aH^M8dPKP5{4?p;4Utxf z=D1~8Md$PP5kX1RW&Q4)s-HU9^q1?W_We1XO+e>iw8@JU_x<5>ce^F~ce3U2c|Ksn z_C)+FzvJaE=S_I$!=rmu|Cn&dK90o(t5g+>PO~Fc0^1*7Qt;AtL35HXW}0}gRNzQQLA*0i3nkTcV*d@n24-0|VyA3>){x+J!$ z`nh$dP4|=p@7X7Lk_dFhdd_~af&2To;lxira&j6gC3Y+9YA!WFdDx_(Jbdmk58S#& z1obwv0Wk{;VfnDurR$CiWj>fFFX`3arb-))RwwNK^$+J7W2)2e3|szOe7kjwTW~>-9Q0Upd^{;?!`JOi_1!v-09vo!&G)hVu+ z;k#hm{`!)B(KeUf^^)9%bkAPJ8DeDYxCze^KeQ~(#)IhaRQFj(RYE$cM@)>4`+_8|5u>bcB{ zmmMtgk8*g5A%s?Mc--Wt0#tAl;3qwntM>>(_lQob*~qD)tk&`7JWU+HsQ^6p1H{^`7$CpFJ86 z{u0r6SlIb4-#a67`nlRXQtgx|*l#XdNRxw`0Bask(mXckA>vQ?Tx!@!I5T)#bg@If z)krA6tu5F2mlJ^!_N=gGwT^5`kYF>IGu8R2H!KjnL^N-a=7U3rqU&l(2Sq z94OM7>mqz9%WaN6&mITp=V300w(8hHQirng7{`Z=6I+fn)I5e!(Vkl^v70ak&gZa4 zxwnZE`*9wlz82gI%#MK;m~JFG|G-jgL@_=2lpS=eKh`6O;!ZE<NlZ9gdn63KccI>d4yA&wuvWWbO#u1RrM>~U~%4Uvvro^q=dvCGM7 z1>{8X;B$|?ES2XBBJtZEckOnLRyD%DiAI3DPW+IM$#3sVc98u>G4vF7i9=C`g-jA7zir32Zz$Qi+=EaW z-bhZrxGw14e(aXa2X;-@F|ltYZIm;gaRV&pXR%+iE7s$AiKJ_F|7$wM?vZKSFpQ1Q z&q2Eu8fOkZW%HkS8ZoM@uw*%1j@`7?Y+!N4+Ud4{R`bys%bZ1E$GettHYxWnb z*{U9%Fu$*tF~WTvBF30QI;7Rd%_wj>ZodwzvU?TqolqM6I@h^IMa zMu0pHF7i0hH#IBh*R&UM`w8`o#&uWgC^)-&Ox)Vg3RaJmB(4vw=aSmOLU&a31)aFf zfM{I!RV&D`>0MQgVumNYICYp3M0}rv5u%l1V?^_5JvLhOmR(y#YHkG~-?b}dxK)*? zNKT4ir*1_-LyZ<`8C?-7OSU5Sh_Y|+HK<)0?Lpzt?Irsb7(3Wzb-b*SC* z+K9UwkY1N>=Vnhtdt@hpN4EMRkNYLvK8aV5z3{BY&VE~uq7T`GJqI3!Y~i}+g#D%) zbJ96VWYaj8hc7=k7TOIbyQ*JC;^g?1;sb&KdnPvBQBg5^GH~2A6H9=PWDoGwK zf+YvN3JIdf&)b@VGm{znh1LQ0wtMCu|4f zdwUattVM~ zCT3K(JZ~o6^^QtWVxOKb=$9}3UD9*0ma$#b==7DpjmPwK%j#dy>MDEP+}!3VL3Z6S zupxatkg?!rF5Z30+HuJEeqdJq@p@k4i-K!Ut7pDfs5^kV7^xt7YD~XZ^p7#!6c%pk zmuD<0(|Rh$_-OP^{qdCE&wcB>Gk(TaJbqTcH&ySF{!P@%-VyXfY;li|u-VhVL4O_U z!cv$OTDNZ`uEpYgUeCfnf7EQWrMZil0sm@!^9jMh8oD70&qu?T8jD_NfNxMSU&RLI zYg(hYo#sW~ZREX{`ULlwGNa%Oj52P<0~U2g^NFAsu+Sp^(Zedumm6!8{$!+kuhgce zapClqS}rm6z9_}XSH25*Mewn5Vg+dic19V#p2pWJea0?oHNU1>jQ*C^HuHbT+LwOt zRMc^ZeJpTvC=Q$7ZO!LUQ9K%WWW0P!=Ya5cQ}{cm-`a@Yw@-Bw3{XSh##fVIZS=cD zx%ZvWYFVO8$t#!-r#qvX%|HRQLpxxKI~~9am@S?-u2gK{3D-~!U*5bTdMY&Aw}b_# ze!4-oxAY8`5{*52T5>hCep{o@>WTKSt1Qs!RkFLPd4 zsbT%;DsKbhx3&9UG3b1@xF=pbV3<3hoF_mFjFB&5vWh443}vx)ZVF=)Hd-jrX1kx8 zxTX!O(7!nH2=$zMB-|fS+GUl5XUF$V6E}oY!XurF-)1(}?o*E?SL~%mV@0pz>Ru%U$r)z1uVg5_!bbb)XTKOUh!l-)p_xY2CH*z@f+^OUb-zmMnp;-jeM)mJOUZWf^J1&?b=8Jmbj!$?AAa_mM9n9BE;R2FVAA=tpH@pRFg^FN1@xN;wt?f*|yS6ox=jfwW5kaG3) zH&YcFAoF@nSh=S0)FzEP750SI8vA6Hp19$#KIfzNY`ctF4{)oY5G^l?%0jy`~b+Ra*cL@VE)vZO|iX zEsBP(>pv(p!}`Wt>SFGu)K0N>um0kz5TyO^KCtanJW&)K?=6bi`|m9VRp6HXLe7vG z!!ybaZSdU?>R^^dN!b;jO+@ZFFjEI&rfmI)Tra<;GrH8#i{0?U8B}=|A{cIr>TzIYJ99j_z-*X$UmArIL4BSC&v0`YX5w{00vUQw%x;yTspe6Z zEARs`3y)1_(3U@CA!MIdQo#*lsxn>29}N7m{@qm1g5geTk)>7N%wdEs6hB*z;f5&l6&oiQx~qPC zb-?P z50C(7X6J(YJ93dysta=I)?)~l1eOyUeS!*K&h&(S2*E=bATspDG;pE&co5K;1~LMD z0e6m;=oeCi>~eCq>AQBc($~sbt;6Zl#9qo|PB-^9o_0+p|6)V?Nkp*tC_?9oJ-2B* z?`gd>gFIL?txMF$lGQj^#ZjV`r;K1>K*%J)D8@B*bftW;g6pfVn*&_MLH9Malul&%{zKato_rn8i~zasj~;DtsM#FamGM?MZpd8s~>s-U84S{Z%F}X{#67aAv!+ z^0q@7(=p{hY5B$g2ZFI)HH^NYzi^=${jwFonrRWtF#_otvwyc=kJSOe&>%TjBup!3 zk`Nrb7`5u?e^%zbJC=`d2;kQw0U^I!(DU`e7nc(Z!kRNmb|jV>2xe#W-k2)SCvUM{ zov2{pT99uY5X=rCB;<_US-tm?5Xv?%r81~^m-L@YAFatMm@d0yZV;gl+M$*veqVj! z5g*xfE?5alFW$bSv(2qa?ANH6z~brsYOOk3ETif&He&klevJ#$P8iXGoz-WJ#pevg z>OHj>u4B=QSjP^j)~!sjs@?0gKBee%j0H7Ecg(gt43T@vO!cOV=r^_-LO0 zTvPsYV&KR~NPZ!Ur8bJ4OVvi$nW^-fcaPI zeQc?E%$9F!tOF>kQh(1<^)IQui)pW@Hk5m{+QR5kEuh1Nk^U81^-j|WFcnyamu?Aj z4yK%1&D~4YjP1G7U(Y@pkCfMa&I_G>@(nghEMucRN!d`BgVtFKmyDhfIGrjN>&3Zu zxpm7Z=X#IKyn7J5*pA_ugJ#}DBf7bKL7*qNRq>wFsu?_HL@*-`=j|7-JS>l5r87>r zZ*Z@mBW=&GJS?|bqWwQ)i$^R%3x(fM9uvG9W5Hl`E_~;HPIyRIhO4>5fPFCxJ4Kh{ zrkHr=`T)9?eLcbITS#gU9-s7;9qJK#Tz!{PDFtL-(auo+V3dCZAU=|pyDYi%Y*_fi ziQs`iT=!1-gA#=ZdETM)J2G41u;lQ8Uv-9?cQWh8Ly*R7#kO*ea_qEKPaG6FC_2a8 zyFZ+?BAmxGHP6hu2UTZ9)8%*d7R z1gR0y#1*6jQ4!$pK~!8x2IRQ7Ii5yv3$AG{vGU_Z;9yKGoz=_{oXXYh9wr?Z;KS89 z0O^N5IfhCAQLC_S(b2_68u1p1{zejcp0ODP0$ zv7947zWNBTNFfX!B23s2G{+J6bi|4y7#~(Yd^Uy;(hxexh3P)O6KaK{(oP?5S~^!l zg6(uE3!$eR6>SdFTI}=Lel+X6(LrFH)kpY2eU)*1_Of~*7>47i5fsrJ5a=U3E!y_^ ztd93s86fokm2;T-v`8;wMWa)Woo+ZL{{4!}c%t6t=U-|2YNqr5(ft?YJ znZP~&_y$+)*5{ExE)Men8GPI4-4Dh>7k<1v@(E_jxv>X7GJA)V;|J)#F+3A&6WV*C zfo11a&)I4^rrufytNKSfd=Fy&fy_fg52`&JYR{SGOarDR!$PqqwOwXipG2@uV!eJLbepnCm^Ds)*z=SZ2=_(|Nr9#M| zupL@G?EV}?ZN()yjC)iNRHdE#L(qKu0oVRi3x4i_V_Zf~i0O6lKtG}h51SEI@?9@M zf>aZqkj5oUIj(Gu09`^RUzQBZMF|Ad)up4|m3<(!yIXvwc)WQhxLkZx{}pSGihFQG zT{?!I(Len8gwl}!<$~tG z<{GNKzpp+$>m1qyJz#UfR#9|awK~NkZsWm}jr3kT z8g02V1MLhQrszk%#3F}32OYJT{hz8TCqqK%sTT}$UUJOgG{a;AC^QZ#+-T^Y9~4bW zOsI2E>mV`!)HzgHjCa_ZZx=&5_UI>Uw;b5oL7yvYw_{F zI}D4`?vP3WLb6g`X1;TmQdkwdMXrO6p(KryIZZmS8=0&2Dn}9{oiJm2v&sIQ>c{a$ zPdB}%$D`#_O2c^%tQJ;ukRTE)G;W8U5O$nU(4BLe9#cn};|qH=L=$)@UKmq8EnyA7 zZsR1dc&%6|K;wMHEUX`^<3HucjK>Ip(ea97=c* zS3E;d$odl;XT06cnyka*55}%_M?LE*~Q?v*k9_FQ78%-3%ZckhT zybvkCcXeOEY!>0L&s!Q|;4;w+UnqCoH@Nwry{#N{99fPglqHMKZ ztJxS+kUh};zF^p8(IEAN5^+ zV;_!|s{Iz%R#u)qSfeQbaZu|g`8ClSt{2ZpFQP{r>2=+h+?_f8^`uDH)vRzA*!`;7Tcm@H<$d{#qdz#a)pR6PP1 zCyN>UB?+~s1-Oe%2b7ve4|_lX%PBduVC}Tv4A{lIeDa)`dVAE{T9zk0xqP2i^hWC? z!ZOY^0M|4;e9Z{=X&foEhGUQ52DY9ELv$i06hO+|lZ%&hrL*{>s#XLEAt(`$0V`>a zn*zR8k!D~95V;&J`SJG}xrAk)rsE|M+orA@|>>sb*I57M9 zw$3j7e6ej{>uQS4{xv@XvwuhGY}^lLSy zEKK+f}#^L&|O3FLe{az0+>SOPgmBIih%LxO>C zITU#*io8@7u>^8H5jmeIb1Z?JS0m@uGRG3gxez%Q${b4|XEJgo%N$D}XF77G%N$D} z=XT`WE^{n_oV$^8x6H8way}C|pDA-Jft=aMnJsfHft-7hbFa*?1adwXIiD+YEP|GZUsvYbFR9iO z$XOpb>%ERA%&N6-kVCWfpj9^ajk4Lux&K&Heypr)3Do&!nKSpzvW_K?^R3AFR+(c7 z6f^zP^Kl&+GhbK_yJ5lF5WgSZ(=ev>f-7?1#$oXF6e6P&01cv-JITW!6 zhWvI}#1bg-{U~A&6#0Hx#1bg-gD7GT6!}3}By#RQUxIMIT%ewyp6`D=az5^LJb`9^ z7|q%P&Hk`#))FZ4qbOnz6!}qE#1bg-lPF>j6!}S6#1bg-(=M;ijed3GRG1a;-NC<{vprt1e*OtG;0r3{zX~2k@L^d>_3+|mO!%?qS*^& zvzEYY{xa(PvaDkX)R~MrlVu%Cpw6$N&acWkmO!1Us54d8DHHndZBq^$bABsDRCfMu zS$6)em-Pg4J`*`5@9_k3W+P{|tYZoE{G~GI{+G(0ztpFG{;5sd-f!AB6dT&upxOS~ z^u{K*X_I#H_D$^Ab0^u9%0c_sZXb4`_?sj zQd6B>5?lUb=NkR}nz~x!V%FC*hRvPrn>$x^sRodIxvf)^uiBl3WVFBR?g9cO_6)W? zG5_Rx$xCaxfJ8lS?(7=$zWW(0bFu~a|5QId^I&P91pUjN$>%IXBSO%!oS}lT` z)%Y(7sP4gb4P(8=E-D&=4ZtwK(ty^(z|g=@&l)EKm&Hlz)bh|@&53f2FK7XSv?I^~ z2|`8pzzN~V9|pQs51asl8dlq;fjL2=?wB@9Yu_RzqZoJ#WRuq=dKVJWC^iqgCBlaG z`!?&ZmO-D*8u(zTwms6dil$#u!&cX(V~ZwAP}oA(oDQ6zx3<+??IN7^o~~7bO(Q!Y ztp2;MRbnnZKx-%^NB^x=b&|nFcNDP1lA|h7Pb&R;YQV-Fr6R*rl_SDtk3e!XZ0zc6 zG#16WyWic_Nej?y9gy~3u^lD%)00CrFxOi`#gmd9)cyvjR+jZO`|~bQ>w5jJVZD1J zVtezbLI5Rd5)QicWJzofHfNsh+^JmuPI>Ln2pX7{LQ$?6=8*N!vD!A6ZvEBlY3HyB z_!$M&KEG>3TY~1>up0qnjd-b_m!V%&jZ{p{cpjBsW!_93F zJZOQ6J^)BuM>K3C&|CK0$Z&$*P?Q-z_YBC|2BG#uHR3`W2VRxFOW%ELEdSQt*R8k7 zw!YsR>{J`Csv8H)GF7d|AbS^kLRqhoHd@d#_N#wYTH`N;qRnYx52yC>#VaJ{!X^>_tmyu zOX2TiTW=3@HU9&lL$&O;q#fa^eA2+X2Zak}SL1xuSM~+{XfBLr`S7)aSYtmd8{?Op z*>9>ct$&vc!(2I~-z_tKR+gMkq_U-WYLM3QNiaH7JCtfnNso8>qq5WZ{a!TrJry>7 zH~$kQ`7n6`ptqyY+bZ<*VE3~66Cz-r^FLK(t-Fn7TfFv_1Z>GBom^mPQsj|X9%Y`S z6%8k=|9urgEYj%8BH(WR`+{tMMN=kb)ysnLWaDBRRa7#YW~6LZ#O0k!Oqz_o*aX>d zeF`LtZ7AATw=*rE+WKTUx3BJQUtQw%pY;y9`1L8*ucQ5!Wmf$Df+E1p!>Xc9?AX|{ zQd#VDQTAjTiD0Gtp!OH*!oblk1-mOA>FV0tH!%OJ_RW3W{HoaIzRev7t)1;8^px9J zUmrdGSsOpv)%rBuGOeiC)0V`~M#LBKU#b~z=Ao~rk)|gxeCtKBnf~`!SGRTUtpI__ zJ|oK*JdGy?VkysbsoJ4NOO1x44{X}hH!!zdX0uHLv;Wtofvp3x_g2&VrcJBGMF-w8 zxx8;+_8*W)I}r5de~r*LH*7-RJ^s#pRE(>A;O;<|p{>5{o*zH31zRLYvY$y0w$e?IB0A(xJ_=y?_3Lk9MsQ_Y#mJz&SUn z|Mv-=d#c^mfiyY)NzI0m=H|ME)Y*IL7FgF9i)!9cw^M_PO0PAIa*J@3} z$^N-9S`-54SaZ_}VwBR|E%;S;VE)XSu2pK>u(ZCbJ8Jc{gEmC-jvg@a*;OVGfAs@h zT{8V??Ek`qZB--JXhgpkI|gR|%sTrjIsKnq_b#Q1SZaCI*B(i&NCF$$MOtN}fM%@< zQR-~dI$>}2D?*am+@z85;`1;!vT0Ml1~vN?;ZuF9fd1cAtb&UAq(t=DEMDnc-zM(E z^ZX$j$GvxXGxuInc>|idhGyCp0SbnvCHsFx|Lgz*AyMy zef@K9X|BWt=4MuvFWrKnTbVtrGJBNSqs%p}GS?_`jWXA^%3Q0=wOw5uz3O@sQ`^g* zbtc5|-rFmR>s?2#n&@rSM6a6YRpz=@nd_9fjv>y!OVlVD%*O=J>)6oYv)0?yBTQq; zStuwGtJMy)U9_(u zPokt|oV72>1lH3(uQXd>TCNDw0(^H*VY+qy{2xO;k_P72x4%m&l6Hrxcx7|Hp5@ak zs_N_i>^kW$y$p_bCRsn-N)`?^5GhmLC{swdySkCm=cICikOC8{*qm zni!b<8btDC(GF{|-OcUn!o4DO%MpVg*l#TSvzwgt+ApkI^$?S!N!}CFw>Q@@BoJsv zc3ZoNU!~a{Ve~tuK?^BuJ*&G`t(81O!rD%~Fez&XQAudHySt}oTWc>A>CykXy4L#t zpqe#keo_&wgm!7YNqv@H*YQZF(xlmGhTGd7X=9?1HP@;HP@yWOy1Ys0-Ao;6!md{T zqxzSI=?beVXwUCjC&s<8O^DV|pGJB0|9ds6i`8$I+6=Q-IWR&oc2+X9yFJo5vc9u@ zb)UfMdqnlMag>mj@LBO>N?4jGmOn%;yeTj{LPpzJ>ya{p)FzqV&B63vg;fM&m4B2v?!RlKIx7d%T$1R-YF zw!TwHFlMm1b4^$0`i}LT-TJ?nfm;4@TL(L3M@J#Ka=i*~fd#Bu)80XAk9Dt63rf)c zA4`wj8(1sU?S7cRw-R=FUtd_fVW!^`)xO*R|ZHsY@ZC7j9v$|IoZT)lq`x2|&CyzpRjF_{`QPyL@g!QA)H z?UI_*(IZc;JhiK_yO}H3DC&7@h<0s6&qoJ5SjxvE<>OZJ2<^`OrRHCMd;Mq4s?{PA ztSd^>lQ#GM`M==roQ%aHJth8Sw09)hJF-p+IGcBOw@NG3;Q2(9dnwAjWc_|ZlhxgS ze^vke?rwbW1{;N0H0CI_>NsaC>($75)v7nrd9W&t6xNib@L+YPBZUV`xg9AySjyc< zxr@NHHj+OR$vjxW*+`kCU{569i{yJGH%9ciNan%n|4F3qU@2dSlrM;{s=xU6A#qjoIuaZRMEM_eg?-9i4A;_>zE9cEm{($51q_NXQ(u(fMV0O;V^Osldq36Wys?{>kb zITX0?mLDVUY}&MW6BdWkCan=^Xg1GZ*MlMBs|*$r_^QqG*9ET%bVs>AkB4u^!*}E1 zo6bVNqIYYFCatBfTT6d#f4^;iziWTLS=KZ!w?Xl(NLe3^(4RG8)$gyfir?a|dBCmK z&!g63mirBZbz12Jrx(bsHr9c%yn(E{ZyH!9A3FS5X-WjT5p={#8a_YB~-egC;H zA;$*zwhi#@G{Co`{M%L@$2W-hzLooaD);>;$AiYue}Bjy2JSl-`$4bqh!3{+-{01M ze^=Sg53HRZq;`G~?fk&Wop$_52ptj({x@3vVcE_Pt(_mHc77P`m@H^Map3-umHSaD z_oFEHBO4!%amxL~%Kapj`$?4hiIw|lS?;G+?x(5TPovyVt=!K_{O&Ky|IEt&ES3LR zl;^?bUIqdwPiypQ6aYcmggI>;vSxp=5i#ukk^cK9`tP6VzyDJI{ZI7Yf3@u77uLxy zQYXKNHh8d3E=2SH99jQN!{$)80+UhTmr>xCR)BOXFck%U6$O4}1*W71w!44PgkC`p z^I_@#Wm{hxPt&;Dp0Fx&<@OhJs=AYMQ zASZ!DER1d?aDq(r>Bmk-s9MnE@q{gVaK|$G$=bM4-d2ADVy1}M(y?KkPo=1g7 zfqQS4X=$=RU^hi66=Ju@uiQ3pZ%Cafe_-xA;00dA13n@=;sbNP23Ph#@j29=&!|;< z`H8i#KU(-Eqof5MEbEYuRg#<&<0xE3`p^;9tED6|qrRc+l+KpVY4w()~&PKmR-ki{_+)fi0FavuCAv zuxfZ*OZv)bO;o07HuKU^+x-azpHPPDIqF^ z>{9lwA9tN2$*7Eg@XD%IHm7CVKlhbBiPxG0{l8BMta;{Zew8W>G}yx-AA%5R&4c?g z#U3RUUAbHTT{Zh>k zC~qnZ>TNO1fqSpUT$~A#|CUVtM)LOH4JgGs_J@DcOq~hbZ0&YEcK)vyBA~6^*bfzM zVvQMb+j`vkc*)}g^wzTdt)NK$mKd--{k{1k$_{7mS*+7FDa8!q`?ArLb-^P<6m6Zc z0zZ?vlCELKMxBR5f#lq~&}gw+!<+jD%(|4gH!03s=FNSx-CFq}j;@lmMmOrIWKUvi z#+QCPF!y6D%4TDWhc)rg6Ax?SVO>1*#slQkfA5~i=H6Wy-R_|kD4JvbKPf0-;4Ntl zorNMn-qLC#(nAJyy=>mZGXJu6GEDS;qcV){b1|Xc8<;<06Uu{eM08n2A==($7(1fz zLnta(4(HT#d+WATU*Es@nby*909UPT%7s(FTe{|7k+s+ zzH>$eN(e{1Gl}>qL_yo4gi^J=n0yus`WK7Vf8kmf?P+d`1A9%=9G_ z?Q9|`Fv~zFFw2PVD_0}_vFKl85Tf|2!NkLliQ^)09uiTfPqOwgCA;6W%#!)V&66-X zw_I*1-V0rnp?sS6-?$l({Z8VChY<=HWdV~3EUr+~_XxB0Z>g9}J^8E4OurGw!$X?2 z>*h&%_;=3U*<+R#yYA&G-fsq^n89idh(Zxf6KuvbE5KjBFZcaj}G|)fO8C z6w3#(#MDR#00L;nO?DeFO#fV!OA|V|TWp)o66)CViB>JLN9fsx~{0e)j(@0N|ay0jWu=*9QG?F47Bi#h6LecCioBM7|l zmu!jpap=JoJ3 zy_;Ed_V3qhYsU>CmxFxgBBQ@oysEgew%&gTC#W_SL!$n8P^h%tO#)0jjmQp7%rC^A zwf=0I_3$Yz=vV!{^oI1v+}B8JPmkT{aZP&cNsnvOpst^~vI33cAw2 z?*EBK>Je%*cSLXhUwiKX)l}963g3hXp;r|ZG+0p(69^C#l`5b#DT);W34(@V2#AVG z0@!;Sbx=XEqhjxM?25gPj=iAb=vYP^+rRg@xw!%7eKY@h?|tjNwI0g3XP2|jKKt|v zIkJU)9S!1y0vaPif>ROtkUb8+7$V{k+q^jW&&tj~0aP9#jCv6>$_@GGv3tFL#=`yS-C-o-53~;)M z3t7SNw}e)i9^f+{8#N3$={sOB4=>N>xvErW_4;j`qfRdhdu5!Zr&>V)lZv?HdHTyjht53w*J~Jtf<$Q zFSo+1u61b_ThKf3e9wbT?~Dt4diHk2ESrEkI}iLk!0@2z*BR@_DGNW16uz@BR~YU6 z!@lU}#>tB-N?L#V>!G*9LizDcr8_|lP>_QTYr=iyUb zTvv)amg0`1xPvI}5K16~m+;&v4|oN|lk$SMLnZL?9KLm&LN2YR!Yvw%3GLdRiNp== zJ+lwC|Lgu|&rfoyO=iL8mo3PUy5j#~d9~Fd{FF zgQnB|Kxq+Bh2?IX!b!2Cb5!ySw^(^ft}4u7bc^g(_Dm@17~oRVk$kS3z`cvLZdDk9>4o z)(ClK_mmXxWRXW|YKqKVCX;!J8gt^fR!gchSv7b4>^;g8*o^} zz!2^+!D-5J*rG1nk4`OVwVCyFxNE~TGyo1w9d2TKBJX?%WPzwJ;Hael!D$Ug!eoW? zMUA0V$7wyddM84GRK!DiDM%_Z;~JV{1CNbQVKJx_q&-an>R1VibkvP*DD3r0xI*R>43DHgAQP zn!=k52q#8>0Cx)1d_+MH06qqlrbDGcAh;{8Wi`{`&CptLI$=Zx#-b)H#AnAfG|@3Q z=zMJri7*RP9b&c65nNHEPF=MG(+V>!Jlvq|M$xNd_vIQoK!~Df9mbDQlQ5AKvFza} zeTR-Wf#DsDD8fs8MDxMGTLM`LYw5ZGNlXBlE&%b70IUz~Rrp00DqH7MaSd71wJ@SzUeyOY$%Qn1R}fqn6gqGv5Zl)0#PJo#77jZppB2k4oSKUU#sI? z%LL!8L+xfzhjpmK45~_ps=|_T3Z3_eBhfL!N^}JW1_eOGVz*rvayte(r^T08F?iZX zqRbYZxwd4HM9wL6z8}z*@{dJH!zYpdRd&qXVS|u1@O+B=)O1P?y;Kj5zgv z3~-Z)rY(anAwD9UaNNc}qGVbd*2>4hBo?_Am_OmW=*5Qd!$X>V(b&+Ac zh^$y=N`&Z$Y5id98d)K4aaWr*b&0PQWmDn{YLxitgk5EXvFRu2B-_|Jt~(4Do5K4H zicQjE1_f=8bxDvev@U-_by^S~F5o5xsQ=*?O(U}yRXvPJv@#tx6i=yqOF zF1<^PnY|mD^l>Pgq?SzR>=2J-r8pZ2&RTiE0s&z%3hVtSg80b68<_o)?L?v#Omtx; zh5`N10TaRUJXlAAg#b36FlfD9IAo~MNo3U^HH^f9t(C?>$0A0M*T@jo*(I>TVgrs% zVI}&;5&OVi18W~=Rw*vVv=*G=1f48YPlNK+$5=)_A(IUTBtuq1JAlq%UAS=MhS?{R z)@%aPYv{;?d8x_Q`3g`D3l=h&JRdo*@qd_GSByr4Whn zSHLP3SWt>W(FsQf%SaK_a+{*T=p>qzMi|AZM=O#M$(RqwcEjn+|d5=yVI+)yI9y(^| z*rDTqPFr+b(eZ0WClU%mz11A3-7Wu~0!4yUb*6s6$`1+(Cyfd&YvD-(#6;^j#B>D& zqDI2Sv*ch^Xg25qhJFc}7;CRhG1wG#(9ky>aSHUIt%@s{2*~CVV$f2>mFR3o=M5Pm zgEVF(j)@-@+E}jx>xI!WE}((+)6wx~s%MEAf|WXuv^-dYOYC(xu%NcnA_US`5udJ` zDj`i5!Rgxik~EzFNEpoK(V4Bo&Bu5#=Smi#Q;JR*Iu+<(a!W9|C0II2FwG^q(ZM28 zat!t?IM((sOE9X#@_mjgTO` z6o4prjDiaeuH83+J3ay)ej4#1srUsvYF>+qM&qS%Si`{s(bf7Y@+Sp%mrK~pfR{k ziDzKpNGxPB^genNKSF5?hh-abx8&FYKO>cqfw+d8^>MUBSgg~9wGmqCL3o`S4$0|B zL9KxU%z!@HB}o?>fdP=8K+${(Sm2tvG2WiQ(U!BZ7R6;eaFCg%88aRe#$(EO%ovZk zadWU6N@9+Zki!qqUcp@=I59v+2K(v62eILs9>mWzhJs3b5TVwGSGs7NiLr^+2X{rZ zJ~Lx8tFzlj!(BHUwIf>1 zM(yMP7gFdg7{FNy;9eh6YH$b1$wB*cK@A{D#T0ATt5 z&L?{TnlE&_QVbfQASmQysUPkG!_`L;m%2M%|3D(asJkPZsQ|9h5-%6dS>VmY?pz?_ zcnvxtyqF1BGAO7{>h7eC0-To30WZY>+5u&t2lR8Gqb2f~NYo;D@`Z51wP8L8L0)J- z$(P)U1lRy>;2_>Wrv*H?gKBH9=aQ5zA}KB65d{j1@s=f>uyn>(SjHF@I?=*1P#n8c zQ%ny*SUDI9apBv7Pd?DUK}bj{uKq)gW1`jR;0Ns-AOs%E!>>(YDHsACKcEF!SUHd^ zKnu|~H!*W{7ieLt4wh*xpbdcFM8U#RqJJsq1ESEL@G*xhg>@ygB77|H?gc1NN+g$o z8dlJ26qeD03cS->Mp6%=pd=KQf(=YetkpC4bQIW=fdLDPv1`!cNUfveFE^vv=>A9t z;3YmI3YvNd2w&{biWwrgJ<0%NA&OYDu-KG|2yTR$Q-(~W0BI>U&fqtrxu81$z>)@F zX$&INhw*MAz!qQwNGMra1JFo73k7p)Q$%C1H`b;H4p9J!7RdNfn3hopwgS2ZUt2tH4!W_&<+mN)zP(pRk ze#DRr7ov~m#PlL$K{yfO(;%0R+k_AWfcq^duCX3yNnxL)qZ$L*R1XHwygq2A2U@{4 zdLuoU57MCD(MjV&a0@*c#xHR7o}~l3J{j5d#X&VNF@^HQMZNirAz$^v!l?sXu!JD` z*aixaYjtP@$REJJO0nAZ#20&Bk0AqcClm&*(RG(sk0N#Vd zBU#uA!F6pwU9{7cBZRbSSVF6$rxBNoRBHKcxB zg@tJP=qRjS?W!p9)=NG1_(%j6hs=rJ;tK8#?Ve1)5A#0Moi2khOm!` znMebM5ZVTcC8QmT&tvVk7QUF~TBf)H3xYP<`l1B^RihJJLuxf6xTb!{8m6FYLz*{$ z%^JX_4PcW7u&(B6dcJzO+40ueSxENTN@VNj2w?AqDS7+_mXdLKh97r?>Krnc! zgGobMGNA=4&?Z*5g?z$cQ3Q;Hptiz5*a9DCz%L#?fG;E-F8V?%hkzqrAInEpklz;a z0kaEyjSz#wMucJLM*;yJ^G@9sS)mbwoP+Z?Znn0u`uo?}fBS>I55d%sMCY?v1%!+MkPBFHAx$nMWCVa*$dZd`axozz0A#%~JDDa=CS(MFJedtWohDBw zWCVaboh8qv$+HO=0U*zY5i$;8={v*%IG$3%esfZ$3v6-NeIz6i9WYyqU#n;^)hrnLENONH(67)r6ufUCG4kp=m4~PheqKCV%yL19;OM0 ziEzC#bBrMF(^ULGu)}PyV>E&0qTRhAq|@RYs|6NTpq|r@7_M0V5HaBNA_k~l!~p9>%t9D3K)Q%8 zvJqb-$# zBmk_J1Qx<10HjO8RW=FQ;(Ap-Vz>_eL&Sj7ix{AK5d*9jF$-bD0O=yW$wrLj9;i3< zBZm9sKST^Ty@&y-7cszk5wj3R43IA3J8Z<-Dsx9aVz{vWL&Sj7ix{AK5d*9jF$-bD z0O=yW&ql1RboccmzW+B715Phufa*mIuwKM0gb@Rzi}*1c@ncdLgXqGDA7Fi~uLazz z{~`H+)6)W=dRhRirv(e4767qv*O2n9uED~t-yek1YSifTt!2Z|-9tF7Z#Yptng*f? z5Jv-X1W2F(9InB^3K|$pfFv5g4`@}ZpWxcRNig8_5)4qi1Ou#>U>3pz1H>x-24l5R zzX27%Wvjc4R^tuJ`JN@F(Zu&Gv5po~N5s^zoC=z=jx0Ch^FNTvJC22TP)<8(&2c^kW1g4TCW({ng;37Q(`ofcg0QurC4CrC0 z9xnbvcxRZ1kOd8m9p14fIP~EJ2$)FM09WY=o&=^Zl){XNJgb7MDX`w9yPA)3VXYAs zy)ml7YnHexfVZ~cc3~*rW*jjD*rWZ81Y3>&QI68Jvlw_v1lB&_X8}4%tKeLe>DGtk;V5 zrV*`Ss|OW8jR;Hico$x)L%19zn-zv=Z1Og~%jLa7%a`knkBS zIOPKrMBAcu>!H!I@S>TH!vqREfk1sy?ADUBK(T|+LzbPr;@c1g8Zh-wKkVwuCk@6D_$Dqh72)9TvM37{xGjLiE zy|!!hqTlPprV)-E!7@Kw`@#xqK}<~~!@Kgg^gvk4ph4|fBmm7x!bt24kyZ*y7ENS8 z@)Uh>HdG*JH;NT_MH%+yaaxaenlVM{!w@^4H3+ugHkxn?*m^?Klj;L)2W}?eVt^(a zE~jGF(g&dkGc0OQ5GET-4X6e_rZVX8q4n^gx+YVTPun`56j}tJT(a|3O#w|VAY=r9 z%+6Oeg*3U4kPAs7a5bxBKFwK3)*s-u^l3gMpWKkPfo0wX>%91`Cgvut`I5xpx;|c^ z#7C|jVTF)}u;RjEHd*Lrs5bE8f%Xn2{Z@n;FDmmXta@)!ko^dT!`zD5&c?U*aX%Z|0t`Yx zM+=&aH;a%6YT^t0u-9#>ZH%F!)saH{g%p@<>@A@{Wt%_^#V`DI5-2!u+#Yr!@B=6s zwt)3p3kOqD?eOLw-ukEDkUdskXlb&^0TT2edl3(Bq#+fh6!B;@$hV@mco#vN0Gpy% zoS;xZ3(fA4s?$*=IOApkCtUDlYjb?m8d?B-2+vnyXeB3X3%_++~>o_1dyOU z&xh19IBaI{DJl5iDO?n;?dI`~9y4MuxMYOZ0%O}kXh*Ob^w7{BV@$y9K)2A&jnN{Z zBrg2YU5j&bD3)4pLlP0>4814{!X^$rAR5lHK#7GE5PB#qPSE2ID;P1*zBFi)_$15d z^RF}~G_TvC3PN<+_7|Hv61%P)WQn8+B}DrCCh+P7#ioFkPug3!-v)ZYdg3u{lA(#y zS`a&AQWT&E2!)CWSKz>f+iz$|M_VqRZVa^->vX}ed4QuqTyuQ$m=D|KT&@`&B;uP{ zf|qUtXxA8!v`qsS5EZLqW+mp};KxliG z+?FP{C1eDE+?FN#(qvykMgYh#SY=f6qcMIgCX@~Uc>u~H00G!uqy)$5kQNys(}VUB z85=r{CZ`cH0uVZlB`avMf{@XLQ+$Y`Kfp^fz_3B5A$Bm>&yXN=Z&NZKZaTr8A7{z} z?zY)DgNF~lT)s1N4v%>7c%C!trUS_YevKiJO%OQn*O9;n$K9OCaX0!?i_~%8!0lQH zjlC{DJ&0ZzbP)sx)d8w7!6gCC7>VTXN6@|+z@Y#N#X}+HLnQNwyNI}@fQM5Ypo%%L z*$9cc&|UBm5+e)jQ}MMq16xyw2t}H+4htJXBvN`yN#{+&7-0uPhcLsa)NyP$c!69i zSZ&67VMm9-IBh z5(zBBU=}+V<-nc+x_aqIVwq(uv!0h&1>V-xiO*)eD#!&rL*%oR0-(S%d5lVhthbo; zPG-H+S?_GtTgEC^!D1^I%ko+BTGqRp^&V!uRm7O5i2ELmpe|)4vZ0|xA^CzuV>@9! zr$fNC8l=(7(z>Ko>gcfYz=VaBXe>*$7*UB{`9LjTDVVqpgykZu1s&g27NM7t{e<}@ z8$nx^ji%jU5qil!M#9}^X*A-oE+wZ}5*i2Z&@hQS$CA$Jkb3%FB>b+#6%tp>=!a{N zI$QVx4Hh4DBJ@&tRfoLEMs`z&)JxMH9a1kb_jSm}Z1BfKl^_~GkV$yn@r7MsRm>sYJ; zM;^+62{5$xs2@&%(bZr)FpWj3dM&!p+2~>*`e=wmHC^7eBa0>)9*5wPAan^O>V%UP znr&2IHpSOA8=3+VOb<~=BGFEnoM8Z{?LWx#CnRst$02b%hbG7Yx-R&WSg0B7fHTbC z!y`Lj51jL8J!UZbAsBjiQx7t01aZOJDIkn*io)pGWF1lc3sEu~{Y5-8FpF+{3#<$f zO`FZx&>2Rh&V2e~q2tDJ8;F6|Tu5oa=@jGP=$ObT4MajeimK9sB9hcf7GcGD?O89| zTEMVH7ub*WhO%C^P{Wu*$BV@m#uqGNK8d-G&%x;<{ItZ2`*GYR{gu+}$gIrZ{1kaM zUM!AFQ)Z3I;Q$|(@TpTdlsYLSD{GiS?iQ`gQe`FQrn<$+b5wd4m%9sv?qVVSh$ZCX zLqkHLm(ZOcv~*8*PY}R8 z**RUibQzYeO3O`lOUcUUl8q%A(gTGWlS9K;!hwgPdT=P829df2j8@5G;i`Y;F#nv< znJF&5y_8uQfRIZw2qG{`DeoamOoW7j)eY$gzEhNlL%9a#=BTnVqDV!{5v0TaOi&^l zZuCRm2}Xfh0+5`M0m8v*5)S1NB3IGu$eop(lckWW1xj}TAG!Ik<4-}qkxl)xb&k-ccQ>3|&>soecW@eU(yaeGE z%%S`m7Sg~hg+iW!Hp+2>Iv~f~>6I>5$dW`ZzEEg_Gr=s7XIV-ts_qgfGh6V?x# zcd)TSMw$aGgLzU#u3V4-MN0ss3$#wwmY+Dt* zeF8SoOb8$N@%~Rl$$ujH=o7JrW5h=IC(zo*4TuhAZGkKV6BHF65Dvyh;}b-$@F@Q{ zJvb~f&I=N!3lOhG=mG%j0a=3+Tu)|fTufMGh+d>2 zF;Vf+dJ-anV`Ke8^wkU)00!0*foj!@A~-TWf-W#5#@Jq{7II)2(nHltT&z}#F13h2 z4$Q(p|Cpe#NdNG#xB;von{g;ReL_?;7D0bVT|-JtaNqc_nBbtlqeKV$#~}sd4GInn z_mA;MF|p2wHQ`W=Vxxmm3}!@NR8VkY zY}i1sD&`ayMGJ~A#W0x+h~J2Sar49^b*M#Vrd`XRyo;b4M>=%~oxs9vx%*&ueh z^tIqnP4s0THW88^qiq!QX|cgE{lYMXO*xc}J|QAFE;I^aMoq(lf+M1%APIqbMG!}S zkx`J9ke|W5dIbl@LB+u8spE$FjH-|%KwBCd3j*{S0~~<{Cq##b1%?49LSYdMgu>~@ zGLbF7Xatg$`dNSlB`P`?iY*qO!0@P8ENg8!R4b-nCekWE^ifciLfA5Z0iyi_`(OaA zI{uMC2w@u;AJYuJ1EMLL)mNd5v<)XDmq1xA#tH-3eqgl z1ve--JS+lgf!5Z&W1*Dv!h#*gMu>IDKRi6DKb=on%LHIs52lZb0sCPk=>_#UJ|-CI z1?q!IU@&xtqE~xiuGx$s#>PiSgN)cjZR-vB2y;z?*kBM##~kJlI4ErAGVpb|IIeM6 zW*WSF1tS>5%3xO70Nb8JeV+ik&h>fYxaR%}Mb@YYcy22_TOsG5@xtIiFS>w-%QJ_; zaJ#!;EbSXdQ63!1t>Hk59qqfY-XM8$?y!F8@=@?=8i$I(VO$P9P{u*AOa@~d7~sg2 z@=O>jlkqeR)&x1Z+1Xi2NQQ2tlSe-dhGV+XS-CJ=hPgnxLaua!2g$H72WG(x3{@lp zt{gW4gQDFzl%%1e@tGqsvqoi-L0+s}<HFG40BrQ1;9bsl7 z3*t~c8%7qR8@{>Ko6@+{gY@F`;!q+o+J(fx@Dshx9o=vSi_yCZdgUq<2w`FwKWOF5 zq1xz-5TBW)lz~xY!TBnACjAT>qhvJ9SpS2Px)AKR*yV3H5%jbpLYl41NSLB_{|{=TnPTL_ z(sNYG(JuOco}!qWy2u!F{9OTIlb!?9mTY=9;O@eB^+bknsDOrA>4$DOp{NJz$*E_D zFuG_)=HetX3NsQ40Hg0f4i(=pM!hnowOo)qCq)#*0Q2vP3RY_}`xn4Efl8VW6Z38y%Ip7MMC_y0KeF?wlM`~+#s=lsa2A;TCJp*@wR(2>`Xib9 zl$*+%9QF7`w(>zo(T5vd#$IW0Pjh6N|GQkx7Nds?tN*$gx&7|UK7#h!gZg$}Ij&uI z>cF`V5B}U6saBi~3*Wc?xSwE;a`;P)*QIp_J|_(;Y=6P@kUy%kYSx8a6el7YmkZ_a z8x(0o1qqFiM1D|LTlnn&zw3auPLGBR@bYH8pP1O7*u#S|)=w%34K1oxs%#~ko+zVB zVwaShG^sMXOO7(7OM}wVB`bM&7wrO97ro~fVePCTt6R1#nTiedclY$7wDH&*Xybvj zcz6B%YYmzX?f3Q~-|+6~Ge%(2t6x62T3oV!#&$kCa9N90qPL@Z-+`-s^8@H3w2v z40PX~gbGi6!k1pw)*|2&1iu`RDustjd%>fn3Mj>4@N{V^JcNorZAqv&ph^Lo19bZ7 z(=34KpDNx8$TJS;L_dCt&z}A$X*}T(Qp`UwJe~?RpsJ{F2pdSAUCn^FGeJrY-~*{P zP*jxgC@W&{NmV((3h*TpU6k-1t$=8$gl{z9vVbp(JkY8DOaO#Tg@1CO!r@G3fU(^qO z^y3f^OQw);2~ZL^I=ch`cMj-^kHuz_^fC6VAO4@xMZwFu#(Hx5krd>BR7Rc$#O@AS zyHV&vi(?tHgD{xObc!=Ue}!Hu^mTC4vu!f5sTm%hECiH=cPS(rN*15>ULqAji;{y*vJ2epx-O^XcD zkpkNNkMiwDITTe4IyVg8(AxU8c7gPzf~BPJ#n+C}=K-!9{vpL1U=hf42Tde^kx*U$ zdBWSsSTnHXN`M=&$c5o4sw>HBe<(RQASDB^3Q`OHlO9Z-L-7Ci^S|2yen!wbK%2=l zxc|H3`+xHPkFr3LGpNJmQbLV$l%a8_iJ=oensbb}Wg2HcK>2bx9Fe8a+|W2_Vkk#$ zz=OxlDB)m36Bk1ckE8MCa(HEt!f;_zJ&dK$*nmTo@m6pPDcC5kAC@PWx~XNi#a8zm zd~ckwvK~EbY4kKh=jxQYq_Aj;Hg$}t0d*z44Q&0(0t%4i)z#6k_XwSMX$Hw-jf zOUOO030K4AP=}t*&Pltw@9~h{zQWeRbdTDjYudS;cIy6i>dgU1A9P&PJz+!MlIl%k zTNIlg6SjKSqC(Q-Wxo?YWjJowI{NJy>&uT5uQ&3Iv5aYTVp-!=;}0%h*T2btc;)7_ zdD%y|?#*31JjZ?hC95DSw|km*M#WE6-7-c#>}=NJcfqyO0>_k&ozK?}jXX84&Pn>S z_+_ILLu&^$-~aOTh3ZPNU*eWAslSgp6}mRHfB)ri2{X-Hc15ib-s<=JnXyA2Z9E+{ z^oi#)(b-?;4ZSmSR^hKZ=PdG@J^GjYlRLK@+cDf;Vqi7n=2hnv=aD zUgPh6<2Em+Q|25_fm8U^{hL}Cj5dX%&u!^Hk*Od+Xt)j#J@+hAj z)(K5NwjJDSmh9t^^vQXP^12Tg5|B4(%1`NILf_n9VbdaYiR#SVJ}sYFq-=V6_4VAj zU6*ygLp=^|H)ZFNpk^-P56|CzS(@?EsISs`zE}-Ha*+b zKWY7z6#JkB&GVAS|5;e|xkk3yOwe~k)|L$u zr$rsT9-O#T@TI)v@x!xLY#DFTe({IL>0K5%cK&c{-B!mZE#L`1inCI~=_=H4yo8oe zoE&XAobS9wLId~+9T8!{Yr?auz41tMdE^jT_&v8_J)iAew8_CTiWEP`HavS_lR~@T zmn$~EpLfCqQnl(;K-({S#gg+q(;Vn@h531%w;b=oXv;^?bA&0}u5RMSGWndv^ zqCM{2!`6LPN=|mY>Lv`-ad9VlYq?USSQ~TdF?M09fwnS+1z}YT^mj{9s)WI)N-JIu zp|7xOnWW5XqL`7SRCxSbF$#E^7{my8CPKc@(2xgSO22+V>tXB}3OW-`BcsQuFk<)~_likIFdE-0rKZo=;uJEmkX8Uq1zXq zT^hB<(7<+7hoGy^Ce#dA`{qy=)78)4ihXN88l0T8_HwviGtXYb)8ndkm-m}lTXC&> z&6Yb~9d5oKHE?j;^sLwA(cQn~8K)I5&pLBkFvBy+fopJ9P*s^wX5p7|d{OHoTL*lI zA910>21VZatTvtBj~_X_&4||DZFa|X?lAsl*IRFPPFnbN(51nZ_P<0d&)LOUx4i%Q zq0SHY%ol15H$j8EP}?9Id3o<@8&_~Mr1GnCYNw%t^i5_84f21ZC8S$p4|fl?HTD*I zxVtm0aZ3HxxT&x)ETaK3)QP^+6B^ zhil-t53KoS4#O_tpPJ(n6Fm*XwjJrN4C@++z+0f`lp-=+OE?p^5=(+NvkEwl7!6>V$UK4)P@UH`S*abE+s7yoMgN6waQ zzq=F`Pi<{~@8z%Ek2RgJp_xmMfIGuxzUbTi&Gmj)pE-Aad1cFv+-I!}ho|_==C>MBHMNSJ1*?t_F>ZMS&?~--1Nyb6fvc z0f!ouriR5tzwi6bD=cD~;IeCf&(SVx-vuY_Z!;s|;~nYUdEa~vf7&Ws6@KISqTUHT zt{6=Iwr$pxp?&gf`p!E&-K^W7sjb%@Y0v*;XJunBF0su%*`t*Es~`0E^QdZT&z8n{ zwHt=?%6*u$GQpSwXZwreen0w;Qy#;0Dt=@jsw%HGW?!uEnN_WU9H&nKgYJnYl)bM{p8^&Qi{q#wE9X!N{C(y5!K zPX-UVkumA7VnI8xXjt`5n}u1&qQjFN&G?$NO%ANo!Vsj|EA zeM8h#*D)JPssj^WCGA`vH79kM>$3Y(E1!IwzF*dUl4950dM|R!q^zzSTTShNduk1H* zgGun|d&g#!JzMno^XjF_&Bsn2IWm0YtrNC|#>aLpubwoi?Y^j$VS7fU&iO-G`n(S} zW{vmwd9jt<9Qk3E^Q(Qv{Pw+F%Hj^L-FuE$^GE70{?$=C{eE_G^1Hapwr%wt$Na93 zmu-9^9y#|$`w@>NIU81Uq7L-zmcKE4Upe`y z=8r{*pIvT_f7@$mu4~Hz~(k z32NN?nXQH6ZEs2Qa+g0}T`%|oJysR;Sc|kh7JsAP)}+g&;me0suRAbr(=GiXgHwqA zR*xkTirszK9?J_r3DaYx|H~fBU)U3B1oT*vzw5E^9G)OHeOM-TQF`5%heQkqN8Lrx zZHfM|-@3NFOTb0vjrqHVT=N;wV$0-!4<6HBc31zDeSF`slJ>&o6*JRr4*u{`+}7wp zpQtPOf$y8%X!+}>%h!fAkBPD<@Bd};;v;j;sSSEWWVe-VoAHo8PCPEWu)ocSz$J^{ z9`Dxb?d!8418rA_Z{rBsy|cP9ZR=(RYglnurW76(g9kA;^q{iM>etg2#s1n!EihjkO z*FU+HuBRGb^8VJ`aQ@MPQ!iS$KRt8w{hE~q7OGX7eRgh0vUyZ?m-vvITV zSIPH>dc3WvsWn+sW#BSrtJmm*A2;$_=B}2X+xI9m`rW8G&A;7_UeW86G-1()0&WxE zBIk`h6Kk*TGLOAj7xFY$IHOiLFVAlEpgu!X(ukfmbMo#UN;s>u>gfOG+VPC`d1==E zwh2q_w0GgWpAs?PcK!u*?;d_3iKo@kIVDzYoCYLKmBk%7=hVDL(ySoWp*mj@EL|3vv#_>G54Ip*Q}p4({Bxcek=YT`mHqY`!9EPt4p+=`1zZ3 zEPt~6ePqD@l77qJ|MGszf$q0pIRgHCRwL}U40Ih>y*`V~GN8}u+9s&`41V74v-Wpg ze5K!gZu3=jq2hP0JD;jjKh9Tfq0Vep2s_x?ESnv)ywBHVD+}6R^WNWeNNC1_Ydyo> zci7iN9UT3&^uW%N`+4KNN1ko{ap3yd7e34z{^+IP(zWQ(lb1}LdSvH;@=*KncWxFo zw{B)%EnTec_vh(HdC!hLZjl&R*JJ+oJfH5%t}edN`#0y8iS5f5B!pgT{_RGGo?mBQ z%A5F`Lsin?cjjw7@1`ii(J?fO36LYrL&0}JR6|4HpsLsmsb}i}I{CxZ8_6KJhRRvC1 zFj=6#rR>2e+CciT~(5b((ScS<~mD=HK0#4fYxN;9%(*6T|E6hwYmCG%^t; z&0!bZDpYef-uA61o!IKpk$x>)+I*k2F0uc0T{=5Bq*bow`^ZGvmvAJ!Wlkp6+{g)?`!jL*3q=Z#j16>m4u8?s_xI z_USX{o|QJ6R&{Bu@c*P4+&J}|!s5*FiNE~W-ownOPuUeC?(pG$!q7hAwS5KqHnu3? zKOA75ai&qU%ZuI)%T|3YThq!=_3Z8SnAu-9mxMZf>fdd9slls>!SAegawmMe0t7%be3nyfj%G>gylO(KD?CEZ;$Wl&@q1%GZYBO809e_qr& zI6PvD_VXJ)v)Y=@8`?cRe%p(dn$fV9L0WdwhGR=j7hZxBh&5(}IYlFC{rcr%bu|X=s~kd8a=uAJXQ8blr&} zhZk)gmzO=5wj#yxZgR%Q^ry9_hAy+b(&%yF?H>HsN7D}vj}6M7_uA=&VY|F#jrgZr zhFo4)aNhj#t347wH|ve3&vY0$XjYrU%_p~C(SFo#)gdi@yS8Rs*rTCA!H4%L;>?2g z53fA#=hc4m^+>O0Uha11rg=Mg20V}MO+6p<>#GC(`K@+rZgIO)@{4h^&VB6=|3U#n z#RX>P)|{QTN*gA*!jsPrZ<`fz0sulYfwgoLNjb;$*hVC8?{Xk zYKJRS^`}7pJc+=yS7!0+Z|7p{;@R^4t_GtloEy(hU6nHQ_o%t8^2!DY2V(eEyjWph zVN_W}S)Ykv|8}kuBG!)6=v4;&MFz6ir4XuTGjlPR!KsUc>cW3Hhf83>!5l7}(dS>x z;r>Y_RfEQe%(=R6Y}qPr@t{YNVw;d#fph+}zWs9~-|>=j)P*Z|#;W_YAG#s`^0YZW zjZXP|taW+6PIsL<9^LlZFm=eLcy*Tl>vi45rEx!Lh zI`!*z)v&42Ia{~wEhkk!ADUZr^xWX9XU8`lzU|rmk`3zy3S4?mf6J9l`o7-GkFR=t zX3nI_E^V)M)#Q)vx=+(H&W`&bX5W-fanFqVO}`Z~zi-x;3!`4ovX6MtH1^~15jXp_ zGj=E{bCes3oKl7IgF!s__voI|qvW3pDe{oMC; zYnN4Pmj*3(+2)Cd(T2kdqrQw7v@d(=f-4=CKYY5_?s3GJV1b|NMeeOiUnjoQ;PWxX z0N&&wOEO!OOlxdVzH^{Kuyn1dnZxrXQMp%2W>-&J;B`(}9&rZ)syq-U)w~W6%;hmwkW|zY^)uFGRvN1h}E$-#^ zE<13?Nh3$)3dPx;r$;_8&ykhAbv%y-DQJ%B~ecjnM(vx>?2aU(pxZj%eTG zYss39qP_|5zBec`!vErYhwjD1uz5p%VC%*muNT6V33}^BeOzP0`(hACVPlr+AHQjXXRh z?p{8k`u!xv2BG=3CV^5#I^4R;OqYt92<;GQWNRLQ=Q`mqk^qma64d~2VrxR5p%R3L z2Qo+ledIsR>$bF*Jl^QupvDnq@$H1^op>onru`i9s@c)9n4!;xilbgTe%a_f>h0b; z+kPEf8eO*V`M4K7+z(bC__ojR=&kfNz4~+#UwaW@D5$i_oO^U+P|wmZ=Yg`U&s7VT zoedh5aDC6w=oW@M{i$;TdET_dUIv?EbChAV(>u96ocZ>JWWpuM(Mx-~9hug+;{nSJ z1I=%H3A@cQPwPMb!M0(weBLjH?ltm0WuHf!ck1+q=dg!eWU-ajgW8!JCiOilaBgzq z&S`^ZoA-CTk#l3)&-}CHq3;$Pz4tEG^nz#DwWITo2CXjk&`AC=oSS66wyOC2>OD=> zH^f7|HF=ev-E27{*L<|eZ(sb|ww2FbTo(Oqblr4x?DOuiiO+*yw>h;uFf{Yd-Hinf z6L+1@9o;6gXnSU0o$;5+8`qyv z&QWdJpWoc?7pocLn@HOA>Ni+ zftRst_g%|QvtA@EEDCPEM7(GGlL12G_7#e$VvmRiLTiJ*uiQ3rax7N;;Xr-ZS@+PC z@9ui2rTIq9%0shD77v=w=~Js&xT#AoyC$k2XTyM=YYf(Z|I+VfMugZ`V&RP^!Ab{5C>cu_+y z2S4B2_si4uo(Usd#~$maf^l1S?C}IVSi}&zGZUPS!VXNA!{sz-q3v=S?znadjE?=G zBmbMFO9P>L2S(D0r`{-3uNTIa^(~8<7{PR8|Fno0BF5Da?P3Vq$HGzwu7tos2rN=6 zeiSPH`|Ts`%H+Qjs-Dl70ekF8LUr-K?6C(k;h@KkW)k|ZdhCBrtBP!sJKDnfX}xVO zm`#uld`Ifn*qMhsn%-WvX#bKc1;*FT_8ZzcY(#Cp%G&p1I+`Zj`+DZwrC%x&F1`O~ zBpekKJ~V6S5~DrS1C<-L%$(Qfh3oFMcE+6}S8!G9H_S81Qy!U|(k|S}mos+$s9(`}bd7Kec?$6+T)r zY3roSy(gqIb{${RO|a4><>J)3b$$9*tx#^`kC+j@-n(eQ>r?%A7%Uw!)y1>ZlW|rf zq%YhH_llzywaeT0>wpo?fsx<;%1_+n+?Q8fZPA7>J(Jchjl}$rW zd~NM_K4jsaPrDxP`WYV*vW1iQ{UU;&5X8z#qdBx9~^lmoo!}3QPyA>S1JiUYM z!`G$3AI5k#_eoBF(bxUY&lgWrMRr`;ZGZc3gKWG9Z%!@y7V*7(>9hk6qAM~+b?mrq zr+Hp!O=&lc-S*zT)_r^IcJtdDvp;|3&~bvh@m~k<)}JrEa;SeCujcrzS=A3Rij%Yb z%rd_fXZ1MT<^IeZQ&sZy11FY5w(H^K5!kuBZc}XA5v@~Z&%9(U92|6Kz|_rE9rjN* z@y(ezYuDZUM}^zM(l;mvTZ|s=Ts>0sdBVF>QxzhOVQ-j(_Tq9l!g2q_{+VlK`Zr?* zy(1@O1wt#mBPM1dEWpilr$CGiL}q$qp3p%LG8I|C9DzNt(pcDq4agI<<_UT~p7=RY zB${iWi5e>M&E4~`rt$ii$*&9y4otcfyYgGP{=fxJT<|npsATxy;C`EXni0K?|S0{T?ijmaPkI_cmbZI7hSYFE)>v6?Zc5 zQ6I~xt&|J4gdM(n+xwE*CHvxph*`I0H|6ZkJ@#&Miu1}|Ew;_?^WJOQNw3Av=gq7( zeZSuSTcvu3+fQC6Hi&mVzTKtsqgLhqX2VPW{Fz_fG279pPnV=!cGa;JF9wW!wAod2 zIw)*Tv&$=&PG7&j*<|?vmjj+>I_)?=LE0`}@@DE_@2h9ub~SQ)eRlMh<0+PcEzjn- z-#xY|`(3X_zQd;YmO7ok6xQ$hi*xQjzjq8PHaCAG-?U-ualsUe@w@!@_*_4#v5xoL zeQs;PGQWHB`=^>6$e85P-DKvggFpY`T~H#vIU?D;>8&N(FSS0I^mIqTZ;O4;2Y<1s zt`v-YvY>NT{rMQ$4~GW z^WJshOoQ^qhbxMFdTnv_d}rs)EGFhCCN~vF)#;|F;<>Y|CPlVs5XDIM5JGB(uMY{h6W*{B`)*8co+^iiQPR#1AnL^XTyf2^lCq})^k(Dls9IE%_=rq@9Wg8 zZ29YC<+Js|d)@!0j`(k$Giv)fN2_d0i~FKxocTkZx~~88Y2(gDA)PNMHu!Z}v0k?K zp|Qu_1E*pSzEaIooVM;+<0I;QYu&uv2dD46b)eP^4MsttOep$ELj<1g1?r|f!73DVfVDr*f zB_H=bYWyW&<+dk>KIcvjEs@s!@#_8b-u*s3|H7xhnZ{Al7ZW|6tv7h?-t|$n t&@e&mTD817XxGWYCfzpgyx|ypieF;*mq9?xY+>T=Yu*pD@Z>o~{eP)Q+tmO7 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/Google.Protobuf.dll.meta b/Assets/Plugins/Google.Protobuf.dll.meta new file mode 100644 index 0000000..afbaa76 --- /dev/null +++ b/Assets/Plugins/Google.Protobuf.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: b3cbefb7057ff494dade339e31f5bb59 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Google.Protobuf.pdb b/Assets/Plugins/Google.Protobuf.pdb new file mode 100644 index 0000000000000000000000000000000000000000..71c0924f6b4ed179181a8b07f488754955bc214b GIT binary patch literal 187584 zcmb5%1+-P=+PCq!H{IRc-6bJNcZZa;bW2G{DXD@qBB7vyfP#`Dpol180R|-@X`rZJ z!*~BLCY<}sJ;pcQv){3Q=eg!HpSjkWbFH=42KBAgx>2o|ASTdPa{F#kr&jJ!WlEN2 zLy#~SZ-Xc8J70@lJ=kWuKF}p5$oGW(Z`YV$Oj4U`Jz{vj!F?Xn{HA^}L457swso+@ z#&b2U-?m{L``w>)9to7c=+r~ z#ggOb$34-204s5_P;&j1wlQ#6F=Da z$JqbO>wX=!@3Zz@-S!P1WDpy~*K+&1bN7FO{Xu^l>Gt~B_d+|K-AwS2ecR!JtoB{Z zzGH%NY|&$hVMT1Pg7K?tKh5|O<3e@|F+piFHt5ZG2;-L-Z(@9g@m0nJx!+~X*q|rl z!HoAa{*-ZAyI(Ou4l_1r&sdKqBPC!gh-;52OU_6uYcE;~AzQy>9-cMa|gY5yrh4uV%b~@ma=K8Rtr*{R^A1 zL0iUM7%yhLit)FMe_)(5vGy-y#s=*ecV+wx<3)@=V*EMd#7VS&8Z$Pi&$tESDU4?` z-p%*`qm0imPGv8! zm>{be8#HCyp7A`!%Nc*h_!Q%mDYSnUGdAeNxHsdajMp$e&G-uA9QItb^J&Hg-53vG zyoT``j4v_%nQ?wzJEcs!UX1%PUdH$p#%CFS$2e7{AB(H^z4um(Ha9tD3RFP{!jJzsmSc#@{l&&Nydg?O(*S zYsa`R$4UdNke>fj$tTUFyMm>UaWNvwd?ur@ZrmS#-Q9_O2}!3Vgs zn#QYeGw#5>cmO}f<9G^xz~3;#gE~T9EQ-~z4mQCy*cl(gaX1xc<8s`I@8LoG1^>cC z)pc71&AVUmgDN(T9}K}cxC~##bC|4#_DP2Yumo1X2eB@;!j9Mnhu~&uI*YHi;i%0MTp2zF>HzuyBTThKS zumG0D8fJo^8}>mxD-r~Q8IQzi_zW(V7AwKbaw^I>VMg^jQk_QFv(1E0qYxCcMO3-}vmt)t^VguQVL&cYY)b$l0( z;zhiLiR+=jWz4%@X@dvcxS<=j zuyNX;JNCsPI0`4=99)FU&2+&U{0z_IRs0EWVWRrlvou!22KXdCjZ5)GGkvfQuVUT? z+R_Rq;&$AN=P;(B_Q`?maTR`v-(b>4+NT3f!WZ#GlmI1#7eGq?bk;Y+vm&c)_sEqogf<1zdl-+u~u_7boF7 zOxa%BJK$bS)InPs;V0O!qqdC0dAJLYnt6g7Sg@1EC9pa+!u}X^)@);(gBS2S`~~Mf zqJ383c07oeuxA&|&cv);IT}8L3A<@aUYvyM@huFxYc?%@fh~Gy%QU=h<_$9SlsT~g z7RPc}1#4mhY>w^l5$uHna5z4W3vd~3!+$VEFZ*+dpc1yghp`Jjiu267U-^O$?~n5b zzu7o{kn~ZR1~X$WEQlqrJXXba_z3ng3j_mjIj+I=_$Kbeckx5Kf{A)-ZE>uO9dQ&c z#BKN$#`e+v`LGT?Y8DKp;WM}Z^?9jau!r%dcn)u1Y+uc$!~9qg8(>GAgNtz`Zoqwb z2v6g64EpJqX)!-m#0J|+)U^caf< zs~Kk+sBsBwh0E|TwjQL}&+rdSKUiBzV>cX+OYkt>!dXMK=Lx)wzhZ@<+CCYV;A@y- zn6_uY99Rk~nZ<$u_z7kot}Pw$Jf?X}TPopDoPrC?;=wZf5>t%OmYO&QC*o;LKT@;V z@p0UYJMld{h@ayLJdfA#2L6dLqwLQUgCv;MY!(#5w)iwI$2GVfPvZ9&Gg_;X;Ny56 zla2|3=0SEWg*CA^7Jgi_@8JbZI96NIVQwseRj|IcQ+hTuEWi^6A$1gcnZJ8bklUq>R1n3<5YYdPvB*i`y%!+xj6js8e z_#6I%NuJTFv3L}VKC3O2a3#Ku+i(vaz%%$K#>~;GB$yF%Vlga-J@Hvwgsbrw-o_$x zb)1Sg&}_?9ZX1kX{1iTo^YM9n72n6hcnr_sRlJG+Vu|N;7 zRKm760H@%yxDq$xH7qh;tIA*xvu)7de3-}ba4?MV6r723aWSsOEw~H!;TilD|H4EI zI3||H`q%~^Guv~E?Srw5pT-6F0@H`@pCmjppa9$m*E4dc961WRKjY=B+x zQ5=Y4a3Ze35Ab6=iGO4ErMj&Lu@R0kJ8|osf+rY1hf8oJzJfdPQ~VOY!ONKZc^#)P zmc|FM4GzVpaVdU)NAV6FlAdbLk_$;o%wfHvf!{c}wuj4ID{DO|0 z8uMaNtcG>49d^N?I0jE+h2=WJgV+eSVUiWvJ_0A3-GY=WWme3Cg|QS?H9H0Mu{l1B zU9k_2#piG-zKHAaQ~Vx(#bA|=nF-5bbL@;W%+A3gT#jqZM|ciA60B$Z4(`VzcpT5; zznI`ftxADeF)xtZXsfqh=n_A~e$4qLA+lW+#k z#U=O-{(!&XKbT~LR;9r#mu&Gu6~(3pT_NI38!>PP~X&-qfms*xT&R>!o`znDHc>j?dykd=ab1fIuhcmr=^hAlc~4lICWu?qIUsW=;#;7&Y=e`DgUI!<}4hIOzB zw!!W=1}EVRT!_o@eY}W2;GdXvn~q- zuoI5Q<+ukA`zJc%H8N7|TcIwE*u|0OfzBm-e z;8XYluE7ns6W_xtnB;98GY#g%8rTgd6j@o8|K4?H~=5R zN%$h}!*B6t%>Is!lOKy?d8~%b@KGFuBXJ7O!cF)&p1{kPXt$1B7#m_coPx7(9zKsR z;TAlM$M6(h#h)?b9v!(7*1#q>2%p6_@EyErmI{8x+8R>RuZ2wP$Y?2i3# z7(R}ZaV9>8r*QbYx|OkJY2JlO2a_2u!WH-mzK-wV*LV)E;?J1zJsqbkR>At%1;^qd zT#cXNH+UJZ<1H++cjF;Eif8c({)E5d9ZdATj+_cJVJ<9=<*_C< z#CF&P2jB#pgNtzuZotO-b^LvJ2*1KUA87j-?0Z1tQCRjvjYs1|oQ`ww2&Vo>`((!4 zSOP0xEo_9Xup{=s{x}@R;&hyYi*Y69I;dM2j$?5;p2f0nvM^J8(Wj5To%eu`h=MJ)WW*7m{mxC7ICqU~8Q4;I0SSRET< zdwdMX;Z&TBOYkyY$6FZhQyo7UX2zme4eMY_?1>|B0?xu0@O9jV@8e}!FI<3o@k2b0@xRp3N?|V?hMRFO zeu$sqS9lBae5JKTunbnmde|B}VNV>2V{j7Az%McN*E(8eEP%am1zy0Pu;~fyIS@zS zczhC{!|k{iKg8pB8n5BsnBt_4mI3o(QLKbD@Ns+{x8eI3drE67;V7JnALBW^ia+BY znC!Gx702>e4I5%h?1H^>hZSm>ONPztNzTKpT^ zpV#c8_%Z&3zvCTDbV2*1!hE<6H{(t`fS=$g{1$)4KQO_!I!-1mf@QEew!j|PA4lU% zT!yQ06Yj&~cp9(a4ZMvBFX|T4VF9d!HLwYG!J#+?pTfns4maZ-{0uMPclbLdxuo05 zhWW5GK7e(xDR#sjI0Q%IllU|)#TW5)+=lPtVf-4;;g5I|V=wETB*jda3yWiUtceY= z9d^M1_!y4EQCD=d-dE*d9FK>tY0J*<0nEYSeN_xzL<*+U`#f~@-pTKE2AD7`;+=M$Y?QI>o zJNCm-cntI0(d-DEj2H0-{0;xXB!T@~Q9&BaiN&x1w!rq-4g2DF+>AT%FrL9n_zV7p ziDGmsS+E$E!-uc|w#7&AQQVEmW3@It=D{cM2o{N_*^0Ot*W+8b3qQio@C<&3@$6qa zv)>Ca9cIIPSP6Sze;kez@i|v0FZiyvX~1Ui0wY>u6A8GeE36KbD4I26a=B%FZ@ zaXG$*+wm|S!&CSzevfysR3aU}5;nw6*b|516kLEW;5yuld+-2$g4q-6nBB1-j>7$z zIEiLkVi(+wd+|g36i?$tyn(kdb5b24Hx|aySQ{tcQ}_%n#Fy|j+>QtF6n=|8V{9@V zKRss0B3KohVq5Hi{c$u-#HVoqzKH8^8}7lp$#pB^a4OElm=xOH0XO3wESOT;TVp5e zi39L4oP=-VK0J<>@jCvEDN^ZZxv&tH$9mWvyWt?5h|l3td zsAJ~C8rTW@;sRWa>+vnzg`eOh{1I>BznCwRj$8xlV;dZR({VL!!qaA%;CoD)S>r6` z-LEo1ZnhM{l32kk8&t#E*a%x24 z7vWaCfSt2x|6VxIEFX+CD+Dj$I^2W@%!c zPqRg_9?r*QxEj~v0lbXY@fP03g!y%xl$a57VnHm46|p+j!{N9RuVC&1I!+NRgH^CL zevDt>8N7r)V$yq#*G+H!+E#@Uo-#LuUf$_ zTU9GKj+gKUvv%++E-$3L4cUc;a9ce8F#sHm)k4Y3V& z!X9S5U@&gO-MAkQ<54_;=kN+%$E3w{giM$V+nDu(rML=T#n*AG*&sNKm+?pZ&1@L_ zjpK@IJOyXsTwIJR@MYY9@8U=J8UA863jV@GB{a^Axy;5vL9B;Ou?P0Up*R|!z^Cv< z+=yGuCcz0DS5o8MxE~LjO@pI&0&iiwQreyrE8|1h#7x8A&7}!iGwzLpa0HIS>9`qp z;6Xfz7w{*HDXn9s!)#a>t6&psgWa(oj>0E!HqOVdFk=}VGba|q$8iV#j`7QCpJvz( zhvDNm8CT(9Jcg(6Tl^XSzy#%Vv=o>Db6`;{i&O9&+>f7Q>hfCK2%p7e_$OwrpxNA5 z7)xUv9D(EUNqi2M;w!iV58+Wfi#IS{MIApGX2zme4eMY_?10_z4g3xN!6cP*oX)rk zFX9cX`#?;PBIt|b%v8Y)T#g6KM8Qv3rE*M=I2eFC@l!m7moZTl?UNs?;t(8-6Y(|t z0?*(j{1NY9qN+MhDy)Pxus$}&$@mT4!A#Y(ssVPy(YOJx;?EfSp!Q6PX)!C7!P?ju zTVp5ei34y3F2v>dGHy1L1bgrZ9>bG(94F*e$9MNk7tCRwMUn04 zgXOj*WAHNWz%!Voj_WUqj4fm$2qtdSK_Pq25!f__#u9Z zU*TE2fAzY9y(3%N1cT#j85w8Ggvge* z!Bdef4+l@%mJY#uT!yQ0J-&sz%(!12g7g`akgBIYGU}2ms%j0Z$InI`iakgxWvt@6bEg!|%@>!fMC*o|m z5NFHxakl&#XUpHVrF0OlnM`K-FZ)~XI9syC*^)2LmSSaYMd>#<7{ahXG`li zTRPd6azRfVi4$;|`Tzf_7%Z`UDhDfZQ)K_j!FIOq!4L2V9y9NLRSr(M@elXMcW0{v z|3Z}WX5Rg37*u6TQyhgW z@i6{n`me@8#+LuRrAd(E{+1>|ej7Ilin%Ri*;3hUX=LN3K}+m|TktGi!9Pv^)ij7{ z_1|041c~EpNfl>HX4{fD$b;puD%Qrv*cvTi_5MDIgWWbx670vr_qQhrj%>ew&V`FVjmoWqs@H5L|lY#;z2xzS22BC z?ODhy9aP4e*brM{7km<*#uc~;ci;#36<)&|cpDS8)A7?`Hf)Qta2~G2Z!q1%+P@Wc z#dY`&?#Cl|9M5BHd#y@}*|8*6#M;;v``{29k5A$jJd0QGH_YEbM{bT|aXRkC&+uzJ zhgb0?7U-z8C9npz#17aS2je)LigR%ZzKk33Z9IbC;AQ+36LivTWx`xo9LwVrJc7sZ zJXY_lRnze^JcDH((e_r@5qn^N9F0qG6~2l4@d%#4@9|$u&_%~gi&?P|j>HK#3*W{| zn7XT0<-pe18wcYkd;(|V2Hb)N@M}DWKjKY{?WQ9q#Y~tBo8vf~igWQ@{2nuQ*V=s8 z0SDnooPbZ^Jlu^R;8%DJZ{TfA-9yLBi$$>#*1#s%2D{^9_!K^a&*MvY84LE*F-u}q zoQWS{qF$O!k6rKyoQBWhB3zC8@dzHr^LPz!Vd6)1%&eFfOJODKgY$72uEno0UT^L# zR>fgB6=&moT!w4$6Z{gd;$IlsM@LJAnJ_;V$I4g}C*WJS3qQg{eRYIt_!Q2=%Xkz2 z#RUDdX9_Ha?XU~>#=$rWr{Zi}f~#;NZpD3g2#;dk{<@XU*b9f@Cj1Wb570hk@F{#1 z-@xs-7eB|Cf!aR_rok*&5KCfJY>Hj6501cTxCB?>M%;^^;|aWs*Rk3l-R@+ZiHqLx$8&`DW>NZXjG{H958GGR{T#PI6 zRosH_;6eNxzroA+EB=j%hw4^RV-75UWw8oQ#65Tbk71r+TH6iR;WkV<{NCBP`5w2HH(W1KBL<7^oa*^(xB%(le0|DtD%{hz*4+IIr` zzSoItoG>!4ZGJv+q?5STTvE3_gLN`DuVW>Tbc#spKHa-L9WRw@txxS*^J!dbKCNrb zr*p0O^sY6Z!9K;_yS-Abb)4*B+n?atpQ`DN=ryHrG0L*B6pce~P%)@rt^x9d=SXUNIYI zw(nv#pDaAS))#lJ^I5{R9)C&K&8vkX~Ok-{FUrkbFXVyKVWsQ_4q5hZf0G@ zwO)%=UFWi{=6ZzngRWayS9h)3ui?6$^+T?8zH3IhR-|i3x{hm|&$_O4yn3!RU*EN^ zUxP?DjC3Q{dVV%`t>ZUwoz1$bb=vTJtD9M;bKTrJeb{>ax3JFO=3824blu82Q`ow{ zts~tg(rqK%F47OX*7LEwYu(=t)|tcGD`Rc{T^D-~x%+z4{q1C()!o0&*4f3sEet@VAZbGiNdTIY7% z&pJ=odcO3J^Z?hozXM(C_=BwThU;~{23zNIJ;dJa@`oL3^Ft#&%(d?S@JK)ATJPs0 zTgR3&&a)4CnQJGtRa4A0O!nu62K&i1b9)I)9TQ zJ=wL6KgG4))26x}Z~dfeU9YF?)phUw>iE-Kx3r!f=^3tdK4-etd+;pRnxE}j^G~}j zY5k0S-@AR?|7Tt6{d#D9_vaaTOwe^Ex>+`@G>*{X)W$PNQU$K73?f-~SHy?*W;U(fGd_I`{;*qyEQ+$d?^-`M_-g!@l(t#j8r>@GI1-@WRG-PO9Wjdi`w+WKzc z`p#i@x7Ks1aM(SpwQp|wK4;%O!~J#r&fEHXt@EMoW%GJ0y3guItqa;%?>`r;dxz_1 zh26)xf{k^}G~d@+&nG>Z_rm^pfHa{So*ZbKe>w#h0Kl&Y9cCDWW zS6u7$cHKU0-P>R9S3kMd{Lij+`!`%SwEo3)A?sgV>-Ue}T$gaIpPl;s@utlW3h%G3 z&n?$FzrVZI>*EjCI>w)_b-w>{t!wzVYdxNSTst3eUZmr@*6&Nc>x4bn&PRM3>-n7^CU-C-JU@E;2_v1zwa!Q4NGFMO(nu$Z zbn-~2aGfNu_smGAigfBor-^i0*LpnZT&K29?^@R@gX>n-86%y^wVpqjU2Fd=kA)7B?Jv6-jdcP=WJ>)~M! zv-!f-kA>aex{URRut!;!b*<-XxfuPH%*RUQHb|&kGTu-pB=~}P%TGpe({q=rZ+jTzcI@V*t`4rZ5 zUF-E;&$a&ipuX$0)(v9v-CwV6=vwcuja=*b-`Mq>u*cc$7q+o}-fDilwcZQ#d}(4m zA-sR(T&J{gD*J9~^G}5H)x(}>t@q;m_T9|pCx!E4T%}=w|XAM2x7S_|l{cBpcbbZi1u&HO*d>xzX8}>|VUCVA^&$8BYb$_`2 z8S7g1yciqyv)0qB_59WG=2*XD{d3rJtxMUlT3EM=DHzPN)>j_;?io|$e(U|RS4{E$ z>PKDc{jRrbeV*+T>AsQf7wP_y9uVn)uJwEv>wA*6UsKORV)=*K_Cz>*vG$wQZtneZHFHx>-|c{d)fMwjrDlduUPASzfjn( zTH9Yd20g-FYyF9JW$S6S|2k`ZjkEu`*SfztKkCT`+mlHSGfP1Vehuq z`<325p0)Ws;k@=&@3q$TE@S?m2Wec1c0AGChozUSKh zA6VoG5ItQt3G0_bEk8n{@8l7jSt%Q z3)Y{8`%e!0GwVJ!*5~u(Hvf4zKQ-)Q*7a0aCVb=E(It=G?M*4M*MW%KJ@>u2Hy>z~4T zowJRu?H?!lueN^xDtO)IZ-o1|vi;w%{w3@*)|*@(v)=5wmi3#iYuNjj`lhYdwR_2q zul~dO8|x|d{g(CL;qfQfy!wvyUYpbP++rOQV-xn(H|$tzeIC&L*=qCg!uhwtPH3(7 zpXbBYf6qkMPWNG(?VmW@zn|T|?RMyUozUiYM0#hW-;VUINb7TkKi=+0?}_x@n8f$@ z*W-CN((k#}&(D3X6Is6>>HU%Zz_s2F4!G9m*AHFSwf@NU57q}=>pkp{YyAv498=-` z{n!0D;#%)%AG^n^dHvkDcYZYgsoTGq^=GczS|7De5?-&0*2nGhO46`1SbyQ#E@$v% zq`!*v*RJiZ1SeeU`k##SsYsu8t)EZ#TGvLe=QB2+EWCd@-Zzmx8|iZ~58U5hKmX6W z*5`!_t~LK{q%TJLQlu|O`ikq~cD$?B$;11r_n&LlDZoj5O{rV^Cv|;P>-OtwP-24se^saxg&Jecl->=pgUH@jCDeN*f zug^&OFBj=c&$nBV{ynDZ{dv6}{&21H{ikbvKKjdb9_zndYyO`|{~PJsk-ih@Aof4^ zC!-xN#yV?w|Ml}Y);e3*I$!aubA+wmZ{kNffonZq61vvUqeRv@!}WT+iCyQnPU5)h_~rHypD*u?ke^%*I>>mt?}T4U4DYp9ku4kRuI&V0y&v;o}>+?!h*E*lsT)%Fe-L=kVj!5Tpt@qnpuC;$| z*P74cT0g_`Mmk@l^GCWsqzgv6P^1e-x`=B%AB(!y{VC>J@888EUBb2YFB$1lkuDwS zGLbIpTA#7YMY_Ce-Cl)ASB!L}*!cIax6c0q_Cw>|_1F7FW!HLqRa|Sns%y-No zz4}4d`iyh0%i4HY*!k@F*1^V&?7O<{pFe#5>E~Gu*ZQ60A?pI+{KT*eS=Y9)-tTJK zeBp4uT-Zge6WCbK-&!`W|Aw2sa@hZ#8w#yS{ZpTKCTGi+wku^^?->OV|&_B;xOz zbpIOLe06JmwQ{ZZM*Y6p#O7;+^Udw?-D}P1`J#Tv=Ji@n63*AN)@Q>2a9 zbyM5FL3q4*uJzv8)4rS8e8X^FpVyjOHws&?mloEI!`AWdwSHFW=VwcsZxYV0ajj#G z3%i-k>%Cr|x3qtA>n1iXX5X!>TZHTN^SQNaUH>+&dxYJ}_SYFMY~O8dzIC`>pIO?u z*8AJTu62&vyMEldgX_n_Zez#O74C1}9b@YRZNuYFb*-OOL+rbg&9@8Z$6I%{?hy7I z>qo3Rg{|L@)!nRrusQvF=wjVHobPAd)w)O6?XA1H9%bF#x@S0_%DRW^)Yd&+>;0ft zZ2kNDYyG{}zFqA5QJe1-9+#%cT~9q<`q+HmaK4XqU+V#37qsr@di(uO z%%3+bv+i&6L+mrRzS`OM0PEpl>v|4!z2kl-Vf_o%gKU0OjIOl)*)RL^LhHw4bfxb; zABMQr`{&R|4~z8hNIw?o5s@Al=~0m$9qBQVe%yY3-@Cs$r(+{MF1FGA`6@O)-t|oD z39j{i@`P)>t4xgaB-i@9I@x+`c)n6vPjRjDKh?F~Kb~~`zU%om)_cHHHa{*r-u|%1 zTQ3Obr`i03aK4#sn{NF?*m^zAh;4emb^m9&9%?-{2!eLrvWv%`7){8m40t=}EXg#Cq^!y zyVmu5#ojOO?XTCvtM>WsUh8Ml+DNZ+t)Gdn+2_N1`)mDr*ZO&}!L?p98(nMub=P{n zzTvut^(NOZT5one&H7E(dc1GB*6U%5>sHoVT{pJg=33`td!%)lAd=UVr7U!>oU^!`YH5a|Pv{xH%XMf#v?U9Ur~b$<>=`iN`o|FLU* zUjM|kUQeI8*7f|%wO${eyVmE8qpmf7EYio_^HuwQ5!?Fy^HuLbU%GB`zxD3~=-)N4 ze;&)`m&GKrk^VnA+dq$G{X&e6WS@ua`$VKqy4K@4t~kw6`R*Bp z?>850er>p3@7LeD*5kPt=}VEm9O)~rb+4~R`kHGU|2x-ft-p8uhV>7w_5SuFtuuM| z?*p#8*8ESjuI}C6Uw(F7+_v3tt^49h>%Uy<^UdF`AGiL;wcZc^bv@7ewrf59JFa#Af_VSA z|LPdmdR4^6Yj^+g<ph*t~H<7wH|*G*P2i2 zTAvq^xh`#;+_j$LDI%THwcbBcxz_%vU28s#Ykl5H>sr?8&@0k5|Xb;9BP= zqw9yQGr4YKo!R>JaD6lDEUvXat82Y~WsBFv{?6&{`PKEz?z)I|4(maa5z0dkV*SoE&TW<^3zh_;;wbno6`aA2I z*4xAV^?a=5TGywxYhAxOt~FoRbvf&Lu7_FIcdf_MAkqz8>-;xzt^FIj)_fD!ns4e_ zkFS|)%{O8{pqhx_aOqnm48zwWMeeS5gpd{5VUKknsP@5hh2 z*7@ok={~M?{`{{nzh-tVg@n{213d-;cZ2{8-mIKjU2Me2;gn z`3aGJ!nN-IMAzDXl55RRcCGV0#r1>MQ(f!vKWV+ko$sey>v+>#Yyau48(Gh=-W#s3 zV?EQg*3WX?*m`!n9`?@w-2M5dpAS#F*3YMBT-Fauue#RywXO?Vue1Iz++XMGHP?E)>s?Q@-r!pE8(r&sz3y7`Z@AX`%_i6S zJhj=i9`Boxe#^Da-xk+pt+%=^Y`x9;BX|C`yVm31;aZP>r|S~dZ(AP>*Q-DiaUT^znQtrN9R)&4px`U1NXKZ_H{zy2l`@h$-D>jet+I) z{YiK{ov-&@KN0q4Hm}!W-LOBmE@orBzwEdDkA~};Mq00b%^$OQ{n=HOu#a2o-0IJt zKCt;O!u5K-9dNDv@3nsSOK;yF+WePp|Bqbj@u=H0+Z$uXC&U!!~~^++UAhea2ePZJom-*58El>W^LPK7V4@_uhOV>rY+l`TUvd z>DHgS*8EY|dOaL-t@-1w^?LZib$;tFUF-UO73r^CYyAn=ItM3R>-BNUwVscstuqTvxO{>sr_2ob|bIy^eR@wboy7UD^6u>+|9Mx&{|r>wH{tJ;HvUx$Ii= zS6u6SUUjYcYp!)ZzH_bjm+xKc@%|9$A6@JGU3abX_mgYA27b1_;LhI-*LwWFxGre@ ztLqZhzgd49u2;2_->x<$3HLU+|t;heTYn`9JTx`Ft~FoS zwcZbkxYq3zb*<}DEYihY>+zIut@neHt_xe2vi>eSA39!X*E+vtTo<%1>sqh>a@OC6 z>(%95YkdXRdOxUW{X@8aaqCL)``mBc{sWP&9O)`+#lct^Mn|)_gtJx<2(?>+?+m*ZO^^q4kgM`ZRK_<281z z{hPRMWZl&IdbnQQ%(d1xcdgG)E#mjEf5!Cg>!YZ3OV|2+s8ys}N4kw`eST@{TIau= z>yFkBTi*z8Pv@h(>xZm6SpO2vPjQ{Z#?9@!qs{*s&NsF0blft>5Q**!jD6`+C0gbgk!CFV|J$*=Jzan(yse=ckWr&G&V!*H1s!v#tBP z*7I#ZqzAgz`^g~J+JA7QheUd4q=&iI^Jlng9q%#Mnjhg>^CMmB{)}?1>p$A{dh0Q+ z->`n%`nT|U>v&^b>-NUE)}MEdcfH$sg7wXCz5cxO3D;Ub(e-!MldNxr`!}?n>{{1n zifdiJsjfBuq-$Njr(Emj+cejDJkujR!?o_;OxN0fmTS$=cCGoRU2Fas*P4IUwXVk; z*P5T}TJz7j*8DuzI{tjunqS~r^9x;Teo>?syVmV3ajpHAy4L*juJ!y`=K4$P7hLDG z&*#gne|OKH6|QyvR=U=|o4v|)3hNiG{|MLLwEbUlt@W#2XS4m+SpOOBub+1>yVmpL z71w(Hyy{x>YhCNl%h$OcYyFyQouBoQ-r!p2YolxJ|9Yg~i1a4cdVHH*YyF$9HUE}t z&2Mq7+u!P1*K3>WMb_J0zi7R~`Y(6AcDmN>z3qCl^)A=1S-)fbces9&^={W%zsI%S zFZNph6Yj5{$M3q<^?1*wn$({nWLN|C#Ha)}OoXVSUv4cDP|8uT&KF_Up@(=5H?tK2~TF3j#brtKsUF-AMKi2WX^_8vvb*=TcU2Fc1bpm%jg9QI+osSsT zI$yD_H6PEl&PROLI$sG~Yd&G56S>y?OYB);DbmuF%YaK6z>x$MX zT^F-XWt}KoU%@)HYpqY?TIVaRbz*nE(z(|8Nbg$bD}!szXLPOek;%2rS7z6m&l2gZ zu66&ixz_p0?z)6^4%hm5n$tRoJ72k6>v*|c>-m(&by@4Y)=9(ln$PE2>+`$T?@tA+ zlezO%(6!D-A=f%zgov&uDHQ(H|&PNN^I$teaYra*aTf5f%YvWqytF3FDuXe6= zz8&{nu*E(JY*E(MvUF&>xvQFpDS7+B+|A=dyuP)Z<-TCV3TIZviYn`v|t~KAo zwa!OR*E(OlTx{&R1X8I$!-<>wNXM&fw110M|O+K-W57gIpK19&DY_ zov$ITwSK5;ov&fmncVpr?po*LG1od@BV22Kr0cZSqg?BJjdrc`H73%JyVm-#u64e~ zxz_VxyleeDn_!*Uov$Zc>+w!>t)GvRTLu^EJ!0&e!ZnKkZuUpK-18^{i{1uQ{&u_~u$?bLZ-w-gUUg18Kf3lS!p>z~(#EC2&TajOjrI4_ z>umo#;rZ0xPpb2V>+6S|&szU%OsTN*Teq{;@2}dwfc0ZG{v+&y*7I%LI_$#Mw{1Kq z?4s8CZ!^`ge$Cbwv(}fMf9qW*x87ja``)~s?;Bm`vcK?p-L>Z5aIM$NCfAzZ>{_?? zrfdEE$y=`Vdf5``t*-U@*ydWVkL|7tTko(g9zH%DZ>MWLzu$IU(0Z5a64vinmk8IZ zce~d5J+Afp&|d43;r{yl`CZp~{O`He`Pt`M^Y6QEW4+&XJiBHexYpx2;96JlL)SXL zAGuCyebBY;{~^~}f7rFwA91bqAG_B2Ph9K%d>ZM`BK>)!k4E}fq>o4Xi%5UzTKDHG z*SbGnyVm>(*Lu7sUF-3la;?XE+O^i7ah=Kf8`l}F&$`y@=bUTZ-g(!0{$6lh#IEnR zuJ!M8U$idep1+q|>;7DJt^aoA71w&dxN2QGTwm4tnrp59&h;gm|K7Sxxc{p*|AT8i zKYw(s=kImbn*YhQ{`})-*B@EmaINd}i))>qUtQ~Z{N`HMd0$)b);W{gZX9>uuKYtjoIV9pANXFM;bXtP{Gv zV4cXiT)6(Cbz;|ApTu=1yWUBy%ZK}~wfSVO^>~uI*7Z%{TGv0NYt5%}t)EY+T~D-5 z<66g08|ieBP9NzEuJw2_y4LG4lWV;mGrQL7F^g+G-?F;a^~vUXvUT=I=diBeu1`+a zx<9#GPq)tPdYW|}>x$v}Io5eyYkfY~o2>I&R|@yn{VNdZf{`xdTA#-XyVm+5kuDnP zVy^4i{>5GE`j&95>tE8f=1aNO^)2mshjkg(nlI~G*Q1l?V%`i8ExzL9IKZ|qv@o4D5crmnTVnQJ}%=C1YlTe#NaZ|PdM z*DBJjUF-JSxYq5rb*_1f1O=x{t?&TTX%6? z*xpaOT0h|4AG*2L{ps#n|NW01t}|Nqw5}YkPi@`HwbnoCTK_$m-quyZ{Rh~5AJ=+4 z_I0h-Yd_bT@9$dYZ-DEEtOvT*{2owH1?*A~?I^J;Cnt#l-&i4q{ z^{q#`u4g^Ux~e#^3=!u9(5wsEete!Odao|$0%V7Pw)>nB|6 zd`@(&^F7J6<|n%@Y(2%beutatTIc6U*E-)%xz_of=33`_x@+D48LoA_nUS95TKms- zt^J>l^fRt?eV%na&3caOq1JP)tGny-oNL|QJlB(~=ewS2y}-IgxL!Xm7rNH^MXtA4 zFSdRt++V-{E^)2%ztpv^&-1P|zs$8B{|m0$TQ7I5`4z5peO9{G^;zXw*XKpoy8kb^ z*89$TOj=C`@l`QGljrS%Ti zIzKyI>-@d#TI+YY*7bVFweJ6J*E-&wNbhy6{oi%1^Z%Y}z2EF}t>5?Gx31&P|9;mx z-UqI`SRZh$KU4b9x^B3Bko8Bdwf>;%(bk8o>xKJQv_9-w=l6(fou7|gYyK10Iv=09 z9&i1bYt4V|TIc_$YaRcXYn}h&u66&vaIN)Uy4L!yTxB2J)Un|YyPZjy`Imx*6aDaYrUQ?xYqso*0t7ObglK5Tx}`8z1#Xn*Ym8eTQ>;TZ?OK!wbuXaTA%-KST_v!*FS&yi))?F zUtR0@^_y#5pPQ~Vf6KMze|KHaJ|F$zTF3v>wa(XHuC@Me*Sh}yxYpzO*R|H)cCGby zTx)%h=s%BF>tkH&`o_A}^^NCR*Ehav-ChFM`aGM^wT_p_wXT0+*IJ*%wf=dOq^`4C zCv&a+leRRW&m}{N?;;wc6OSsnhlCHJBlxwXo?ON;0xYqiz zuC>0LYppNuTI(yg*7}OBwZ4*Tt$)C^)>n3|^;KMJeO1?5U(L1FKj>QPtGm|v8m_he zA=g@8)3w&ua;^2XU2ADr*P3tOTF;AQlbel-Gb*(?&YUf(( zAC7eUNOy33(Dv`>TIZ{iYyEub>{{375!agU;#%`vUF+}vy1CZzySvuwy@zYP|MYaN z_n%&_^?Z5Mwbu7`t@V9eYkgnWTHnvL*7tX<^#fdM{Xo}RKghM#4|c8fLtJb9P}f>N z%(dSChP&4B9&@ehIl{Hpk94i`Im)%3U!z@XevE4!?{U`~tjD_k+?D|LRDb~&1^M7ijpN#ZVuJ!z%=30+$dZcGWdZz29 zw*M^GI$yJ0>-qh(Ydyc8ajp4hT^F{V<2t#${^z>Z@tpjo4o-n?5wXXj{ z*IK{Gwbn0ot@TS>YyDE!dj37{TE|=FTIcfx*IK{awf0}(TDQN_wQhfvYps9LwQm0< z*E-&6*Sh^RuC@MU*V_LT*Sh^zUF-JOy4L!2u66sbxz_R4yVmV*aIN(lUF-A5>#p_r z;|)&*(^>4Y>`Yo=teyeLepSDGMd!%=`*6VMlYps9VwdQxZ*8DrJ zbv|~xE@sc~J+8-E@3n5>-ap=Tt>eGvdZq2Z&$a&k_kHV@;rfBr`(11O2d=Z&&(8za zt=#*^hmrm$(g$7Z{o{~pJ-)+{J`(AVU9YwMKXI+|^{H#UKYZp|?;oGL*8EY|nm^{c zo%M0oI{p`t{?fJ1&sVOs|JSbd_)fUipTC@Rtv`P`W!>6cztgUD{4=g~|GshE$@;8y zn{a)9>vOKP{=Dmv))%bXy6g9Cq%TJLl51VR%dYkKu0;B3q_4TwKacdCYn`v}UF-V% z;9A$`N7tIa?ppIdxt?bIvuhpyhHJgw{Nh^gU%$H6``2%-^?q>EwbtKqt@XdV*7`qO zYyF?Dwf-;HTK~6et^dch*8l5TkLR{)UEe#dH6JAY@9P`m`e~bvb-mI$o^?C-{EP2e z$4}t;HS2_~_4n(EtRD{7zha%(wbmzby~{eOb$j>xOBU(mkxt=S&%cze_54c}>C}-< zTn$PH3^O;;Pvd-*U$Is$g*FURkUH@#Zb^Wuu*7eWf zTF1-jTIV;HYaKtgYaKt2YaKtYYaKtIYaKtoYaPFUYt0vQt@B^Vwf?-XuwZ4?=W7eguJGtjqnMjw7bUD|0ewBBv$5$cJ z6(e2AbyeH{0oOWTm0j!kQ^mEOKUH08zM5;zKj?a}b#>P|evL>!(1`_H*&4}*Vy$~>n5)ISU0tPBwYW5 zbu-sm-`w>A>lW5s-1To6=~j_$?ONBrjcYx=wvlcZ>4#nGpO0?uTIZ{SYhB-tu62Do zxz>DV*P4ICwa!l$*E)Vz*SfylTRRi2yVm+Xu62L< zy4LmS=UVgqUF-Y~aIL?;8R+_H>p|9C-ScO#YaM@x>*uY9y4KI9VbZ@1v z>isPl`q!sV_vzDlW_H2;(4R2&hXI69K9DfVvkCVH9z+=ZKUl^?2xEH=C5-tEBaHV4 zhZ9EsjUbHuXCz_lKcfg^|H&bY<>eAa{n3O`e+*&NA4?eZ#}P*T@q|%-0%6pjNEr3= zWITy5)_*c#Y|kl#vHnvDV}8>JqyBWl=)W0+QGX_3%zqZ)mB6zJZv~zMoIu9IT*8>& zJi=#y=M&xlyZ~6u^%ny#B#iot2ps>hB@p`_DeYsK1{u>K`DC`UeT4{vpDsf0!`J zj}V>+e3bA@;A6lV(m#(A#{PAJ@Hyax+a@|B{R^%lHc6W|00WVeH@62xI@hP8j7k2&4Q@!co9C31k1iCF9$KvHk84 z#{P7dF!rZ=gt0yUB8>X?38Vf4!l?g{FzP=djQ)B|I2QN`;UwUvz$v6ZJR^+l`J6Dm zU-E)5zF+bZSj+X>0KX!P`mYHm0>1(7!PEN#za@4Xb5)R+u!B7&v8SYrOUt;7jLVYzu>R!; z!|hd}yexeM8CR6CQpS~JTv^6dWL#Co)$EMs`mF+cB*wO10zcJ3-jmlK{a3@Tx0#m` z4uNo4&IU-2XSZVT;|A%CTp#C8iE%D22R}7IZsKx0|JMTU#W@eSHgFc_hQM`z`*EHI zTo?Ec&R8aLe_$*N+t(d<0GH$Z=K(yBuqSXfVK3l8oaaG$Z{Q)Ejle#@!#U&q2jmgJ zN(fKooCA#S9%aB!J&@<}^v=Nb3FCb0OBns(XV=f1-k0-e(8sj+oyh*seq(rkINln_ zxS?ILS&r{JHX@AUzp>pwvmEz(O+bGv$*(EMCB`zF$+$UTTt5P2`YmJ}DB~caUljC% zWgJ4dCdfkx<9KfgJdWFo^G6u)c+S|q;da?(#_ubNfbu0d`YV#iv3^l9ZYASrnSKnB zqkXLjqkXZ!6Nr6rz!Qmm@pjf`#`b9g`Ac%NuPu=~0k@NJdl`2ijAN>!-B5FWEr2@# z=kfB9J41PsIAeKTKrS(s*Hy;d2!8-M@?_A*vF*os3NVg+Px$F>Hxm8^AnqKXE#OB5 z#LK=^)k+| z8*kQELi(OExk1K8lD-?HH_7CgM2_|EC6o6i@(6f7*N1Qzq|YL}47e}wbY6eVuODHo z?;nKM0rw}2^U(kq4`8Rv&FgxkXcEHU=j>ELhVS&$xmi}#0+X9FjJ z4Da`i1)jt6n*==0ZW8p5e4t|FYmc_YYiEZ}^E@=d^@ z5XSah4ZNA_y8*8ujA_;qo(jBX(s?*1U|_9hw}~cAz+-lam_|P4BVXaCEz1G zy(7e3CX8)<1&oyB=|`j{}vpAfDI{FE^E?`ObAxqq>LKL8SD3ga31hW!b5;x zfqhbX^#5xazafm{@hxFY|Bf)q-`i!I^K%6LAmhIY*97@Lgt0y!fsb?hYXN@(K1u5H znQ%Lhe}VEPIok7;FxvBtq(^(c%lHT3nIQiO`?u4)Jlrn`_W6wa6$N2jGcDjI{287e z%eMr%#7@9ggmL|}wqFE)gI1j1W^+CVjOV%b@M8n=^IVSh+Cu&kWB!F?ay!B(x0kVl zOy5x^cOs1KQJ65chcoa6ZV&daBET0pWB+m?+?MktkXL{(%3VQznWsNY80U)h@KY4* zyUOKge=)+?e#Hr+yaZvCm$Xkd>*IP>%HG<{*nXu+deko?p9bm66Gr_C zgt0$Vl(CX9+Ea-z+EbY@>Q^C*{;x_n6u27jb?zTG;Obzn#JFD7Aab1V+z49$*R-Ey zP7gyvs6`mpgW7~~J*Xq&y7mLj`ne!?2fo4W!T#w%825jkV4oyMe|Zr(ruUY~eTW?A zyLyDtAN2`ifAj_Zlb4VE(GU10XY6nOgx!G~*sn6nx5N5{d<)VK2U#SS-v+)5;Xa)2 z0(XG4xPNR2>F@FUvHvzAjN`kpjGGX~^|~q4SJKD!YG%LA%qVY87}xs%;JU-#+?Y`cTz?#JHeu8sM0hLkVBlvweOurmgwg*)31j;VBaHIlgwdZP2y1{x5=Q@xB8=^k zLm2gQ31fSVCXDuvA&lc~EMXjP;|Sw;8&4R^n?M-#ClW^eJi@3yi7@IMtZb6?hTwOP)Rqc(MH^Gvoea3Ggc}M_y{b4gO|5)>Qod#ASr>j4m%m3i~2^jY_ zct3kJ$Uk#=W#Bc0O9QVZTn%^~@E4xG0q}a@ubeT@4Zzl z!~MY?!Z^S01-9gJN8o*gu?_bV#{PYPu!^${=wsi(_C5%5Tb^Gg=R&|JL;s-M4%iFA z*nWqA?Ron0z=weyIQz;N%QymZM=rNbc$cu1!SI#cLc&`=vE6QDgv9DEvpOe5vd3r4W6k*gk4P1=N@jQQqF!s;0z{R=T z5%?To93$s}OK>^*?*d_LpNoVYfiKDUGGR=AMaEYNyMr9LB$S7J75m>c;8Mi?>x8jC z-jMO1gwaPg31fe~Wq-(=-yGoEut-Sx<9c*Q#&>0WPsV?d{IGrQ+aELMm&&;`*pI#s z=UfKZAHp~vJb?6NdHt~eJp?Yt`8DSXz<7RL!?_}G9SF~ZpGS~h$%=+WQo^7U#K~>j2~2 zh2sO|b%E`5L|B)Ew*#56T z?#1Qk^VfuNe7qry^V3_x*k9feZU_7x*qi5v{qF-|?B9PAt_o*17KG78OTy@HE5azZ zmaz?C^oK2B^j9Imn4cYC9254yO}TwI$2b5tNbGvoTN1a860PXw+697wn_a42W2ZxzB=zpB73xx5lISPjBho*QAbuO?xX z*CLGa+JsSFhcL?P5=OZ@VU&9iM!6?plzS0Ixi?{y`w&KXJ;ErjPZ;ICgi-EC80G$i zQQm+s${P|!c_YFoZ%i2FO$ejBDPfd1BaHIqgi#(q809Spqdbr>%7X}_Jd`l@;g*DP zKO06E`*S2=OdmxU=l52GF@0;o*x%v_HL zBzsZb$DxXuvHn>^j{BRw4jyJX`nw;Iqy8T&LfQNIZ4Ko3FCfi8etqC(+Ok#Gh{rIF!rZegt5QRCXDhqGM-Bq z^PlHX-|Qb;U*{9X{lfynxaV9*crC0C6608y$vG0*M+rO*coC$J;_c-Qaf=Dho0Pe&Y_lqlmyKt@nyb8E0=QQBez}-3Hd?c|Yglogk8j!2FybJJJ z!U@3ZfD^bJx}vbb!Qaec@(DSsSKCkW&Ea*{C0PZ37>X~HN!Lm1^39FolWV;{LFEB}g&ugmzRjPJ(8m+>nZzm@R^8Gn@V7a4z-vEW#+{VZi{BV#)mJIdI}G1cr(>@S50R|a+= zjPtuIVN73KmR~6umz8k^8CQ~VRT&(2%|ieurF{LVI1!|!hygUgmJz#I*v5kgXw!YPAb5? z30s4_4`EE7MHuCM38TCpVU+hLTm^W5j0X}%|71JPGuwkah%nn9$#{s2hZ4r~>o6IQ zB#idv5OxF3mGNj9k0D$W(vNc-ZMN4Bcsya;k4$u2WR_!pneDjD%-w+J5Uv9}SH|;X zJYU8O38TLj5l-Q(f&SSH!f5YekSFo}itFVP;1tey&ub}g56-BMoCb`0MR)jF2At02 z1AtdTf7fxw{=UX>m6>7b5!Mkd0=%9u+Pjf3?in@_#{JbTCFKl*nY;Y`9f zRxy8+>%l(UyC81|&fxaq_>dT7__G7#J-HnF+fKqL-$fY5?_R>#pANu$BI)D&c38&8 zWPIFlpE*6|e}XWUe^SP$WPF-1o@dSw#{PCz#^(s*{rdBS(f$iEz9{2Mgi-%8VYK%O zVVwW3%J>>#EblsD^w$j;|4A6M! z(SP?qZshr4`}{>1+y5b9oSz@b_%UHE$e$3#^XxOi*uS4U9x|7Q>(2`rzaos~zb1_1 z>n-5`;CF;80e>Kj^1lhA{G;PBbNN``PlU03zY^8~3rRV9r1RU@1NT%9oL*8uLt z^)rCo2%~;Y!aad&0r%$VYXH|KjO|f}Ft%4+!YFqqjP`mEZVc>680B7s(cj*L(ceCV z(ckq5qrdADMtxtxsP9J@_5BH>egneT9t{aM0d7P%61XvNAJQI82%|rn62|n+2!{hV z2hQU9_bE6~_O~O9_O~aD_IDtR z<#i;C`ke@)erLj{--R&hcO{JdsT<+mz}*Q?09FC_BmF6XFxE#+cph*f;l98c;6J#2 zHgFPQ)K4Zn7B~gCKTnVAmzFU0mmY+%Kcx~zc^YBtFX@DFeCr6KTu&JNnL!x+*^@B( z(?A&gX(WvLCc>znNf`Be5k~#qgt0yP5XSMHMK}_;FYo};9{mWTKmQ<%>H8DL@jU=| zAlJw7J&-W!XA{QpJqS3Pr>_A#m@xW#2w`lGp@dOBj4=9pIALs$5rk1bk}&#n6k+sd z4q^0XE@AZNXc>HUCr5ytl3O&I&b9>OT!OBmaGA7LDy`w64`0AcjcLBiM`hX`YP943tRA0dqG zag;E&$1%d#9>)n|c_#>Cdz>VU430gvM8aeQ7TjQ+kt7~A72VU%AZjQ+k(I0g6yVU+(#82x#ZF#7WrVf5#1 z!syRCgfYLngt3122&4Qj!YIE_7~A6k;da0e32T5K0q2nRcuW}cdqNn`(@zQGczXt% z%k@VBKPQa(F9@UjCGcpT9?yTT2&2DW6UO#*8T*LFk$p(2w~I@C5-wl38Q`(Vbl*NjQSCTQ9qI}>PHbq{Z@prKGB3x9zz)WUu(iW zfny09fa8ECk^UD?81rjGcocA3!nprx2RxbU40pA|a41|Y;BSLt%uB4c;D!(T zgwyPbF$(x(JI098EC?y!yDm{n%!j5)Wm^Bq^(f0zy#6QYe@!Fm90w3#;J@CpjX;cuNuw z_gO#+yK(0KmaIRB`CuuQT-O!`s09mKvUl;}bj4a6PcU6hKtwyeG|kFmOAdP@OoXC)MdtF=%Kt~M+OTNbv1Z`6cc36nYs3dq?B z?#E(X#BuQt8&jPiH-&H*bj1;8!Sb|(zaEG=V@ttKomprJVJo2}vk+q}c~~5At`Khl zf1?cJD}!xTLI-F;Ye5O^Ys0R#@a=A}s}klzyq!>r^#r^s;4d*^DIHlU(|!q~2Vl3u zd}V}?1^g8%ECu~w#q-IRO0^LEgWn+_)#5VfDp-vygj=M(VjXd|u@J=mGYP_0@cqST zKh{q4m_q1h4#RGid9NR{>Kj}w;O|kORjVQ1iq+Jbc@o}JU}?ls#4vhB?8%Ze66~=M z%D`3f9$IeA{V!@Agj!n&JDBD9-h=yuEdNaAd3#7BdS1#IdkEa?XTHUJEQFiTQkKl0 zR?L&u!bz~l2EGpi_P_#qSkx8ADZB>>IVgnJtS5A1*F4s0qo70!_*P)dtt_kcLeR7p za4%&ejD@mng)5MzkZ>HXaKDS$ITA{-5Kz|={z5cbi!E-=S|9d|EH`m<^arUzc*kn} z4sQ0*5FPnxhAqOO^I`YLMX%Xr+yyJ z{Llp21?BjUO0nm_GbZMrT41>a8#Us$97-eTEUTT^qcE&sX)JgjLoG2ztSRg;%`wti z<_Tpegm!SX5E8LK_Q?_&V<{v6+$$mv=V~h zY9nBYk_WK2NcGJGU4_t)NyQw#GtUQrb1ejG=3q(bXu;B3lJx&=O0-!PX8~H(5K@h5l&?`#`MeuPb1A)?SI=B@3Yo zq_AXf>R7R`HEU}d_}*^RrKPA?8;Mu3MeaZjmMlFyH(_;r#!6oTwt?RuYz2Ss0P~r` z>bMy~7A&O|{9PuD9|Uw`$QgHu3c-i1O*lhZ3VYEdZ0{ zV14_4tFQid)N2--a~iT1$8S1Qu1ykX_rBIf% zi=$ytDqe@N*#PagWIJ|AYago-)oKDU3c(-xt+jBA&CKagx>OeK`7MRnAhqH%b0o9p z8`v!FH>CWRKpNOhK)DL|8>0ErjgVg2IfpUJ#r4_=(u?~dxJLt}D1;Xf1ABO|!HQdQ zjpa6xm6Z;#^)upOoPiu-f)i2}aq9pg(f&xq$o zaTiU!ksp@M1y>WaP)JOJ7P9GAF3th zhWAS?giHWS0ky2yCy1q9ge#YYAo}pX8+`+rCE^ulD)EjAJYyl@v&`pWf5TEN*m+a* zr+AVw+s|^tv#`_~akng1BK=5NJP!aB%e#FLuXYU1u4Pkhq8 zr8e_6UZtIqc+wY7h3A-5T(2FVM$i|`S8+ck)nN6jdlH3^%51m{R$21h zsTjW$q!#d(?lB%qwBow!n3gx|?YOI#cKBkRXo-UDV=b7LbkY&a-2uAdSpdKD6vGeT zM zrWgOQ!4GYT|5$Uv*uZ}ZVO%5J72!V^9`H{g^o7U$teM$o3o)iHJOIaMLU<1g|0#q7 zh{3m(;W-(*!nkb#cZpcID39460#ChI80SmWIv)x>mxW97n5W_5xABO769UtuN5Zoy zCauWRsNnUQN-SKN$Fzur=SwVHjmNZum>MkX#$%EprWOn1(|61{B@Uhfv9LRj`3}=O zp6SJJ_`ozx6X7m6i>b%13Sp22?%%MmACFm^3{QJlxFL^up@ru=ER1hzVLn4s;Ry~4 zH)mIcunQhifQ#UtI2shfSy&{4SqwM|{waijUhtfSg~ND^8+7vs76!M#KZT%&hZC(> z7~eX=7~??k8*|_p2#+~66y85%;Wj+RV;DTqU}1cA1Wzy6RUuRv0dEenaA$VKQz_;d zHc|YR6hY|DVpQy^5G<#_y$2QsN5MaE4*X-o9<&s&=}uuW;1KxNgIyJZLn(!j#=>HU z)baS!5HH>x!6!KIP92YrDy9&5T=(^@NqBR#Q|5aco+DB>pxf+pA^Eo zZR}c}T@^xRd1yrz9?Y&oczl@(3IW^#|AwsB7`+W>sT!aLY?Cy$>6@w-`g54%EVfPb)KZlVzOv+x0S zJ;<&K!M7>MSojFL9%WY-2S51i!AJWVK-R)+XhaOz2;LRNkgd?K61;5$aaO`WkPflH z&`b!4cgUwhsEQ@VVQ3)>O@+`w7Mcv9`z(|PAxkSvHvvLbSZExC0?na?b|@VJaSQD+ zq<}Kj4j38)ara?Dv=YWZ$kz$y)IZALJG~ehUl!8A?JO%H7o(zheC)5RIrep&=Er2=PF?SZ5of|34w7{8#ndu)-6r1R;3v|g$zAh3PySfCNCjV zt26m{3klvbp|@brWN1_-O=55#lb4U6Vb=s7!Q{hqeCr7b@E<-q?JFes2?_o}qRONa zj0u8TFzHRIv=&(=jWJfEN)!^zA)`jE*CiU`^#O^Af=;E=^PoCSuhZ~^ZHy3-$`+Ee z2BRrV*GrYAO%#k78nre_t4R#eYSIz~y(vXwh~-v_QIeiW8XZq*)Mpyh8Zi>G%H+XB zjnSmlsZ3hEj^ro?jV6`BBnDG8Sz;hbEEbAR$V^Jo7=m?)f;vs3GDK-iDf&bqMP=ln zbTLA2&?Z9xX+c_}T4jI=FgpZwiZ(5=l|E4;=nDho?i!2@^ zWx`O0y3ju~@mdIgo4|9CS{>978(x4~8Z?RVP>3K_jRl#vS%@_m3u$#3`b-lG!tV?o zG@)j1m9drH)CNp97}b!Upf$Dv*R;vV&=>+$Ml80MrlmGHB`(uo&?kd2P%d86v_@0B zzMVmfF|32O#V!I;19(IXXJWQ#S!UMgGSfwg+4~}rE+s}JWI|hO3?e{xNHK}QUaSlp zGjZC!=;l6}L>AI%db8g+Y61)fRTd+S&SVfnMlm@I3)U&abkRDEJ_*Jr3=ZfO@v3CO z1V3U|!$BCw>cK`K4{G{Am7y+z+JGaxm8N$KgG#4P;ng?BX?1E%3w2s>h8`lJxl)8Q zmC+OjmlUz{#;8mwLIz$~D@AH_$q+VZ(p6d=WQ@h~xF}VhxO7!onpiZC%!Fo7E}#T1 zl4LL;@gN)gF)$7}r-{X2bGI?1MJM!t8V6}Ipk(N@aMg;_MPN#%E*0#=D~>Ig`}Aq7 z4}%socRI9mBG{u*r3>krbUip$1c*-;GIbzGjLT5zgbe0B3}IuiC`ggP0!e9lm5GIn zn1GoYuTRzJVD`f+Y8bIo!Qh0Um8`=VR2-)Q&dE6GfZ6Ial|c+MM+WNC(x6f(Q|AXW z^ad8ia*o%>YD}31C zJF-4cs~2rxX-q10Y6~`Z3h9|?CT&KV7F1JIy2Ld2&BjEaK0QNa0D@`P99Bz_ATokX z3*)g*bduOFf;3{A8id|Bhz(*3z%VgD7u9l`1Jr7m`t$}tB?WLG1*+22nQ1DRe*{=2 zr677X$ULV(HKgec=LA*=v?TM2QCx(0m^Gmh8`_|X6PG%43t#ob1&>E(WG19()zEpx zxmK$&Vjs?jBp8^P28d;AX_Qu%35_D8^WXV{8`aE<7;8DP=ZU^F!id(069nW0wF)pK zLoVVPfMeLm2C-2bELa$HT_ZFytXX0+#ps~~y$OH8#KeB#vW;=Dqu{d)_7o%QDq+|z z?O<63&+1~KV}!tpCyMjEh=m$V+;wpp6XuM+V8u;_Uk3QmCnXu-7dBC(CJ6#5TDa=d zVAX)p3rUR7djw6ICLJb5sAMwxjr|5t4HG>6X6+ED&%_j2I@m1063Qk^F)k6-W|J5+ zPc+Oj!3ZlwVkFFXtWMySj7Uu{O~wrL``Ct4pt%Pk9cJf(QI83#N|nv zQRBfD?9lAD4#9*MZYlGc*rx^PwR*8z2b%f_YWRUYO`0l8Tq<$BW{U!AWih0}MIyiV zWC;oS#4I-MBQ)@v4N?q2@dB)j8898h8$dzJ<{1?P)4;{SxWEYDHn>Wwe5@uJstgeZ zDWFzmsMJ~$SOY6+49prD0{~7REPxwNINzVEIdYpz(H0|edlw!ybybN^39XwQvAyUr zK2F#dz0hKQ*>*XFt7~;3n^xzn3vv1T$1an5-ts^D1dR!C_FlSU=`Z z4fCYC+Gy(`C@k#@S5QXwf4c0CJ9j1yZBgp<{XVn)+S%j$%nn{n#|;~LrbE)Ele?Wz z3ziL7?DEy(mBxMXR;89-Z8_;v>w|;ZdG`BWW1-!&<6GLdXgg)!&bv?dxaO+`K%Z2D zZXvPA>|EveQ*EEQFLiHu{p_S#g?hHRttxeLSII)d9(SL4sbY!KfmMnInme4hU=i(O z%4y#YG=ID`)B4%r&u<31#Cv>Q-ey!!>%5Q!PA&4BmCJ&aOk3=oTpg!Zm{)Lvk)PEd z8>L5F#P%=MR*i{$Y0)bsCcGCYR#8-DcMX0IXzP94;W!LdpYhwItRKGdlBPnU7kj-?)WSn2Mx z>c#I*dvZJaexJ0_RfjmSRn4SL(4q;|gR)?W*23zOmL;xHxUD2JZSOQ30A-6Y5 zr`>PtjL%%%y9GY?=~3d@tE)#G=8hkqysv+mLA^UW2HYqu4RhRU1WS9E0=W!ns(g@e zyj=Zjjf&UVb#GT+x19Dbc3yElb>Yr46=$i%CeaiOzHYc~yp$~gPE;rVlYr1EVTN@poM76lBQl-UZW@LbAaCl?q zuHTw8w5T%u$7I!S{^kB@zvnR_Y3qh@ueF9%}sxtMX&+FZ;iG{FXVWVYmj7iIc zbDw)gLVn8)O&Qu#IdSIsyZcN59Xzi0F44c!jor)6h4(yP^Wdo|f33)RIJWo#M{|Wh zkxvXmS12Fv-Z<-zd3)loX!ho=3fweUmtADdF&EEz;iK#?{5fuLTrsnnG-DI>d&=gi ze!~^sSLZBlQYqYr;A?rc_vRXAUBm{K|J=Doq|Iz)6W z%gJ;hyK95zMSVd(gW7EP)=TGFoN-wXd7Hp}X>uj7O8 z1mAxBkDh(Mx6tz${%)pq5PJ)Q5}XdE;C^*>L?>3jAsbYk4) z&uw3KE*WBg-EeQcAvFee)GBcR=I1cnPPyf4V0WL(&UPI#JALS+s#$77P_|X@(rD|e z4=>%BShG}FmoRZ##CrI5Y4qEbT+r?gWYu6lM8M=SosRps? zWo5$xe}A4Qxr|WmN-o>IOU1?d9ZOryi?sjn=2FDc#uZYAwmQ0E{gA(QD*ar-f;5_p zKs-0&W`O9PR@UmYc;=fSivq$wZ!TMOr^Ag0(c7li>KnAaoKx-H>D^2AEFQ+%D-jic zslf<4<-`FK0`k5eZD#5>7;Z_JbB^m>%LV_ z^v-?J^6QYF)emMSdQTm2I_&jycl*<4yE&n13_E}jy_U+DpEGB+>^3v^NsZcnFBwy5 zU)9k~`ot>go-cg=WomeoA*x%IYb)RA63{eZTuS;&SBnO916?PqcT?Rd(QeL_c1O2) zMeHcfw#j^RD&H%Ne5YJ~z2DEeKQBhcevJKGOFv}jt_Rn??Q6ODQp*X>z8N87rx)Yx zY#!b?-Shcql(#Zw^118dCJnvaU76bW#+T=@a~}3L7Ve!^_xzR1FW&j}nO20W%Y8Mf zr}9luvzJrP>|XxQfje)U_NivL?zlK+>%cvu29}+%>;Af{9gB#k`Y@d-299o|)K$tF zDJ_h?dny)A$sN-D&Am3QKGoVhP+v1R@8gqL*JHZwqn%lCfqETot%>GiWxGb()-FEb zl6b$4?f4fvs~_+6D17A9BcHNHwz6w>E!OgE3DHm}RAa#90B;NBXOL4#=@q=RO?+zn zn>RC_Z(S5QXieGd%(h2wRQdGwX70ry*2VpcVFs`jj4|NxMB9rkvfN)e2}-My-9iI8 z+aKJyta^ubB?m{n3aU^&;%8T1i{yLL=G;BfxZE%5+=0aHIrEh(txp>pyIFVY9bfH6 z>R;;0gF38pt-V_Dti=3fQ#vPI*Zi7IJA(>uf6;87D7Qx#Ui@9j(A2TUvw8!HeEE_0 z_Ez}7LHaFOui|z+C|bRNJzwzQOzIq9G{RmaEeqFv@Ce_e<$B~cROVj0bL?8PtnGf~ zPXBnm{7PV@ta7%CKiizYJ!{>i0k+$h7H6Y1#=s7|Y@sD)~D*jAgnPl6$)z)U!+NavbYLfW9kRsy58O>%6%tf+eOYVN<)fSGC`(J%) z-gfRROQ&Ho!t1xQR;msTn?0jplNJ9YA75G||0G{vLC)Qh`$PHV{I^OEiXJ={`0VW^ zw`wP^4q8;*ZdBn04!gdLG_IZ|oOa1qZUHAATJ-2f%FtSa>(;)_iU2frBc z{(hl_WRj&kJ@aMR&?RHC`*dAo?G@RjOpArP?7zO- z+H{(}?Vsll4t+;Vh=Kc91+@1l2hDRCbfV(Pj~5m``6q75^u=?pJ=|CP{)}d}O{&a( zKWW~2qTR-%EvWrX*`}iPrwx&dAIvNqQLfnNXWDMt2e!){UiwnqIXAD_EiKwfnO^}| z;I(kK5~glC@0uH8OhaYqDqTigcssn>y0yVyT!$T)t7=_*nsQ>zR4>n7FM}hd@CJc|OcP!4$|MOu63oaM#P%)b(yv zDqO^{w8@k&eUG~xpHXbqO6wlAJ*u^>P%=cku>(7;-`8X8Xyt`h&EDN9XDsJk(>q&mp^<=At|9SyFJJh;ul;TKRD?$^hpNspD>|T`xX5H~s4U!PlA=-D`b5a%;8Nj8{3ca?hAt z@HXVX6gx`!u=b*5^4XBP%P3Mq4Md2&QZ>HD!|6)q)1H98I4EQNDJ zngL6fO-ftF9aVaNba_2^;H;reE?s^`6q{Dprj+W^!wPpQtcX8eH@<0S@4~Qql5XZv z8XY_mJ?!qChR!Z)vb2dYORmncvZXdvjx{&!V0*(fOd%T{!r!S zpi{dOhptExy!!6mo1T3q^>TBIm4)h5xM=8HY->^J$SO5k0sW!M^QB(@*-O#=nr?fO zPrC=)v8ps??bBiBmNmOMu$6D8%(}Cr75QJxKcviQpY+zgw5`3H!w#IpSbQkFs7@&Uv`nR0v;@Gr9l0i1W8fcgVCeJgqZ-*5J~mqWN>QRF@As-{nAhJ*9dpC2 zx8}rvkuRKv&(ZcsDglpn;O5uA_T)SVW%(~LZo@A+4-6c)eb<#4{c5eKk#g(hr)pkx zet!ERY`ST3#-T^fndT)Rua&al;n{bcR}RT*_4!D{&At!XhIQIDy7NCv`=4#9^SJr$ zTjx@7;+|1U!h_R;qB#JHp+vrkt`rhL0ccOV(8C|Y#+XfB~?tQ$Z*F@#qb`E=U+5gR!z=mHt=r_3y zFaFh)Y8E)@PO?>Qycqd2!F9sm@bI>Fc`Kh;PDh(01_C4zG=ur%l~a{;StR*TO-WVqN8`jg(P= zmn@I#i_ZRXJ*P;KBXwh*kGr&?-MIc8D{MS|Zor&tajuf;Z|t4iOL?JqrMs;Qo$Y+5 z?3hpf2gB#Qn$gc{^1#W{ELYd=b+KZ})egbw878@hCT~`r-uc`z;jbePqbGDOb@{W$ zYWv~4)nP&rFX!2Q6=G}ty~mmLZM;1oH~FQq!HP{F|tr?Ztu=YROy zq5RsNFC1o79lWuqS@$-}pkopxtso2;(y3jLim%Qw`cr%UF=Io}WI=C3r`ttx8P{f*0}c2+jWjCK! z;hA6Vl?s0B|040(iMmG}JVvcLf9g`HUM)A87L2oZX6jO}G*7nE1!azFhqnW24;nbW z-tnfV4rEpgFEPFUkkSV?jTt)kub*X;_m^OrhJQI2Pj9H~TE)GeCkc-^_-ke_=zdx~nl(`mNet@6KCwQ?P$IX%3pgpV6>r=@J7tX#Qf7yF8` zCuU~P@C|qYpUiBoJW<2YDD{thu6Y`d>jP@UEy)Tyeq({>U!%hxU#wW^gy)t)FY!A8 zR>z;z{pnd`*YnyXUd^vrCT>9d@|ne~T}#^iQ7ERWu3t(&NzFS&&&#P> zs?D|vv``zZ=U-0{Yv1{KBn^X^J*ve^6Sy+`|_J1mOn=> z8xg-G&08Jk`^;&h=kxtuNB`dY=5})M86S5;)6*^+|Ef}PTy?{g)9xYHmpU(SOZxmG zp|NY$>-DW?Hg4H)gF~lL)mxk|t6kpm{`!|)bMBOVZ8bwT@Y0|`WuF)CaCJcM9bY>a zZ++k6;->g`>-~#XUrY+@u&VUh`=!=hyLkH5mXo)BOnH9g-1qxYF%3t|ZRK+2eybgs zyH=eq(z5*a4OO#j6po4nMJGjoqPe1}qKU#&QC?9_QC3k#QCd+#QG8HdzsiYvbtXQ* zH&$-gud+us4^xWPkk~B)_BmM|DtLWDn^sqyk>OFRa>L3gCR2v7p@)Y-)!Q8&-=}0I zWWxI(YP{*EgPVT(bgn@4>Z!cdzCJ#_^)*RJ{{G%Rs`}pEUWp0*zM7EXfJUlgunO-K4lNJ>Pk`d+iW2Q zd)N2&b@%eAUC&EZUj_d2R@bZFK;`MH_VjB|KOxE6OXa2Ztmo_P>6zr?2NCc#g)TW0 zUu+Dl!rvUJi?0{fRkL?AygYsRTN8Ct;r$+gJjH}}1ykXT3~hn|Usuq>eZX{WU-7jm zgE*}VFlm|arA7gE$blJ|f-i)m`Fi`S{pz#0EzO2gC)}!4)SypjA*nY!D55ck`s^ z)y=b8bZocK*x-Qp;Mjr^uYZ+z|Et93UnTYaRZ{<7CBFY6fl3gGFg+kjt2XG3`XrNk zJFU*g8(zCG-y%;;gLnHCJDjh>7sSFl+asJ`&z-(5bmq?r_nr^+xtoq}ai(b#+{I+C zF&Vr{?K|C}QK5c@s97EU@H=1W$S|^;^ORExL(1mG1osQ8)2AxVw8&oZ`t|f-o$m4_ zGaw^F+6sv|@8$+n4ZN)xRXec7_AV38?8}>D&(n+BE+fx;b&kFRT5IZ;^yco;exXx$ zHlN(s%h`@6&c82cbca&-`#oG&Drj>F-vzl2>V(m{u(-tU z*2NMPy03E!SiI|svhA2k*=FVR40!&iGeyDE+cc;sppo6;=lW8cUfZ<%bxhjO$YuLW z9O|?FUZLOX7p$yDm20t&1pmmDs~YUs)vj0L-|GbTg5vSkXQKEXjhM%N-jwrR481Zr#hSa~>Qx>y%Bi4&KH8_`N!wT%e6%T7<_&yy8+0 z-}XH_>R)n5%Rv<$Ro7H)y2YG>&Zvinwgs(y;@I+1$E2N6TW%O1{?K%AF()=iDYx@_ z9UIa@ zrj)X7P_N7TmU+v9Hs9I*WvN?qpp>=w<#X1d;l)NZyslHQ5Zhw&Je^H`EjGr7ZCjJo zVCHXBgER@5$z1IauS{^Z_m2AYi-oK!d1ldy@XU(8QN#Pid~3`0nqs+91|ys&yEbs2 z8aeS@`R@DuV!Qq(19%37uYJl&uGe^L@RMT7@Nv~nuesah)`8zB!jV7?FXgM$QWHpp zeqT9k@m<}Ju=zb)K9!m=ZQ^fq@g+a;;KVY(H=Ji zf0q$F?~&VHZo%?VpT4LgrnaBnukWYNy5Fgx+2XATUglBm@-kZV&m$?QG3hTIV-OA?IxT2Wo73O{yKAY(o6QO?eG-%m^#_tb5 z+0#SH9rkMZIZ9JQlN*x*U#yrHIO1Rn#iLFol4Xg18Jm(Nr<}_^-*&<|Y*UTVE@geT zy_59Bx2VhqqJrkPoVIgpgKDcb3n{{5>H0b$z9UMlQSz z##5)F4yn7M7YrIwDZnG74E*d<8oXX0x>nM3+R^BYs!{pCZO#XcgQ`6JkY8eq z7T@?2Q=j4GOzNDgSaoe)(Ava0p;vaR6#1#!=+ad>Fbv;7G=D5Yrk$G|zO2yAX5mv8 zd6#*3cgA+E4O{e{vXuYKDc65}?4{5lm5Yx!(<`(oO&Q#Wy>SN}S#I6jMJ;PaRGbjC zYF%i~-AsiK)q>k@@SY@WIb;{`geL8H#fG)*6HY7@$FtOr1|2Av4b{4u@2n%$=;(E`&Mw;-JE9}*(A4sM`~_aC33ENlO&_5N z-+HpASA4a?Mxul7fWk>yYH>-UI<(jY}4J@N_PI^!1;PGToLFG7JU?6;y1#UrzO(m7P*UW@wJ- z?*0*9$J@$Nw}p=r!RPY0U2F09vJbulyMFffua<+NM>Jfu*=256eXb?Gd?oJc3mR4K z=;S$N%#R!BivTS z&nj_SC9O>z&rTh?`&HoD6+*=e4;#HS7nrXlhN9TyC|6%-Zs_8f3MP63f8c9$7oR`!Oaj-a@5Ab$qzcddm$Cg?+X8tNn5QEUVIOfnNs75%{fyg|IjTfHQjpeM&+(OO?HizDY54g`V6y=L`x-Qbz1Rti*LMdk)z*I z*{^|a#_Xgmbs=Rkd`axYUD4aisgpcWectg(8!_q11_xit# z%v;=w?ITv-i@N!?}TIQ8Hw~XO@%U9m$j|_kgry_}G&v<(FLI zhObzo4s;7#TBiQv$EN0$|HoVcjnX22ha2%%+g%q%js6xjvvG9sB&%TQ1fFj>H6j>3 zm5`Xf3`=>$8C&COnNc0*8gb2FHLZlTax-ZcFVFQ8$uS3TsQXp4$Joc zV=nFMdo~D!I~(wEd-$xXc?)@u=cTIH|Jnk}?UCd6-2Ugy!d{;8yub*ZTAKlHDTrh8 zKG)kgPqSPah>QessP3JYagaQD=|$cKl&3lD!cl zu34~_^8%$YROFszrTb*m+5#3$pZOO*(N$-nJD?B7<@c5I%mdwwS zPS^!iewpVa?Qg3-G+sC_En?~&pPR|;S4o~>+VIv4eAv|R>)uyV&YXTFFLl`Skdd*S z78mVvYOG{!3Vy~mzh69%S~PLPV(X&`ttRIj9$2!;AZbyKHz$vVn^S4*)WF>$X}Z?B z{ylK?&&a$*XFt5@^kUgB1;xV)6w-Kl!i#JBU}x!3wRc7g>##BX&l<<1)iu93QAxH* zf6TS_FLYB)IQgadvW{B}BcE22j$=fdnavHA%IutDo3g3np3wCX_ZlZvxmM{{LzxzP zGgj;`lBT=I`0`W#91$_^N&4EhD-$Dr)r1G9(poMlMU1e1yR>#n)UZ#->>fA!W2dA9 zACEV}oiB1+kviDsn+GCixmS&v+wx`0t1VxZBqzAHyv>Z$v@SC?_ytbu zHA?ut`hv9o$JF9Zs=(Gps-o%ms!j_hxU`yK>D9CUoy*mTF$LEwvB9LmRuw7yDZ0e> zsBx-GORKE^u%D>458_V_|VmJ&Yhhp?R~LQ@FQ7h?i!NXnzos#gK|=X2G2d>d~EZvdbBM3C^a`tN*?y^ z%K+blJEGU_U1K-FYJQPllFREPDGuM)E+Tfw%I4YDHWfBKOmM>Q$!hBf-@91Gs*tUq zu*kB32&)E7Fy3DY@vb!9tr8QvmluCkE)J=pFjX;3Uh8x&6FwcWFz=n6@ss~Q3&M=!8h-?Sm3vr!?&Va z4RjDJ`!}|N@2N?LFTt@7un~P=sn|Kv3z9f_f;lCH3Xq$HP})jmC6u+m?^%T}#}jO` zbXE|CZ>M(@;y~GvSy$f8NjeSXAJ&Z0x=y0p`Lhryb^ceV80~mNghf~2A!#Qg+YmZ) zv9wYo$Ka&I>EI?!%l>eTtT9V_L59R1lcfLS)&Qrlos#sD@9XBF=uYM*I;X zeKDtMJ&UQ%=h(p4LV}@Q$C08*#vVd@aY?F=OU9Mr0s*VF4Lwaccs{*gd=^X`zWI{g z>~-3;;k+qr`|@CpR%Z;PY3mJdNNY0sF*ROcAa)w*o9V^%OkQu_9W2K6BOSQjxyM0+ zECR7i#{?^MoSs*!RP12UIu*CcaDJ(UAB83ZB=rR9ES|pqQJcIYi<}c=Ptf2WjzgG*9PXGe!YmSxX z$Bo|a1K_7xIex#^hPRcQYTUHrHRYxgH*@UitC9sMS)ywJxAjdZ!5P1*^?KZNDiqAK z`UH7Ot)22)0_2goTaVbk1M*vJ4f|E&!>Vy94(?iJo$(iG9Ugoj0@KvBZ2Jnw)#?4L z&|-ZQFV!}A1=Zaf=&r+=%NOl2|5SdftZ&P2we@}Zon`&l{{6WUKu7QdN&Os6rVy+KQV+PW8F!hHpM6xHb%5ZZw;$v_k~?RMjuDB z`MM^r8Xd-~&YJvHNjZ^H$N_xpyiR@^X9-ga_JB?s$kfu(z;z%kHpt`ro8>38%byMc zSo|Pn0wA$M(c^v}iptDEz@l2cVVika08?e2l;0BbMfuG)uh_qzlHbMV8}_dPbffvF z_*6VNtodyWmr9;eZS<#J|0>n!-+}tm%%7tlsXyK5PrKojKlbzkTusr^6rC-w@`3xB zR@v4@dZMknvel#w z^L!OC2)|Rqpx|=z4}c$_I-x^V@<%8E>BW_NVM3j+PpI>k6H5LLC9@Lx`KJjbzeWkL z#vRMjP~yy|3McB7TLF}SXo6b%f6 z4<(5+--VLd3GcFJLdpIK{R~ei`7lZn;AV}XL?8f^QKMf$No&Gbub~9&HV%^4R6ju? znrihmlz`)iyip~8g%b2EqE(gr7$u8!Ez@oFE7dBlXYw@kH$SMMZTq zs6>Sf6Q!tFZcil}kG;_@(07m$F>DJMRk0Tp8*RzKex^m&s(y&ZbkHB=7Pi$H1G0qmWNvwr$F3-Q2<1q06rVoS;uCbEU_*y`bz{4Xuc^YJ=b{t5J|{ z&v0xdWSjRUGKq{n1u9;*>_j7c;%XKKZrg)vQ4YH}Q7}}$wwqU}9$nP_65}bHY_DU; zDf^-OhqOKqbpI^^a`S04Mt|mq@w)+9K5l~MDb7Z#Ghgu2SP2zEWS99KGw47x)Em7a6-35h|^;4yO59?=ZKHr{(3{3QKOth4P zl#|hdq)@19yxVIrY_cGuH9r6n@F*gbb9wF$&7Y$&8z-W zLdEXfSRh3i)+$i%{#e+~)W;=xkodO<2c2vKCZ0Q7G2 z?=ibw22Ncr=j?ohyg6*>HQEg0sT3`bFIY)ES>8z=qqD`Jz6|sC{wZo=5u@MGD%n2E zD91XJAa{GUWyZc7t^S}g%=u_P; zN{xMft&Y&r_ZLd5Kw2M>#;}@t>Txi1tc^#1MACf!%G zG7q|iwFHn7W22jr4ZJy5Ssa1*X|Ff-WwSULuhbt@SNa|`XJ2-oP5@Tp=vKdV2M{$& zZvgV?AR&BKr`Xtsk1h=q%cwr@wo(`yZPr78SU4s+a_uWwgR(-}IfE5W7b!s5eV$ks zN#1pQ*-q<2qTf_oO)E$#4JBX!VlqO~3&wa9U628^)lkKnVl)UJC~M&>>t0=d$mnO= zzdHq%16yLdlByp5WHij-PpDab!d-Kv&-vZ*Y>E7YSBdxuZIox>KDmqBF<+|OBR}DX zq-Lmp9$zGEn)6d&bJjsk=6TxYADgGt#h1;O)Ws*wkEx4m=4YKcUr-mXKuMNXubAIa z7w^Ejmy);5UpOVdRTmemWalEJF1} z)+&E`xw<}MJ>d^l;M${2v(Ed|Q!;^smG=E-)O~Fgj`fcA;A<+q9&*$|nCvBn7cwjf z6sf~^K&wB=vxhL)9^E0NVMK3lESOBUIP-q)(`_uBXU4eI_$yWU{Ay8lp-`aM>v ze$Q59R-+>*M$rouxzK?(2!(}eq|iJU{Y1%J;1^0c`sYfCZ0lA)8L5t519E3&k`0n= z=JO8-)T>qTPk^^@kii({AGl<^)CK*#HJ}4}Gs)n^Ru{Gr{XW22=JDcdL$pET*hX%D zDaOu@{>Gn57od-QNjIP|-X?i=7u3QrFqn=W3O(=y#wugpdJJVRO0#NyI!|8`g} zjjKSE;376J4$<9%SHLIaJX7I@B4BoV^ls0-Jk6H|+pW{n9|n=)Du*zHMHGa-*AIsh zIOQ#cDO&c_zI1Z3imAwN*cX#P)V%h2!A#-pQ7Vovt*^8mpARsHz$0N^MTl4)db=WA zDY&pa{jCi!M$O~UAmOw~(Ne(gHNU4)1%Ntdc6>kXhvkua&?yKxc* z;-M5^ond|x3d~08VnrNR`kChG7j@jqp2iwKf%D6J*6#BE2-6F>?zwdQ!h9bqm6fs7FN9bVk_ditxhtyGp$v3^>X zr{7CWB9(t&5An5NDr9QuI=w>d>h@HM$uulWIh1GUCrKD=Q-D(5Pt^@y8a2FzYL6b9 zyciF^xoMbor5Bwx2`|vKxu7Y!Ff+N52Dk#6VuWp8Oh(g_R)%(*UG7V=-0}q zuS4@Ne@eNUWWJJ<>iB}M6Q=W$nZKp2t)OW0=Lez38;?wZn^5kv)xAeq@hmDT2-3aB zk9#JWV`UV@Mz2U@ee(?7B|X?KKM!@20F%s-UfybJmaE&LHT>1h=Qpuff9z&;`>c4e zlFT>mRka_IAETwdX*!&9EiFOqR!>DR$M9(*aCo$U*Wjfq^!*vy4BZH8QwFv}W7Y5} z%%rqFCz~M7iy60L!O0ScbDZNTPV2+*Nd0?v@6EJz@`NPVCfiJTOIw#kmp6W!`DY#d zsd0)r8HCLx_|j8vtt7Llxii@VyAJbA(g#>x`QY@>46utQ;cK2s#1}PGOKLNp>89}L zGEb$5k1OkZ3U%Q9?3@WKGe4VxFR1Ek4PJPNHWCR}Db-})_9p5S@20@mA#N8K4On5J!xXJp-7|^O>+Xcfb_Vm-*<+qQt88V^JDI zU`JCKc$fwFreLr_YfiWMi#BTa%P^{}8`uP1F$kpI2LXf6km&F%M#$e`p7_YVFy|z^ zJc{#lShl#S7cbaZlU$w4FrawgtUK zwDkzqsj^m9nIEgt%-fdOExM;iXdnlXikq#^r<5m|uY#$<4FSu{F7LCx$nsCHe6C#{ z?$q>R>rYb3;VTDtP;-A5bYbgTK%Z(thVw}>uXqN~^5bCo(7=HKJ(R~lr72*Kx{8at{hHI1 z!LStR<9kDw>6GsF2(oI$F$}{>N>@Aa?Vg5cN=m8@lc-FKKxk_ooti!^t5rTA%3eSD zLxAYyOL~&itMy{_;BhAC8Pcn#ljSo8B-U#$B0~%Q})-4VC zy1ow#Fj-rpr*(jz?t_^Nz>py=;7hDG25PlhBD0Jv%P8Q0mmzF}V@n5CP=RCGA~lC+ zxchQ}}%R?0~-pXP|=9=PD(et@%HcsVGVPxht5 zH8TKqIae#shqmXzIv5K)+G>0f-4GzbbCaS?scI5y5Pas&9rU0Kl!8rVMn4Ab1a&lr zhH-Z65B07AGWMM4r&A=9M>Yp+hiIxraUlA65P2D?6@1r2Atjm%7Kbhx=s9-#vgo@h zZXIb)g)=q!O(?qnC#TR@e%hNjFD3?h_MFB85~1)t)^-*krAYYF;*<;btK`Pz$M*zk_K5 z##r!IeBM%|9l%DC3FXs<43T}n2PZ-z%h0{rG~+3`>7*kNfe-+|vwL9=yZQ%oHIs9^ z&+t})sX^P8d4tFif#Gn*YQn5d;{OkJ!==C4~wp2fx;SFWA{+P^AYVXMC560JBpDi!U1e}FAw5dH z0N`|no29tghqzg%;f3FXwR)(%H&U~b+kFhw15d1j@H&DTv!SVXTPJY?{lG&m=chZL z&YTvw2YgyL-xUBaSj>u_a!Nqh$RFT@P+vhQrumcMYtcrGz&FxU!}I zUb?~oh@J=+R_u54$TH~Z)~}(q@S?l2dl#)aS2=6pN8Sg7v{0AvJsRiO|g5M2m-{&M&LqrGULEk!^)lyJ)uwy+hgUOrwaw5TTLI5rbT@j)O$(u$by{W`xGO}eU(57h`GEtt^2V-M22Tq6 z=eml@MQQ{?kPp6xw522zxB|RLazbU~#-wSF@>TLY_{gd}r89)+6nzE$Q1Fv%1q`_Y z-|Ab**ZKrsYaOir5cn!|OD{M?8z)kq)}O02@C9Il=W30-f+)z)?xyb;q6Eaj+g-8S zm1N>Fha_Y7)Kzf9M869bn$2~Bbt}NKBOH6cNI~Iy07`a*PYOo=&A%KZkq6g~pOX!P z(ZT&$#c9iJqh~*FpR#W;SMx|341Fv^5))3skj1!KVtZ$4gmev-`e$f2d6mD`e0#N~ zH4RRM>qyY4#pn+y{d6k_na1IO$l0{JvJCTC+W4(L!j>-}tFh68u9i~O$f6S_!hl>A z%a&7Z1JVRZ+FsHpzD~wofwQ>s;HuUG_E5t=L2~H^GMzfEAJ(c!d&C2sMq1qI*;Aw4 z21hk@RW?x(_=s!xUT!?(uA zRx25_fN2276Z~i14ZGH1X$N10j|LfU@-l#o0aqY|RG6{`BSJ7IS^f=X9+S zE+Q?6umQTk^g{fst!9MlJN;x9B zD_Jvrey#j0sAa@peGhaA#AR*9DqIPx$r`ygwdAjdBD4lC0p&W4ldPuJO*K+mv;mg# zHve4BLyH?KSvoki4$h=Ml?%88asjY?xmZS6Wj@-x&w@C6Dhmc;0D&)kAPcG#%F3v=Rq7s2v8vV|7PU#d8KN`2 z0e>{;xmmq(m%OsCtBziQ{BDTTIYdXvnGjJBpil&b&Mc&%&0@kt#mA9gDF##if zVk~0;rA!y8L^aZpSm`tZku_`vte(XBXQY8>K#7<~z6MkV(<2t35KPE(A7X;~BXqyE z<^l9jlv0Q#vCy+oQpXoaE>%BevgAoss0zkhBTH9S4^E7`hRl4tRb(bG9h8|*F%wW2 zhg2D<(Ivnro82yVb64=Es>C0#-9roHQ%`#fl58Dx=R@KtmIOO-2&w2utI8Uxnkg`? z?v$UZ1@cpOll)BIpUIkHcZlYJO3G<;2(@5@&;#FPo_3nFQT9NoBfcqk7D$CFsL(}mEzbZXfpzg# zzye8a=4bqcD%=P^sERaB4S4!Xx3TYkLDLpY!hriGOUt90Rm#`FOjL#c8&@GOvBFgL zfGj%I1N9@(D8w~x3-pA(tSnTe&ZGt_=3p?Q)nL#PTC56SBsjNd_Q>|)m8hAVjZ|p7 zL51y{O`AQ0S{~_Pfvx-yHH=(A6eE8oS;MYE2S357?Zw1UlI`%823%npW*ZHXqGotn zyBGk5rY8jmENROKGpAt1_!?VKfC;!w?i^oZZ(ISD%_0OK)9H4QHsQrAIf54wV}}Z< zl)Q)%NH!lwZt2sscJngy2E1hovyAA>!85QkK>|4cY=cH_CE80FKihnp$_6mttLP4N zZ2oK}ot87RZpIy=PUgSdOL=~6p-KfnVHhctoMkqGZ~}~6&Onu9pajs!cS}kp)Tu`a z;1SoVV?v!p6G}Fq1Q1cJ5R%Kbb|{D_6pvXi9ToL;Z~ku zb%6#+3rhT+Ti{5jXdzOx)cEUeh0$39`of14Kdi2kZe3 zW}=;}EEEXjv{0mi`S_^XXVd*GDSFaBU&+5qa_jT&7d~44fc)g_lb@2u5Z8e!U=B;@ zvBmt5diHO&nOqXuTuac zfJEJR)eT>+xWe1-bE9Yb-^8RTH@G-fE`Xv+IUYC3BXLLYf0$d`d z#P8h!xHl_-2u~96NTgyz8k8X9lw^~^!@Epj22qC$mSn1T#ms;3C~8A-7Lvb72jcYW z^zD(rC{j5o9hZ4vqO{UZ0Y$>1PUF<7Ex z2H3$|Ol-;Rz+UqZVA9UOCNfrXC>KR=L-VC@#C)MWQriWOg}%?}L##t|F-<0e>Dlct zneTv12LlmB4h{`wh1{sVIkHpJ>dij}UCGFm9_YCO8mL%+3%hmU0w5JqXOt4z0D_Vt znu2j9$nIbXglZ9q6!m=|6-*uh_5h&({j$H6Y zJ*N6vZQY67nQb)f9ws(8eQ})C)}wgV$hkfg|E%dQV39TGPo`)?Ub4NNVJ4NtDFd)5 z(`ZMO`LLZqAiBcnpSl~&#d;p5a0_9KfN_YPED`(#I7l2 zYUTq#w_@m^T)QdILJ_7#BcHYdK6+yxG7eZ(-(Lw9i(vyBR^q~M{oI*;6XV2ibimGG zUK+II#xztEA)CcSQD}- zRS{<9 zxsYo>D+rk^0Bi|-KX4SmMnRD0+njH=2PngPMrQ1*1-t?#XrYaNrr7Lt*uzHAK$IrUBD` zIuNPT{G{K00huBkjOjEjBz+`ByO~yXfxTe}S{v%Wolw7!@0w7n;~@&UKZAe-Mgwh< zw3TMB%D(_@;rlXSp%8a+P%2ozl4HM-9+{~K7)$0{&Iit6D=h{R@Th^uFlxOoa&GA`eltT6hD(!lT<9+2iq!iiMxqopadKBF z3q*>9v@Hm$vmd~ab?A@`KqFZMjow%;b&!*g0jB) zo63SC*pLNQJi~pNR+V^YzegIzU(PyEzp`k2xVPK`f!pH9TmGx)OE)BC= z$+%Uj-s4P>)FhdKYGQ%3S*3t~6SkY>&?#sCS-~r;Zw^(S3RI{y--1$rfC98tMkL@` z6_%XGwTDTDDQK101R>64-c+04i@*7?d((!@=UBCJ^VjNzT3i^L%n&so`#?BXtVYsc zUkMUr5hN8fava9k@g3*mENk?az!+$21%6y-8$hKwh-B8@c>=5|4H?U|#y;$n7}yBs zo5Z4%yajdU5Y}i7mdK;u;nr+sCTU#FfVX0!ISf3$*~VjtHCUx!LmtLJG8BXG7^;gp z4ZeV-2C_B4H3G$gxdI8b~Ll88^Nu1A|9i$=*}#^1n8c@_c?QiP5qG?+)peW27#<%&ljxd@Vb z-PNoxklq%zn!dDxQgj=!x)t`t_Xv{!>WZR)5Oy2dAVcqnAu$Ax@c{wE-i>}*qY-PD z3D8c(VQR=~KAV(p@{{h%J{PbIa zWcGF2UFtd)<-rHR1zSZR-~@SW>89xC3xPYSTI%L$_hue;A2Hvof0=nu)ApESIJ06J z&GZe#g%ldENUoRMVrWKCRk#@{l^X~_ad^hGbo@3%P^W<;h7psYHPJaW6@OQn&uCh& z`6b}d7V=}H#X*SDFos%&WIggqBp;;d<~KavN~F0DKmtI^_)zGPA}zqfF0yzsN?zJt zv12!&%Tmi9#$FTV&67JTC)H$EYJO?guLVxeM6%rt=7->Jv>HImNz8zQ+asM(u4H40 zu^(??&}~u}fEESXr`b2tS_A}unk4CB1nP8ar3=(LYomKJ%evXUnGOG$EFIg-v+h@D zq;4K{Z`v$NRih`V$vWbv^BwAgtVhTP7YuaIQu29miPXTfQqQXI+asKCVJT7>3z0Gn#RO~*wpGWL zX+5@83-?-O9)i4%mH@Jy9>jbh9~-fc5cdq zM`#D1LL$h!a->z!MT(Yq(->Xhu5>Mqp^#-~Mq^Es`=DX)i>_15U9rU^Hd|oSM(;u0 zTA?MqpIb3%q7S11UJTbrrH(Z~D<0XhhvK_7I_R`QQ(5d3_(6W>u z#=?1RhDzO7E3GDB>izBX)XadR2FQz!lC)ZJ)O?qY8tg#|gFh+vj1FTo&QU|g9m(|T z58gKA!P{=f{|`;sd;6}Ul()3u(g6QfyxGg28iwzAQUAI3FeA_Xc_|%6D4?x`GK7R$ z+6*7+oMaOe=xWuEyLsj-Iv^9NEm$NZ67SZMxJ3dy3({8uE@`neMVn=N3y@v6uefUZlP zm8UP_6}&7h`iiLlpWpmF*hVgSRWWxuW$UZ_TA?;A084Bg!!QQ)M?)snWTj)n1ogTI zCYMw=!0~deYUJf&=Y?$J!>bs`$(CCX1rigPfLy_iB}n*{@vL@dyg9lNQuVudB~_8S zEaOo)M6AWmUXWt;n#*pG(Tv16UTt7rKH$YE6N#-vN?{@A0lSJ)GKHFkHQ+mEA%rFVV^mU1$RAn9p$=-|J&;uAVoqghS zo=IPtARTS~?Pkz%KLAUOi?00GSxJ)vsN0?!J_O9WSRvgxL^ zqO3+X`)hHR{}|BEyikc3F)tM2Z&5BUU%nH6eb?ZV#@cAjsOZ@Vgv=yDf^Uh>B}|*$ z$Gs7SB)+f;_d1x$p|bW0qWYmia3N-!Q5Ppe@Ukc@K4<@aUMkHquep`7&96&gj`?S) zq+^?u)Nw#T^QZDKWd6*3SZMxR$_|WGX8vX(s^=(Fhh8R$82u*0gmmb4HuC8dCA(L^UYoiLs6xufn22506>G6fXutgt$o=&L)Qop7P0mj; zUwcvu<8LAVzWOA{6)ZiPJe$9pqG^hyM??N{+~-GUfTk*oK|xisNlX{I@i%yFrXnWn zF4H{GBJ3u})R)?cGEjf*v>0)Y3WWiQd`vEivG&|(y&|V*yCSD(r%Ne0NI52r^+uPt zg?Vy>6=$@`rI6g{9a3{~^iH>Cesr%C7DOL$Ylfmj@?yd0QF$1Oe%O6j5*<~97Cm<( zLaSGVwi$9&uOk87ig1ozMxxqIZ($Y7?jRW!*<@Itx4VS4)jR?;jlSxjsY7UftxD@A zQO!pYTXFA>GR)@+oK(V<44+4Z)(O)ExTuDr7 z31vatkTnB)<+e2T6m~B5GsT|Dt&r=D$Z!+Ma4_t=pOB#pC?qFi1$1oDkzp2*?qmch z6LOW#uS1Z7(Qr7;vkaT$d`Ou_88$51gu9gdY9c`n-b83^9N1+O zy-jHD6%Nj{%iJrMTooD4AsMd3rZ!ExKbjOg$?B)&kqA~?~fh6>6^a4T$|MLb>Q43Xbr8HQ#En$I3;atXsf zL_Y>(*U$pDuy|;x(x--2-3a${6z)UZwCHO@zZvRt7FrNFOW$D2jsktdIAJifTVdwV zgM_uxr?Q5I5->9>hI`l1r-n{A;|XF({p;vcL+2;rip$0m^r<24){4`ohW6Ca1LJrF0vikW!PWF$DL>p&r{GRXWNO0{gIOVdFFO5TzL(tf6K+ ze-h0&-~6zwWC*?pE?U@p$z@mp^ED|9nxAnC%goQ)n(-GVt|Vj^Ig!$gd8IVtdh;ld z#r!5f3lAAGl(lLm_F+Fg^dKHQxntZ?n%`4PY5vGv%82=&*q#T{lA|w>DjDM&*I7y{ z)fsO#xq#Ha&Qe-=&Qj*GS5b|z^vFgbVJ9r5RhPJw){@v#V%tDWHAd*$rqzU{q}gjm z8=*-0Jzne}_x7hNuNF77_tN!Qz5x0YLLBLcg24DKgRyEp2laJ5+%RyFB5RsVvs3BO zGj78I!TbVdXbn6?OT^+r+G8ldo;kOq9c;4=rWD@}R1W1EJARmj0`EMIXJF6J=qs2U z?l+#YOXeB<^UM!J!!|zw??5?g!hs2|w(Vd`)q0qJjOdk(TN0B(BHENGI;J3Icw zV<_FQ2dT;@z>GaLSt}LLtPOn6fNWrGvTjSUkDPTNr~0`U{eWv^sD2#qk&i{JeGd5Y zsQbcc8fUR$%d`gDv)+cGb=H9)^k0`OktP+^D(@peiwEYK$B+wKgOC9@$P~uglc{2r z^A?*SxQh{G9%}IEv>+l37>HGw!XRt`DOVlDET>Yq2U4t(9SjA_1$Q^Em!I{0{tojv z69{pO16u$YA{Wp+3&GQ*CM5f6TRh$x9(3Z<^qua>GUa`Q;w(_}T=N7i*k_no!Dzit z?~rbSJes790Zy=2L%V}Jo(i~wRNpf-%{ibZd(|BCByP+XQ3+#5xLXr%3YRV8WmU{v z$YTNlR?#k-vRgvweTegv?(o4L?=oM#0AR$B?_q>^I&2W93`^^7@lGVGGIRPniZQ(3bNp=zJT*#jtD)trW zfoBiA=Vnl3_9jJQ-!(3K-0SKQpyycR6meXiJ!7ZCK4u8 zT@q$DX=r|_u%ajk3d@Ymn_3I0bA`*%ggVW`HcJzmF;n)R=Ydn%rZTW$oE@yX{iM_F z+zF;_DJB;&-*kvol=J)vg4Fz4BE_0No|IydB@D&erdUoGVJ!M1>g@s@|EgKT@J`*xsMA23?i+H#pMsh+XV}RygI55Td;~1d% zx8uP1yGg;>8qWYZsrxqqf2}iXm5pGPijA-p$Ep(s5vv|51cky3B~#a!AE5;4fK<)V zSD;Eck72Ymozj@j<6gOXP%TFmXCbr)K;8>Cp6#E?vDQO^VyO;Uw}{jVSUXa&>dHSY zF02M?w>$}351=aCuvBl6ECDqK2ftC$1*|90raG?8G@R1TCmGhE32jE@$!zN*AgjbS zFWYS{k84wJea0T=vlHg_mOKetUmDluKI>a{o4 zf69{*>%Xz0aCrh{lpC)&nw)Yw-lr^@J}E|0;RZ(T*5_bLm}dStn7V$gk$Acs?rXi( ze%`FlVcA`DFy!&-R%A=)Wqhjm#%A*jBzm+Mh=>rJS1Z*jb0GTqyxPrLEl=Iqf|Izk zT5j9J6`o>~s}3Piu5IRFTXjgb(bm(a*N9Wa;x#BPS5tJlB8F%i5q9>#Jtz!Ew*qpa z+ryLNL#Q6Qw|ERnC%FyBo)+?Hy@4>MR0cnXpE-6r(S^5`95K4zd9j6LT{0HD18|eE z-}x+)5yWF4oiAXS^gGdQa5pI;5~x2VN9=x1Y4d?rAwm0t*{^3RgQ$O`A@4!*(2k1LJ~Q0pa8)E3H#|cx$E#Bd*|1 zJA67~4k|2GhD+NLRhbxZk5!n=-{4@osIXfHxxE5F9bBLo_{)Qomg4_$*=JaLORcIJpixcu-;O;8B8K>98$>XD4Oh zgBQ^c^u@_o_~5G!qKN-CL5CguJo|Qa*ulSwEo{6Fi!^puhefDS+c(%uN6)Kk1@^US z8+A*qz`jO41rpOt;-YIumAzn|P{5Y&dQfhU#d{7e0nGXOoJl+f1?DFO)**c2gNPY6 z-v%SIIaL7X2C^_{e#|WK#`*D>gU2&_a!} ziSBJFfaxy`C?M~7* z&vrcKuL9-H!**rcZ2-?sI#X*6Zaqq6O1($xHu}5Fb955C3MT<}!i5;{!U0ZXCs6-$ znY)3bGzoh62Vhx=e}FqCdc{AG96|~u2h5jKaQORcxi7$eL6#R-VfkHRmCA1zUwdJB zrNtx3v0rwdc_>-CIbYjx&5zimR(*3`inYNTTB%uouO&s4tKdOIEHrKNBT6^iuVQ)T zN5EOkm&@^1n;6TpBYF%j`>z#YuJEBr_`!U-gr)+Hq=H1E^BjNhmSGjllgNX__U5z9 zrh;tqq>zXoXXX+qXPd9M9?>99-{w06?OnSeB+TV)fZ5w5eN;1bhI4BR!?WZF!cZ~}L09is#G3U;7V z_Q4fkNAF}1H;S+@rUZzX2lY*e?KzGG6}Y?Kc?0nQN@z}aG+x+d)Dl3Denrenmu^JQ zaYd-W-GMkZZU^p!p<|YI^bX3%gqYn@PFkV^ZU{cX6=c0kc*F(nz7yjSlLzkHFr0hk z#snq{+)13kBjJ0h1eJE+E(f@G*S#V~o;_@0L{ojN_JF1Xhw8AAt9kCQR<+$ zxaKhDkb_g^`0I}@6;cR9Z*u7)GrCy{v!Yww!eDfl6o#U^-9mr#Q7N1qeaxk#P;^8J z=S81(3p1i8r7$yk+HD?;^6V(?1H9-KhN7QQY$^K3@~}Jlj@wNZ_QkP9PxM=EVR7`Y zQ=UR$S#%On2+}1XA_!8Yui+K6_X4H816OktapGx_B5aUpg$_rne7~qb@3e`yQq=>A zmnahN=Hcw~N!Y7N*fSqD#|X`T2U(y1sETtUb8z79wOgp&o1e)+lEt-~NX_NUIKIV> zyW}zgBe^Y^jMSHDQ^Q!?Fh}6T^wGA$ar9hp-rzf5_1D_*AakP^646UCGd5 zXUM1yvv~v%iVU7~n9WAc2nYW0101*#Z9JP-!c)-FW<@S{kponV*+Q!v*7nmSk znF=-&wLgIs4T_<0|A0B{#4KHp!sa+TW36rVC*z=CfLS;T_)dKE!{s(|1xY&Lsmrr) zl9Bxs=N*7QRnf$_QzDx8L_=gyuUTE9p9F{gpo=VF^U!NTf03crkx&b^H1r)x^^a4k zCkXUeiX}18$}{w3N1#`eWxua1N61dt&(PlrInN&YflJPjp?{SLgob{vWcYBpRLU9l zyIdkToG*o;;X=1CG+ZZz^M>o)?uv$+QYdB0hC6N~*lQL2ucbJjPP+ae;`}Db!x>)Y z2t$dgmc{aL{^yc>c&j4g;TpalDvxu2VrYF{Qp-%d@3>hrk}XN`iR(aXZz97#bXD6U%P%$Sg$_BlD5#391LQfyZ4Q6*%yW6b26*a=BT_fn&6W6@R;3^l=!&pEMW5NO-;Nj~~8xFiq@Yz`&2mUl+fnE0@ zmT6q{LXG#HGoGxi)E84fLHH7PA_smkaaj?5l!MK&5tB|jwYKs3vrp@sTuW?ipRSCp z?d16$IA7B441GiB-NLnP5YPAh2YMLu^;PGk+~W)7Yt|7hDPNhii|5m%-LB${5q^ja zyNEU^|Bb{sZfV4KPIR2I=+HCk7wy7i;4kMf;bTU1ICF^>R@A+n0iS~+O~s$;@pAr3B!h2RL_p<+uRIF7hLi;%~$%6=ct_suXZl9K8_-9A@jCE_7M9&}zll3`fjY1Y#|838Vt2&ez~!nYH?Z zLD*vY6Cmur9)zvC6oe5LaUpCaieCYs!`lSH2#DC-iY_`4!WIcw+**L}q#5ED5+Q88 zJt>4Gqsf6V!Sc8jwn6+u8^k}cL5wey;(3PkZ}A}h-J~FnPEjDnW)rpvM#FI+j^-+# zFX9&yGWS7TG>_m^K)!xy2T&Lpq5=u>8`wD$Q5azgL18gJ9TbkPaI6%uB_;wG@eI3L zVK5T`9NiTM;K}lga2R<43P+E`0BnpG4~YPNPXRdk$@v8McH20OMBfl#Wk%nQ190@K z<2eM|6h*&j1NeJ3fZuZgTp9hb4d9=>4}iT^NuYP^G*ifp->`#hw3K<@I)Rl zxL*NyXoW)Ip|y%f3@I;9=1^Z8fQNQYio!$pDF6@kD*zAecL7{E6jcBodis3;TxPxm z2uo7vjUYTUrXW0YF%H5*f9OD1oD~z9#Lznqgs+3bL*INq2!DSZgnu(BgeRi#&{75A z;R3N0wht@EdStj-pcNUekAv`VGYo`m8VHUWK{6;9o~0l>%wPk!@bFR>!sWxO6@-U3 zzAuDd284%i2PlwTC2Aj;#CWxD_~wn_IXBEye35ga z(@oSQhPiVrPLmk^@}v+(u+`Nh2%UYyIW~m+s_Pv)%{F2bLs4`M~XyLU|%T9{Cj0Z?*20R337P?V#8n zTCBbc8vm6(`7)RN>0D~l)!mYsUcFTPtewZg;_YIz6yLdkcSR4%UD4zG=8INs4hcJ| zHlLN{tTs>Czhgo~)#hdU{#CpF=j`8i7A-Yjf%b?Xnw;<>i8H#kz=LBPr!%Rsh395K zk>*+7uvdJHe{>ppng_>cZ_#`K-1_<53FOX+B)3I~SbbAC<-NSVgbiZ};A z(z9jbHvAZA{ay_Y_gwX1kw!*B=fGpHJ!EhF#&MsX{d|fu+MTC4NNqE`#Y7!uSmRJX z86*_gVy6Mo5Sa>dUDM{z#8K>;`GexTl!G~iA?r)php;GJVlM`*?TZP_tvFRzI1bL{ zkUY3gTZ15m{Df5Chq1x2P%m;5;n)NDg6xLVK52D)RoGmI9_|F|&hjKSA6V7@s5zVdN zPKxF@dD~5+;C>nNh_#tslrP!2aM6OL0>`K=8>7{JdIYvb4+4za7%ko+A>-F1{`E(4 z{bn|b%{TbB@Xd?L&q9x=C(6&W7V25?aj#lpq69c+@M!pTzt7vwQnR8l{9Kq zGXtC0*moXwtMfM}`Z4*e`Uh7b$cg@k6y`>M z;}%xoJEE*PchK+7C1)^G3WJ0BYSv8Q%NwjkngR|<#O4pJg(bnksi|^seC*8%2b-i} zXs{zizA47ZGz`v7k;qcnV9!M4b))2NFm0;Z%DRy$JoQBF`-z1ayt)%d73c-L+KR6V z=rz1rNv~xyui$>KRiQSxhZQ{z?kB954KO;O`35gQuM#i4$Rc;A4XE0u!RsC-y@%;~xBdEE zypn0S(KN_%>7Y%-li48jFCF*mbEGX4_mN1o1tup77ji*6WU0|~o{ zr6b#e5H$;PLk@Ev@u!M^5L0u5|8}q=i!X-QAHMp=7RWk-j?1#8ESt_U2?|PN&h6d_ z#WBCDU`QyzJUL*#ZpY$a-8c>{SSZf^26smm*D^sJ7aNK>-3iH{49=wTpBAT6? zueIKf9R?j;T3S+X7t#!Rm}?+^%r}b}$@r3N8vYY}fG5fP3jS*CYtg_w)UA=EgF|0j z#NVw$?+U+(41L2to1K4lI0(+HxUcys;lzI=fB(+q%I5c{fj9TDAotC`Q4CsA6o$Un z$|y*coU<=E!C_LJ&5?ycgZ{$Y^Mdmnc-6o^@yxhv=;w+V52%c%J=ynf!)^*GVVg;SDYq%^p^QK5O_vsZ=}s zs7fvve&R+PuT**A@jkWsJn|)Qt*MG@f%jD_-Usg1q`2FitS7uLfxFF6-0e0T*Q%GW zmz&AcDkRZXtS^_P73sSI46VuO&^8YPNbNG0hgC5e36?QgcxU*6Z3cdfKx~j`qi^`D z3GAwgGzH?f`IE4m$@r5*CGq-UG7g(s9WSYx{|^%QP7Aq>FcmOAo6+?0Y8<2KVLkLa zPH*Aa1d-w2PUI=DJSF59=Jsfti3m>ttm2snvIA@;BALQ9e7Yfi57bB&f%5QxdBo-t zBb#DeV*8{_0_W@7Y`|p_4r}1?_Ufq~V+{z>kPXO8T-M+)4l1=y3+#Xb>6DQ6?;Q~8 zJUH|=N&gN|z4?_EhqQ5YvXJ?gnB%fsdcpB>T;#e%eE#v9`5M3o?0BrGyXs8^(zqa7VA6%sBy zs4@&Q56+c=!UvZL;YAKESA-`@$-zD-C0SHTO1YyRtm)t_P)eY{yGqGHI|=FFeXde6 z?cm;&6{uczuzw33z|c?agcRx6A*8wVI~@EL=7lNSB3kCvf-`jQO zySVx@s6Z<1HAWD~%foCD; z%BS&Ct@_a2@-k(I9uX3leQ2MntY;m1QVRWth6rCBV284P=m_W{NV>?^nuIP6JqNl7 z#nZ*1QE3=DbWYKQYIp?=18kV5%}@_oea<{YnbMhkmPGiV&|moT_RbPLHd3IHGDE z&UI_fJgjnhdJf0u^c+^kN!HrI7w3(T!{MqXmYP_h z&t$zNeA;P0tyfPsle^XNDXv=dI&;{(1om?HuN*lorc;2X6D%JbJWI=`P%GqlzB|RR zVp1cXmT2WfM}({8Dw9`Wj{zw8V2@=yo*=~I3FIkqA8qR@TUl4raO(Yp)4UG z;a?H>*q`$mfYtYGLxO7JW}ZmCp%@}!2<4ON{N#ahTg+RW6K3B^<#BDrXpqWK6MRfN zjIS&fi`&(>wvv`oz^J*jO<>sO5IOdBM!G6^_H{1p69eX`EkurJF(GpIr218H%m{OmcapVRVlt&KcIDL5 z@il2IrbpLoO-ts4DcWU7S+uXlwW!RY6na=`TBi?nQPa8`HdAv8bRqNeZT$OL{_UKL z(#{3=GiNsbw0ApY-J3!C&|r?7Py*)2^Gd)RQ3rz*9XYQAjARWR`4|LDCIyVhj0ACU zRBaTHK`Htc=NB+h&Y8sFHK&28Lq3|Df0H4cf z+{2Q<4kWeb2*Z}H(UGP6C~%ETJTT^{u1NMMBP@0*k?&|x0>zG_s{~S!@s83hFXIWN zxR@lh|ZItUjot{UBk(_sYFNj#&B-(R3g#PUA%EpiRef$Pak=Xn6X|h z_0i`=sor{2ohKJLdfv~ILe001zDH&H=VB?B(v^8_DbNI4VR(+9=jf|&WoFWq2{v^@ zgShJGn+g|>epTVZ(XYkf!qNYuaN(#V>nNXN;OGwp?LtR?rf}lu&t06zKC04dvz`k` zrH1D+l^XqA{*7?NHFWEhp$p-09kZ3^4f~&CN{EX=Vzz!T>-4!Ug;3AU=bDud%mui7 z&uvaXs3xkW(w(qpVeJc81|c}k2vxJ;ffz1+LD!FWYF)?H6t(%erzWDC*qZRV@pSG4 zztnY1%I8k-O_mSz*&Oe=FT}8~G{*7blUf~%(&k^HoV)yMynVQsT&rh5u|=2Uz-1jp*Wyh3~IHt1;y3hlAGrD5pUgRZ_5I;OG@ z!pGvW4`v>Vs;t;!lVl&btj*P->eW^brSr5f<>S~X2PwvBJXy-uJ1M(6_KL#JV^{fR zl?pqLeIWrm$7v)t;(jfpm18m0Yn+~N9X?2kh#ZS$%DRHv73(fX#C|N>;gP@*k0){d zvj>(ECt*|`uZiL0`z6i_ZD1_>iWMGLy9dL^UvXLC^y60*4jupGjaXl~(zM~Fs#iPy6b?y#^YOP5aHyEx zIhV~%l$OW8uF&T=H$vd_9EvpGab^(-Ba=u0xYGpYChO_A1JuaBb4C`VX-i~jQs0rA z%pQ-N@J(c7s5QB7ECE$c(3=y7Dkpm12UXlnbmJUd4yrKg-hAQsN}|d}vZ{A&TsiTO z@=TrBr*P%OfGlb8iKyaF1efQ;GmbY(EOAlufiJci1?QA~re!?l)SNi2Fz3X}3Uf}J zkHef3A61xhLISEvh}NG_s@MDzajIAT38i{PPQNkH8sLk$v|lT<9jP+Mb8QkS}}T3Dv=90$$Di?f&vZueEr$kSHC+`rxzN4>-yY{zJ9(?3oRhm0 zHr@l!`A&W)fpXk4Ed(iqF$!JD?$&X97(&9Px^kk-xZ4DR6G!&Rk2>!p1SeyOMJB^Q zSCnmQcAQLl6N}8fN}x$`WS{)XM4FWPh;3mb2`4Cqmb4UI17S9snfIn{>X{@NYuB&D(Y&% zpINkz<}U}2pFdl~LB^@&lARJfwOX=Kww>CbNd43{#C6fbJEQ*rv5@)tx0GBkhfwG_ zbr-U_3Ymj1YX$d*Pkjh%F0YW@U_X#$M_kD+lPh5j;*fJ$gY+V0;=OB$bs%2tE(#yv z9v!^0X|U+jh_I09r%nk;Ej%^ql6&DPW#MI>l9X;mwR28=R%$Lg^}1WL;*{bm1*g8O z7=w`VslNs(=aUCiX-k9$ocbCRPPIgvEmJ)`4^xHIi#04ft+E+Ir&qXKr~b4`q?mtthYOAT)5-@IIemW|G)@nX zhsNmxCXd<@$fG?{Y4v$UyE<}T{J`-E9QI*o&G)=#ycO2PXE|$_%pX*!Rg-t{yBud?L7>i z{=a~KZX6hkN0X&tWHepDpBhd3sM-O!c(l+3W9g_;U7?W5|z=Eb9N2R4_E zc1xeRqjHdjsyTghlN2r--QxCHIC`rTW{%#emWHFZjw=6k?`WL=x@1)OuX9Fi|21pQ z96c`0dqz*XeHM+LmBOr1*`lvTpFjF3DO^7KX}4z8sLHf28vSE;^y#C@+FdyM=Wfly zQ6+veNB_>P86N#-=`%9=3s>JO995=o<@3oY=5H{^vgao`0}7`F(P6q=$MK%6yt<1= ziRIB@dI!E=s~7Rg9Kxr3^=q;b;$H4C&tfUs;Dji)fzX_(&#~LIsy3)MQ`JL16{<{$ zRMt}>m2H(swXdr5Dqf-Idet-P)u?dsY92hn@Rjx;XCNoWqh6z`hhAo@wvRhOFgwg; z{@lC_8U6fp$TP_nmSd>$nJrwWwNdfFhV@z|2$k`iyBSnU3iLTRv{~y2qXiD9Kns3X z8!bet=TWLl3pp82>cMAimqpl%xP!AP^Q#zJ$f4^OG9M&h%lrU(hRm0_WJ~69e9VnW zIdCf1Gbty7NjYvkiOtpP>*W0V>xSi?UxVNgQYD|?Oe8U18?ct+HskrvItqk{3Gs4@ z#!y3%;BJAdr)|hn@dwLOk=b&K@VwpDeTp;|JNVbYr=mj0Q*mXCYb#z@ zd0NKGq9M3ljk}dO%TswHw=G11y?@{BN_@0(i!-O}_noY*$kiJ~D9wMSA^VXm2c@7g zgw$sFCA<>Yh&m)M?z*bwN~SDHMXpliwh&-QJ-1BYC1vt{awTw(Ufe6`S>_`3+d^h53ZL7;t>>1x>Y(dccU3?4%I(>$=X&oYb*d?G22yWa7`T@|l25@$t_b;jW57zbompq{V``;U!ys@NA0bjf;AEatDykyBTxcte$=dC)tE$+Q zqk1Oe;t%#rfDiraYH|>wH(COqk z^Ow!k!|QOa5cx$9{|K8YT5YAMkY~M6)4*k1 z74mFI1bFCdwyQMdovlX0DmI*<-K-kcq9HhJTtju7e&}ple8UMb;r1?A$(RH1s6FRcNARV*>A|=)SUfx$^)oWcJ{jyE%$b{FB8hZVs#3Yd6as_ zHGE&qi3IbiTi4d<_(BDgm`l_au5GbZjq9ijw~0l6_LpGoSY?sH%;$p)Zq}BC0g3i; z!Cod|BiP%iZR8H+dOLgOeI@h@9%bMoPZ|*F8F(D;S@=RL|XMMV?EKW0B_q zQrLVhthl1E$a9(MrUuQ;ku#qKkLkT`PbqAh%&dtRKK?`+!gb-;~ z_K_Y?1?-53I1YsEi33uc34&9&3ey`AR$NfF98B&^C_cAAvBGn^!Cw-RbuVU|5 zJoX{G;d8Dz9~wI&sF^!zqZ&ZVtx`MmW@p! z6rc@~)k9pvG~-nVua??ZI0ubaGiY7PDQTN2G3r8EWnc$d$?|yo_#N z`Igz;lqNa0FzHmb=fku@Wy8hc5#TM z=h|{IkXT1zo(aooql(^3ZX@p|52T*R2DueW^oDlZS&F(Bk2{MXf=gaVgqd84Yg;Dj z3OKoP1)=*?rYuiowhL)pbl{gXp(#NE* z`K3=NsVyS>C7w0}lV=&4ndZ3?h;Z}jqY&C1OYq111pl_J#-Hvx@keBO8)Z5y7d-y@ zTu63HZ_}nHnLo;AGVi;~m6SjK5hdl%zo4Z2`InWHKYv+8nBO`7ZAkg7ndk*+H>DWe zbN(|B?2Gi7g({PMJ{KGuG3MkiKL3`yUHJT;C|-U3PhB=#c>a4bK-Kvls<`p_f1Id= zdCqdZE=B^nLYHNwvDr z>(Jf*K-;_^4z`Yg9y_t%!V@vIOg?*%j!lprkdwZOFsBx3VAO4p^8IY_?(JEU3g0&&xJ49 z=I=$G^p^SN_Z0R>6_|1w^gx$w*J%FKn|DrM%P z<|;FJ7sKNlUd$NZ@M3}8uq?h|D;n0*cC}5=;Kg<{j5k3GFRE}r=;C74kfa^HxK1Je z#kdVpg%|G-099VRJ7o(hm0f&rBJyJgfvr1KDBS^Ef1SGeV8-T3F*Yv_0a0OM+af+f z5ii1iDzE;hhULYRigqrZ1^ysWMMAF^Kkv|vn2zIw_W#~=TtRtyk*D6t{Kv`3|EZZM z$1Gm_l|zQEFmtc|S0>@5AVINu;5J)CU78moQsf{c5~+MUModCSE@4w|Ov+3qQIzx$ z7uga;!j~9Ag86qz9fsF)>0Viqj!O^3k?^I5q_FwYBZ_K8c3gT)-4vqvz=hZ7A%mqy zR~BqO2nk4oyA?rS8WBHM@X|BA9BbR9BZ{Ceov;b|ayAG$?^K%AtytP=d{E?1~bkIQv8BGyKg)v=w5zU+)b7^zc* zk*=@6D^k5Y$3b;B!Xpux3~Je;jTfqD&Ii%AFRv05D7w5cj#Mu{>Zsd7s-h#iQcqMu z_f{m8+`g~wE2Mh)m@|J@xfSW?Dzeh$`>LwKRW5&QBB@R$J6#R*gK3r|g@ViSt*4Cx z_u52z`M+aCTa~C*;sYEpKh9(X>Zpt2(eWbS2njr1`Ln-)Dr9@5R*~T3hCagNcYMTQQ(4CmMd5El{JcV zuWYhO_sT_(ZqBuP6zNI=^_4puSF}*A$l}R;Eu~i;lxc^rsPh>jSDsXqB6N4<=y)o= z^5OAReC2sX#aG5$DlWY8ahYVzmDf_3DO`4Cl5@sfWw1gK7Ubb8nOm=KyRoTy<+}p@qANcn>8Qli$d%uLbi@*LNyoJlZ)6xs+Vs_sGaDfZ*WSC4 z%{CXnh+O4SN-6xJ$7Ja5O0S7Vl%V?6PQFCSW2)uPW(tl^H_` zzOk#!7|M)uI2B&CGls7Izs9}*3i$8PFOYi-9mt?hKLovG7~ZO8xj z`#bl(`(6TV`H*+-J@=e*&+_~I&Tl)v6Xh|K_td*6m`AR#!ssFj1fKc>3g*WYd|w0n z$pjbRLnlL$n0_)NYN0tfMY>pZvRdyVILWi0C%6>4Tw#Oe1#h6H$T^Jr3TB5+^%OX% zlM5a4EXzwS`M;?~Qx0$har6H^)BnkJGM7asHxsC)AL8!L^ppEzFhd|xFhdOCvc~*< zh_aXr-^q_S&6HI{Y7@hV4`n zM57(R2=#{M=j@F&!>gAI5)H4{NHn}fOZBe}9|95;F3~td-)8UdPA4u9ls6Is$Ud@H zut^v?`KhL?CNe*kBvxKIe6O_LKWxcIW)6Q;V0`KDpzB~%I;?lu<_oKqEU&grLW^eK9$ z8Ykns8_lZDv)ERKH0bpYnBSmJ$-~_)PuXS8*mM1yup4cYItlbT#dC2nwe%K(P$+&w zx%3tSDd47gkOH~O;N67d^;}<~$=gj&trzetI<=KOn}298#-Q<(0)dt9xNM|gq&!v< zgxp7AGF=u_NVxkbDqfdg6%QP7XK_6FuOaa`^%!~wt5Jsjs&Ja}1$R%sq&Xa^ea4=s zWu~(L+&h;eb?=1cOy0qH>IWRHjgc7rBY_Bg znGv;}NkW5(-01pXR7Hr4o96mklt$i)hen0Xf=)+g)F+0!sl9o72k^Ti8_o<1=})|% z4L@*yNHaFlFJgh-MvyUj(|m$+VD#1wAt9r?H3=EjhO~^)`w~PYD8yq_A(mkwBT!dy zZUJVgJZ2$PZ{n}volNT_U18zqgL)|*{S**0n=5LW(IG49=%YYPz>ts&Hlc8INF(Ox z7o#wG^c)JtI2VjwKtX5@q6%u$PjEEa6gT>96fEW!rx|PX7hgp|z*|(oH|#II75&9u zqF@dS+FqxD(O;urZcM>xxKxPcO4X1#i;=T zYpn;iILD)scMxn{{(HLc-?lI0HZ=?kJiQJW2s#Q^FJn4)w_`&BcCF{YaTtya(~WlW z8%xCWl#6NAu8X;tCy*fUCAk@EeF%C};)khij)xvDFnFG4v==^_wAX|5%uIeo$D=Th2b zF+q?Mm~&O(fh~21NvYnbUYV? zs<=LDQm<@vm>hKE^nY{Q)WncgJ1^t5dL2vpTXlbL`?=QmZ^P znyijMz$CV&V(bNJduZ%i62UcZ?9GX2Klau{v>*GKM*FefxM-g@_LoTo-=A3UOrkD` zqxd2b18dJ@XcNhqyvf*GrA;KOh^fssrpAP%XjBa5cZR{qL3(Z5E&PUwhCn{Ko4lHz zY1N2!rkwzz_twoivlcX31Zu$;L7)lv6oV&XC^^GG%1|cQ21`K)DI|9>D=lTX^fUK3 zpbvLV+kz+%euWkEOg~%bo?3F|$;b*Cz4>x}B!tfD2)xRjb83mixfvXL6f2|U*#dA- z4`mb59}uD)?@0pKbpI*94HMyOLNJkw%>v6Y^ir2*-jj*2$* z+`T%8>AA~9MRTXM#nUW7OwT>w%%JR+jvlt(A zL*6-LM}nB1`%=uMZv z;O7N9F!F`3>T&$ug*P#dF~MLjd<(%~t0x76y`Uo_XI%KHV0g_1I~ekX%LGG)k$_C| zMmkp1O8+k~7&0W7%LQ{Ax8op>OB`f9j_u>cmmSA(V$^)X_2h9JZ+6BJq}uiRC1EQV zpC3Dp5Vn=yADh^WYp3e#{5Hu~%7X^WIeYwo1uP{$I# z>~zY+HUu9!oZRUaTxA}}Ad?5KgA;`ers3J&24(^bPUhScj>{}HhI4Co;Mm#_&$Mkc zeF3u4_zX_(@Zo2nwNUMvfvbT#xP1$*zeUIybDbu7^gnY^3%LH z_7qvbI~r5fgZ?CsdevjhQ)dmMR6XkV8%r2Jx;Pn!*MmjMGp3t9uaRVWJpAY~^YB!i z65rEgVt%hr!f8L7{py@y>``CxXBjEz(Q3oEM?LR8+@-#zABq`uNPSZM8&0>Khc3jc zCr#fLqcB-FX}Y>#70gV){u;r+p3Np zrnc80gkS@?FDJD{J&knkl*$flrrT4Zwup+TfwL6ApZk0`9rbl@PZ2%x>4MRd!sl$ z?@uK@ptbU?V)>-Ms*O*{wbXPJIT^p5)Eio5Bt%jB?mAYrF@pr4|fEoQ9*9^}pp%VE9!pP>B z2fW6$1fO!^VGDsa%Zq{a?C!9sO`Q5g{_O5JtIIUH;f>Q%tiA$R??}qW;7<4HXvP_y z!#?N0_wJcgyf_&L~lw;%hW$iU76zy_Ii7qi(|`1 z=bk+~_TK`kzkBcYdv@*Eb;quIdi=V1OD}=o7k^qBSR^eg)AL{!X+WGJE7|<&nJENp z=0!ot-dqJJOH>2xGPdRtxFrG7SL&5-UDb8O)<13xEHu)*4(2o=`hJ{xm;vz%y&x4? zzI{o?7Sh376Jsr8VWsISi&LK`4QTTA${gRSK#;oI?3RKNdfj#j<; zD8NOqp}-4*0-Bcu10qf)$CxF;d#?w&20nJlIGR0W`f+vaqaaR@Edd^=(Q00O>T9*P zspk<`O?}(H4gx2DB;YyBAFLEXkH>xtc}(yQOiS||T6Ot zLzvWB8UD05b(E*PPxbatxl(FP2_Z}rQ_w%AEVgEZGL7q)f^*oJl4Es*K+>3!smEZR zwW6U=y}*+IHeMF-Q%Q2ws0L^d+}Yt%oZf;2N9~Qb+tYF{|6uFxIKh`!nf8&YCjR7f=(^y&I}h7cChYO|l`Hr1+cg2l0xVd=y4K)q=XP6ki{0}c&tHkSwV+yv;tgFDZ< z3j+yu*k{b-Dy4e4U^U^)llU7rQW>dO+5uoo)wf9>jzt)01Sc{NBt-MwzGSb%EKh!! zlk70auV7iXh5&Q0?D~yu$(T5RBDULjz}Ro+H*vj*8wjS7rNi75VUgSi>@?IrSeHa* zyw`dG2#3k}qV+Z2fGxFN^{b=mRmd|IExpUgf7OA9q>YO`sKJmWfcEbqq8>;ltDFd; zIUjr|!D2&_vCcdI??nPqk=c`Ec=k79!tg)Nm>yi7i?o z>=J4vK$`cRM!dT4GmnE%G!;b<#`?4KU)snq6BVL^c0gP9p z++o>`l{;R&fCTKF@?q_tDIz)tL6pS+!rW-OYmW#z(siy&{hML5+yJ2U`iN_!>N~+^ zXvwqK`KH(Bbzc@vc-iiQ9v1AtUDf3vcZr_;piwi;H4vIS$)tAB;#Yb+F`WDd3A7+R z19hZ%73!Enbs z%+`GWP3pVAEUW9U5R=?wtjrkaECX7;bWLd@(z@5CG?#sulMFWmOeO|9)yxGJV03b( z%cW3csMJEukd_IbnOY_SQdX5HMY3w;GH(XNl-JR#D`2Sl9@rIP=qwT!5VVaVr`)#H z5s<*Y!KZ|%p<7~@J4F6T-61*~|83HQJ6~mcl!$|KqryuC?nBMG@wAT({5&( zu(ha*;?Ujfl_L(p2*q#d&&1zW?oU?VM;^cD{yNQ0&#Ge!v*$IY0HLcp{eBOahI;h_ zB&HdAivu&c<6l^2yTz)HoC3I$bWlp9uK_ueam3^;`-`SWA`7WF0^E5IUnfiKe`71<~_#XOJ% z1`w=}rze8@i_*5rz;~)2LgZ7AJ4^?dL7!2_%*(jPDvx#S;rf!#7a03Oqs#1(qmhz~ zJNW{SY`B@Lh1gu_hFK)~H?ydg^3t?&%*I^eBF0rFf^)Po1F2YoZT()VJ4c3@uPZCi zD!Rg|oyb4C8QRl|@D8lm`Cr-t&K~?1_Pj)X(AESt7$>qs(n@*v*MG1F3MO&_DSS0@ zw4^4ds!?1sc7aUWGFy2)r!B6#od^@RY?)kEUCoQJahqJW-oT5e^%l-uQ`Fpp zJ%fbsD7%Mn!RoU};_`Fj>@w;WS6jPquGlm(q! zWK5m7WL%?{jBBd=CF(zr!EfA=9atu+2q;acD0Gx2Y;N)tTRBn*#4;0W8;C7A!?8vRy+ZKht`Og4SMajRiR77*|0R zpefZHXGMtf%~T&&Z%do=%hqQCw=do8Bi{gpC#9wOAlQgzG973lWUe@)*5?5yfwP>< z!v)lhr6-#9n}Te-xyC$PNJvXE*0PcXltXTVM+jlXPFu({)P$OEXNUlFGS`55C<6=h zzVrz|fcamjeu7E4!GDdBU`|h>bO}u*f8sTVaBmWptJWkwVj=ca^QX>_QLTYE0iU=e*J}Bu7WBK)>>shl0h0swZ&C74aaOTwK zC8}?FgN=r@#=!A#d=t1zG$!lU$gHPtl%hc@PU1}X5TG|VR?@Dx#NP3Y!H(Yh41Q9! zNU^HCJ&EjI-uZso>}A zf{#ZR9Gz5fY*N9e?Sjv_rpQVhXUJyESFgD4PdVy!NerkrfxUKvOV!)jl~?@&wvY)< zjBtygsS*-ap590sbBE2fwAo;3Z1F6g4>0sA?(hN+C>vWDMIRemvBfp|&e`lrvktbn z#+b(}y+OXnlARjbY0+=hI$i@HD$$|tFZU>WH^t}){nrF<069>^>U3Ht0SzT6{e(NI zqn$ngF-A{u@wK)%1|xAyl3kgXyL0zvZZHq!aI85S1s0vM;d8Zo2cCeZ)*}&{Qht;d zk({IHWk3RFe`NHX1SF`~z|CT9hqwgo>w?w2=~`ez6D{oWGt;)RThB{S_Vw0F!p5ar z-;_w**IU2AGNhi~0>)nbQwM&FF4m zoCu?ZQ5I(0p$XvGq>YBRFantzFx5%vavp(l9rQB#NGcWffK*&M%+&h`s!8JJ9o`E- zfMg^m0oozG%D8d5j%n~5r^{VCp_D!_(Y`I=!`g@&9$;T|tnSY6XJC8;GZ?)$(e-E% z2f8^lF```)jJ>)wr_q`&Qf{e3oM+qFJE&%%v0%O87#9PP601A>f&-DYtRLJ2P>wDq z2&WVxb0<;{6+?*HEkP}3h^aFgEW>ZGCvL3nUS9+(%cH=uJ7SuLSZZ&YEuz6js)YsB zPV0zlz1<||+(gIf{-kvY#?h`VC_krE4s@C$2Re0-ufWla?Gg)jeeXgIuDwgO6Zy-% zzXrS(fB6#N8^jxuui@=ozmU`$Fe8K;a=z`p1_gsGDY0h#slD3;P|JJo6)>CEd!GxS z*}aD)F|Aj;6l{0b-j9R&#ssMBeHhdiq$L8Mg}tAZg2CRQD6-v4AGa8fvtIhRVdai0 zX#2SJM*Fz+erHm_*C!Qx%l_g|U3%~D{hbV0eeWN%OM35LCZh|eIgtP~e1@jxH_;iT zXp%EZu@1EdwHXd(?NmPlVedt}ZT+Ejm_&cyLQr=h*kE^~qs;*|F|iRBu_>2%#4f-IxFmk*eOsNj&Lt5S*G_T$ zlG+wW9KPgENQku6aj+1q>buLqDwn#uQOR5n7xzxwO~J*v#J=wVVpZ3nt4Zv^ocEoL zU{!Pkd^uv>OJYAYf>n?{Y+Q2hAYUN_(MmdP%|A2+RjN<-&II9ayAI6SqGf=rx!fN( zcM&&dyt&9oRX+#sPL&jhKtdeVG&-qLCy}k0U*fl|I<~A(t$u-IL|@B}ZkZ*s;i^(#0F<$*&NHS!e7S$Ew@6*OJW6SCM>_EC!(f7Bu5(VJ%@_H zsKQe3+uEpp1F>xp*gv=%6d0!2gjHBNg_G#a1Lb5eC2ueYO&%-*g>kmI$~~O=SwDsj za`3ZllmWA@hsD2(%JOuM2AN!>F4zr>1P`06ev2o+vG6W`sd@+L2a&#tD!3r+<)F>> z@y}3Y7OLMF#ws=FCxpUy4zURtX~G8olnrI&0`&!)k}{R5HyNce6KeebV)_`;(@hNd zVk%MFsKbTH{#eorQ3mFNoq z{}??8pq?6MrjsB@9Vm;;bgFOLwd!3!q_qQZBm;|?w1LwF$r^$rYH`P>**pL?)`S(V z&V*-&+VKky$vF-r>7JNt=0pW;1Vyahe!cQpg{_Eas0_q|HA<|5n`BYn5nPv z9Lhub{zml&Oq4Z>l5^>!lgA0JBG^>Y7AY0MdB?4YV#H$WML%?rFptq>R;d1H7;~-f zV{E~b=S50OGg>(BiPld!aJEXNfO_!jX(GasU>|+!*&k7I#s#mQ%ZRZ7aCSb8azGId zZbU!pgRFM|XEYH{7juF=2W;d^+scW$J?!&`8X+V?MQ)qO^F)JS6oqr=(yOi{oG*IF zY2m{8*?4XWmjc|N#SR$Bv{e9t+0m`x8h=g1%|c)xTrY~vP`FX98Q~@|X(ohQND&M( z+*Vzv-eZmJ#24-I1g#4IB#~ATGUTP<79g&8b)obKZ5B(*cS~kmN&L)zJsnwg4jj5@JlZ}Q{fJ#H^;hE}B z*ly8^(Eu~xr-M*79q(yXLlZGGuvBKkFQwjukbirUk(s(ywCbYLdFJc3MC}r#62jYx zD}&os^=E|g*^V(4KlwTnlLS*(q83^~$^6ECoTJL4?$KZ{(rG@hy$4`I!b4U*Ubi2@ z!>nYjX~?2sc9rK4T$#+>Yt>&U$$rX#jx4Hr0Mv*DimCHpK@XzK7;VT4wm<7qeg-Z} z@$xN_dUO@UpZbeb-}YJR|1c?P91sj$Ry+m+Efvb>EDwd+ZO0j&6yJ70Iu;-3&D#`> zv%nD>?P9QHuX>+t{Rwg;n!Y%gP0`j&f`T--hM0v35JPKXWHHJ&AvU;^0ot0Be!H|i z-8>AMNdyM-Ny{`Sar}O$3#BV@nQIA2nU+7J5Z81o7)pwxM^%+k?Sm01AQ}>L9~~WY ztx}N33i=vAGb};`*amZ7p@oupRxMt_{vj$`StaCUHVQ7ZW@B3Mc^O;S&OBn2FS5Fz zyMl=p8O7-VV&-ZDuY_I0+62QY5-W>g#{mI^@lVW_TutZGYRy%ZWH+CK&K@LKdu@ul zzg!))Amh)ncsvE{hRIa0W-$I`G2JvXuts2fD(Nsbh3(DZsq4w9$O%XioleL+;IS>u zJ(=i0CKs!cAkOS9rQ!>-k)|v0rWH#mudzD`WB?Qfo2gL%|3O22o7tI=brDcv_proz zMV6d^^}UvIDk7{O1I-^KhwNE#iBs zY}5o-QqOu8g18|{A!&p2#R@{HFez^K>z_CtDPVu5PbYpxROqmhBv??LyEv714x0CZBEK!61^YxUbDk@Wpc~|;R9$pO&(}nQTSjzuchHbQYbfk zcxDLCp>Qv>d=Bv@F)XQs4H52xWgwwVx}CMw=g{(ypn+~nruBG5g9Y3o+#$?Go_`v9 zhOLWU1KjRvV{bBCGAg+$8l{|fT)|2h#=ZFaDE^LzsE~{Ns|Fab&1=FH8DKoj{fQQA zh&}lsxpo(a*s>*B-<;5Zh#2^A!(#R}WF2o#w-UIH|1Okk>?GF0P+Y;JHtRhk-O41e z4QMU&@?L6Z+0tTf&s+-?6^B#66hoT#)1MJlf|8Od!FNHxdMSfcP1&~(`?+!f(^#vi z){^;a4p(5d!1T#FpNe5?3D?c^VHk&98kZN=Unw$QGN#1d-nVH#2OcZ?`UrS4o5Qw0MuKu%6Aw>TM*3M>*)JMv%FZ z!cWZOH6uKF4Po7^nZ-+SjaYfj@V{5H)5YN*0ab0yuo?cPa8_pc9g!Z)@Vn9wGyJDI zR%P}Yw|qa&bW>bt-a}3u;Pq6(M8Y3-cpFXHC{83cpucR7`TIbmWFUbP25er zGg9<*u6Mmp+wfQS_9X#4;?$|$TSdEL_WrV-?O4$J zJ8*p%Yu(cS)jjF`KW*&pGaE=7H}`o#g~Y$=YSJZm&B&6%3aa};?3LNdv7FYIzY1K1 zc}ZZht*?9?t8MF>wiH)SV_&0ClalEW8j!hV6))ATD|xAH6Z^=`vm{H^Y}k%qd786K za?V{v2wA5-jb>z#7&<225HP=74dHkL01kZE%$`!ocou_OM`xF5Oa|*BE*{cR^)m}2 zQLbJJB^g(7WdU1+j;Nm+>wQ5xFBFMhqnkV&xIyu|PJlHOGjlD~x{xChuy&))4lczQ z7r4;y6QC;KP(13otgC4~TlNag(0;JHH-!|>s#x%)-vR>H6 z@OC+~fP0zrn9H}_d<*P=vs*4&Dw)w{FWkC>P?lH~a8HDHXgQ{3-+BuUIki?JC?zuS z{CQv-SeOKOV%tuC3FM;Ujpf9{nIsQTA0%jla$_4{T-$G@OYQHpx&Q_8cmMMb*MY2CUn$W;(pVRuU>m zci03=X%el?Gd4@3)8u6RKcO)2hn?~03?F|-YHpx1U;gj-kp#b-g z>``GKY}w#K{YL!ms9gXzTYzFvHjEF{6bbO?0`#Ed6oLqR{Dl#O*_ksA&KU0YybJii z6%|oLSPX}8Pp21Zk7Byjt`K*7FV??26H=`_VisyGEXZ@L@4{+;SxANxEp6r0leAId z1OWLUjB{qdnqXWqtzQ9FsIds(2@1$u!2uwB@CTcmF*jOpN z#x7imij%|nA+*hlPC_-sU8!JfeH=yf9_plhJU+u9$KPsSgHFL=p09`Cz(lFemx&k!*MtBn$r9JjZ9A4 zy^EKW**7xPwB~EtXwA2s5W8mR^sY92U2i)rt`}x0FcsUP$#eYicGi;7O0P&Gb))`- zRVbAPdYf<8xjrPhlJD5g$CPkTUMKfGCC`C@Cdrn1r1NIh5?Z{6*@9MRx4!;RuA%U- zPVYUapZk`}bD%#*iii4tqTdgk+0BueV>M!A#9P;12v%5a!q5cOe^imk2h`g|+!7)K znqzGet|%{@Eo45c?<D2cgeNb z`oL9OWEWWvfZqcC$AkQ1b%gH~ljmEXags%9LNcolU4tFehH>>wS+zHG%Vphaxm>$Z zE*tA*tKRemxy-5B0CI0kQO_iy@d>on6$qK&LuWFy&kztnbNJYyUP_Xe_H(EDM$Gdv z^(vm>CSt!|roOA+v&XIKE$~zb)5Cc^RBgfcVXFE`5;jSEgb~fA`3~{C1rz%`Jjnqp z!)T6&Wm4uee+4gVuMyY0ycu%IX%d&d zxwC5sOda#G^0*|CGuy|^C0nOc(UyJ?U;v_;LXTH+ustg*q&KNvuu!7#DKNR>Mxo-I>ZLwfjH z*~*a+z7Em|6{y$O`KVLQ4&N|EZgRuhE6Ckm9o~;Ru%;tCJIMef|441V@L_QeO%C^o zP~iC|}9pOQg$x3$02>WMaR%-asGJeqve^y$O5dM5EpS|J7lDDejWXbUM$nYZwmeOsh7I>tz`9$HI&cF zt(QUt#yYRB6%JZLiKm5Y#F?z&E^+JYS^!l-F3x;gB;=s$D*JI2A3b~5OX^iy_0x9! zbgO_xOZX#bghOBX(X{Z#%POrr+!ceZdm$ZZ5FV*>!jwV(7zCK!4hK!2xXmFOGs1j? zKNc?vdo&I1?dgy{^!9Tm;(fgXd3+A`9?!daKe9H( zK7mF!@RW!dUi1}Nkw?~JjWw)c@+oQ8;Nl@y;vyStQ}e|gucBR%MMBBLj|CU*&^ zkBxEmN8~hEL}$6&+1^JUWc%H-y^owrf$q&jb(q`LKKNZiyoF|)+ePHg2`NwI9EMD) zg?kNRj6|R9JuvVoY}ahs0uXG}hq(rh{FqX|vHr-B?|Y zaWmcRs`Pp9y+__8Ol*pRiDQRE6T9VDSi{7zqcZTB$3CoKf&=b7_K6vUiB|h;9q^*| z**bD3KhXrL=-6W#M2?MOrejXMIW~rw2G5S3*aYg>(|V?lJ?GB!v}50r#ExUHAR>;P zGw;~zk{CMnCI>(h3FmkqcJhzyN(CY7yx*rw!-5% zx-rL#qTu!T^hpKlClze73%0wxs5rhTWhLSD__E3H3Q(Z?5>)6Vp5-Km9gv?r3wZ~A zyF{Pwg0vEk#L2>4i)Z0-3#*;~_-23?);aEhDCTx4c%vfz6|@D6e za#z5+7+^nss|NPtdpJxw)OyPr zri+J@6c?&0^$NB~n#ARF?_%&~8S&=$iw@qn4y)oNl~0;0LAK;*5jV}fi@~bn0!+5A z6R_$-NfE3niNY$^*9k0?O^00-7j z)0_?f9@gxSy?+(2n+8pdfrH5cO8J9%7eQmL;2;Fe}^g$ z9&o7S-=xZey&6ylj}cI9syz5v2T(7!)W^V{Q02i9=X-yXDi2}GpJSP}1cY+Hp&7lq*Ej(c_xF@0(-0~Bv<+JlntaXWN_K8iBn0Dei_FR+U zsV8pIKyc!=$v^;aVv@Rc`r`K!>j;0$>x>j0Nl0<6G%5qFo7}T z>O`N0f)mH1py0&k00piaW*|bYN=c9=L&1qr=X>z|r8g8dMhh*9p)s;HpLouJ0^$B} z(35@Ut~k%fK*5P`$3nr0-$tMSp$H;8oJ&PuMFGENug%aiK;in>`+x%VAui5swh#PJ zrUrwdJPigzB^nHdDl{0dncku44j4c|o2pIESVC-<;uwG!nxz3^Xc+(^#yxnb8vp^K z9huR>p>^`D;LxThA~CdcQo&u53huKD9&m}oyrBU}>>fJmLQ?tAgOXS<^a%|~vP=&> zj!(pRAP@Z`J^`nrsJ4yRpE&1!V(QQ{DT^^4WkX+?41(|+CkWm|2V!v>#$B_gh`@L& z1(H0z)dI-^0n4FR04AU-;w+qlyOs7`KJVnwT9zw$3!C}`K$iU=j~6&Cyo!Jrh+cKw870RHi%?3lYB{WL-pPSr=J0t0Q;tI|CBf`#~6aLJbTBhy)LF zONe^71HX%T6s~&6mS9F!ixzy-$a;+sBU=OzLL=8l(Z!LSwOlI~iqbTdEJ4Qa}0%hJvzg?wJ8QY(JPXZ`y#gvw`M?SBCa^wjYD9c7p zYPvWwHW?_f&w&8g$#XpB5dc?^$!o2ZqXkBu!}Q9Qic+J3r>JB1p`6cAAm?*LZ|fNO zx(2q9*ElD7bqtOCr$ZNEYmGh|T^=XX#gRWc-uU>T^Ixf{x0b4FNxiV;Tb{ zqq%I7yE=}}jDSfrT`Y-!iR{mC=pyOCJtN(Kh&h`81@m;g;J}&hiV^#oGe6KkaOOuc z@MUNIQv-o$QqKJLDgr^Agt$sIZlRfY{lqOmHD}(_1o3PF<~L@AJe!F5jaebj>NPlc zHp`vg!n0-a?V_{gu0kaHY@;ORoNaOwXPlj#G8g?RJG)>qB)BW&V!cADqaH*>xP&NW zeq%48BGf8m>Fg@ZlDk@#akWI0c#`gU42L_5cQAU#tea=IYWO(2gOi~ZC4sZ|JMbY3 zr5s@{}EzWmJkw2z@Cj(Pv`-N0|1rk2!$jE~s+adKtI) zpm+*Asj)LcYJ;J`2i!m!j^#jv!{}{4XP;qD7U>NNVA{{V9RaK8h@28(L)h{%DoW%7 z_@2$a7cfmefbW40t=$i|^Ep^2K!=9Tyefn*ybY(^Z5czha|*kbe#J|ROUr5%=zc1qC?<@&O;X~*KKm0 zdH(+iBrQGvX_rEko_|adbI(7?QP2$7?DJMlF~ zTFPpCtL*&uCIh4!6TVo-grCndAflqf6EJV^VED>-r;ZUuFCCB_VdsAV(11<=A#eBt z#oL4!@M&-tT`kBel|L^=%K2Vv=LvPyMk`i1!pw8{<{l)QXY_IU!H(femEtY!PVBl~AAd@ur@ zjZxg7?28fbY>OQJSQ%LyVWPAF^;+3Kvz*|$h^`sNJ?FqG#&u#VT3qKcV(vN59R_}fx2 zIQ|PwWOc#!P%uU`9se^5#)zgDOKStuBz^0}CUf-x$ei<+knUaWMo>lllB`=P=&jio3cq1UN)m$ zB!w58k$O8K($WO!St?q@w=o2tta$pxCt^?tJUsV~#E4O@qWlU9nu}jzKbJ+2>Eh2L z$W(DzWGamyj;o+?RpxN^0Ij!=MjD&r&*(7gbb=LiN(K2Julaw`dR^zBdES9*F5zaZH0J#y})l_$;h)dr=-)hhpB#O{{51e(|^#-Iko=*NnFqm4XU%={ZqEGv zCnT|;|4EneDe50d>BI-i`p-?qB~VtbA0Y2I(VBOV!HV=I&UO!clSN&i6jzrxk$U=H z1XRMVX6refBc@435NaGM1RkpZrl{KJ;0m*F!V1&>nns@fH`r<|m!jnK$%RK6sB}=qRbsj_ zn9Da+QgKm29tj5lq`;y)kw+Ss&n|XG@MhrF2;LM&;f-rnLVyx`!GYI`eFt{j{s6uQ zyjjgfs2y + + + Google.Protobuf + + + + + Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy + + + + + The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy + + + + + Determines which copy routine to use based on the number of bytes to be copied. + + + + + Reverses the order of bytes in the array + + + + + Immutable array of bytes. + + + + + Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. + + + + + Internal use only. Ensure that the provided memory is not mutated and belongs to this instance. + This method encapsulates converting array to memory. Reduces need for SecuritySafeCritical + in .NET Framework. + + + + + Constructs a new ByteString from the given memory. The memory is + *not* copied, and must not be modified after this constructor is called. + + + + + Returns an empty ByteString. + + + + + Returns the length of this ByteString in bytes. + + + + + Returns true if this byte string is empty, false otherwise. + + + + + Provides read-only access to the data of this . + No data is copied so this is the most efficient way of accessing. + + + + + Provides read-only access to the data of this . + No data is copied so this is the most efficient way of accessing. + + + + + Converts this into a byte array. + + The data is copied - changes to the returned array will not be reflected in this ByteString. + A byte array with the same data as this ByteString. + + + + Converts this into a standard base64 representation. + + A base64 representation of this ByteString. + + + + Constructs a from the Base64 Encoded String. + + + + + Constructs a from data in the given stream, synchronously. + + If successful, will be read completely, from the position + at the start of the call. + The stream to copy into a ByteString. + A ByteString with content read from the given stream. + + + + Constructs a from data in the given stream, asynchronously. + + If successful, will be read completely, from the position + at the start of the call. + The stream to copy into a ByteString. + The cancellation token to use when reading from the stream, if any. + A ByteString with content read from the given stream. + + + + Constructs a from the given array. The contents + are copied, so further modifications to the array will not + be reflected in the returned ByteString. + This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form + which is primarily useful for testing. + + + + + Constructs a from a portion of a byte array. + + + + + Constructs a from a read only span. The contents + are copied, so further modifications to the span will not + be reflected in the returned . + + + + + Creates a new by encoding the specified text with + the given encoding. + + + + + Creates a new by encoding the specified text in UTF-8. + + + + + Returns the byte at the given index. + + + + + Converts this into a string by applying the given encoding. + + + This method should only be used to convert binary data which was the result of encoding + text with the given encoding. + + The encoding to use to decode the binary data into text. + The result of decoding the binary data with the given decoding. + + + + Converts this into a string by applying the UTF-8 encoding. + + + This method should only be used to convert binary data which was the result of encoding + text with UTF-8. + + The result of decoding the binary data with the given decoding. + + + + Returns an iterator over the bytes in this . + + An iterator over the bytes in this object. + + + + Returns an iterator over the bytes in this . + + An iterator over the bytes in this object. + + + + Creates a CodedInputStream from this ByteString's data. + + + + + Compares two byte strings for equality. + + The first byte string to compare. + The second byte string to compare. + true if the byte strings are equal; false otherwise. + + + + Compares two byte strings for inequality. + + The first byte string to compare. + The second byte string to compare. + false if the byte strings are equal; true otherwise. + + + + Compares this byte string with another object. + + The object to compare this with. + true if refers to an equal ; false otherwise. + + + + Returns a hash code for this object. Two equal byte strings + will return the same hash code. + + A hash code for this object. + + + + Compares this byte string with another. + + The to compare this with. + true if refers to an equal byte string; false otherwise. + + + + Copies the entire byte array to the destination array provided at the offset specified. + + + + + Writes the entire byte array to the provided stream + + + + + SecuritySafeCritical attribute can not be placed on types with async methods. + This class has ByteString's async methods so it can be marked with SecuritySafeCritical. + + + + + Reads and decodes protocol message fields. + + + + This class is generally used by generated code to read appropriate + primitives from the stream. It effectively encapsulates the lowest + levels of protocol buffer format. + + + Repeated fields and map fields are not handled by this class; use + and to serialize such fields. + + + + + + Whether to leave the underlying stream open when disposing of this stream. + This is always true when there's no stream. + + + + + Buffer of data read from the stream or provided at construction time. + + + + + The stream to read further input from, or null if the byte array buffer was provided + directly on construction, with no further data available. + + + + + The parser state is kept separately so that other parse implementations can reuse the same + parsing primitives. + + + + + Creates a new CodedInputStream reading data from the given byte array. + + + + + Creates a new that reads from the given byte array slice. + + + + + Creates a new reading data from the given stream, which will be disposed + when the returned object is disposed. + + The stream to read from. + + + + Creates a new reading data from the given stream. + + The stream to read from. + true to leave open when the returned + is disposed; false to dispose of the given stream when the + returned object is disposed. + + + + Creates a new CodedInputStream reading data from the given + stream and buffer, using the default limits. + + + + + Creates a new CodedInputStream reading data from the given + stream and buffer, using the specified limits. + + + This chains to the version with the default limits instead of vice versa to avoid + having to check that the default values are valid every time. + + + + + Creates a with the specified size and recursion limits, reading + from an input stream. + + + This method exists separately from the constructor to reduce the number of constructor overloads. + It is likely to be used considerably less frequently than the constructors, as the default limits + are suitable for most use cases. + + The input stream to read from + The total limit of data to read from the stream. + The maximum recursion depth to allow while reading. + A CodedInputStream reading from with the specified size + and recursion limits. + + + + Returns the current position in the input stream, or the position in the input buffer + + + + + Returns the last tag read, or 0 if no tags have been read or we've read beyond + the end of the stream. + + + + + Returns the size limit for this stream. + + + This limit is applied when reading from the underlying stream, as a sanity check. It is + not applied when reading from a byte array data source without an underlying stream. + The default value is Int32.MaxValue. + + + The size limit. + + + + + Returns the recursion limit for this stream. This limit is applied whilst reading messages, + to avoid maliciously-recursive data. + + + The default limit is 100. + + + The recursion limit for this stream. + + + + + Internal-only property; when set to true, unknown fields will be discarded while parsing. + + + + + Internal-only property; provides extension identifiers to compatible messages while parsing. + + + + + Disposes of this instance, potentially closing any underlying stream. + + + As there is no flushing to perform here, disposing of a which + was constructed with the leaveOpen option parameter set to true (or one which + was constructed to read from a byte array) has no effect. + + + + + Verifies that the last call to ReadTag() returned tag 0 - in other words, + we've reached the end of the stream when we expected to. + + The + tag read was not the one specified + + + + Peeks at the next field tag. This is like calling , but the + tag is not consumed. (So a subsequent call to will return the + same value.) + + + + + Reads a field tag, returning the tag of 0 for "end of stream". + + + If this method returns 0, it doesn't necessarily mean the end of all + the data in this CodedInputStream; it may be the end of the logical stream + for an embedded message, for example. + + The next field tag, or 0 for end of stream. (0 is never a valid tag.) + + + + Skips the data for the field with the tag we've just read. + This should be called directly after , when + the caller wishes to skip an unknown field. + + + This method throws if the last-read tag was an end-group tag. + If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the + start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly + resulting in an error if an end-group tag has not been paired with an earlier start-group tag. + + The last tag was an end-group tag + The last read operation read to the end of the logical stream + + + + Skip a group. + + + + + Reads a double field from the stream. + + + + + Reads a float field from the stream. + + + + + Reads a uint64 field from the stream. + + + + + Reads an int64 field from the stream. + + + + + Reads an int32 field from the stream. + + + + + Reads a fixed64 field from the stream. + + + + + Reads a fixed32 field from the stream. + + + + + Reads a bool field from the stream. + + + + + Reads a string field from the stream. + + + + + Reads an embedded message field value from the stream. + + + + + Reads an embedded group field from the stream. + + + + + Reads a bytes field value from the stream. + + + + + Reads a uint32 field value from the stream. + + + + + Reads an enum field value from the stream. + + + + + Reads an sfixed32 field value from the stream. + + + + + Reads an sfixed64 field value from the stream. + + + + + Reads an sint32 field value from the stream. + + + + + Reads an sint64 field value from the stream. + + + + + Reads a length for length-delimited data. + + + This is internally just reading a varint, but this method exists + to make the calling code clearer. + + + + + Peeks at the next tag in the stream. If it matches , + the tag is consumed and the method returns true; otherwise, the + stream is left in the original position and the method returns false. + + + + + Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. + This method is optimised for the case where we've got lots of data in the buffer. + That means we can check the size just once, then just read directly from the buffer + without constant rechecking of the buffer length. + + + + + Reads a varint from the input one byte at a time, so that it does not + read any bytes after the end of the varint. If you simply wrapped the + stream in a CodedInputStream and used ReadRawVarint32(Stream) + then you would probably end up reading past the end of the varint since + CodedInputStream buffers its input. + + + + + + + Reads a raw varint from the stream. + + + + + Reads a 32-bit little-endian integer from the stream. + + + + + Reads a 64-bit little-endian integer from the stream. + + + + + Sets currentLimit to (current position) + byteLimit. This is called + when descending into a length-delimited embedded message. The previous + limit is returned. + + The old limit. + + + + Discards the current limit, returning the previous limit. + + + + + Returns whether or not all the data before the limit has been read. + + + + + + Returns true if the stream has reached the end of the input. This is the + case if either the end of the underlying input source has been reached or + the stream has reached a limit created using PushLimit. + + + + + Reads a fixed size of bytes from the input. + + + the end of the stream or the current limit was reached + + + + + Reads a top-level message or a nested message after the limits for this message have been pushed. + (parser will proceed until the end of the current limit) + NOTE: this method needs to be public because it's invoked by the generated code - e.g. msg.MergeFrom(CodedInputStream input) method + + + + + Encodes and writes protocol message fields. + + + + This class is generally used by generated code to write appropriate + primitives to the stream. It effectively encapsulates the lowest + levels of protocol buffer format. Unlike some other implementations, + this does not include combined "write tag and value" methods. Generated + code knows the exact byte representations of the tags they're going to write, + so there's no need to re-encode them each time. Manually-written code calling + this class should just call one of the WriteTag overloads before each value. + + + Repeated fields and map fields are not handled by this class; use RepeatedField<T> + and MapField<TKey, TValue> to serialize such fields. + + + + + + Computes the number of bytes that would be needed to encode a + double field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + float field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + uint64 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + int64 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + int32 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + fixed64 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + fixed32 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + bool field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + string field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + group field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + embedded message field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + bytes field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + uint32 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a + enum field, including the tag. The caller is responsible for + converting the enum value to its numeric value. + + + + + Computes the number of bytes that would be needed to encode an + sfixed32 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + sfixed64 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + sint32 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode an + sint64 field, including the tag. + + + + + Computes the number of bytes that would be needed to encode a length, + as written by . + + + + + Computes the number of bytes that would be needed to encode a varint. + + + + + Computes the number of bytes that would be needed to encode a varint. + + + + + Computes the number of bytes that would be needed to encode a tag. + + + + + The buffer size used by CreateInstance(Stream). + + + + + Creates a new CodedOutputStream that writes directly to the given + byte array. If more bytes are written than fit in the array, + OutOfSpaceException will be thrown. + + + + + Creates a new CodedOutputStream that writes directly to the given + byte array slice. If more bytes are written than fit in the array, + OutOfSpaceException will be thrown. + + + + + Creates a new which write to the given stream, and disposes of that + stream when the returned CodedOutputStream is disposed. + + The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. + + + + Creates a new CodedOutputStream which write to the given stream and uses + the specified buffer size. + + The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. + The size of buffer to use internally. + + + + Creates a new CodedOutputStream which write to the given stream. + + The stream to write to. + If true, is left open when the returned CodedOutputStream is disposed; + if false, the provided stream is disposed as well. + + + + Creates a new CodedOutputStream which write to the given stream and uses + the specified buffer size. + + The stream to write to. + The size of buffer to use internally. + If true, is left open when the returned CodedOutputStream is disposed; + if false, the provided stream is disposed as well. + + + + Returns the current position in the stream, or the position in the output buffer + + + + + Configures whether or not serialization is deterministic. + + + Deterministic serialization guarantees that for a given binary, equal messages (defined by the + equals methods in protos) will always be serialized to the same bytes. This implies: + + Repeated serialization of a message will return the same bytes. + Different processes of the same binary (which may be executing on different machines) + will serialize equal messages to the same bytes. + + Note the deterministic serialization is NOT canonical across languages; it is also unstable + across different builds with schema changes due to unknown fields. Users who need canonical + serialization, e.g. persistent storage in a canonical form, fingerprinting, etc, should define + their own canonicalization specification and implement the serializer using reflection APIs + rather than relying on this API. + Once set, the serializer will: (Note this is an implementation detail and may subject to + change in the future) + + Sort map entries by keys in lexicographical order or numerical order. Note: For string + keys, the order is based on comparing the UTF-16 code unit value of each character in the strings. + The order may be different from the deterministic serialization in other languages where + maps are sorted on the lexicographical order of the UTF8 encoded keys. + + + + + + Writes a double field value, without a tag, to the stream. + + The value to write + + + + Writes a float field value, without a tag, to the stream. + + The value to write + + + + Writes a uint64 field value, without a tag, to the stream. + + The value to write + + + + Writes an int64 field value, without a tag, to the stream. + + The value to write + + + + Writes an int32 field value, without a tag, to the stream. + + The value to write + + + + Writes a fixed64 field value, without a tag, to the stream. + + The value to write + + + + Writes a fixed32 field value, without a tag, to the stream. + + The value to write + + + + Writes a bool field value, without a tag, to the stream. + + The value to write + + + + Writes a string field value, without a tag, to the stream. + The data is length-prefixed. + + The value to write + + + + Writes a message, without a tag, to the stream. + The data is length-prefixed. + + The value to write + + + + Writes a message, without a tag, to the stream. + Only the message data is written, without a length-delimiter. + + The value to write + + + + Writes a group, without a tag, to the stream. + + The value to write + + + + Write a byte string, without a tag, to the stream. + The data is length-prefixed. + + The value to write + + + + Writes a uint32 value, without a tag, to the stream. + + The value to write + + + + Writes an enum value, without a tag, to the stream. + + The value to write + + + + Writes an sfixed32 value, without a tag, to the stream. + + The value to write. + + + + Writes an sfixed64 value, without a tag, to the stream. + + The value to write + + + + Writes an sint32 value, without a tag, to the stream. + + The value to write + + + + Writes an sint64 value, without a tag, to the stream. + + The value to write + + + + Writes a length (in bytes) for length-delimited data. + + + This method simply writes a rawint, but exists for clarity in calling code. + + Length value, in bytes. + + + + Encodes and writes a tag. + + The number of the field to write the tag for + The wire format type of the tag to write + + + + Writes an already-encoded tag. + + The encoded tag + + + + Writes the given single-byte tag directly to the stream. + + The encoded tag + + + + Writes the given two-byte tag directly to the stream. + + The first byte of the encoded tag + The second byte of the encoded tag + + + + Writes the given three-byte tag directly to the stream. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + + + + Writes the given four-byte tag directly to the stream. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + The fourth byte of the encoded tag + + + + Writes the given five-byte tag directly to the stream. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + The fourth byte of the encoded tag + The fifth byte of the encoded tag + + + + Writes a 32 bit value as a varint. The fast route is taken when + there's enough buffer space left to whizz through without checking + for each byte; otherwise, we resort to calling WriteRawByte each time. + + + + + Writes out an array of bytes. + + + + + Writes out part of an array of bytes. + + + + + Indicates that a CodedOutputStream wrapping a flat byte array + ran out of space. + + + + + Flushes any buffered data and optionally closes the underlying stream, if any. + + + + By default, any underlying stream is closed by this method. To configure this behaviour, + use a constructor overload with a leaveOpen parameter. If this instance does not + have an underlying stream, this method does nothing. + + + For the sake of efficiency, calling this method does not prevent future write calls - but + if a later write ends up writing to a stream which has been disposed, that is likely to + fail. It is recommend that you not call any other methods after this. + + + + + + Flushes any buffered data to the underlying stream (if there is one). + + + + + Verifies that SpaceLeft returns zero. It's common to create a byte array + that is exactly big enough to hold a message, then write to it with + a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that + the message was actually as big as expected, which can help finding bugs. + + + + + If writing to a flat array, returns the space left in the array. Otherwise, + throws an InvalidOperationException. + + + + + Utility to compare if two Lists are the same, and the hash code + of a List. + + + + + Checks if two lists are equal. + + + + + Gets the list's hash code. + + + + + Representation of a map field in a Protocol Buffer message. + + Key type in the map. Must be a type supported by Protocol Buffer map keys. + Value type in the map. Must be a type supported by Protocol Buffers. + + + For string keys, the equality comparison is provided by . + + + Null values are not permitted in the map, either for wrapper types or regular messages. + If a map is deserialized from a data stream and the value is missing from an entry, a default value + is created instead. For primitive types, that is the regular default value (0, the empty string and so + on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length + encoded value for the field. + + + This implementation does not generally prohibit the use of key/value types which are not + supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee + that all operations will work in such cases. + + + The order in which entries are returned when iterating over this object is undefined, and may change + in future versions. + + + + + + Creates a deep clone of this object. + + + A deep clone of this object. + + + + + Adds the specified key/value pair to the map. + + + This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. + + The key to add + The value to add. + The given key already exists in map. + + + + Determines whether the specified key is present in the map. + + The key to check. + true if the map contains the given key; false otherwise. + + + + Removes the entry identified by the given key from the map. + + The key indicating the entry to remove from the map. + true if the map contained the given key before the entry was removed; false otherwise. + + + + Gets the value associated with the specified key. + + The key whose value to get. + When this method returns, the value associated with the specified key, if the key is found; + otherwise, the default value for the type of the parameter. + This parameter is passed uninitialized. + true if the map contains an element with the specified key; otherwise, false. + + + + Gets or sets the value associated with the specified key. + + The key of the value to get or set. + The property is retrieved and key does not exist in the collection. + The value associated with the specified key. If the specified key is not found, + a get operation throws a , and a set operation creates a new element with the specified key. + + + + Gets a collection containing the keys in the map. + + + + + Gets a collection containing the values in the map. + + + + + Adds the specified entries to the map. The keys and values are not automatically cloned. + + The entries to add to the map. + + + + Adds the specified entries to the map, replacing any existing entries with the same keys. + The keys and values are not automatically cloned. + + This method primarily exists to be called from MergeFrom methods in generated classes for messages. + The entries to add to the map. + + + + Returns an enumerator that iterates through the collection. + + + An enumerator that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Adds the specified item to the map. + + The item to add to the map. + + + + Removes all items from the map. + + + + + Determines whether map contains an entry equivalent to the given key/value pair. + + The key/value pair to find. + + + + + Copies the key/value pairs in this map to an array. + + The array to copy the entries into. + The index of the array at which to start copying values. + + + + Removes the specified key/value pair from the map. + + Both the key and the value must be found for the entry to be removed. + The key/value pair to remove. + true if the key/value pair was found and removed; false otherwise. + + + + Gets the number of elements contained in the map. + + + + + Gets a value indicating whether the map is read-only. + + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Compares this map with another for equality. + + + The order of the key/value pairs in the maps is not deemed significant in this comparison. + + The map to compare this with. + true if refers to an equal map; false otherwise. + + + + Adds entries to the map from the given stream. + + + It is assumed that the stream is initially positioned after the tag specified by the codec. + This method will continue reading entries from the stream until the end is reached, or + a different tag is encountered. + + Stream to read from + Codec describing how the key/value pairs are encoded + + + + Adds entries to the map from the given parse context. + + + It is assumed that the input is initially positioned after the tag specified by the codec. + This method will continue reading entries from the input until the end is reached, or + a different tag is encountered. + + Input to read from + Codec describing how the key/value pairs are encoded + + + + Writes the contents of this map to the given coded output stream, using the specified codec + to encode each entry. + + The output stream to write to. + The codec to use for each entry. + + + + Writes the contents of this map to the given write context, using the specified codec + to encode each entry. + + The write context to write to. + The codec to use for each entry. + + + + Calculates the size of this map based on the given entry codec. + + The codec to use to encode each entry. + + + + + Returns a string representation of this repeated field, in the same + way as it would be represented by the default JSON formatter. + + + + + A codec for a specific map field. This contains all the information required to encode and + decode the nested messages. + + + + + Creates a new entry codec based on a separate key codec and value codec, + and the tag to use for each map entry. + + The key codec. + The value codec. + The map tag to use to introduce each map entry. + + + + The key codec. + + + + + The value codec. + + + + + The tag used in the enclosing message to indicate map entries. + + + + + Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. + + + + + Returns an equality comparer for suitable for Protobuf equality comparisons. + This is usually just the default equality comparer for the type, but floating point numbers are compared + bitwise. + + The type of equality comparer to return. + The equality comparer. + + + + Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. + (NaN values are considered equal, but only when they have the same representation.) + + + + + Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. + (NaN values are considered equal, but only when they have the same representation.) + + + + + Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. + (NaN values are considered equal, but only when they have the same representation.) + + + + + Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. + (NaN values are considered equal, but only when they have the same representation.) + + + + + The contents of a repeated field: essentially, a collection with some extra + restrictions (no null values) and capabilities (deep cloning). + + + This implementation does not generally prohibit the use of types which are not + supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. + + The element type of the repeated field. + + + + Creates a deep clone of this repeated field. + + + If the field type is + a message type, each element is also cloned; otherwise, it is + assumed that the field type is primitive (including string and + bytes, both of which are immutable) and so a simple copy is + equivalent to a deep clone. + + A deep clone of this repeated field. + + + + Adds the entries from the given input stream, decoding them with the specified codec. + + The input stream to read from. + The codec to use in order to read each entry. + + + + Adds the entries from the given parse context, decoding them with the specified codec. + + The input to read from. + The codec to use in order to read each entry. + + + + Calculates the size of this collection based on the given codec. + + The codec to use when encoding each field. + The number of bytes that would be written to an output by one of the WriteTo methods, + using the same codec. + + + + Writes the contents of this collection to the given , + encoding each value using the specified codec. + + The output stream to write to. + The codec to use when encoding each value. + + + + Writes the contents of this collection to the given write context, + encoding each value using the specified codec. + + The write context to write to. + The codec to use when encoding each value. + + + + Gets and sets the capacity of the RepeatedField's internal array. + When set, the internal array is reallocated to the given capacity. + The new value is less than . + + + + + Adds the specified item to the collection. + + The item to add. + + + + Removes all items from the collection. + + + + + Determines whether this collection contains the given item. + + The item to find. + true if this collection contains the given item; false otherwise. + + + + Copies this collection to the given array. + + The array to copy to. + The first index of the array to copy to. + + + + Removes the specified item from the collection + + The item to remove. + true if the item was found and removed; false otherwise. + + + + Gets the number of elements contained in the collection. + + + + + Gets a value indicating whether the collection is read-only. + + + + + Adds all of the specified values into this collection. + + The values to add to this collection. + + + + Adds all of the specified values into this collection. This method is present to + allow repeated fields to be constructed from queries within collection initializers. + Within non-collection-initializer code, consider using the equivalent + method instead for clarity. + + The values to add to this collection. + + + + Returns an enumerator that iterates through the collection. + + + An enumerator that can be used to iterate through the collection. + + + + + Determines whether the specified , is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Compares this repeated field with another for equality. + + The repeated field to compare this with. + true if refers to an equal repeated field; false otherwise. + + + + Returns the index of the given item within the collection, or -1 if the item is not + present. + + The item to find in the collection. + The zero-based index of the item, or -1 if it is not found. + + + + Inserts the given item at the specified index. + + The index at which to insert the item. + The item to insert. + + + + Removes the item at the given index. + + The zero-based index of the item to remove. + + + + Returns a string representation of this repeated field, in the same + way as it would be represented by the default JSON formatter. + + + + + Gets or sets the item at the specified index. + + + The element at the specified index. + + The zero-based index of the element to get or set. + The item at the specified index. + + + + Extension methods for , effectively providing + the familiar members from previous desktop framework versions while + targeting the newer releases, .NET Core etc. + + + + + Returns the public getter of a property, or null if there is no such getter + (either because it's read-only, or the getter isn't public). + + + + + Returns the public setter of a property, or null if there is no such setter + (either because it's write-only, or the setter isn't public). + + + + + Provides extension methods on Type that just proxy to TypeInfo. + These are used to support the new type system from .NET 4.5, without + having calls to GetTypeInfo all over the place. While the methods here are meant to be + broadly compatible with the desktop framework, there are some subtle differences in behaviour - but + they're not expected to affect our use cases. While the class is internal, that should be fine: we can + evaluate each new use appropriately. + + + + + See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom + + + + + Returns a representation of the public property associated with the given name in the given type, + including inherited properties or null if there is no such public property. + Here, "public property" means a property where either the getter, or the setter, or both, is public. + + + + + Returns a representation of the public method associated with the given name in the given type, + including inherited methods. + + + This has a few differences compared with Type.GetMethod in the desktop framework. It will throw + if there is an ambiguous match even between a private method and a public one, but it *won't* throw + if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and + class Child : Base declares public void Foo(long)). + + One type in the hierarchy declared more than one method with the same name + + + Holder for reflection information generated from google/protobuf/compiler/plugin.proto + + + File descriptor for google/protobuf/compiler/plugin.proto + + + + The version number of protocol compiler. + + + + Field number for the "major" field. + + + Gets whether the "major" field is set + + + Clears the value of the "major" field + + + Field number for the "minor" field. + + + Gets whether the "minor" field is set + + + Clears the value of the "minor" field + + + Field number for the "patch" field. + + + Gets whether the "patch" field is set + + + Clears the value of the "patch" field + + + Field number for the "suffix" field. + + + + A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should + be empty for mainline stable releases. + + + + Gets whether the "suffix" field is set + + + Clears the value of the "suffix" field + + + + An encoded CodeGeneratorRequest is written to the plugin's stdin. + + + + Field number for the "file_to_generate" field. + + + + The .proto files that were explicitly listed on the command-line. The + code generator should generate code only for these files. Each file's + descriptor will be included in proto_file, below. + + + + Field number for the "parameter" field. + + + + The generator parameter passed on the command-line. + + + + Gets whether the "parameter" field is set + + + Clears the value of the "parameter" field + + + Field number for the "proto_file" field. + + + + FileDescriptorProtos for all files in files_to_generate and everything + they import. The files will appear in topological order, so each file + appears before any file that imports it. + + Note: the files listed in files_to_generate will include runtime-retention + options only, but all other files will include source-retention options. + The source_file_descriptors field below is available in case you need + source-retention options for files_to_generate. + + protoc guarantees that all proto_files will be written after + the fields above, even though this is not technically guaranteed by the + protobuf wire format. This theoretically could allow a plugin to stream + in the FileDescriptorProtos and handle them one by one rather than read + the entire set into memory at once. However, as of this writing, this + is not similarly optimized on protoc's end -- it will store all fields in + memory at once before sending them to the plugin. + + Type names of fields and extensions in the FileDescriptorProto are always + fully qualified. + + + + Field number for the "source_file_descriptors" field. + + + + File descriptors with all options, including source-retention options. + These descriptors are only provided for the files listed in + files_to_generate. + + + + Field number for the "compiler_version" field. + + + + The version number of protocol compiler. + + + + + The plugin writes an encoded CodeGeneratorResponse to stdout. + + + + Field number for the "error" field. + + + + Error message. If non-empty, code generation failed. The plugin process + should exit with status code zero even if it reports an error in this way. + + This should be used to indicate errors in .proto files which prevent the + code generator from generating correct code. Errors which indicate a + problem in protoc itself -- such as the input CodeGeneratorRequest being + unparseable -- should be reported by writing a message to stderr and + exiting with a non-zero status code. + + + + Gets whether the "error" field is set + + + Clears the value of the "error" field + + + Field number for the "supported_features" field. + + + + A bitmask of supported features that the code generator supports. + This is a bitwise "or" of values from the Feature enum. + + + + Gets whether the "supported_features" field is set + + + Clears the value of the "supported_features" field + + + Field number for the "minimum_edition" field. + + + + The minimum edition this plugin supports. This will be treated as an + Edition enum, but we want to allow unknown values. It should be specified + according the edition enum value, *not* the edition number. Only takes + effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. + + + + Gets whether the "minimum_edition" field is set + + + Clears the value of the "minimum_edition" field + + + Field number for the "maximum_edition" field. + + + + The maximum edition this plugin supports. This will be treated as an + Edition enum, but we want to allow unknown values. It should be specified + according the edition enum value, *not* the edition number. Only takes + effect for plugins that have FEATURE_SUPPORTS_EDITIONS set. + + + + Gets whether the "maximum_edition" field is set + + + Clears the value of the "maximum_edition" field + + + Field number for the "file" field. + + + Container for nested types declared in the CodeGeneratorResponse message type. + + + + Sync with code_generator.h. + + + + + Represents a single generated file. + + + + Field number for the "name" field. + + + + The file name, relative to the output directory. The name must not + contain "." or ".." components and must be relative, not be absolute (so, + the file cannot lie outside the output directory). "/" must be used as + the path separator, not "\". + + If the name is omitted, the content will be appended to the previous + file. This allows the generator to break large files into small chunks, + and allows the generated text to be streamed back to protoc so that large + files need not reside completely in memory at one time. Note that as of + this writing protoc does not optimize for this -- it will read the entire + CodeGeneratorResponse before writing files to disk. + + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "insertion_point" field. + + + + If non-empty, indicates that the named file should already exist, and the + content here is to be inserted into that file at a defined insertion + point. This feature allows a code generator to extend the output + produced by another code generator. The original generator may provide + insertion points by placing special annotations in the file that look + like: + @@protoc_insertion_point(NAME) + The annotation can have arbitrary text before and after it on the line, + which allows it to be placed in a comment. NAME should be replaced with + an identifier naming the point -- this is what other generators will use + as the insertion_point. Code inserted at this point will be placed + immediately above the line containing the insertion point (thus multiple + insertions to the same point will come out in the order they were added). + The double-@ is intended to make it unlikely that the generated code + could contain things that look like insertion points by accident. + + For example, the C++ code generator places the following line in the + .pb.h files that it generates: + // @@protoc_insertion_point(namespace_scope) + This line appears within the scope of the file's package namespace, but + outside of any particular class. Another plugin can then specify the + insertion_point "namespace_scope" to generate additional classes or + other declarations that should be placed in this scope. + + Note that if the line containing the insertion point begins with + whitespace, the same whitespace will be added to every line of the + inserted text. This is useful for languages like Python, where + indentation matters. In these languages, the insertion point comment + should be indented the same amount as any inserted code will need to be + in order to work correctly in that context. + + The code generator that generates the initial file and the one which + inserts into it must both run as part of a single invocation of protoc. + Code generators are executed in the order in which they appear on the + command line. + + If |insertion_point| is present, |name| must also be present. + + + + Gets whether the "insertion_point" field is set + + + Clears the value of the "insertion_point" field + + + Field number for the "content" field. + + + + The file contents. + + + + Gets whether the "content" field is set + + + Clears the value of the "content" field + + + Field number for the "generated_code_info" field. + + + + Information describing the file content being inserted. If an insertion + point is used, this information will be appropriately offset and inserted + into the code generation metadata for the generated files. + + + + + Represents a non-generic extension definition. This API is experimental and subject to change. + + + + + Internal use. Creates a new extension with the specified field number. + + + + + Gets the field number of this extension + + + + + Represents a type-safe extension identifier used for getting and setting single extension values in instances. + This API is experimental and subject to change. + + The message type this field applies to + The field value type of this extension + + + + Creates a new extension identifier with the specified field number and codec + + + + + Represents a type-safe extension identifier used for getting repeated extension values in instances. + This API is experimental and subject to change. + + The message type this field applies to + The repeated field value type of this extension + + + + Creates a new repeated extension identifier with the specified field number and codec + + + + + Provides extensions to messages while parsing. This API is experimental and subject to change. + + + + + Creates a new empty extension registry + + + + + Gets the total number of extensions in this extension registry + + + + + Returns whether the registry is readonly + + + + + Adds the specified extension to the registry + + + + + Adds the specified extensions to the registry + + + + + Clears the registry of all values + + + + + Gets whether the extension registry contains the specified extension + + + + + Copies the arrays in the registry set to the specified array at the specified index + + The array to copy to + The array index to start at + + + + Returns an enumerator to enumerate through the items in the registry + + Returns an enumerator for the extensions in this registry + + + + Removes the specified extension from the set + + The extension + true if the extension was removed, otherwise false + + + + Clones the registry into a new registry + + + + + Methods for managing s with null checking. + + Most users will not use this class directly and its API is experimental and subject to change. + + + + + Gets the value of the specified extension + + + + + Gets the value of the specified repeated extension or null if it doesn't exist in this set + + + + + Gets the value of the specified repeated extension, registering it if it doesn't exist + + + + + Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. + + + + + Gets whether the value of the specified extension is set + + + + + Clears the value of the specified extension + + + + + Clears the value of the specified extension + + + + + Tries to merge a field from the coded input, returning true if the field was merged. + If the set is null or the field was not otherwise merged, this returns false. + + + + + Tries to merge a field from the coded input, returning true if the field was merged. + If the set is null or the field was not otherwise merged, this returns false. + + + + + Merges the second set into the first set, creating a new instance if first is null + + + + + Clones the set into a new set. If the set is null, this returns null + + + + + Used for keeping track of extensions in messages. + methods route to this set. + + Most users will not need to use this class directly + + The message type that extensions in this set target + + + + Gets a hash code of the set + + + + + Returns whether this set is equal to the other object + + + + + Calculates the size of this extension set + + + + + Writes the extension values in this set to the output stream + + + + + Writes the extension values in this set to the write context + + + + + Factory methods for . + + + + + Retrieves a codec suitable for a string field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a bytes field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a bool field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an int32 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an sint32 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a fixed32 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an sfixed32 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a uint32 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an int64 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an sint64 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a fixed64 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an sfixed64 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a uint64 field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a float field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for a double field with the given tag. + + The tag. + A codec for the given tag. + + + + Retrieves a codec suitable for an enum field with the given tag. + + The tag. + A conversion function from to the enum type. + A conversion function from the enum type to . + A codec for the given tag. + + + + Retrieves a codec suitable for a string field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a bytes field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a bool field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an int32 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an sint32 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a fixed32 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an sfixed32 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a uint32 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an int64 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an sint64 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a fixed64 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an sfixed64 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a uint64 field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a float field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a double field with the given tag. + + The tag. + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for an enum field with the given tag. + + The tag. + A conversion function from to the enum type. + A conversion function from the enum type to . + The default value. + A codec for the given tag. + + + + Retrieves a codec suitable for a message field with the given tag. + + The tag. + A parser to use for the message type. + A codec for the given tag. + + + + Retrieves a codec suitable for a group field with the given tag. + + The start group tag. + The end group tag. + A parser to use for the group message type. + A codec for given tag + + + + Creates a codec for a wrapper type of a class - which must be string or ByteString. + + + + + Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, + Bool, Single or Double. + + + + + Helper code to create codecs for wrapper types. + + + Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it + slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, + we can refactor later if we come up with something cleaner. + + + + + Returns a field codec which effectively wraps a value of type T in a message. + + + + + + + An encode/decode pair for a single field. This effectively encapsulates + all the information needed to read or write the field value from/to a coded + stream. + + + This class is public and has to be as it is used by generated code, but its public + API is very limited - just what the generated code needs to call directly. + + + + This never writes default values to the stream, and does not address "packedness" + in repeated fields itself, other than to know whether or not the field *should* be packed. + + + + + Merges an input stream into a value + + + + + Merges a value into a reference to another value, returning a boolean if the value was set + + + + + Returns a delegate to write a value (unconditionally) to a coded output stream. + + + + + Returns the size calculator for just a value. + + + + + Returns a delegate to read a value from a coded input stream. It is assumed that + the stream is already positioned on the appropriate tag. + + + + + Returns a delegate to merge a value from a coded input stream. + It is assumed that the stream is already positioned on the appropriate tag + + + + + Returns a delegate to merge two values together. + + + + + Returns the fixed size for an entry, or 0 if sizes vary. + + + + + Gets the tag of the codec. + + + The tag of the codec. + + + + + Gets the end tag of the codec or 0 if there is no end tag + + + The end tag of the codec. + + + + + Default value for this codec. Usually the same for every instance of the same type, but + for string/ByteString wrapper fields the codec's default value is null, whereas for + other string/ByteString fields it's "" or ByteString.Empty. + + + The default value of the codec's type. + + + + + Write a tag and the given value, *if* the value is not the default. + + + + + Write a tag and the given value, *if* the value is not the default. + + + + + Reads a value of the codec type from the given . + + The input stream to read from. + The value read from the stream. + + + + Reads a value of the codec type from the given . + + The parse context to read from. + The value read. + + + + Calculates the size required to write the given value, with a tag, + if the value is not the default. + + + + + Calculates the size required to write the given value, with a tag, even + if the value is the default. + + + + + A tree representation of a FieldMask. Each leaf node in this tree represent + a field path in the FieldMask. + + For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: + + [root] -+- foo -+- bar + | | + | +- baz + | + +- bar --- baz + + + By representing FieldMasks with this tree structure we can easily convert + a FieldMask to a canonical form, merge two FieldMasks, calculate the + intersection to two FieldMasks and traverse all fields specified by the + FieldMask in a message tree. + + + + + Creates an empty FieldMaskTree. + + + + + Creates a FieldMaskTree for a given FieldMask. + + + + + Adds a field path to the tree. In a FieldMask, every field path matches the + specified field as well as all its sub-fields. For example, a field path + "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding + a field path to the tree, redundant sub-paths will be removed. That is, + after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it + exists, which will turn the tree node for "foo.bar" to a leaf node. + Likewise, if the field path to add is a sub-path of an existing leaf node, + nothing will be changed in the tree. + + + + + Merges all field paths in a FieldMask into this tree. + + + + + Converts this tree to a FieldMask. + + + + + Gathers all field paths in a sub-tree. + + + + + Adds the intersection of this tree with the given to . + + + + + Merges all fields specified by this FieldMaskTree from to . + + + + + Merges all fields specified by a sub-tree from to . + + + + + Class containing helpful workarounds for various platform compatibility + + + + + Interface for a Protocol Buffers message, supporting + parsing from and writing to . + + + + + Internal implementation of merging data from given parse context into this message. + Users should never invoke this method directly. + + + + + Internal implementation of writing this message to a given write context. + Users should never invoke this method directly. + + + + + A message type that has a custom string format for diagnostic purposes. + + + + Calling on a generated message type normally + returns the JSON representation. If a message type implements this interface, + then the method will be called instead of the regular + JSON formatting code, but only when ToString() is called either on the message itself + or on another message which contains it. This does not affect the normal JSON formatting of + the message. + + + For example, if you create a proto message representing a GUID, the internal + representation may be a bytes field or four fixed32 fields. However, when debugging + it may be more convenient to see a result in the same format as provides. + + This interface extends to avoid it accidentally being implemented + on types other than messages, where it would not be used by anything in the framework. + + + + + Returns a string representation of this object, for diagnostic purposes. + + + This method is called when a message is formatted as part of a + call. It does not affect the JSON representation used by other than + in calls to . While it is recommended + that the result is valid JSON, this is never assumed by the Protobuf library. + + A string representation of this object, for diagnostic purposes. + + + + Generic interface for a deeply cloneable type. + + + + All generated messages implement this interface, but so do some non-message types. + Additionally, due to the type constraint on T in , + it is simpler to keep this as a separate interface. + + + The type itself, returned by the method. + + + + Creates a deep clone of this object. + + A deep clone of this object. + + + + Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class. + This interface is experiemental and is subject to change. + + + + + Gets the value of the specified extension + + + + + Gets the value of the specified repeated extension or null if the extension isn't registered in this set. + For a version of this method that never returns null, use + + + + + Gets the value of the specified repeated extension, registering it if it hasn't already been registered. + + + + + Sets the value of the specified extension + + + + + Gets whether the value of the specified extension is set + + + + + Clears the value of the specified extension + + + + + Clears the value of the specified repeated extension + + + + + Interface for a Protocol Buffers message, supporting + basic operations required for serialization. + + + + + Merges the data from the specified coded input stream with the current message. + + See the user guide for precise merge semantics. + + + + + Writes the data to the given coded output stream. + + Coded output stream to write the data to. Must not be null. + + + + Calculates the size of this message in Protocol Buffer wire format, in bytes. + + The number of bytes required to write this message + to a coded output stream. + + + + Descriptor for this message. All instances are expected to return the same descriptor, + and for generated types this will be an explicitly-implemented member, returning the + same value as the static property declared on the type. + + + + + Generic interface for a Protocol Buffers message, + where the type parameter is expected to be the same type as + the implementation class. + + The message type. + + + + Merges the given message into this one. + + See the user guide for precise merge semantics. + The message to merge with this one. Must not be null. + + + + Thrown when an attempt is made to parse invalid JSON, e.g. using + a non-string property key, or including a redundant comma. Parsing a protocol buffer + message represented in JSON using can throw both this + exception and depending on the situation. This + exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException + is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer + message. + + + + + Thrown when a protocol message being parsed is invalid in some way, + e.g. it contains a malformed varint or a negative byte length. + + + + + Creates an exception for an error condition of an invalid tag being encountered. + + + + + Reflection-based converter from messages to JSON. + + + + Instances of this class are thread-safe, with no mutable state. + + + This is a simple start to get JSON formatting working. As it's reflection-based, + it's not as quick as baking calls into generated messages - but is a simpler implementation. + (This code is generally not heavily optimized.) + + + + + + Returns a formatter using the default settings. + + + + + The JSON representation of the first 160 characters of Unicode. + Empty strings are replaced by the static constructor. + + + + + Creates a new formatted with the given settings. + + The settings. + + + + Formats the specified message as JSON. + + The message to format. + This method delegates to Format(IMessage, int) with indentationLevel = + 0. The formatted message. + + + + Formats the specified message as JSON. + + The message to format. + Indentation level to start at. + To keep consistent indentation when embedding a message inside another JSON string, + set . E.g: var response = $@"{{ + ""data"": { Format(message, indentationLevel: 1) } + }}" + + The formatted message. + + + + Formats the specified message as JSON. + + The message to format. + The TextWriter to write the formatted message to. + This method delegates to Format(IMessage, TextWriter, int) with + indentationLevel = 0. The formatted message. + + + + Formats the specified message as JSON. When is not null, + start indenting at the specified . + + The message to format. + The TextWriter to write the formatted message to. + Indentation level to start at. + To keep consistent indentation when embedding a message inside another JSON string, + set . + + + + Converts a message to JSON for diagnostic purposes with no extra context. + + + + This differs from calling on the default JSON + formatter in its handling of . As no type registry is available + in calls, the normal way of resolving the type of + an Any message cannot be applied. Instead, a JSON property named @value + is included with the base64 data from the property of the message. + + The value returned by this method is only designed to be used for diagnostic + purposes. It may not be parsable by , and may not be parsable + by other Protocol Buffer implementations. + + The message to format for diagnostic purposes. + The diagnostic-only JSON representation of the message + + + + Determines whether or not a field value should be serialized according to the field, + its value in the message, and the settings of this formatter. + + + + + Writes a single value to the given writer as JSON. Only types understood by + Protocol Buffers can be written in this way. This method is only exposed for + advanced use cases; most users should be using + or . + + The writer to write the value to. Must not be null. + The value to write. May be null. + Delegates to WriteValue(TextWriter, object, int) with indentationLevel = + 0. + + + + Writes a single value to the given writer as JSON. Only types understood by + Protocol Buffers can be written in this way. This method is only exposed for + advanced use cases; most users should be using + or . + + The writer to write the value to. Must not be null. + The value to write. May be null. + The current indentationLevel. Not used when is null. + + + + Central interception point for well-known type formatting. Any well-known types which + don't need special handling can fall back to WriteMessage. We avoid assuming that the + values are using the embedded well-known types, in order to allow for dynamic messages + in the future. + + + + + Writes a string (including leading and trailing double quotes) to a builder, escaping as + required. + + + Other than surrogate pair handling, this code is mostly taken from + src/google/protobuf/util/internal/json_escaping.cc. + + + + + Settings controlling JSON formatting. + + + + + Default settings, as used by + + + + + Whether fields which would otherwise not be included in the formatted data + should be formatted even when the value is not present, or has the default value. + This option only affects fields which don't support "presence" (e.g. + singular non-optional proto3 primitive fields). + + + + + The type registry used to format messages. + + + + + Whether to format enums as ints. Defaults to false. + + + + + Whether to use the original proto field names as defined in the .proto file. Defaults to + false. + + + + + Indentation string, used for formatting. Setting null disables indentation. + + + + + Creates a new object with the specified formatting of default + values and an empty type registry. + + true if default values (0, empty strings etc) + should be formatted; false otherwise. + + + + Creates a new object with the specified formatting of default + values and type registry. + + true if default values (0, empty strings etc) + should be formatted; false otherwise. The to use when formatting messages. + + + + Creates a new object with the specified parameters. + + true if default values (0, empty strings etc) + should be formatted; false otherwise. The to use when formatting messages. + TypeRegistry.Empty will be used if it is null. true to format the enums as integers; false to + format enums as enum names. true to + preserve proto field names; false to convert them to lowerCamelCase. The indentation string to use for multi-line formatting. null to + disable multi-line format. + + + + Creates a new object with the specified formatting of default + values and the current settings. + + true if default values (0, empty strings etc) + should be formatted; false otherwise. + + + + Creates a new object with the specified type registry and the + current settings. + + The to use when formatting messages. + + + + Creates a new object with the specified enums formatting option and + the current settings. + + true to format the enums as integers; + false to format enums as enum names. + + + + Creates a new object with the specified field name formatting + option and the current settings. + + true to preserve proto field names; + false to convert them to lowerCamelCase. + + + + Creates a new object with the specified indentation and the current + settings. + + The string to output for each level of indentation (nesting). + The default is two spaces per level. Use null to disable indentation entirely. + A non-null value for will insert additional line-breaks + to the JSON output. Each line will contain either a single value, or braces. The default + line-break is determined by , which is "\n" on + Unix platforms, and "\r\n" on Windows. If seems to + produce empty lines, you need to pass a that uses a "\n" + newline. See . + + + + + Reflection-based converter from JSON to messages. + + + + Instances of this class are thread-safe, with no mutable state. + + + This is a simple start to get JSON parsing working. As it's reflection-based, + it's not as quick as baking calls into generated messages - but is a simpler implementation. + (This code is generally not heavily optimized.) + + + + + + Returns a formatter using the default settings. + + + + + Creates a new formatted with the given settings. + + The settings. + + + + Parses and merges the information into the given message. + + The message to merge the JSON information into. + The JSON to parse. + + + + Parses JSON read from and merges the information into the given message. + + The message to merge the JSON information into. + Reader providing the JSON to parse. + + + + Merges the given message using data from the given tokenizer. In most cases, the next + token should be a "start object" token, but wrapper types and nullity can invalidate + that assumption. This is implemented as an LL(1) recursive descent parser over the stream + of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the + tokenizer performing that validation - but not every token stream is valid "protobuf JSON". + + + + + Attempts to parse a single value from the JSON. When the value is completely invalid, + this will still throw an exception; when it's "conditionally invalid" (currently meaning + "when there's an unknown enum string value") the method returns false instead. + + + true if the value was parsed successfully; false for an ignorable parse failure. + + + + + Parses into a new message. + + The type of message to create. + The JSON to parse. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Parses JSON read from into a new message. + + The type of message to create. + Reader providing the JSON to parse. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Parses into a new message. + + The JSON to parse. + Descriptor of message type to parse. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Parses JSON read from into a new message. + + Reader providing the JSON to parse. + Descriptor of message type to parse. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Creates a new instance of the message type for the given field. + + + + + Checks that any infinite/NaN values originated from the correct text. + This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the + way that Mono parses out-of-range values as infinity. + + + + + Settings controlling JSON parsing. + + + + + Default settings, as used by . This has the same default + recursion limit as , and an empty type registry. + + + + + The maximum depth of messages to parse. Note that this limit only applies to parsing + messages, not collections - so a message within a collection within a message only counts as + depth 2, not 3. + + + + + The type registry used to parse messages. + + + + + Whether the parser should ignore unknown fields (true) or throw an exception when + they are encountered (false). + + + + + Creates a new object with the specified recursion limit. + + The maximum depth of messages to parse + + + + Creates a new object with the specified recursion limit and type registry. + + The maximum depth of messages to parse + The type registry used to parse messages + + + + Creates a new object set to either ignore unknown fields, or throw an exception + when unknown fields are encountered. + + true if unknown fields should be ignored when parsing; false to throw an exception. + + + + Creates a new object based on this one, but with the specified recursion limit. + + The new recursion limit. + + + + Creates a new object based on this one, but with the specified type registry. + + The new type registry. Must not be null. + + + + Simple but strict JSON tokenizer, rigidly following RFC 7159. + + + + This tokenizer is stateful, and only returns "useful" tokens - names, values etc. + It does not create tokens for the separator between names and values, or for the comma + between values. It validates the token stream as it goes - so callers can assume that the + tokens it produces are appropriate. For example, it would never produce "start object, end array." + + Implementation details: the base class handles single token push-back and + Not thread-safe. + + + + + Creates a tokenizer that reads from the given text reader. + + + + + Creates a tokenizer that first replays the given list of tokens, then continues reading + from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back + on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was + created for the sake of Any parsing. + + + + + Returns the depth of the stack, purely in objects (not collections). + Informally, this is the number of remaining unclosed '{' characters we have. + + + + + Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, + after which point Next() should not be called again. + + This implementation provides single-token buffering, and calls if there is no buffered token. + The next token in the stream. This is never null. + This method is called after an EndDocument token has been returned + The input text does not comply with RFC 7159 + + + + Returns the next JSON token in the stream, when requested by the base class. (The method delegates + to this if it doesn't have a buffered token.) + + This method is called after an EndDocument token has been returned + The input text does not comply with RFC 7159 + + + + Skips the value we're about to read. This must only be called immediately after reading a property name. + If the value is an object or an array, the complete object/array is skipped. + + + + + Tokenizer which first exhausts a list of tokens, then consults another tokenizer. + + + + + Tokenizer which does all the *real* work of parsing JSON. + + + + + This method essentially just loops through characters skipping whitespace, validating and + changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) + until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point + it returns the token. Although the method is large, it would be relatively hard to break down further... most + of it is the large switch statement, which sometimes returns and sometimes doesn't. + + + + + Reads a string token. It is assumed that the opening " has already been read. + + + + + Reads an escaped character. It is assumed that the leading backslash has already been read. + + + + + Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. + + + + + Consumes a text-only literal, throwing an exception if the read text doesn't match it. + It is assumed that the first letter of the literal has already been read. + + + + + Copies an integer into a StringBuilder. + + The builder to read the number into + The character following the integer, or -1 for end-of-text. + + + + Copies the fractional part of an integer into a StringBuilder, assuming reader is positioned after a period. + + The builder to read the number into + The character following the fractional part, or -1 for end-of-text. + + + + Copies the exponent part of a number into a StringBuilder, with an assumption that the reader is already positioned after the "e". + + The builder to read the number into + The character following the exponent, or -1 for end-of-text. + + + + Copies a sequence of digits into a StringBuilder. + + The builder to read the number into + The number of digits appended to the builder + The character following the digits, or -1 for end-of-text. + + + + Validates that we're in a valid state to read a value (using the given error prefix if necessary) + and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. + + + + + Pops the top-most container, and sets the state to the appropriate one for the end of a value + in the parent container. + + + + + Possible states of the tokenizer. + + + This is a flags enum purely so we can simply and efficiently represent a set of valid states + for checking. + + Each is documented with an example, + where ^ represents the current position within the text stream. The examples all use string values, + but could be any value, including nested objects/arrays. + The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). + Any additional notional state of "AfterValue" indicates that a value has been completed, at which + point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. + + + These states were derived manually by reading RFC 7159 carefully. + + + + + + ^ { "foo": "bar" } + Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" + + + + + { "foo": "bar" } ^ + After the value in a document. Next states: ReaderExhausted + + + + + { "foo": "bar" } ^ (and already read to the end of the reader) + Terminal state. + + + + + { ^ "foo": "bar" } + Before the *first* property in an object. + Next states: + "AfterValue" (empty object) + ObjectBeforeColon (read a name) + + + + + { "foo" ^ : "bar", "x": "y" } + Next state: ObjectAfterColon + + + + + { "foo" : ^ "bar", "x": "y" } + Before any property other than the first in an object. + (Equivalently: after any property in an object) + Next states: + "AfterValue" (value is simple) + ObjectStart (value is object) + ArrayStart (value is array) + + + + + { "foo" : "bar" ^ , "x" : "y" } + At the end of a property, so expecting either a comma or end-of-object + Next states: ObjectAfterComma or "AfterValue" + + + + + { "foo":"bar", ^ "x":"y" } + Read the comma after the previous property, so expecting another property. + This is like ObjectStart, but closing brace isn't valid here + Next state: ObjectBeforeColon. + + + + + [ ^ "foo", "bar" ] + Before the *first* value in an array. + Next states: + "AfterValue" (read a value) + "AfterValue" (end of array; will pop stack) + + + + + [ "foo" ^ , "bar" ] + After any value in an array, so expecting either a comma or end-of-array + Next states: ArrayAfterComma or "AfterValue" + + + + + [ "foo", ^ "bar" ] + After a comma in an array, so there *must* be another value (simple or complex). + Next states: "AfterValue" (simple value), StartObject, StartArray + + + + + Wrapper around a text reader allowing small amounts of buffering and location handling. + + + + + The buffered next character, if we have one, or -1 if there is no buffered character. + + + + + Returns the next character in the stream, or -1 if we have reached the end of the stream. + + + + + Reads the next character from the underlying reader, throwing an + with the specified message if there are no more characters available. + + + + + Creates a new exception appropriate for the current state of the reader. + + + + + Provide a cached reusable instance of stringbuilder per thread. + Copied from https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/System/Text/StringBuilderCache.cs + + + + Get a StringBuilder for the specified capacity. + If a StringBuilder of an appropriate size is cached, it will be returned and the cache emptied. + + + Place the specified builder in the cache if it is not too big. + + + ToString() the stringbuilder, Release it to the cache, and return the resulting string. + + + + Stream implementation which proxies another stream, only allowing a certain amount + of data to be read. Note that this is only used to read delimited streams, so it + doesn't attempt to implement everything. + + + + + Extension methods on and . + + + + + Merges data from the given byte array into an existing message. + + The message to merge the data into. + The data to merge, which must be protobuf-encoded binary data. + + + + Merges data from the given byte array slice into an existing message. + + The message to merge the data into. + The data containing the slice to merge, which must be protobuf-encoded binary data. + The offset of the slice to merge. + The length of the slice to merge. + + + + Merges data from the given byte string into an existing message. + + The message to merge the data into. + The data to merge, which must be protobuf-encoded binary data. + + + + Merges data from the given stream into an existing message. + + The message to merge the data into. + Stream containing the data to merge, which must be protobuf-encoded binary data. + + + + Merges data from the given span into an existing message. + + The message to merge the data into. + Span containing the data to merge, which must be protobuf-encoded binary data. + + + + Merges data from the given sequence into an existing message. + + The message to merge the data into. + Sequence from the specified data to merge, which must be protobuf-encoded binary data. + + + + Merges length-delimited data from the given stream into an existing message. + + + The stream is expected to contain a length and then the data. Only the amount of data + specified by the length will be consumed. + + The message to merge the data into. + Stream containing the data to merge, which must be protobuf-encoded binary data. + + + + Converts the given message into a byte array in protobuf encoding. + + The message to convert. + The message data as a byte array. + + + + Writes the given message data to the given stream in protobuf encoding. + + The message to write to the stream. + The stream to write to. + + + + Writes the length and then data of the given message to a stream. + + The message to write. + The output stream to write to. + + + + Converts the given message into a byte string in protobuf encoding. + + The message to convert. + The message data as a byte string. + + + + Writes the given message data to the given buffer writer in protobuf encoding. + + The message to write to the stream. + The stream to write to. + + + + Writes the given message data to the given span in protobuf encoding. + The size of the destination span needs to fit the serialized size + of the message exactly, otherwise an exception is thrown. + + The message to write to the stream. + The span to write to. Size must match size of the message exactly. + + + + Checks if all required fields in a message have values set. For proto3 messages, this returns true. + + + + + A general message parser, typically used by reflection-based code as all the methods + return simple . + + + + + Creates a template instance ready for population. + + An empty message. + + + + Parses a message from a byte array. + + The byte array containing the message. Must not be null. + The newly parsed message. + + + + Parses a message from a byte array slice. + + The byte array containing the message. Must not be null. + The offset of the slice to parse. + The length of the slice to parse. + The newly parsed message. + + + + Parses a message from the given byte string. + + The data to parse. + The parsed message. + + + + Parses a message from the given stream. + + The stream to parse. + The parsed message. + + + + Parses a message from the given sequence. + + The data to parse. + The parsed message. + + + + Parses a message from the given span. + + The data to parse. + The parsed message. + + + + Parses a length-delimited message from the given stream. + + + The stream is expected to contain a length and then the data. Only the amount of data + specified by the length will be consumed. + + The stream to parse. + The parsed message. + + + + Parses a message from the given coded input stream. + + The stream to parse. + The parsed message. + + + + Parses a message from the given JSON. + + This method always uses the default JSON parser; it is not affected by . + To ignore unknown fields when parsing JSON, create a using a + with set to true and call directly. + + The JSON to parse. + The parsed message. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Creates a new message parser which optionally discards unknown fields when parsing. + + Note that this does not affect the behavior of + at all. To ignore unknown fields when parsing JSON, create a using a + with set to true and call directly. + Whether or not to discard unknown fields when parsing. + A newly configured message parser. + + + + Creates a new message parser which registers extensions from the specified registry upon creating the message instance + + The extensions to register + A newly configured message parser. + + + + A parser for a specific message type. + + +

+ This delegates most behavior to the + implementation within the original type, but + provides convenient overloads to parse from a variety of sources. +

+

+ Most applications will never need to create their own instances of this type; + instead, use the static Parser property of a generated message type to obtain a + parser for that type. +

+
+ The type of message to be parsed. +
+ + + Creates a new parser. + + + The factory method is effectively an optimization over using a generic constraint + to require a parameterless constructor: delegates are significantly faster to execute. + + Function to invoke when a new, empty message is required. + + + + Creates a template instance ready for population. + + An empty message. + + + + Parses a message from a byte array. + + The byte array containing the message. Must not be null. + The newly parsed message. + + + + Parses a message from a byte array slice. + + The byte array containing the message. Must not be null. + The offset of the slice to parse. + The length of the slice to parse. + The newly parsed message. + + + + Parses a message from the given byte string. + + The data to parse. + The parsed message. + + + + Parses a message from the given stream. + + The stream to parse. + The parsed message. + + + + Parses a message from the given sequence. + + The data to parse. + The parsed message. + + + + Parses a message from the given span. + + The data to parse. + The parsed message. + + + + Parses a length-delimited message from the given stream. + + + The stream is expected to contain a length and then the data. Only the amount of data + specified by the length will be consumed. + + The stream to parse. + The parsed message. + + + + Parses a message from the given coded input stream. + + The stream to parse. + The parsed message. + + + + Parses a message from the given JSON. + + The JSON to parse. + The parsed message. + The JSON does not comply with RFC 7159 + The JSON does not represent a Protocol Buffers message correctly + + + + Creates a new message parser which optionally discards unknown fields when parsing. + + Whether or not to discard unknown fields when parsing. + A newly configured message parser. + + + + Creates a new message parser which registers extensions from the specified registry upon creating the message instance + + The extensions to register + A newly configured message parser. + + + + Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the + extensionByNumber table in ExtensionRegistry. + + + + + An opaque struct that represents the current parsing state and is passed along + as the parsing proceeds. + All the public methods are intended to be invoked only by the generated code, + users should never invoke them directly. + + + + + Initialize a , building all from defaults and + the given . + + + + + Initialize a using existing , e.g. from . + + + + + Creates a ParseContext instance from CodedInputStream. + WARNING: internally this copies the CodedInputStream's state, so after done with the ParseContext, + the CodedInputStream's state needs to be updated. + + + + + Returns the last tag read, or 0 if no tags have been read or we've read beyond + the end of the input. + + + + + Internal-only property; when set to true, unknown fields will be discarded while parsing. + + + + + Internal-only property; provides extension identifiers to compatible messages while parsing. + + + + + Reads a field tag, returning the tag of 0 for "end of input". + + + If this method returns 0, it doesn't necessarily mean the end of all + the data in this CodedInputReader; it may be the end of the logical input + for an embedded message, for example. + + The next field tag, or 0 for end of input. (0 is never a valid tag.) + + + + Reads a double field from the input. + + + + + Reads a float field from the input. + + + + + Reads a uint64 field from the input. + + + + + Reads an int64 field from the input. + + + + + Reads an int32 field from the input. + + + + + Reads a fixed64 field from the input. + + + + + Reads a fixed32 field from the input. + + + + + Reads a bool field from the input. + + + + + Reads a string field from the input. + + + + + Reads an embedded message field value from the input. + + + + + Reads an embedded group field from the input. + + + + + Reads a bytes field value from the input. + + + + + Reads a uint32 field value from the input. + + + + + Reads an enum field value from the input. + + + + + Reads an sfixed32 field value from the input. + + + + + Reads an sfixed64 field value from the input. + + + + + Reads an sint32 field value from the input. + + + + + Reads an sint64 field value from the input. + + + + + Reads a length for length-delimited data. + + + This is internally just reading a varint, but this method exists + to make the calling code clearer. + + + + + The position within the current buffer (i.e. the next byte to read) + + + + + Size of the current buffer + + + + + If we are currently inside a length-delimited block, this is the number of + bytes in the buffer that are still available once we leave the delimited block. + + + + + The absolute position of the end of the current length-delimited block (including totalBytesRetired) + + + + + The total number of consumed before the start of the current buffer. The + total bytes read up to the current position can be computed as + totalBytesRetired + bufferPos. + + + + + The last tag we read. 0 indicates we've read to the end of the stream + (or haven't read anything yet). + + + + + The next tag, used to store the value read by PeekTag. + + + + + Internal-only property; when set to true, unknown fields will be discarded while parsing. + + + + + Internal-only property; provides extension identifiers to compatible messages while parsing. + + + + + Primitives for parsing protobuf wire format. + + + + + Reads a length for length-delimited data. + + + This is internally just reading a varint, but this method exists + to make the calling code clearer. + + + + + Parses the next tag. + If the end of logical stream was reached, an invalid tag of 0 is returned. + + + + + Peeks at the next tag in the stream. If it matches , + the tag is consumed and the method returns true; otherwise, the + stream is left in the original position and the method returns false. + + + + + Peeks at the next field tag. This is like calling , but the + tag is not consumed. (So a subsequent call to will return the + same value.) + + + + + Parses a raw varint. + + + + + Parses a raw Varint. If larger than 32 bits, discard the upper bits. + This method is optimised for the case where we've got lots of data in the buffer. + That means we can check the size just once, then just read directly from the buffer + without constant rechecking of the buffer length. + + + + + Parses a 32-bit little-endian integer. + + + + + Parses a 64-bit little-endian integer. + + + + + Parses a double value. + + + + + Parses a float value. + + + + + Reads a fixed size of bytes from the input. + + + the end of the stream or the current limit was reached + + + + + Reads and discards bytes. + + the end of the stream + or the current limit was reached + + + + Reads a string field value from the input. + + + + + Reads a bytes field value from the input. + + + + + Reads a UTF-8 string from the next "length" bytes. + + + the end of the stream or the current limit was reached + + + + + Reads a string assuming that it is spread across multiple spans in a . + + + + + Validates that the specified size doesn't exceed the current limit. If it does then remaining bytes + are skipped and an error is thrown. + + + + + Reads a varint from the input one byte at a time, so that it does not + read any bytes after the end of the varint. If you simply wrapped the + stream in a CodedInputStream and used ReadRawVarint32(Stream) + then you would probably end up reading past the end of the varint since + CodedInputStream buffers its input. + + + + + + + Decode a 32-bit value with ZigZag encoding. + + + ZigZag encodes signed integers into values that can be efficiently + encoded with varint. (Otherwise, negative values must be + sign-extended to 32 bits to be varint encoded, thus always taking + 5 bytes on the wire.) + + + + + Decode a 64-bit value with ZigZag encoding. + + + ZigZag encodes signed integers into values that can be efficiently + encoded with varint. (Otherwise, negative values must be + sign-extended to 64 bits to be varint encoded, thus always taking + 10 bytes on the wire.) + + + + + Checks whether there is known data available of the specified size remaining to parse. + When parsing from a Stream this can return false because we have no knowledge of the amount + of data remaining in the stream until it is read. + + + + + Checks whether there is known data available of the specified size remaining to parse + in the underlying data source. + When parsing from a Stream this will return false because we have no knowledge of the amount + of data remaining in the stream until it is read. + + + + + Read raw bytes of the specified length into a span. The amount of data available and the current limit should + be checked before calling this method. + + + + + Reading and skipping messages / groups + + + + + Skip a group. + + + + + Verifies that the last call to ReadTag() returned tag 0 - in other words, + we've reached the end of the stream when we expected to. + + The + tag read was not the one specified + + + + Fast parsing primitives for wrapper types + + + + + Helper methods for throwing exceptions when preconditions are not met. + + + This class is used internally and by generated code; it is not particularly + expected to be used from application code, although nothing prevents it + from being used that way. + + + + + Throws an ArgumentNullException if the given value is null, otherwise + return the value to the caller. + + + + + Throws an ArgumentNullException if the given value is null, otherwise + return the value to the caller. + + + This is equivalent to but without the type parameter + constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull + with a value type - but it gets in the way if either you want to use it with a nullable + value type, or you want to use it with an unconstrained type parameter. + + + + + Container for a set of custom options specified within a message, field etc. + + + + This type is publicly immutable, but internally mutable. It is only populated + by the descriptor parsing code - by the time any user code is able to see an instance, + it will be fully initialized. + + + If an option is requested using the incorrect method, an answer may still be returned: all + of the numeric types are represented internally using 64-bit integers, for example. It is up to + the caller to ensure that they make the appropriate method call for the option they're interested in. + Note that enum options are simply stored as integers, so the value should be fetched using + and then cast appropriately. + + + Repeated options are currently not supported. Asking for a single value of an option + which was actually repeated will return the last value, except for message types where + all the set values are merged together. + + + + + + Retrieves a Boolean value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 32-bit integer value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 64-bit integer value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves an unsigned 32-bit integer value for the specified option field, + assuming a fixed-length representation. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves an unsigned 64-bit integer value for the specified option field, + assuming a fixed-length representation. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 32-bit integer value for the specified option field, + assuming a fixed-length representation. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 64-bit integer value for the specified option field, + assuming a fixed-length representation. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 32-bit integer value for the specified option field, + assuming a zigzag encoding. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a signed 64-bit integer value for the specified option field, + assuming a zigzag encoding. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves an unsigned 32-bit integer value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves an unsigned 64-bit integer value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a 32-bit floating point value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a 64-bit floating point value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a string value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a bytes value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + + Retrieves a message value for the specified option field. + + The field to fetch the value for. + The output variable to populate. + true if a suitable value for the field was found; false otherwise. + + + Holder for reflection information generated from google/protobuf/descriptor.proto + + + File descriptor for google/protobuf/descriptor.proto + + + + The full set of known editions. + + + + + A placeholder for an unknown edition value. + + + + + A placeholder edition for specifying default behaviors *before* a feature + was first introduced. This is effectively an "infinite past". + + + + + Legacy syntax "editions". These pre-date editions, but behave much like + distinct editions. These can't be used to specify the edition of proto + files, but feature definitions must supply proto2/proto3 defaults for + backwards compatibility. + + + + + Editions that have been released. The specific values are arbitrary and + should not be depended on, but they will always be time-ordered for easy + comparison. + + + + + Placeholder editions for testing feature resolution. These should not be + used or relyed on outside of tests. + + + + + Placeholder for specifying unbounded edition support. This should only + ever be used by plugins that can expect to never require any changes to + support a new edition. + + + + + The protocol compiler can output a FileDescriptorSet containing the .proto + files it parses. + + + + Field number for the "file" field. + + + + Describes a complete .proto file. + + + + Field number for the "name" field. + + + + file name, relative to root of source tree + + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "package" field. + + + + e.g. "foo", "foo.bar", etc. + + + + Gets whether the "package" field is set + + + Clears the value of the "package" field + + + Field number for the "dependency" field. + + + + Names of files imported by this file. + + + + Field number for the "public_dependency" field. + + + + Indexes of the public imported files in the dependency list above. + + + + Field number for the "weak_dependency" field. + + + + Indexes of the weak imported files in the dependency list. + For Google-internal migration only. Do not use. + + + + Field number for the "message_type" field. + + + + All top-level definitions in this file. + + + + Field number for the "enum_type" field. + + + Field number for the "service" field. + + + Field number for the "extension" field. + + + Field number for the "options" field. + + + Field number for the "source_code_info" field. + + + + This field contains optional information about the original source code. + You may safely remove this entire field without harming runtime + functionality of the descriptors -- the information is needed only by + development tools. + + + + Field number for the "syntax" field. + + + + The syntax of the proto file. + The supported values are "proto2", "proto3", and "editions". + + If `edition` is present, this value must be "editions". + + + + Gets whether the "syntax" field is set + + + Clears the value of the "syntax" field + + + Field number for the "edition" field. + + + + The edition of the proto file. + + + + Gets whether the "edition" field is set + + + Clears the value of the "edition" field + + + + Describes a message type. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "field" field. + + + Field number for the "extension" field. + + + Field number for the "nested_type" field. + + + Field number for the "enum_type" field. + + + Field number for the "extension_range" field. + + + Field number for the "oneof_decl" field. + + + Field number for the "options" field. + + + Field number for the "reserved_range" field. + + + Field number for the "reserved_name" field. + + + + Reserved field names, which may not be used by fields in the same message. + A given name may only be reserved once. + + + + Container for nested types declared in the DescriptorProto message type. + + + Field number for the "start" field. + + + + Inclusive. + + + + Gets whether the "start" field is set + + + Clears the value of the "start" field + + + Field number for the "end" field. + + + + Exclusive. + + + + Gets whether the "end" field is set + + + Clears the value of the "end" field + + + Field number for the "options" field. + + + + Range of reserved tag numbers. Reserved tag numbers may not be used by + fields or extension ranges in the same message. Reserved ranges may + not overlap. + + + + Field number for the "start" field. + + + + Inclusive. + + + + Gets whether the "start" field is set + + + Clears the value of the "start" field + + + Field number for the "end" field. + + + + Exclusive. + + + + Gets whether the "end" field is set + + + Clears the value of the "end" field + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "declaration" field. + + + + For external users: DO NOT USE. We are in the process of open sourcing + extension declaration and executing internal cleanups before it can be + used externally. + + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "verification" field. + + + + The verification state of the range. + TODO: flip the default to DECLARATION once all empty ranges + are marked as UNVERIFIED. + + + + Gets whether the "verification" field is set + + + Clears the value of the "verification" field + + + Container for nested types declared in the ExtensionRangeOptions message type. + + + + The verification state of the extension range. + + + + + All the extensions of the range must be declared. + + + + Field number for the "number" field. + + + + The extension number declared within the extension range. + + + + Gets whether the "number" field is set + + + Clears the value of the "number" field + + + Field number for the "full_name" field. + + + + The fully-qualified name of the extension field. There must be a leading + dot in front of the full name. + + + + Gets whether the "full_name" field is set + + + Clears the value of the "full_name" field + + + Field number for the "type" field. + + + + The fully-qualified type name of the extension field. Unlike + Metadata.type, Declaration.type must have a leading dot for messages + and enums. + + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "reserved" field. + + + + If true, indicates that the number is reserved in the extension range, + and any extension field with the number will fail to compile. Set this + when a declared extension field is deleted. + + + + Gets whether the "reserved" field is set + + + Clears the value of the "reserved" field + + + Field number for the "repeated" field. + + + + If true, indicates that the extension must be defined as repeated. + Otherwise the extension must be defined as optional. + + + + Gets whether the "repeated" field is set + + + Clears the value of the "repeated" field + + + + Describes a field within a message. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "number" field. + + + Gets whether the "number" field is set + + + Clears the value of the "number" field + + + Field number for the "label" field. + + + Gets whether the "label" field is set + + + Clears the value of the "label" field + + + Field number for the "type" field. + + + + If type_name is set, this need not be set. If both this and type_name + are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. + + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "type_name" field. + + + + For message and enum types, this is the name of the type. If the name + starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + rules are used to find the type (i.e. first the nested types within this + message are searched, then within the parent, on up to the root + namespace). + + + + Gets whether the "type_name" field is set + + + Clears the value of the "type_name" field + + + Field number for the "extendee" field. + + + + For extensions, this is the name of the type being extended. It is + resolved in the same manner as type_name. + + + + Gets whether the "extendee" field is set + + + Clears the value of the "extendee" field + + + Field number for the "default_value" field. + + + + For numeric types, contains the original text representation of the value. + For booleans, "true" or "false". + For strings, contains the default text contents (not escaped in any way). + For bytes, contains the C escaped value. All bytes >= 128 are escaped. + + + + Gets whether the "default_value" field is set + + + Clears the value of the "default_value" field + + + Field number for the "oneof_index" field. + + + + If set, gives the index of a oneof in the containing type's oneof_decl + list. This field is a member of that oneof. + + + + Gets whether the "oneof_index" field is set + + + Clears the value of the "oneof_index" field + + + Field number for the "json_name" field. + + + + JSON name of this field. The value is set by protocol compiler. If the + user has set a "json_name" option on this field, that option's value + will be used. Otherwise, it's deduced from the field's name by converting + it to camelCase. + + + + Gets whether the "json_name" field is set + + + Clears the value of the "json_name" field + + + Field number for the "options" field. + + + Field number for the "proto3_optional" field. + + + + If true, this is a proto3 "optional". When a proto3 field is optional, it + tracks presence regardless of field type. + + When proto3_optional is true, this field must belong to a oneof to signal + to old proto3 clients that presence is tracked for this field. This oneof + is known as a "synthetic" oneof, and this field must be its sole member + (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs + exist in the descriptor only, and do not generate any API. Synthetic oneofs + must be ordered after all "real" oneofs. + + For message fields, proto3_optional doesn't create any semantic change, + since non-repeated message fields always track presence. However it still + indicates the semantic detail of whether the user wrote "optional" or not. + This can be useful for round-tripping the .proto file. For consistency we + give message fields a synthetic oneof also, even though it is not required + to track presence. This is especially important because the parser can't + tell if a field is a message or an enum, so it must always create a + synthetic oneof. + + Proto2 optional fields do not set this flag, because they already indicate + optional with `LABEL_OPTIONAL`. + + + + Gets whether the "proto3_optional" field is set + + + Clears the value of the "proto3_optional" field + + + Container for nested types declared in the FieldDescriptorProto message type. + + + + 0 is reserved for errors. + Order is weird for historical reasons. + + + + + Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + negative values are likely. + + + + + Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + negative values are likely. + + + + + Tag-delimited aggregate. + Group type is deprecated and not supported after google.protobuf. However, Proto3 + implementations should still be able to parse the group wire format and + treat group fields as unknown fields. In Editions, the group wire format + can be enabled via the `message_encoding` feature. + + + + + Length-delimited aggregate. + + + + + New in version 2. + + + + + Uses ZigZag encoding. + + + + + Uses ZigZag encoding. + + + + + 0 is reserved for errors + + + + + The required label is only allowed in google.protobuf. In proto3 and Editions + it's explicitly prohibited. In Editions, the `field_presence` feature + can be used to get this behavior. + + + + + Describes a oneof. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "options" field. + + + + Describes an enum type. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "value" field. + + + Field number for the "options" field. + + + Field number for the "reserved_range" field. + + + + Range of reserved numeric values. Reserved numeric values may not be used + by enum values in the same enum declaration. Reserved ranges may not + overlap. + + + + Field number for the "reserved_name" field. + + + + Reserved enum value names, which may not be reused. A given name may only + be reserved once. + + + + Container for nested types declared in the EnumDescriptorProto message type. + + + + Range of reserved numeric values. Reserved values may not be used by + entries in the same enum. Reserved ranges may not overlap. + + Note that this is distinct from DescriptorProto.ReservedRange in that it + is inclusive such that it can appropriately represent the entire int32 + domain. + + + + Field number for the "start" field. + + + + Inclusive. + + + + Gets whether the "start" field is set + + + Clears the value of the "start" field + + + Field number for the "end" field. + + + + Inclusive. + + + + Gets whether the "end" field is set + + + Clears the value of the "end" field + + + + Describes a value within an enum. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "number" field. + + + Gets whether the "number" field is set + + + Clears the value of the "number" field + + + Field number for the "options" field. + + + + Describes a service. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "method" field. + + + Field number for the "options" field. + + + + Describes a method of a service. + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "input_type" field. + + + + Input and output type names. These are resolved in the same way as + FieldDescriptorProto.type_name, but must refer to a message type. + + + + Gets whether the "input_type" field is set + + + Clears the value of the "input_type" field + + + Field number for the "output_type" field. + + + Gets whether the "output_type" field is set + + + Clears the value of the "output_type" field + + + Field number for the "options" field. + + + Field number for the "client_streaming" field. + + + + Identifies if client streams multiple client messages + + + + Gets whether the "client_streaming" field is set + + + Clears the value of the "client_streaming" field + + + Field number for the "server_streaming" field. + + + + Identifies if server streams multiple server messages + + + + Gets whether the "server_streaming" field is set + + + Clears the value of the "server_streaming" field + + + Field number for the "java_package" field. + + + + Sets the Java package where classes generated from this .proto will be + placed. By default, the proto package is used, but this is often + inappropriate because proto packages do not normally start with backwards + domain names. + + + + Gets whether the "java_package" field is set + + + Clears the value of the "java_package" field + + + Field number for the "java_outer_classname" field. + + + + Controls the name of the wrapper Java class generated for the .proto file. + That class will always contain the .proto file's getDescriptor() method as + well as any top-level extensions defined in the .proto file. + If java_multiple_files is disabled, then all the other classes from the + .proto file will be nested inside the single wrapper outer class. + + + + Gets whether the "java_outer_classname" field is set + + + Clears the value of the "java_outer_classname" field + + + Field number for the "java_multiple_files" field. + + + + If enabled, then the Java code generator will generate a separate .java + file for each top-level message, enum, and service defined in the .proto + file. Thus, these types will *not* be nested inside the wrapper class + named by java_outer_classname. However, the wrapper class will still be + generated to contain the file's getDescriptor() method as well as any + top-level extensions defined in the file. + + + + Gets whether the "java_multiple_files" field is set + + + Clears the value of the "java_multiple_files" field + + + Field number for the "java_generate_equals_and_hash" field. + + + + This option does nothing. + + + + Gets whether the "java_generate_equals_and_hash" field is set + + + Clears the value of the "java_generate_equals_and_hash" field + + + Field number for the "java_string_check_utf8" field. + + + + A proto2 file can set this to true to opt in to UTF-8 checking for Java, + which will throw an exception if invalid UTF-8 is parsed from the wire or + assigned to a string field. + + TODO: clarify exactly what kinds of field types this option + applies to, and update these docs accordingly. + + Proto3 files already perform these checks. Setting the option explicitly to + false has no effect: it cannot be used to opt proto3 files out of UTF-8 + checks. + + + + Gets whether the "java_string_check_utf8" field is set + + + Clears the value of the "java_string_check_utf8" field + + + Field number for the "optimize_for" field. + + + Gets whether the "optimize_for" field is set + + + Clears the value of the "optimize_for" field + + + Field number for the "go_package" field. + + + + Sets the Go package where structs generated from this .proto will be + placed. If omitted, the Go package will be derived from the following: + - The basename of the package import path, if provided. + - Otherwise, the package statement in the .proto file, if present. + - Otherwise, the basename of the .proto file, without extension. + + + + Gets whether the "go_package" field is set + + + Clears the value of the "go_package" field + + + Field number for the "cc_generic_services" field. + + + + Should generic services be generated in each language? "Generic" services + are not specific to any particular RPC system. They are generated by the + main code generators in each language (without additional plugins). + Generic services were the only kind of service generation supported by + early versions of google.protobuf. + + Generic services are now considered deprecated in favor of using plugins + that generate code specific to your particular RPC system. Therefore, + these default to false. Old code which depends on generic services should + explicitly set them to true. + + + + Gets whether the "cc_generic_services" field is set + + + Clears the value of the "cc_generic_services" field + + + Field number for the "java_generic_services" field. + + + Gets whether the "java_generic_services" field is set + + + Clears the value of the "java_generic_services" field + + + Field number for the "py_generic_services" field. + + + Gets whether the "py_generic_services" field is set + + + Clears the value of the "py_generic_services" field + + + Field number for the "deprecated" field. + + + + Is this file deprecated? + Depending on the target platform, this can emit Deprecated annotations + for everything in the file, or it will be completely ignored; in the very + least, this is a formalization for deprecating files. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "cc_enable_arenas" field. + + + + Enables the use of arenas for the proto messages in this file. This applies + only to generated classes for C++. + + + + Gets whether the "cc_enable_arenas" field is set + + + Clears the value of the "cc_enable_arenas" field + + + Field number for the "objc_class_prefix" field. + + + + Sets the objective c class prefix which is prepended to all objective c + generated classes from this .proto. There is no default. + + + + Gets whether the "objc_class_prefix" field is set + + + Clears the value of the "objc_class_prefix" field + + + Field number for the "csharp_namespace" field. + + + + Namespace for generated classes; defaults to the package. + + + + Gets whether the "csharp_namespace" field is set + + + Clears the value of the "csharp_namespace" field + + + Field number for the "swift_prefix" field. + + + + By default Swift generators will take the proto package and CamelCase it + replacing '.' with underscore and use that to prefix the types/symbols + defined. When this options is provided, they will use this value instead + to prefix the types/symbols defined. + + + + Gets whether the "swift_prefix" field is set + + + Clears the value of the "swift_prefix" field + + + Field number for the "php_class_prefix" field. + + + + Sets the php class prefix which is prepended to all php generated classes + from this .proto. Default is empty. + + + + Gets whether the "php_class_prefix" field is set + + + Clears the value of the "php_class_prefix" field + + + Field number for the "php_namespace" field. + + + + Use this option to change the namespace of php generated classes. Default + is empty. When this option is empty, the package name will be used for + determining the namespace. + + + + Gets whether the "php_namespace" field is set + + + Clears the value of the "php_namespace" field + + + Field number for the "php_metadata_namespace" field. + + + + Use this option to change the namespace of php generated metadata classes. + Default is empty. When this option is empty, the proto file name will be + used for determining the namespace. + + + + Gets whether the "php_metadata_namespace" field is set + + + Clears the value of the "php_metadata_namespace" field + + + Field number for the "ruby_package" field. + + + + Use this option to change the package of ruby generated classes. Default + is empty. When this option is not set, the package name will be used for + determining the ruby package. + + + + Gets whether the "ruby_package" field is set + + + Clears the value of the "ruby_package" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. + See the documentation for the "Options" section above. + + + + Container for nested types declared in the FileOptions message type. + + + + Generated classes can be optimized for speed or code size. + + + + + Generate complete code for parsing, serialization, + + + + + etc. + + + + + Generate code using MessageLite and the lite runtime. + + + + Field number for the "message_set_wire_format" field. + + + + Set true to use the old proto1 MessageSet wire format for extensions. + This is provided for backwards-compatibility with the MessageSet wire + format. You should not use this for any other reason: It's less + efficient, has fewer features, and is more complicated. + + The message must be defined exactly as follows: + message Foo { + option message_set_wire_format = true; + extensions 4 to max; + } + Note that the message cannot have any defined fields; MessageSets only + have extensions. + + All extensions of your type must be singular messages; e.g. they cannot + be int32s, enums, or repeated messages. + + Because this is an option, the above two restrictions are not enforced by + the protocol compiler. + + + + Gets whether the "message_set_wire_format" field is set + + + Clears the value of the "message_set_wire_format" field + + + Field number for the "no_standard_descriptor_accessor" field. + + + + Disables the generation of the standard "descriptor()" accessor, which can + conflict with a field of the same name. This is meant to make migration + from proto1 easier; new code should avoid fields named "descriptor". + + + + Gets whether the "no_standard_descriptor_accessor" field is set + + + Clears the value of the "no_standard_descriptor_accessor" field + + + Field number for the "deprecated" field. + + + + Is this message deprecated? + Depending on the target platform, this can emit Deprecated annotations + for the message, or it will be completely ignored; in the very least, + this is a formalization for deprecating messages. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "map_entry" field. + + + + Whether the message is an automatically generated map entry type for the + maps field. + + For maps fields: + map<KeyType, ValueType> map_field = 1; + The parsed descriptor looks like: + message MapFieldEntry { + option map_entry = true; + optional KeyType key = 1; + optional ValueType value = 2; + } + repeated MapFieldEntry map_field = 1; + + Implementations may choose not to generate the map_entry=true message, but + use a native map in the target language to hold the keys and values. + The reflection APIs in such implementations still need to work as + if the field is a repeated message field. + + NOTE: Do not set the option in .proto files. Always use the maps syntax + instead. The option should only be implicitly set by the proto compiler + parser. + + + + Gets whether the "map_entry" field is set + + + Clears the value of the "map_entry" field + + + Field number for the "deprecated_legacy_json_field_conflicts" field. + + + + Enable the legacy handling of JSON field name conflicts. This lowercases + and strips underscored from the fields before comparison in proto3 only. + The new behavior takes `json_name` into account and applies to proto2 as + well. + + This should only be used as a temporary measure against broken builds due + to the change in behavior for JSON field name conflicts. + + TODO This is legacy behavior we plan to remove once downstream + teams have had time to migrate. + + + + Gets whether the "deprecated_legacy_json_field_conflicts" field is set + + + Clears the value of the "deprecated_legacy_json_field_conflicts" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "ctype" field. + + + + NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. + The ctype option instructs the C++ code generator to use a different + representation of the field than it normally would. See the specific + options below. This option is only implemented to support use of + [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of + type "bytes" in the open source release. + TODO: make ctype actually deprecated. + + + + Gets whether the "ctype" field is set + + + Clears the value of the "ctype" field + + + Field number for the "packed" field. + + + + The packed option can be enabled for repeated primitive fields to enable + a more efficient representation on the wire. Rather than repeatedly + writing the tag and type for each element, the entire array is encoded as + a single length-delimited blob. In proto3, only explicit setting it to + false will avoid using packed encoding. This option is prohibited in + Editions, but the `repeated_field_encoding` feature can be used to control + the behavior. + + + + Gets whether the "packed" field is set + + + Clears the value of the "packed" field + + + Field number for the "jstype" field. + + + + The jstype option determines the JavaScript type used for values of the + field. The option is permitted only for 64 bit integral and fixed types + (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING + is represented as JavaScript string, which avoids loss of precision that + can happen when a large value is converted to a floating point JavaScript. + Specifying JS_NUMBER for the jstype causes the generated JavaScript code to + use the JavaScript "number" type. The behavior of the default option + JS_NORMAL is implementation dependent. + + This option is an enum to permit additional types to be added, e.g. + goog.math.Integer. + + + + Gets whether the "jstype" field is set + + + Clears the value of the "jstype" field + + + Field number for the "lazy" field. + + + + Should this field be parsed lazily? Lazy applies only to message-type + fields. It means that when the outer message is initially parsed, the + inner message's contents will not be parsed but instead stored in encoded + form. The inner message will actually be parsed when it is first accessed. + + This is only a hint. Implementations are free to choose whether to use + eager or lazy parsing regardless of the value of this option. However, + setting this option true suggests that the protocol author believes that + using lazy parsing on this field is worth the additional bookkeeping + overhead typically needed to implement it. + + This option does not affect the public interface of any generated code; + all method signatures remain the same. Furthermore, thread-safety of the + interface is not affected by this option; const methods remain safe to + call from multiple threads concurrently, while non-const methods continue + to require exclusive access. + + Note that lazy message fields are still eagerly verified to check + ill-formed wireformat or missing required fields. Calling IsInitialized() + on the outer message would fail if the inner message has missing required + fields. Failed verification would result in parsing failure (except when + uninitialized messages are acceptable). + + + + Gets whether the "lazy" field is set + + + Clears the value of the "lazy" field + + + Field number for the "unverified_lazy" field. + + + + unverified_lazy does no correctness checks on the byte stream. This should + only be used where lazy with verification is prohibitive for performance + reasons. + + + + Gets whether the "unverified_lazy" field is set + + + Clears the value of the "unverified_lazy" field + + + Field number for the "deprecated" field. + + + + Is this field deprecated? + Depending on the target platform, this can emit Deprecated annotations + for accessors, or it will be completely ignored; in the very least, this + is a formalization for deprecating fields. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "weak" field. + + + + For Google-internal migration only. Do not use. + + + + Gets whether the "weak" field is set + + + Clears the value of the "weak" field + + + Field number for the "debug_redact" field. + + + + Indicate that the field value should not be printed out when using debug + formats, e.g. when the field contains sensitive credentials. + + + + Gets whether the "debug_redact" field is set + + + Clears the value of the "debug_redact" field + + + Field number for the "retention" field. + + + Gets whether the "retention" field is set + + + Clears the value of the "retention" field + + + Field number for the "targets" field. + + + Field number for the "edition_defaults" field. + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "feature_support" field. + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Container for nested types declared in the FieldOptions message type. + + + + Default mode. + + + + + The option [ctype=CORD] may be applied to a non-repeated field of type + "bytes". It indicates that in C++, the data should be stored in a Cord + instead of a string. For very large strings, this may reduce memory + fragmentation. It may also allow better performance when parsing from a + Cord, or when parsing with aliasing enabled, as the parsed Cord may then + alias the original buffer. + + + + + Use the default type. + + + + + Use JavaScript strings. + + + + + Use JavaScript numbers. + + + + + If set to RETENTION_SOURCE, the option will be omitted from the binary. + Note: as of January 2023, support for this is in progress and does not yet + have an effect (b/264593489). + + + + + This indicates the types of entities that the field may apply to when used + as an option. If it is unset, then the field may be freely used as an + option on any kind of entity. Note: as of January 2023, support for this is + in progress and does not yet have an effect (b/264593489). + + + + Field number for the "edition" field. + + + Gets whether the "edition" field is set + + + Clears the value of the "edition" field + + + Field number for the "value" field. + + + + Textproto value. + + + + Gets whether the "value" field is set + + + Clears the value of the "value" field + + + + Information about the support window of a feature. + + + + Field number for the "edition_introduced" field. + + + + The edition that this feature was first available in. In editions + earlier than this one, the default assigned to EDITION_LEGACY will be + used, and proto files will not be able to override it. + + + + Gets whether the "edition_introduced" field is set + + + Clears the value of the "edition_introduced" field + + + Field number for the "edition_deprecated" field. + + + + The edition this feature becomes deprecated in. Using this after this + edition may trigger warnings. + + + + Gets whether the "edition_deprecated" field is set + + + Clears the value of the "edition_deprecated" field + + + Field number for the "deprecation_warning" field. + + + + The deprecation warning text if this feature is used after the edition it + was marked deprecated in. + + + + Gets whether the "deprecation_warning" field is set + + + Clears the value of the "deprecation_warning" field + + + Field number for the "edition_removed" field. + + + + The edition this feature is no longer available in. In editions after + this one, the last default assigned will be used, and proto files will + not be able to override it. + + + + Gets whether the "edition_removed" field is set + + + Clears the value of the "edition_removed" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "allow_alias" field. + + + + Set this option to true to allow mapping different tag names to the same + value. + + + + Gets whether the "allow_alias" field is set + + + Clears the value of the "allow_alias" field + + + Field number for the "deprecated" field. + + + + Is this enum deprecated? + Depending on the target platform, this can emit Deprecated annotations + for the enum, or it will be completely ignored; in the very least, this + is a formalization for deprecating enums. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "deprecated_legacy_json_field_conflicts" field. + + + + Enable the legacy handling of JSON field name conflicts. This lowercases + and strips underscored from the fields before comparison in proto3 only. + The new behavior takes `json_name` into account and applies to proto2 as + well. + TODO Remove this legacy behavior once downstream teams have + had time to migrate. + + + + Gets whether the "deprecated_legacy_json_field_conflicts" field is set + + + Clears the value of the "deprecated_legacy_json_field_conflicts" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "deprecated" field. + + + + Is this enum value deprecated? + Depending on the target platform, this can emit Deprecated annotations + for the enum value, or it will be completely ignored; in the very least, + this is a formalization for deprecating enum values. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "debug_redact" field. + + + + Indicate that fields annotated with this enum value should not be printed + out when using debug formats, e.g. when the field contains sensitive + credentials. + + + + Gets whether the "debug_redact" field is set + + + Clears the value of the "debug_redact" field + + + Field number for the "feature_support" field. + + + + Information about the support window of a feature value. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "deprecated" field. + + + + Is this service deprecated? + Depending on the target platform, this can emit Deprecated annotations + for the service, or it will be completely ignored; in the very least, + this is a formalization for deprecating services. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Field number for the "deprecated" field. + + + + Is this method deprecated? + Depending on the target platform, this can emit Deprecated annotations + for the method, or it will be completely ignored; in the very least, + this is a formalization for deprecating methods. + + + + Gets whether the "deprecated" field is set + + + Clears the value of the "deprecated" field + + + Field number for the "idempotency_level" field. + + + Gets whether the "idempotency_level" field is set + + + Clears the value of the "idempotency_level" field + + + Field number for the "features" field. + + + + Any features defined in the specific edition. + + + + Field number for the "uninterpreted_option" field. + + + + The parser stores options it doesn't recognize here. See above. + + + + Container for nested types declared in the MethodOptions message type. + + + + Is this method side-effect-free (or safe in HTTP parlance), or idempotent, + or neither? HTTP based RPC implementation may choose GET verb for safe + methods, and PUT verb for idempotent methods instead of the default POST. + + + + + implies idempotent + + + + + idempotent, but may have side effects + + + + + A message representing a option the parser does not recognize. This only + appears in options protos created by the compiler::Parser class. + DescriptorPool resolves these when building Descriptor objects. Therefore, + options protos in descriptor objects (e.g. returned by Descriptor::options(), + or produced by Descriptor::CopyTo()) will never have UninterpretedOptions + in them. + + + + Field number for the "name" field. + + + Field number for the "identifier_value" field. + + + + The value of the uninterpreted option, in whatever type the tokenizer + identified it as during parsing. Exactly one of these should be set. + + + + Gets whether the "identifier_value" field is set + + + Clears the value of the "identifier_value" field + + + Field number for the "positive_int_value" field. + + + Gets whether the "positive_int_value" field is set + + + Clears the value of the "positive_int_value" field + + + Field number for the "negative_int_value" field. + + + Gets whether the "negative_int_value" field is set + + + Clears the value of the "negative_int_value" field + + + Field number for the "double_value" field. + + + Gets whether the "double_value" field is set + + + Clears the value of the "double_value" field + + + Field number for the "string_value" field. + + + Gets whether the "string_value" field is set + + + Clears the value of the "string_value" field + + + Field number for the "aggregate_value" field. + + + Gets whether the "aggregate_value" field is set + + + Clears the value of the "aggregate_value" field + + + Container for nested types declared in the UninterpretedOption message type. + + + + The name of the uninterpreted option. Each string represents a segment in + a dot-separated name. is_extension is true iff a segment represents an + extension (denoted with parentheses in options specs in .proto files). + E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents + "foo.(bar.baz).moo". + + + + Field number for the "name_part" field. + + + Gets whether the "name_part" field is set + + + Clears the value of the "name_part" field + + + Field number for the "is_extension" field. + + + Gets whether the "is_extension" field is set + + + Clears the value of the "is_extension" field + + + + TODO Enums in C++ gencode (and potentially other languages) are + not well scoped. This means that each of the feature enums below can clash + with each other. The short names we've chosen maximize call-site + readability, but leave us very open to this scenario. A future feature will + be designed and implemented to handle this, hopefully before we ever hit a + conflict here. + + + + Field number for the "field_presence" field. + + + Gets whether the "field_presence" field is set + + + Clears the value of the "field_presence" field + + + Field number for the "enum_type" field. + + + Gets whether the "enum_type" field is set + + + Clears the value of the "enum_type" field + + + Field number for the "repeated_field_encoding" field. + + + Gets whether the "repeated_field_encoding" field is set + + + Clears the value of the "repeated_field_encoding" field + + + Field number for the "utf8_validation" field. + + + Gets whether the "utf8_validation" field is set + + + Clears the value of the "utf8_validation" field + + + Field number for the "message_encoding" field. + + + Gets whether the "message_encoding" field is set + + + Clears the value of the "message_encoding" field + + + Field number for the "json_format" field. + + + Gets whether the "json_format" field is set + + + Clears the value of the "json_format" field + + + Container for nested types declared in the FeatureSet message type. + + + + A compiled specification for the defaults of a set of features. These + messages are generated from FeatureSet extensions and can be used to seed + feature resolution. The resolution with this object becomes a simple search + for the closest matching edition, followed by proto merges. + + + + Field number for the "defaults" field. + + + Field number for the "minimum_edition" field. + + + + The minimum supported edition (inclusive) when this was constructed. + Editions before this will not have defaults. + + + + Gets whether the "minimum_edition" field is set + + + Clears the value of the "minimum_edition" field + + + Field number for the "maximum_edition" field. + + + + The maximum known edition (inclusive) when this was constructed. Editions + after this will not have reliable defaults. + + + + Gets whether the "maximum_edition" field is set + + + Clears the value of the "maximum_edition" field + + + Container for nested types declared in the FeatureSetDefaults message type. + + + + A map from every known edition with a unique set of defaults to its + defaults. Not all editions may be contained here. For a given edition, + the defaults at the closest matching edition ordered at or before it should + be used. This field must be in strict ascending order by edition. + + + + Field number for the "edition" field. + + + Gets whether the "edition" field is set + + + Clears the value of the "edition" field + + + Field number for the "overridable_features" field. + + + + Defaults of features that can be overridden in this edition. + + + + Field number for the "fixed_features" field. + + + + Defaults of features that can't be overridden in this edition. + + + + + Encapsulates information about the original source file from which a + FileDescriptorProto was generated. + + + + Field number for the "location" field. + + + + A Location identifies a piece of source code in a .proto file which + corresponds to a particular definition. This information is intended + to be useful to IDEs, code indexers, documentation generators, and similar + tools. + + For example, say we have a file like: + message Foo { + optional string foo = 1; + } + Let's look at just the field definition: + optional string foo = 1; + ^ ^^ ^^ ^ ^^^ + a bc de f ghi + We have the following locations: + span path represents + [a,i) [ 4, 0, 2, 0 ] The whole field definition. + [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + + Notes: + - A location may refer to a repeated field itself (i.e. not to any + particular index within it). This is used whenever a set of elements are + logically enclosed in a single code segment. For example, an entire + extend block (possibly containing multiple extension definitions) will + have an outer location whose path refers to the "extensions" repeated + field without an index. + - Multiple locations may have the same path. This happens when a single + logical declaration is spread out across multiple places. The most + obvious example is the "extend" block again -- there may be multiple + extend blocks in the same scope, each of which will have the same path. + - A location's span is not always a subset of its parent's span. For + example, the "extendee" of an extension declaration appears at the + beginning of the "extend" block and is shared by all extensions within + the block. + - Just because a location's span is a subset of some other location's span + does not mean that it is a descendant. For example, a "group" defines + both a type and a field in a single declaration. Thus, the locations + corresponding to the type and field and their components will overlap. + - Code which tries to interpret locations should probably be designed to + ignore those that it doesn't understand, as more types of locations could + be recorded in the future. + + + + Container for nested types declared in the SourceCodeInfo message type. + + + Field number for the "path" field. + + + + Identifies which part of the FileDescriptorProto was defined at this + location. + + Each element is a field number or an index. They form a path from + the root FileDescriptorProto to the place where the definition appears. + For example, this path: + [ 4, 3, 2, 7, 1 ] + refers to: + file.message_type(3) // 4, 3 + .field(7) // 2, 7 + .name() // 1 + This is because FileDescriptorProto.message_type has field number 4: + repeated DescriptorProto message_type = 4; + and DescriptorProto.field has field number 2: + repeated FieldDescriptorProto field = 2; + and FieldDescriptorProto.name has field number 1: + optional string name = 1; + + Thus, the above path gives the location of a field name. If we removed + the last element: + [ 4, 3, 2, 7 ] + this path refers to the whole field declaration (from the beginning + of the label to the terminating semicolon). + + + + Field number for the "span" field. + + + + Always has exactly three or four elements: start line, start column, + end line (optional, otherwise assumed same as start line), end column. + These are packed into a single field for efficiency. Note that line + and column numbers are zero-based -- typically you will want to add + 1 to each before displaying to a user. + + + + Field number for the "leading_comments" field. + + + + If this SourceCodeInfo represents a complete declaration, these are any + comments appearing before and after the declaration which appear to be + attached to the declaration. + + A series of line comments appearing on consecutive lines, with no other + tokens appearing on those lines, will be treated as a single comment. + + leading_detached_comments will keep paragraphs of comments that appear + before (but not connected to) the current element. Each paragraph, + separated by empty lines, will be one comment element in the repeated + field. + + Only the comment content is provided; comment markers (e.g. //) are + stripped out. For block comments, leading whitespace and an asterisk + will be stripped from the beginning of each line other than the first. + Newlines are included in the output. + + Examples: + + optional int32 foo = 1; // Comment attached to foo. + // Comment attached to bar. + optional int32 bar = 2; + + optional string baz = 3; + // Comment attached to baz. + // Another line attached to baz. + + // Comment attached to moo. + // + // Another line attached to moo. + optional double moo = 4; + + // Detached comment for corge. This is not leading or trailing comments + // to moo or corge because there are blank lines separating it from + // both. + + // Detached comment for corge paragraph 2. + + optional string corge = 5; + /* Block comment attached + * to corge. Leading asterisks + * will be removed. */ + /* Block comment attached to + * grault. */ + optional int32 grault = 6; + + // ignored detached comments. + + + + Gets whether the "leading_comments" field is set + + + Clears the value of the "leading_comments" field + + + Field number for the "trailing_comments" field. + + + Gets whether the "trailing_comments" field is set + + + Clears the value of the "trailing_comments" field + + + Field number for the "leading_detached_comments" field. + + + + Describes the relationship between generated code and its original source + file. A GeneratedCodeInfo message is associated with only one generated + source file, but may contain references to different source .proto files. + + + + Field number for the "annotation" field. + + + + An Annotation connects some span of text in generated code to an element + of its generating .proto file. + + + + Container for nested types declared in the GeneratedCodeInfo message type. + + + Field number for the "path" field. + + + + Identifies the element in the original source .proto file. This field + is formatted the same as SourceCodeInfo.Location.path. + + + + Field number for the "source_file" field. + + + + Identifies the filesystem path to the original source .proto. + + + + Gets whether the "source_file" field is set + + + Clears the value of the "source_file" field + + + Field number for the "begin" field. + + + + Identifies the starting offset in bytes in the generated code + that relates to the identified object. + + + + Gets whether the "begin" field is set + + + Clears the value of the "begin" field + + + Field number for the "end" field. + + + + Identifies the ending offset in bytes in the generated code that + relates to the identified object. The end offset should be one past + the last relevant byte (so the length of the text = end - begin). + + + + Gets whether the "end" field is set + + + Clears the value of the "end" field + + + Field number for the "semantic" field. + + + Gets whether the "semantic" field is set + + + Clears the value of the "semantic" field + + + Container for nested types declared in the Annotation message type. + + + + Represents the identified object's effect on the element in the original + .proto file. + + + + + There is no effect or the effect is indescribable. + + + + + The element is set or otherwise mutated. + + + + + An alias to the element is returned. + + + + + Base class for nearly all descriptors, providing common functionality. + + + + + The feature set for this descriptor, including inherited features. + This is internal as external users should use the properties on individual + descriptor types (e.g. FieldDescriptor.IsPacked) rather than querying features directly. + + + + + The index of this descriptor within its parent descriptor. + + + This returns the index of this descriptor within its parent, for + this descriptor's type. (There can be duplicate values for different + types, e.g. one enum type with index 0 and one message type with index 0.) + + + + + Returns the name of the entity (field, message etc) being described. + + + + + The fully qualified name of the descriptor's target. + + + + + The file this descriptor was declared in. + + + + + The declaration information about the descriptor, or null if no declaration information + is available for this descriptor. + + + This information is typically only available for dynamically loaded descriptors, + for example within a protoc plugin where the full descriptors, including source info, + are passed to the code by protoc. + + + + + Retrieves the list of nested descriptors corresponding to the given field number, if any. + If the field is unknown or not a nested descriptor list, return null to terminate the search. + The default implementation returns null. + + + + + Provides additional information about the declaration of a descriptor, + such as source location and comments. + + + + + The descriptor this declaration relates to. + + + + + The start line of the declaration within the source file. This value is 1-based. + + + + + The start column of the declaration within the source file. This value is 1-based. + + + + + // The end line of the declaration within the source file. This value is 1-based. + + + + + The end column of the declaration within the source file. This value is 1-based, and + exclusive. (The final character of the declaration is on the column before this value.) + + + + + Comments appearing before the declaration. Never null, but may be empty. Multi-line comments + are represented as a newline-separated string. Leading whitespace and the comment marker ("//") + are removed from each line. + + + + + Comments appearing after the declaration. Never null, but may be empty. Multi-line comments + are represented as a newline-separated string. Leading whitespace and the comment marker ("//") + are removed from each line. + + + + + Comments appearing before the declaration, but separated from it by blank + lines. Each string represents a newline-separated paragraph of comments. + Leading whitespace and the comment marker ("//") are removed from each line. + The list is never null, but may be empty. Likewise each element is never null, but may be empty. + + + + + Contains lookup tables containing all the descriptors defined in a particular file. + + + + + Finds a symbol of the given name within the pool. + + The type of symbol to look for + Fully-qualified name to look up + The symbol with the given name and type, + or null if the symbol doesn't exist or has the wrong type + + + + Adds a package to the symbol tables. If a package by the same name + already exists, that is fine, but if some other kind of symbol + exists under the same name, an exception is thrown. If the package + has multiple components, this also adds the parent package(s). + + + + + Adds a symbol to the symbol table. + + The symbol already existed + in the symbol table. + + + + Verifies that the descriptor's name is valid (i.e. it contains + only letters, digits and underscores, and does not start with a digit). + + + + + + Returns the field with the given number in the given descriptor, + or null if it can't be found. + + + + + Adds a field to the fieldsByNumber table. + + A field with the same + containing type and number already exists. + + + + Adds an enum value to the enumValuesByNumber and enumValuesByName tables. If an enum value + with the same type and number already exists, this method does nothing to enumValuesByNumber. + (This is allowed; the first value defined with the number takes precedence.) If an enum + value with the same name already exists, this method throws DescriptorValidationException. + (It is expected that this method is called after AddSymbol, which would already have thrown + an exception in this failure case.) + + + + + Looks up a descriptor by name, relative to some other descriptor. + The name may be fully-qualified (with a leading '.'), partially-qualified, + or unqualified. C++-like name lookup semantics are used to search for the + matching descriptor. + + + This isn't heavily optimized, but it's only used during cross linking anyway. + If it starts being used more widely, we should look at performance more carefully. + + + + + Struct used to hold the keys for the enumValuesByName table. + + + + + Internal class containing utility methods when working with descriptors. + + + + + Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert + arrays. + + + + + Converts the given array into a read-only list, applying the specified conversion to + each input element. + + + + + Thrown when building descriptors fails because the source DescriptorProtos + are not valid. + + + + + The full name of the descriptor where the error occurred. + + + + + A human-readable description of the error. (The Message property + is made up of the descriptor's name and this description.) + + + + + Descriptor for an enum type in a .proto file. + + + + + Returns a clone of the underlying describing this enum. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this enum descriptor. + + + + The brief name of the descriptor's target. + + + + + The CLR type for this enum. For generated code, this will be a CLR enum type. + + + + + If this is a nested type, get the outer descriptor, otherwise null. + + + + + An unmodifiable list of defined value descriptors for this enum. + + + + + Finds an enum value by number. If multiple enum values have the + same number, this returns the first defined value with that number. + If there is no value for the given number, this returns null. + + + + + Finds an enum value by name. + + The unqualified name of the value (e.g. "FOO"). + The value's descriptor, or null if not found. + + + + The (possibly empty) set of custom options for this enum. + + + + + The EnumOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value enum option for this descriptor + + + + + Gets a repeated value enum option for this descriptor + + + + + Descriptor for a single enum value within an enum in a .proto file. + + + + + Returns a clone of the underlying describing this enum value. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this enum value descriptor. + + + + Returns the name of the enum value described by this object. + + + + + Returns the number associated with this enum value. + + + + + Returns the enum descriptor that this value is part of. + + + + + The (possibly empty) set of custom options for this enum value. + + + + + The EnumValueOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value enum value option for this descriptor + + + + + Gets a repeated value enum value option for this descriptor + + + + + A collection to simplify retrieving the descriptors of extensions in a descriptor for a message + + + + + Returns a readonly list of all the extensions defined in this type in + the order they were defined in the source .proto file + + + + + Returns a readonly list of all the extensions define in this type that extend + the provided descriptor type in the order they were defined in the source .proto file + + + + + Returns a readonly list of all the extensions define in this type that extend + the provided descriptor type in ascending field order + + + + + A resolved set of features for a file, message etc. + + + Only features supported by the C# runtime are exposed; currently + all enums in C# are open, and we never perform UTF-8 validation. + If either of those features are ever implemented in this runtime, + the feature settings will be exposed as properties in this class. + + + + + Only relevant to fields. Indicates if a field has explicit presence. + + + + + Only relevant to fields. Indicates how a repeated field should be encoded. + + + + + Only relevant to fields. Indicates how a message-valued field should be encoded. + + + + + Returns a new descriptor based on this one, with the specified overrides. + Multiple calls to this method that produce equivalent feature sets will return + the same instance. + + The proto representation of the "child" feature set to merge with this + one. May be null, in which case this descriptor is returned. + A descriptor based on the current one, with the given set of overrides. + + + + Base class for field accessors. + + + + + Descriptor for a field or extension within a message in a .proto file. + + + + + Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. + + + + + Returns the oneof containing this field, or null if it is not part of a oneof. + + + + + Returns the oneof containing this field if it's a "real" oneof, or null if either this + field is not part of a oneof, or the oneof is synthetic. + + + + + The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, + but can be overridden using the json_name option in the .proto file. + + + + + The name of the property in the ContainingType.ClrType class. + + + + + Indicates whether this field supports presence, either implicitly (e.g. due to it being a message + type field) or explicitly via Has/Clear members. If this returns true, it is safe to call + and + on this field's accessor with a suitable message. + + + + + Returns a clone of the underlying describing this field. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this field descriptor. + + + + An extension identifier for this field, or null if this field isn't an extension. + + + + + Returns the features from the direct parent: + - The file for top-level extensions + - The oneof for one-of fields + - Otherwise the message + + + + + Returns a feature set with inferred features for the given field, or null if no features + need to be inferred. + + + + + The brief name of the descriptor's target. + + + + + Returns the accessor for this field. + + + + While a describes the field, it does not provide + any way of obtaining or changing the value of the field within a specific message; + that is the responsibility of the accessor. + + + In descriptors for generated code, the value returned by this property will be non-null for all + regular fields. However, if a message containing a map field is introspected, the list of nested messages will include + an auto-generated nested key/value pair message for the field. This is not represented in any + generated type, and the value of the map field itself is represented by a dictionary in the + reflection API. There are never instances of those "hidden" messages, so no accessor is provided + and this property will return null. + + + In dynamically loaded descriptors, the value returned by this property will current be null; + if and when dynamic messages are supported, it will return a suitable accessor to work with + them. + + + + + + Maps a field type as included in the .proto file to a FieldType. + + + + + Returns true if this field is a repeated field; false otherwise. + + + + + Returns true if this field is a required field; false otherwise. + + + + + Returns true if this field is a map field; false otherwise. + + + + + Returns true if this field is a packed, repeated field; false otherwise. + + + + + Returns true if this field extends another message type; false otherwise. + + + + + Returns the type of the field. + + + + + Returns the field number declared in the proto file. + + + + + Compares this descriptor with another one, ordering in "canonical" order + which simply means ascending order by field number. + must be a field of the same type, i.e. the of + both fields must be the same. + + + + + For enum fields, returns the field's type. + + + + + For embedded message and group fields, returns the field's type. + + + + + For extension fields, returns the extended type + + + + + The (possibly empty) set of custom options for this field. + + + + + The FieldOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value field option for this descriptor + + + + + Gets a repeated value field option for this descriptor + + + + + Look up and cross-link all field types etc. + + + + + Enumeration of all the possible field types. + + + + + The double field type. + + + + + The float field type. + + + + + The int64 field type. + + + + + The uint64 field type. + + + + + The int32 field type. + + + + + The fixed64 field type. + + + + + The fixed32 field type. + + + + + The bool field type. + + + + + The string field type. + + + + + The field type used for groups. + + + + + The field type used for message fields. + + + + + The bytes field type. + + + + + The uint32 field type. + + + + + The sfixed32 field type. + + + + + The sfixed64 field type. + + + + + The sint32 field type. + + + + + The sint64 field type. + + + + + The field type used for enum fields. + + + + + The syntax of a .proto file + + + + + Proto2 syntax + + + + + Proto3 syntax + + + + + Editions syntax + + + + + An unknown declared syntax + + + + + Describes a .proto file, including everything defined within. + IDescriptor is implemented such that the File property returns this descriptor, + and the FullName is the same as the Name. + + + + + Computes the full name of a descriptor within this file, with an optional parent message. + + + + + Extracts public dependencies from direct dependencies. This is a static method despite its + first parameter, as the value we're in the middle of constructing is only used for exceptions. + + + + + The descriptor in its protocol message representation. + + + + + Returns a clone of the underlying describing this file. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this file descriptor. + + + + The feature set for this file, including inherited features. + + + + + Returns the edition of the file descriptor. + + + + + The syntax of the file. + + + + + The file name. + + + + + The package as declared in the .proto file. This may or may not + be equivalent to the .NET namespace of the generated classes. + + + + + Unmodifiable list of top-level message types declared in this file. + + + + + Unmodifiable list of top-level enum types declared in this file. + + + + + Unmodifiable list of top-level services declared in this file. + + + + + Unmodifiable list of top-level extensions declared in this file. + Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) + if this descriptor was generated using a version of protoc that did not fully + support extensions in C#. + + + + + Unmodifiable list of this file's dependencies (imports). + + + + + Unmodifiable list of this file's public dependencies (public imports). + + + + + The original serialized binary form of this descriptor. + + + + + Implementation of IDescriptor.FullName - just returns the same as Name. + + + + + Implementation of IDescriptor.File - just returns this descriptor. + + + + + Pool containing symbol descriptors. + + + + + Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. + + The unqualified type name to look for. + The type of descriptor to look for + The type's descriptor, or null if not found. + + + + Builds a FileDescriptor from its protocol buffer representation. + + The original serialized descriptor data. + We have only limited proto2 support, so serializing FileDescriptorProto + would not necessarily give us this. + The protocol message form of the FileDescriptor. + FileDescriptors corresponding to all of the + file's dependencies, in the exact order listed in the .proto file. May be null, + in which case it is treated as an empty array. + Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). + Details about generated code, for the purposes of reflection. + If is not + a valid descriptor. This can occur for a number of reasons, such as a field + having an undefined type or because two messages were defined with the same name. + + + + Creates a descriptor for generated code. + + + This method is only designed to be used by the results of generating code with protoc, + which creates the appropriate dependencies etc. It has to be public because the generated + code is "external", but should not be called directly by end users. + + + + + Converts the given descriptor binary data into FileDescriptor objects. + Note: reflection using the returned FileDescriptors is not currently supported. + + The binary file descriptor proto data. Must not be null, and any + dependencies must come before the descriptor which depends on them. (If A depends on B, and B + depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible + with the order in which protoc provides descriptors to plugins. + The extension registry to use when parsing, or null if no extensions are required. + The file descriptors corresponding to . + + + + Converts the given descriptor binary data into FileDescriptor objects. + Note: reflection using the returned FileDescriptors is not currently supported. + + The binary file descriptor proto data. Must not be null, and any + dependencies must come before the descriptor which depends on them. (If A depends on B, and B + depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible + with the order in which protoc provides descriptors to plugins. + The file descriptors corresponding to . + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns the file descriptor for descriptor.proto. + + + This is used for protos which take a direct dependency on descriptor.proto, typically for + annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf + runtime for reflection purposes. The messages are internal to the runtime as they would require + proto2 semantics for full support, but the file descriptor is available via this property. The + C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. + + + The file descriptor for descriptor.proto. + + + + + The (possibly empty) set of custom options for this file. + + + + + The FileOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value file option for this descriptor + + + + + Gets a repeated value file option for this descriptor + + + + + Performs initialization for the given generic type argument. + + + This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) + to make calls into the reflection machinery of this library to express an intention to use that type + reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers + attempting to determine which generic type arguments need to be handled will spot the code path and act + accordingly. + + The type to force initialization for. + + + + Extra information provided by generated code when initializing a message or file descriptor. + These are constructed as required, and are not long-lived. Hand-written code should + never need to use this type. + + + + + Irrelevant for file descriptors; the CLR type for the message for message descriptors. + + + + + Irrelevant for file descriptors; the parser for message descriptors. + + + + + Irrelevant for file descriptors; the CLR property names (in message descriptor field order) + for fields in the message for message descriptors. + + + + + The extensions defined within this file/message descriptor + + + + + Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) + for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", + there will be a "FooCase" property and a "ClearFoo" method. + + + + + The reflection information for types within this file/message descriptor. Elements may be null + if there is no corresponding generated type, e.g. for map entry types. + + + + + The CLR types for enums within this file/message descriptor. + + + + + Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. + Each array parameter may be null, to indicate a lack of values. + The parameter order is designed to make it feasible to format the generated code readably. + + + + + Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. + Each array parameter may be null, to indicate a lack of values. + The parameter order is designed to make it feasible to format the generated code readably. + + + + + Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. + + + + + Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. + + + + + Interface implemented by all descriptor types. + + + + + Returns the name of the entity (message, field etc) being described. + + + + + Returns the fully-qualified name of the entity being described. + + + + + Returns the descriptor for the .proto file that this entity is part of. + + + + + Allows fields to be reflectively accessed. + + + + + Returns the descriptor associated with this field. + + + + + Clears the field in the specified message. (For repeated fields, + this clears the list.) + + + + + Fetches the field value. For repeated values, this will be an + implementation. For map values, this will be an + implementation. + + + + + Indicates whether the field in the specified message is set. + For proto3 fields that aren't explicitly optional, this throws an + + + + + Mutator for single "simple" fields only. + + + Repeated fields are mutated by fetching the value and manipulating it as a list. + Map fields are mutated by fetching the value and manipulating it as a dictionary. + + The field is not a "simple" field. + + + + Accessor for map fields. + + + + + Describes a message type. + + + + + The brief name of the descriptor's target. + + + + + Returns a clone of the underlying describing this message. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this message descriptor. + + + + The CLR type used to represent message instances from this descriptor. + + + + The value returned by this property will be non-null for all regular fields. However, + if a message containing a map field is introspected, the list of nested messages will include + an auto-generated nested key/value pair message for the field. This is not represented in any + generated type, so this property will return null in such cases. + + + For wrapper types ( and the like), the type returned here + will be the generated message type, not the native type used by reflection for fields of those types. Code + using reflection should call to determine whether a message descriptor represents + a wrapper type, and handle the result appropriately. + + + + + + A parser for this message type. + + + + As is not generic, this cannot be statically + typed to the relevant type, but it should produce objects of a type compatible with . + + + The value returned by this property will be non-null for all regular fields. However, + if a message containing a map field is introspected, the list of nested messages will include + an auto-generated nested key/value pair message for the field. No message parser object is created for + such messages, so this property will return null in such cases. + + + For wrapper types ( and the like), the parser returned here + will be the generated message type, not the native type used by reflection for fields of those types. Code + using reflection should call to determine whether a message descriptor represents + a wrapper type, and handle the result appropriately. + + + + + + Returns whether this message is one of the "well known types" which may have runtime/protoc support. + + + + + Returns whether this message is one of the "wrapper types" used for fields which represent primitive values + with the addition of presence. + + + + + Returns whether this message was synthetically-created to store key/value pairs in a + map field. + + + + + If this is a nested type, get the outer descriptor, otherwise null. + + + + + A collection of fields, which can be retrieved by name or field number. + + + + + An unmodifiable list of extensions defined in this message's scope. + Note that some extensions may be incomplete (FieldDescriptor.Extension may be null) + if they are declared in a file generated using a version of protoc that did not fully + support extensions in C#. + + + + + An unmodifiable list of this message type's nested types. + + + + + An unmodifiable list of this message type's enum types. + + + + + An unmodifiable list of the "oneof" field collections in this message type. + All "real" oneofs (where returns false) + come before synthetic ones. + + + + + The number of real "oneof" descriptors in this message type. Every element in + with an index less than this will have a property value + of false; every element with an index greater than or equal to this will have a + property value of true. + + + + + Finds a field by field name. + + The unqualified name of the field (e.g. "foo"). + The field's descriptor, or null if not found. + + + + Finds a field by field number. + + The field number within this message type. + The field's descriptor, or null if not found. + + + + Finds a nested descriptor by name. The is valid for fields, nested + message types, oneofs and enums. + + The unqualified name of the descriptor, e.g. "Foo" + The descriptor, or null if not found. + + + + The (possibly empty) set of custom options for this message. + + + + + The MessageOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value message option for this descriptor + + + + + Gets a repeated value message option for this descriptor + + + + + Looks up and cross-links all fields and nested types. + + + + + A collection to simplify retrieving the field accessor for a particular field. + + + + + Returns the fields in the message as an immutable list, in the order in which they + are declared in the source .proto file. + + + + + Returns the fields in the message as an immutable list, in ascending field number + order. Field numbers need not be contiguous, so there is no direct mapping from the + index in the list to the field number; to retrieve a field by field number, it is better + to use the indexer. + + + + + Returns a read-only dictionary mapping the field names in this message as they're available + in the JSON representation to the field descriptors. For example, a field foo_bar + in the message would result two entries, one with a key fooBar and one with a key + foo_bar, both referring to the same field. + + + + + Retrieves the descriptor for the field with the given number. + + Number of the field to retrieve the descriptor for + The accessor for the given field + The message descriptor does not contain a field + with the given number + + + + Retrieves the descriptor for the field with the given name. + + Name of the field to retrieve the descriptor for + The descriptor for the given field + The message descriptor does not contain a field + with the given name + + + + Describes a single method in a service. + + + + + The service this method belongs to. + + + + + The method's input type. + + + + + The method's input type. + + + + + Indicates if client streams multiple requests. + + + + + Indicates if server streams multiple responses. + + + + + The (possibly empty) set of custom options for this method. + + + + + The MethodOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value method option for this descriptor + + + + + Gets a repeated value method option for this descriptor + + + + + Returns a clone of the underlying describing this method. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this method descriptor. + + + + The brief name of the descriptor's target. + + + + + Reflection access for a oneof, allowing clear and "get case" actions. + + + + + Gets the descriptor for this oneof. + + + The descriptor of the oneof. + + + + + Clears the oneof in the specified message. + + + + + Indicates which field in the oneof is set for specified message + + + + + Describes a "oneof" field collection in a message type: a set of + fields of which at most one can be set in any particular message. + + + + + The brief name of the descriptor's target. + + + + + Returns a clone of the underlying describing this oneof. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this oneof descriptor. + + + + Gets the message type containing this oneof. + + + The message type containing this oneof. + + + + + Gets the fields within this oneof, in declaration order. + + + The fields within this oneof, in declaration order. + + + + + Returns true if this oneof is a synthetic oneof containing a proto3 optional field; + false otherwise. + + + + + Gets an accessor for reflective access to the values associated with the oneof + in a particular message. + + + + In descriptors for generated code, the value returned by this property will always be non-null. + + + In dynamically loaded descriptors, the value returned by this property will current be null; + if and when dynamic messages are supported, it will return a suitable accessor to work with + them. + + + + The accessor used for reflective access. + + + + + The (possibly empty) set of custom options for this oneof. + + + + + The OneofOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value oneof option for this descriptor + + + + + Gets a repeated value oneof option for this descriptor + + + + + Specifies the original name (in the .proto file) of a named element, + such as an enum value. + + + + + The name of the element in the .proto file. + + + + + If the name is preferred in the .proto file. + + + + + Constructs a new attribute instance for the given name. + + The name of the element in the .proto file. + + + + Represents a package in the symbol table. We use PackageDescriptors + just as placeholders so that someone cannot define, say, a message type + that has the same name as an existing package. + + + + + The methods in this class are somewhat evil, and should not be tampered with lightly. + Basically they allow the creation of relatively weakly typed delegates from MethodInfos + which are more strongly typed. They do this by creating an appropriate strongly typed + delegate from the MethodInfo, and then calling that within an anonymous method. + Mind-bending stuff (at least to your humble narrator) but the resulting delegates are + very fast compared with calling Invoke later on. + + + + + Empty Type[] used when calling GetProperty to force property instead of indexer fetching. + + + + + Creates a delegate which will cast the argument to the type that declares the method, + call the method on it, then convert the result to object. + + The method to create a delegate for, which must be declared in an + IMessage implementation. + + + + Creates a delegate which will cast the argument to the type that declares the method, + call the method on it, then convert the result to the specified type. The method is expected + to actually return an enum (because of where we're calling it - for oneof cases). Sometimes + that means we need some extra work to perform conversions. + + The method to create a delegate for, which must be declared in an + IMessage implementation. + + + + Creates a delegate which will execute the given method after casting the first argument to + the type that declares the method, and the second argument to the first parameter type of + the method. + + The method to create a delegate for, which must be declared in an + IMessage implementation. + + + + Creates a delegate which will execute the given method after casting the first argument to + type that declares the method. + + The method to create a delegate for, which must be declared in an + IMessage implementation. + + + + Creates a delegate which will execute the given method after casting the first argument to + the type that declares the method, and the second argument to the first parameter type of + the method. + + + + + Creates a reflection helper for the given type arguments. Currently these are created on + demand rather than cached; this will be "busy" when initially loading a message's + descriptor, but after that they can be garbage collected. We could cache them by type if + that proves to be important, but creating an object is pretty cheap. + + + + + Accessor for repeated fields. + + + + + Describes a service type. + + + + + The brief name of the descriptor's target. + + + + + Returns a clone of the underlying describing this service. + Note that a copy is taken every time this method is called, so clients using it frequently + (and not modifying it) may want to cache the returned value. + + A protobuf representation of this service descriptor. + + + + An unmodifiable list of methods in this service. + + + + + Finds a method by name. + + The unqualified name of the method (e.g. "Foo"). + The method's descriptor, or null if not found. + + + + The (possibly empty) set of custom options for this service. + + + + + The ServiceOptions, defined in descriptor.proto. + If the options message is not present (i.e. there are no options), null is returned. + Custom options can be retrieved as extensions of the returned message. + NOTE: A defensive copy is created each time this property is retrieved. + + + + + Gets a single value service option for this descriptor + + + + + Gets a repeated value service option for this descriptor + + + + + Accessor for single fields. + + + + + An immutable registry of types which can be looked up by their full name. + + + + + An empty type registry, containing no types. + + + + + Attempts to find a message descriptor by its full name. + + The full name of the message, which is the dot-separated + combination of package, containing messages and message name + The message descriptor corresponding to or null + if there is no such message descriptor. + + + + Creates a type registry from the specified set of file descriptors. + + + This is a convenience overload for + to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). + + The set of files to include in the registry. Must not contain null values. + A type registry for the given files. + + + + Creates a type registry from the specified set of file descriptors. + + + All message types within all the specified files are added to the registry, and + the dependencies of the specified files are also added, recursively. + + The set of files to include in the registry. Must not contain null values. + A type registry for the given files. + + + + Creates a type registry from the file descriptor parents of the specified set of message descriptors. + + + This is a convenience overload for + to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). + + The set of message descriptors to use to identify file descriptors to include in the registry. + Must not contain null values. + A type registry for the given files. + + + + Creates a type registry from the file descriptor parents of the specified set of message descriptors. + + + The specified message descriptors are only used to identify their file descriptors; the returned registry + contains all the types within the file descriptors which contain the specified message descriptors (and + the dependencies of those files), not just the specified messages. + + The set of message descriptors to use to identify file descriptors to include in the registry. + Must not contain null values. + A type registry for the given files. + + + + Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. + + + + + Abstraction for reading from a stream / read only sequence. + Parsing from the buffer is a loop of reading from current buffer / refreshing the buffer once done. + + + + + Initialize an instance with a coded input stream. + This approach is faster than using a constructor because the instance to initialize is passed by reference + and we can write directly into it without copying. + + + + + Initialize an instance with a read only sequence. + This approach is faster than using a constructor because the instance to initialize is passed by reference + and we can write directly into it without copying. + + + + + Sets currentLimit to (current position) + byteLimit. This is called + when descending into a length-delimited embedded message. The previous + limit is returned. + + The old limit. + + + + Discards the current limit, returning the previous limit. + + + + + Returns whether or not all the data before the limit has been read. + + + + + + Returns true if the stream has reached the end of the input. This is the + case if either the end of the underlying input source has been reached or + the stream has reached a limit created using PushLimit. + + + + + Represents a single field in an UnknownFieldSet. + + An UnknownField consists of four lists of values. The lists correspond + to the four "wire types" used in the protocol buffer binary format. + Normally, only one of the four lists will contain any values, since it + is impossible to define a valid message type that declares two different + types for the same field number. However, the code is designed to allow + for the case where the same unknown field number is encountered using + multiple different wire types. + + + + + + Creates a new UnknownField. + + + + + Checks if two unknown field are equal. + + + + + Get the hash code of the unknown field. + + + + + Serializes the field, including the field number, and writes it to + + + The unknown field number. + The write context to write to. + + + + Computes the number of bytes required to encode this field, including field + number. + + + + + Merge the values in into this field. For each list + of values, 's values are append to the ones in this + field. + + + + + Returns a new list containing all of the given specified values from + both the and lists. + If is null and is null or empty, + null is returned. Otherwise, either a new list is created (if + is null) or the elements of are added to . + + + + + Adds a varint value. + + + + + Adds a fixed32 value. + + + + + Adds a fixed64 value. + + + + + Adds a length-delimited value. + + + + + Adds to the , creating + a new list if is null. The list is returned - either + the original reference or the new list. + + + + + Used to keep track of fields which were seen when parsing a protocol message + but whose field numbers or types are unrecognized. This most frequently + occurs when new fields are added to a message type and then messages containing + those fields are read by old software that was built before the new types were + added. + + Most users will never need to use this class directly. + + + + + Creates a new UnknownFieldSet. + + + + + Checks whether or not the given field number is present in the set. + + + + + Serializes the set and writes it to . + + + + + Serializes the set and writes it to . + + + + + Gets the number of bytes required to encode this set. + + + + + Checks if two unknown field sets are equal. + + + + + Gets the unknown field set's hash code. + + + + + Adds a field to the set. If a field with the same number already exists, it + is replaced. + + + + + Parse a single field from and merge it + into this set. + + The parse context from which to read the field + false if the tag is an "end group" tag, true otherwise + + + + Create a new UnknownFieldSet if unknownFields is null. + Parse a single field from and merge it + into unknownFields. If is configured to discard unknown fields, + will be returned as-is and the field will be skipped. + + The UnknownFieldSet which need to be merged + The coded input stream containing the field + The merged UnknownFieldSet + + + + Create a new UnknownFieldSet if unknownFields is null. + Parse a single field from and merge it + into unknownFields. If is configured to discard unknown fields, + will be returned as-is and the field will be skipped. + + The UnknownFieldSet which need to be merged + The parse context from which to read the field + The merged UnknownFieldSet + + + + Merges the fields from into this set. + If a field number exists in both sets, the values in + will be appended to the values in this set. + + + + + Created a new UnknownFieldSet to if + needed and merges the fields from into the first set. + If a field number exists in both sets, the values in + will be appended to the values in this set. + + + + + Adds a field to the unknown field set. If a field with the same + number already exists, the two are merged. + + + + + Clone an unknown field set from . + + + + + Provides a number of unsafe byte operations to be used by advanced applications with high performance + requirements. These methods are referred to as "unsafe" due to the fact that they potentially expose + the backing buffer of a to the application. + + + + The methods in this class should only be called if it is guaranteed that the buffer backing the + will never change! Mutation of a can lead to unexpected + and undesirable consequences in your application, and will likely be difficult to debug. Proceed with caution! + + + This can have a number of significant side affects that have spooky-action-at-a-distance-like behavior. In + particular, if the bytes value changes out from under a Protocol Buffer: + + + + serialization may throw + + + serialization may succeed but the wrong bytes may be written out + + + objects that are normally immutable (such as ByteString) are no longer immutable + + + hashCode may be incorrect + + + + + + + Constructs a new from the given bytes. The bytes are not copied, + and must not be modified while the is in use. + This API is experimental and subject to change. + + + + Holder for reflection information generated from google/protobuf/any.proto + + + File descriptor for google/protobuf/any.proto + + + + `Any` contains an arbitrary serialized protocol buffer message along with a + URL that describes the type of the serialized message. + + Protobuf library provides support to pack/unpack Any values in the form + of utility functions or additional generated methods of the Any type. + + Example 1: Pack and unpack a message in C++. + + Foo foo = ...; + Any any; + any.PackFrom(foo); + ... + if (any.UnpackTo(&foo)) { + ... + } + + Example 2: Pack and unpack a message in Java. + + Foo foo = ...; + Any any = Any.pack(foo); + ... + if (any.is(Foo.class)) { + foo = any.unpack(Foo.class); + } + // or ... + if (any.isSameTypeAs(Foo.getDefaultInstance())) { + foo = any.unpack(Foo.getDefaultInstance()); + } + + Example 3: Pack and unpack a message in Python. + + foo = Foo(...) + any = Any() + any.Pack(foo) + ... + if any.Is(Foo.DESCRIPTOR): + any.Unpack(foo) + ... + + Example 4: Pack and unpack a message in Go + + foo := &pb.Foo{...} + any, err := anypb.New(foo) + if err != nil { + ... + } + ... + foo := &pb.Foo{} + if err := any.UnmarshalTo(foo); err != nil { + ... + } + + The pack methods provided by protobuf library will by default use + 'type.googleapis.com/full.type.name' as the type URL and the unpack + methods only use the fully qualified type name after the last '/' + in the type URL, for example "foo.bar.com/x/y.z" will yield type + name "y.z". + + JSON + ==== + The JSON representation of an `Any` value uses the regular + representation of the deserialized, embedded message, with an + additional field `@type` which contains the type URL. Example: + + package google.profile; + message Person { + string first_name = 1; + string last_name = 2; + } + + { + "@type": "type.googleapis.com/google.profile.Person", + "firstName": <string>, + "lastName": <string> + } + + If the embedded message type is well-known and has a custom JSON + representation, that representation will be embedded adding a field + `value` which holds the custom JSON in addition to the `@type` + field. Example (for message [google.protobuf.Duration][]): + + { + "@type": "type.googleapis.com/google.protobuf.Duration", + "value": "1.212s" + } + + + + Field number for the "type_url" field. + + + + A URL/resource name that uniquely identifies the type of the serialized + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must represent + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a canonical form + (e.g., leading "." is not accepted). + + In practice, teams usually precompile into the binary all types that they + expect it to use in the context of Any. However, for URLs which use the + scheme `http`, `https`, or no scheme, one can optionally set up a type + server that maps type URLs to message definitions as follows: + + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + protobuf release, and it is not used for type URLs beginning with + type.googleapis.com. As of May 2023, there are no widely used type server + implementations and no plans to implement one. + + Schemes other than `http`, `https` (or the empty scheme) might be + used with implementation specific semantics. + + + + Field number for the "value" field. + + + + Must be a valid serialized protocol buffer of the above specified type. + + + + + Retrieves the type name for a type URL, matching the + of the packed message type. + + + + This is always just the last part of the URL, after the final slash. No validation of + anything before the trailing slash is performed. If the type URL does not include a slash, + an empty string is returned rather than an exception being thrown; this won't match any types, + and the calling code is probably in a better position to give a meaningful error. + + + There is no handling of fragments or queries at the moment. + + + The URL to extract the type name from + The type name + + + + Returns a bool indictating whether this Any message is of the target message type + + The descriptor of the message type + true if the type name matches the descriptor's full name or false otherwise + + + + Unpacks the content of this Any message into the target message type, + which must match the type URL within this Any message. + + The type of message to unpack the content into. + The unpacked message. + The target message type doesn't match the type URL in this message + + + + Attempts to unpack the content of this Any message into the target message type, + if it matches the type URL within this Any message. + + The type of message to attempt to unpack the content into. + true if the message was successfully unpacked; false if the type name didn't match + + + + Attempts to unpack the content of this Any message into one of the message types + in the given type registry, based on the type URL. + + The type registry to consult for messages. + The unpacked message, or null if no matching message was found. + + + + Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". + + The message to pack. + An Any message with the content and type URL of . + + + + Packs the specified message into an Any message using the specified type URL prefix. + + The message to pack. + The prefix for the type URL. + An Any message with the content and type URL of . + + + Holder for reflection information generated from google/protobuf/api.proto + + + File descriptor for google/protobuf/api.proto + + + + Api is a light-weight descriptor for an API Interface. + + Interfaces are also described as "protocol buffer services" in some contexts, + such as by the "service" keyword in a .proto file, but they are different + from API Services, which represent a concrete implementation of an interface + as opposed to simply a description of methods and bindings. They are also + sometimes simply referred to as "APIs" in other contexts, such as the name of + this message itself. See https://cloud.google.com/apis/design/glossary for + detailed terminology. + + + + Field number for the "name" field. + + + + The fully qualified name of this interface, including package name + followed by the interface's simple name. + + + + Field number for the "methods" field. + + + + The methods of this interface, in unspecified order. + + + + Field number for the "options" field. + + + + Any metadata attached to the interface. + + + + Field number for the "version" field. + + + + A version string for this interface. If specified, must have the form + `major-version.minor-version`, as in `1.10`. If the minor version is + omitted, it defaults to zero. If the entire version field is empty, the + major version is derived from the package name, as outlined below. If the + field is not empty, the version in the package name will be verified to be + consistent with what is provided here. + + The versioning schema uses [semantic + versioning](http://semver.org) where the major version number + indicates a breaking change and the minor version an additive, + non-breaking change. Both version numbers are signals to users + what to expect from different versions, and should be carefully + chosen based on the product plan. + + The major version is also reflected in the package name of the + interface, which must end in `v<major-version>`, as in + `google.feature.v1`. For major versions 0 and 1, the suffix can + be omitted. Zero major versions must only be used for + experimental, non-GA interfaces. + + + + Field number for the "source_context" field. + + + + Source context for the protocol buffer service represented by this + message. + + + + Field number for the "mixins" field. + + + + Included interfaces. See [Mixin][]. + + + + Field number for the "syntax" field. + + + + The source syntax of the service. + + + + + Method represents a method of an API interface. + + + + Field number for the "name" field. + + + + The simple name of this method. + + + + Field number for the "request_type_url" field. + + + + A URL of the input message type. + + + + Field number for the "request_streaming" field. + + + + If true, the request is streamed. + + + + Field number for the "response_type_url" field. + + + + The URL of the output message type. + + + + Field number for the "response_streaming" field. + + + + If true, the response is streamed. + + + + Field number for the "options" field. + + + + Any metadata attached to the method. + + + + Field number for the "syntax" field. + + + + The source syntax of this method. + + + + + Declares an API Interface to be included in this interface. The including + interface must redeclare all the methods from the included interface, but + documentation and options are inherited as follows: + + - If after comment and whitespace stripping, the documentation + string of the redeclared method is empty, it will be inherited + from the original method. + + - Each annotation belonging to the service config (http, + visibility) which is not set in the redeclared method will be + inherited. + + - If an http annotation is inherited, the path pattern will be + modified as follows. Any version prefix will be replaced by the + version of the including interface plus the [root][] path if + specified. + + Example of a simple mixin: + + package google.acl.v1; + service AccessControl { + // Get the underlying ACL object. + rpc GetAcl(GetAclRequest) returns (Acl) { + option (google.api.http).get = "/v1/{resource=**}:getAcl"; + } + } + + package google.storage.v2; + service Storage { + rpc GetAcl(GetAclRequest) returns (Acl); + + // Get a data record. + rpc GetData(GetDataRequest) returns (Data) { + option (google.api.http).get = "/v2/{resource=**}"; + } + } + + Example of a mixin configuration: + + apis: + - name: google.storage.v2.Storage + mixins: + - name: google.acl.v1.AccessControl + + The mixin construct implies that all methods in `AccessControl` are + also declared with same name and request/response types in + `Storage`. A documentation generator or annotation processor will + see the effective `Storage.GetAcl` method after inherting + documentation and annotations as follows: + + service Storage { + // Get the underlying ACL object. + rpc GetAcl(GetAclRequest) returns (Acl) { + option (google.api.http).get = "/v2/{resource=**}:getAcl"; + } + ... + } + + Note how the version in the path pattern changed from `v1` to `v2`. + + If the `root` field in the mixin is specified, it should be a + relative path under which inherited HTTP paths are placed. Example: + + apis: + - name: google.storage.v2.Storage + mixins: + - name: google.acl.v1.AccessControl + root: acls + + This implies the following inherited HTTP annotation: + + service Storage { + // Get the underlying ACL object. + rpc GetAcl(GetAclRequest) returns (Acl) { + option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; + } + ... + } + + + + Field number for the "name" field. + + + + The fully qualified name of the interface which is included. + + + + Field number for the "root" field. + + + + If non-empty specifies a path under which inherited HTTP paths + are rooted. + + + + Holder for reflection information generated from google/protobuf/duration.proto + + + File descriptor for google/protobuf/duration.proto + + + + A Duration represents a signed, fixed-length span of time represented + as a count of seconds and fractions of seconds at nanosecond + resolution. It is independent of any calendar and concepts like "day" + or "month". It is related to Timestamp in that the difference between + two Timestamp values is a Duration and it can be added or subtracted + from a Timestamp. Range is approximately +-10,000 years. + + # Examples + + Example 1: Compute Duration from two Timestamps in pseudo code. + + Timestamp start = ...; + Timestamp end = ...; + Duration duration = ...; + + duration.seconds = end.seconds - start.seconds; + duration.nanos = end.nanos - start.nanos; + + if (duration.seconds < 0 && duration.nanos > 0) { + duration.seconds += 1; + duration.nanos -= 1000000000; + } else if (duration.seconds > 0 && duration.nanos < 0) { + duration.seconds -= 1; + duration.nanos += 1000000000; + } + + Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. + + Timestamp start = ...; + Duration duration = ...; + Timestamp end = ...; + + end.seconds = start.seconds + duration.seconds; + end.nanos = start.nanos + duration.nanos; + + if (end.nanos < 0) { + end.seconds -= 1; + end.nanos += 1000000000; + } else if (end.nanos >= 1000000000) { + end.seconds += 1; + end.nanos -= 1000000000; + } + + Example 3: Compute Duration from datetime.timedelta in Python. + + td = datetime.timedelta(days=3, minutes=10) + duration = Duration() + duration.FromTimedelta(td) + + # JSON Mapping + + In JSON format, the Duration type is encoded as a string rather than an + object, where the string ends in the suffix "s" (indicating seconds) and + is preceded by the number of seconds, with nanoseconds expressed as + fractional seconds. For example, 3 seconds with 0 nanoseconds should be + encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should + be expressed in JSON format as "3.000000001s", and 3 seconds and 1 + microsecond should be expressed in JSON format as "3.000001s". + + + + Field number for the "seconds" field. + + + + Signed seconds of the span of time. Must be from -315,576,000,000 + to +315,576,000,000 inclusive. Note: these bounds are computed from: + 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years + + + + Field number for the "nanos" field. + + + + Signed fractions of a second at nanosecond resolution of the span + of time. Durations less than one second are represented with a 0 + `seconds` field and a positive or negative `nanos` field. For durations + of one second or more, a non-zero value for the `nanos` field must be + of the same sign as the `seconds` field. Must be from -999,999,999 + to +999,999,999 inclusive. + + + + + The number of nanoseconds in a second. + + + + + The number of nanoseconds in a BCL tick (as used by and ). + + + + + The maximum permitted number of seconds. + + + + + The minimum permitted number of seconds. + + + + + Converts this to a . + + If the duration is not a precise number of ticks, it is truncated towards 0. + The value of this duration, as a TimeSpan. + This value isn't a valid normalized duration, as + described in the documentation. + + + + Converts the given to a . + + The TimeSpan to convert. + The value of the given TimeSpan, as a Duration. + + + + Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. + + The duration to negate. Must not be null. + The negated value of this duration. + + + + Adds the two specified values together. + + The first value to add. Must not be null. + The second value to add. Must not be null. + + + + + Subtracts one from another. + + The duration to subtract from. Must not be null. + The duration to subtract. Must not be null. + The difference between the two specified durations. + + + + Creates a duration with the normalized values from the given number of seconds and + nanoseconds, conforming with the description in the proto file. + + + + + Converts a duration specified in seconds/nanoseconds to a string. + + + If the value is a normalized duration in the range described in duration.proto, + is ignored. Otherwise, if the parameter is true, + a JSON object with a warning is returned; if it is false, an is thrown. + + Seconds portion of the duration. + Nanoseconds portion of the duration. + Determines the handling of non-normalized values + The represented duration is invalid, and is false. + + + + Returns a string representation of this for diagnostic purposes. + + + Normally the returned value will be a JSON string value (including leading and trailing quotes) but + when the value is non-normalized or out of range, a JSON object representation will be returned + instead, including a warning. This is to avoid exceptions being thrown when trying to + diagnose problems - the regular JSON formatter will still throw an exception for non-normalized + values. + + A string representation of this value. + + + + Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which + case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well + as Duration. + + + + + Given another duration, returns 0 if the durations are equivalent, -1 if this duration is shorter than the other, and 1 otherwise. + + + This method expects that both durations are normalized; that is, that the values of + and are within the documented bounds. + If either value is not normalized, the results of this method are unspecified. + + The duration to compare with this object. + An integer indicating whether this duration is shorter or longer than . + + + Holder for reflection information generated from google/protobuf/empty.proto + + + File descriptor for google/protobuf/empty.proto + + + + A generic empty message that you can re-use to avoid defining duplicated + empty messages in your APIs. A typical example is to use it as the request + or the response type of an API method. For instance: + + service Foo { + rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); + } + + + + Holder for reflection information generated from google/protobuf/field_mask.proto + + + File descriptor for google/protobuf/field_mask.proto + + + + `FieldMask` represents a set of symbolic field paths, for example: + + paths: "f.a" + paths: "f.b.d" + + Here `f` represents a field in some root message, `a` and `b` + fields in the message found in `f`, and `d` a field found in the + message in `f.b`. + + Field masks are used to specify a subset of fields that should be + returned by a get operation or modified by an update operation. + Field masks also have a custom JSON encoding (see below). + + # Field Masks in Projections + + When used in the context of a projection, a response message or + sub-message is filtered by the API to only contain those fields as + specified in the mask. For example, if the mask in the previous + example is applied to a response message as follows: + + f { + a : 22 + b { + d : 1 + x : 2 + } + y : 13 + } + z: 8 + + The result will not contain specific values for fields x,y and z + (their value will be set to the default, and omitted in proto text + output): + + f { + a : 22 + b { + d : 1 + } + } + + A repeated field is not allowed except at the last position of a + paths string. + + If a FieldMask object is not present in a get operation, the + operation applies to all fields (as if a FieldMask of all fields + had been specified). + + Note that a field mask does not necessarily apply to the + top-level response message. In case of a REST get operation, the + field mask applies directly to the response, but in case of a REST + list operation, the mask instead applies to each individual message + in the returned resource list. In case of a REST custom method, + other definitions may be used. Where the mask applies will be + clearly documented together with its declaration in the API. In + any case, the effect on the returned resource/resources is required + behavior for APIs. + + # Field Masks in Update Operations + + A field mask in update operations specifies which fields of the + targeted resource are going to be updated. The API is required + to only change the values of the fields as specified in the mask + and leave the others untouched. If a resource is passed in to + describe the updated values, the API ignores the values of all + fields not covered by the mask. + + If a repeated field is specified for an update operation, new values will + be appended to the existing repeated field in the target resource. Note that + a repeated field is only allowed in the last position of a `paths` string. + + If a sub-message is specified in the last position of the field mask for an + update operation, then new value will be merged into the existing sub-message + in the target resource. + + For example, given the target message: + + f { + b { + d: 1 + x: 2 + } + c: [1] + } + + And an update message: + + f { + b { + d: 10 + } + c: [2] + } + + then if the field mask is: + + paths: ["f.b", "f.c"] + + then the result will be: + + f { + b { + d: 10 + x: 2 + } + c: [1, 2] + } + + An implementation may provide options to override this default behavior for + repeated and message fields. + + In order to reset a field's value to the default, the field must + be in the mask and set to the default value in the provided resource. + Hence, in order to reset all fields of a resource, provide a default + instance of the resource and set all fields in the mask, or do + not provide a mask as described below. + + If a field mask is not present on update, the operation applies to + all fields (as if a field mask of all fields has been specified). + Note that in the presence of schema evolution, this may mean that + fields the client does not know and has therefore not filled into + the request will be reset to their default. If this is unwanted + behavior, a specific service may require a client to always specify + a field mask, producing an error if not. + + As with get operations, the location of the resource which + describes the updated values in the request message depends on the + operation kind. In any case, the effect of the field mask is + required to be honored by the API. + + ## Considerations for HTTP REST + + The HTTP kind of an update operation which uses a field mask must + be set to PATCH instead of PUT in order to satisfy HTTP semantics + (PUT must only be used for full updates). + + # JSON Encoding of Field Masks + + In JSON, a field mask is encoded as a single string where paths are + separated by a comma. Fields name in each path are converted + to/from lower-camel naming conventions. + + As an example, consider the following message declarations: + + message Profile { + User user = 1; + Photo photo = 2; + } + message User { + string display_name = 1; + string address = 2; + } + + In proto a field mask for `Profile` may look as such: + + mask { + paths: "user.display_name" + paths: "photo" + } + + In JSON, the same mask is represented as below: + + { + mask: "user.displayName,photo" + } + + # Field Masks and Oneof Fields + + Field masks treat fields in oneofs just as regular fields. Consider the + following message: + + message SampleMessage { + oneof test_oneof { + string name = 4; + SubMessage sub_message = 9; + } + } + + The field mask can be: + + mask { + paths: "name" + } + + Or: + + mask { + paths: "sub_message" + } + + Note that oneof type names ("test_oneof" in this case) cannot be used in + paths. + + ## Field Mask Verification + + The implementation of any API method which has a FieldMask type field in the + request should verify the included field paths, and return an + `INVALID_ARGUMENT` error if any path is unmappable. + + + + Field number for the "paths" field. + + + + The set of field mask paths. + + + + + Converts a field mask specified by paths to a string. + + + If the value is a normalized duration in the range described in field_mask.proto, + is ignored. Otherwise, if the parameter is true, + a JSON object with a warning is returned; if it is false, an is thrown. + + Paths in the field mask + Determines the handling of non-normalized values + The represented field mask is invalid, and is false. + + + + Returns a string representation of this for diagnostic purposes. + + + Normally the returned value will be a JSON string value (including leading and trailing quotes) but + when the value is non-normalized or out of range, a JSON object representation will be returned + instead, including a warning. This is to avoid exceptions being thrown when trying to + diagnose problems - the regular JSON formatter will still throw an exception for non-normalized + values. + + A string representation of this value. + + + + Parses from a string to a FieldMask. + + + + + Parses from a string to a FieldMask and validates all field paths. + + The type to validate the field paths against. + + + + Constructs a FieldMask for a list of field paths in a certain type. + + The type to validate the field paths against. + + + + Constructs a FieldMask from the passed field numbers. + + The type to validate the field paths against. + + + + Constructs a FieldMask from the passed field numbers. + + The type to validate the field paths against. + + + + Checks whether the given path is valid for a field mask. + + true if the path is valid; false otherwise + + + + Checks whether paths in a given fields mask are valid. + + The type to validate the field paths against. + + + + Checks whether paths in a given fields mask are valid. + + + + + Checks whether a given field path is valid. + + The type to validate the field paths against. + + + + Checks whether paths in a given fields mask are valid. + + + + + Converts this FieldMask to its canonical form. In the canonical form of a + FieldMask, all field paths are sorted alphabetically and redundant field + paths are removed. + + + + + Creates a union of two or more FieldMasks. + + + + + Calculates the intersection of two FieldMasks. + + + + + Merges fields specified by this FieldMask from one message to another with the + specified merge options. + + + + + Merges fields specified by this FieldMask from one message to another. + + + + + Options to customize merging behavior. + + + + + Whether to replace message fields(i.e., discard existing content in + destination message fields) when merging. + Default behavior is to merge the source message field into the + destination message field. + + + + + Whether to replace repeated fields (i.e., discard existing content in + destination repeated fields) when merging. + Default behavior is to append elements from source repeated field to the + destination repeated field. + + + + + Whether to replace primitive (non-repeated and non-message) fields in + destination message fields with the source primitive fields (i.e., if the + field is set in the source, the value is copied to the + destination; if the field is unset in the source, the field is cleared + from the destination) when merging. + + Default behavior is to always set the value of the source primitive + field to the destination primitive field, and if the source field is + unset, the default value of the source field is copied to the + destination. + + + + Holder for reflection information generated from google/protobuf/source_context.proto + + + File descriptor for google/protobuf/source_context.proto + + + + `SourceContext` represents information about the source of a + protobuf element, like the file in which it is defined. + + + + Field number for the "file_name" field. + + + + The path-qualified name of the .proto file that contained the associated + protobuf element. For example: `"google/protobuf/source_context.proto"`. + + + + Holder for reflection information generated from google/protobuf/struct.proto + + + File descriptor for google/protobuf/struct.proto + + + + `NullValue` is a singleton enumeration to represent the null value for the + `Value` type union. + + The JSON representation for `NullValue` is JSON `null`. + + + + + Null value. + + + + + `Struct` represents a structured data value, consisting of fields + which map to dynamically typed values. In some languages, `Struct` + might be supported by a native representation. For example, in + scripting languages like JS a struct is represented as an + object. The details of that representation are described together + with the proto support for the language. + + The JSON representation for `Struct` is JSON object. + + + + Field number for the "fields" field. + + + + Unordered map of dynamically typed values. + + + + + `Value` represents a dynamically typed value which can be either + null, a number, a string, a boolean, a recursive struct value, or a + list of values. A producer of value is expected to set one of these + variants. Absence of any variant indicates an error. + + The JSON representation for `Value` is JSON value. + + + + Field number for the "null_value" field. + + + + Represents a null value. + + + + Gets whether the "null_value" field is set + + + Clears the value of the oneof if it's currently set to "null_value" + + + Field number for the "number_value" field. + + + + Represents a double value. + + + + Gets whether the "number_value" field is set + + + Clears the value of the oneof if it's currently set to "number_value" + + + Field number for the "string_value" field. + + + + Represents a string value. + + + + Gets whether the "string_value" field is set + + + Clears the value of the oneof if it's currently set to "string_value" + + + Field number for the "bool_value" field. + + + + Represents a boolean value. + + + + Gets whether the "bool_value" field is set + + + Clears the value of the oneof if it's currently set to "bool_value" + + + Field number for the "struct_value" field. + + + + Represents a structured value. + + + + Field number for the "list_value" field. + + + + Represents a repeated `Value`. + + + + Enum of possible cases for the "kind" oneof. + + + + Convenience method to create a Value message with a string value. + + Value to set for the StringValue property. + A newly-created Value message with the given value. + + + + Convenience method to create a Value message with a number value. + + Value to set for the NumberValue property. + A newly-created Value message with the given value. + + + + Convenience method to create a Value message with a Boolean value. + + Value to set for the BoolValue property. + A newly-created Value message with the given value. + + + + Convenience method to create a Value message with a null initial value. + + A newly-created Value message a null initial value. + + + + Convenience method to create a Value message with an initial list of values. + + The values provided are not cloned; the references are copied directly. + A newly-created Value message an initial list value. + + + + Convenience method to create a Value message with an initial struct value + + The value provided is not cloned; the reference is copied directly. + A newly-created Value message an initial struct value. + + + + `ListValue` is a wrapper around a repeated field of values. + + The JSON representation for `ListValue` is JSON array. + + + + Field number for the "values" field. + + + + Repeated field of dynamically typed values. + + + + + Extension methods on BCL time-related types, converting to protobuf types. + + + + + Converts the given to a . + + The date and time to convert to a timestamp. + The value has a other than Utc. + The converted timestamp. + + + + Converts the given to a + + The offset is taken into consideration when converting the value (so the same instant in time + is represented) but is not a separate part of the resulting value. In other words, there is no + roundtrip operation to retrieve the original DateTimeOffset. + The date and time (with UTC offset) to convert to a timestamp. + The converted timestamp. + + + + Converts the given to a . + + The time span to convert. + The converted duration. + + + Holder for reflection information generated from google/protobuf/timestamp.proto + + + File descriptor for google/protobuf/timestamp.proto + + + + A Timestamp represents a point in time independent of any time zone or local + calendar, encoded as a count of seconds and fractions of seconds at + nanosecond resolution. The count is relative to an epoch at UTC midnight on + January 1, 1970, in the proleptic Gregorian calendar which extends the + Gregorian calendar backwards to year one. + + All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap + second table is needed for interpretation, using a [24-hour linear + smear](https://developers.google.com/time/smear). + + The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By + restricting to that range, we ensure that we can convert to and from [RFC + 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. + + # Examples + + Example 1: Compute Timestamp from POSIX `time()`. + + Timestamp timestamp; + timestamp.set_seconds(time(NULL)); + timestamp.set_nanos(0); + + Example 2: Compute Timestamp from POSIX `gettimeofday()`. + + struct timeval tv; + gettimeofday(&tv, NULL); + + Timestamp timestamp; + timestamp.set_seconds(tv.tv_sec); + timestamp.set_nanos(tv.tv_usec * 1000); + + Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. + + FILETIME ft; + GetSystemTimeAsFileTime(&ft); + UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; + + // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z + // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. + Timestamp timestamp; + timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); + timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); + + Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. + + long millis = System.currentTimeMillis(); + + Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) + .setNanos((int) ((millis % 1000) * 1000000)).build(); + + Example 5: Compute Timestamp from Java `Instant.now()`. + + Instant now = Instant.now(); + + Timestamp timestamp = + Timestamp.newBuilder().setSeconds(now.getEpochSecond()) + .setNanos(now.getNano()).build(); + + Example 6: Compute Timestamp from current time in Python. + + timestamp = Timestamp() + timestamp.GetCurrentTime() + + # JSON Mapping + + In JSON format, the Timestamp type is encoded as a string in the + [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the + format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" + where {year} is always expressed using four digits while {month}, {day}, + {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional + seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), + are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone + is required. A proto3 JSON serializer should always use UTC (as indicated by + "Z") when printing the Timestamp type and a proto3 JSON parser should be + able to accept both UTC and other timezones (as indicated by an offset). + + For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past + 01:30 UTC on January 15, 2017. + + In JavaScript, one can convert a Date object to this format using the + standard + [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) + method. In Python, a standard `datetime.datetime` object can be converted + to this format using + [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with + the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use + the Joda Time's [`ISODateTimeFormat.dateTime()`]( + http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime() + ) to obtain a formatter capable of generating timestamps in this format. + + + + Field number for the "seconds" field. + + + + Represents seconds of UTC time since Unix epoch + 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + 9999-12-31T23:59:59Z inclusive. + + + + Field number for the "nanos" field. + + + + Non-negative fractions of a second at nanosecond resolution. Negative + second values with fractions must still have non-negative nanos values + that count forward in time. Must be from 0 to 999,999,999 + inclusive. + + + + + Returns the difference between one and another, as a . + + The timestamp to subtract from. Must not be null. + The timestamp to subtract. Must not be null. + The difference between the two specified timestamps. + + + + Adds a to a , to obtain another Timestamp. + + The timestamp to add the duration to. Must not be null. + The duration to add. Must not be null. + The result of adding the duration to the timestamp. + + + + Subtracts a from a , to obtain another Timestamp. + + The timestamp to subtract the duration from. Must not be null. + The duration to subtract. + The result of subtracting the duration from the timestamp. + + + + Converts this timestamp into a . + + + The resulting DateTime will always have a Kind of Utc. + If the timestamp is not a precise number of ticks, it will be truncated towards the start + of time. For example, a timestamp with a value of 99 will result in a + value precisely on a second. + + This timestamp as a DateTime. + The timestamp contains invalid values; either it is + incorrectly normalized or is outside the valid range. + + + + Converts this timestamp into a . + + + The resulting DateTimeOffset will always have an Offset of zero. + If the timestamp is not a precise number of ticks, it will be truncated towards the start + of time. For example, a timestamp with a value of 99 will result in a + value precisely on a second. + + This timestamp as a DateTimeOffset. + The timestamp contains invalid values; either it is + incorrectly normalized or is outside the valid range. + + + + Converts the specified to a . + + + The Kind of is not DateTimeKind.Utc. + The converted timestamp. + + + + Converts the given to a + + The offset is taken into consideration when converting the value (so the same instant in time + is represented) but is not a separate part of the resulting value. In other words, there is no + roundtrip operation to retrieve the original DateTimeOffset. + The date and time (with UTC offset) to convert to a timestamp. + The converted timestamp. + + + + Converts a timestamp specified in seconds/nanoseconds to a string. + + + If the value is a normalized duration in the range described in timestamp.proto, + is ignored. Otherwise, if the parameter is true, + a JSON object with a warning is returned; if it is false, an is thrown. + + Seconds portion of the duration. + Nanoseconds portion of the duration. + Determines the handling of non-normalized values + The represented duration is invalid, and is false. + + + + Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + Timestamp to compare + an integer indicating whether this timestamp precedes or follows the other + + + + Compares two timestamps and returns whether the first is less than (chronologically precedes) the second + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if a precedes b + + + + Compares two timestamps and returns whether the first is greater than (chronologically follows) the second + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if a follows b + + + + Compares two timestamps and returns whether the first is less than (chronologically precedes) the second + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if a precedes b + + + + Compares two timestamps and returns whether the first is greater than (chronologically follows) the second + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if a follows b + + + + Returns whether two timestamps are equivalent + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if the two timestamps refer to the same nanosecond + + + + Returns whether two timestamps differ + + + Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. + + + + true if the two timestamps differ + + + + Returns a string representation of this for diagnostic purposes. + + + Normally the returned value will be a JSON string value (including leading and trailing quotes) but + when the value is non-normalized or out of range, a JSON object representation will be returned + instead, including a warning. This is to avoid exceptions being thrown when trying to + diagnose problems - the regular JSON formatter will still throw an exception for non-normalized + values. + + A string representation of this value. + + + Holder for reflection information generated from google/protobuf/type.proto + + + File descriptor for google/protobuf/type.proto + + + + The syntax in which a protocol buffer element is defined. + + + + + Syntax `proto2`. + + + + + Syntax `proto3`. + + + + + Syntax `editions`. + + + + + A protocol buffer message type. + + + + Field number for the "name" field. + + + + The fully qualified message name. + + + + Field number for the "fields" field. + + + + The list of fields. + + + + Field number for the "oneofs" field. + + + + The list of types appearing in `oneof` definitions in this type. + + + + Field number for the "options" field. + + + + The protocol buffer options. + + + + Field number for the "source_context" field. + + + + The source context. + + + + Field number for the "syntax" field. + + + + The source syntax. + + + + Field number for the "edition" field. + + + + The source edition string, only valid when syntax is SYNTAX_EDITIONS. + + + + + A single field of a message type. + + + + Field number for the "kind" field. + + + + The field type. + + + + Field number for the "cardinality" field. + + + + The field cardinality. + + + + Field number for the "number" field. + + + + The field number. + + + + Field number for the "name" field. + + + + The field name. + + + + Field number for the "type_url" field. + + + + The field type URL, without the scheme, for message or enumeration + types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. + + + + Field number for the "oneof_index" field. + + + + The index of the field type in `Type.oneofs`, for message or enumeration + types. The first type has index 1; zero means the type is not in the list. + + + + Field number for the "packed" field. + + + + Whether to use alternative packed wire representation. + + + + Field number for the "options" field. + + + + The protocol buffer options. + + + + Field number for the "json_name" field. + + + + The field JSON name. + + + + Field number for the "default_value" field. + + + + The string value of the default value of this field. Proto2 syntax only. + + + + Container for nested types declared in the Field message type. + + + + Basic field types. + + + + + Field type unknown. + + + + + Field type double. + + + + + Field type float. + + + + + Field type int64. + + + + + Field type uint64. + + + + + Field type int32. + + + + + Field type fixed64. + + + + + Field type fixed32. + + + + + Field type bool. + + + + + Field type string. + + + + + Field type group. Proto2 syntax only, and deprecated. + + + + + Field type message. + + + + + Field type bytes. + + + + + Field type uint32. + + + + + Field type enum. + + + + + Field type sfixed32. + + + + + Field type sfixed64. + + + + + Field type sint32. + + + + + Field type sint64. + + + + + Whether a field is optional, required, or repeated. + + + + + For fields with unknown cardinality. + + + + + For optional fields. + + + + + For required fields. Proto2 syntax only. + + + + + For repeated fields. + + + + + Enum type definition. + + + + Field number for the "name" field. + + + + Enum type name. + + + + Field number for the "enumvalue" field. + + + + Enum value definitions. + + + + Field number for the "options" field. + + + + Protocol buffer options. + + + + Field number for the "source_context" field. + + + + The source context. + + + + Field number for the "syntax" field. + + + + The source syntax. + + + + Field number for the "edition" field. + + + + The source edition string, only valid when syntax is SYNTAX_EDITIONS. + + + + + Enum value definition. + + + + Field number for the "name" field. + + + + Enum value name. + + + + Field number for the "number" field. + + + + Enum value number. + + + + Field number for the "options" field. + + + + Protocol buffer options. + + + + + A protocol buffer option, which can be attached to a message, field, + enumeration, etc. + + + + Field number for the "name" field. + + + + The option's name. For protobuf built-in options (options defined in + descriptor.proto), this is the short name. For example, `"map_entry"`. + For custom options, it should be the fully-qualified name. For example, + `"google.api.http"`. + + + + Field number for the "value" field. + + + + The option's value packed in an Any message. If the value is a primitive, + the corresponding wrapper type defined in google/protobuf/wrappers.proto + should be used. If the value is an enum, it should be stored as an int32 + value using the google.protobuf.Int32Value type. + + + + Holder for reflection information generated from google/protobuf/wrappers.proto + + + File descriptor for google/protobuf/wrappers.proto + + + + Field number for the single "value" field in all wrapper types. + + + + + Wrapper message for `double`. + + The JSON representation for `DoubleValue` is JSON number. + + + + Field number for the "value" field. + + + + The double value. + + + + + Wrapper message for `float`. + + The JSON representation for `FloatValue` is JSON number. + + + + Field number for the "value" field. + + + + The float value. + + + + + Wrapper message for `int64`. + + The JSON representation for `Int64Value` is JSON string. + + + + Field number for the "value" field. + + + + The int64 value. + + + + + Wrapper message for `uint64`. + + The JSON representation for `UInt64Value` is JSON string. + + + + Field number for the "value" field. + + + + The uint64 value. + + + + + Wrapper message for `int32`. + + The JSON representation for `Int32Value` is JSON number. + + + + Field number for the "value" field. + + + + The int32 value. + + + + + Wrapper message for `uint32`. + + The JSON representation for `UInt32Value` is JSON number. + + + + Field number for the "value" field. + + + + The uint32 value. + + + + + Wrapper message for `bool`. + + The JSON representation for `BoolValue` is JSON `true` and `false`. + + + + Field number for the "value" field. + + + + The bool value. + + + + + Wrapper message for `string`. + + The JSON representation for `StringValue` is JSON string. + + + + Field number for the "value" field. + + + + The string value. + + + + + Wrapper message for `bytes`. + + The JSON representation for `BytesValue` is JSON string. + + + + Field number for the "value" field. + + + + The bytes value. + + + + + This class is used internally by the Protocol Buffer Library and generated + message implementations. It is public only for the sake of those generated + messages. Others should not use this class directly. + + This class contains constants and helper functions useful for dealing with + the Protocol Buffer wire format. + + + + + + Wire types within protobuf encoding. + + + + + Variable-length integer. + + + + + A fixed-length 64-bit value. + + + + + A length-delimited value, i.e. a length followed by that many bytes of data. + + + + + A "start group" value + + + + + An "end group" value + + + + + A fixed-length 32-bit value. + + + + + Given a tag value, determines the wire type (lower 3 bits). + + + + + Given a tag value, determines the field number (the upper 29 bits). + + + + + Makes a tag value given a field number and wire type. + + + + + Abstraction for writing to a steam / IBufferWriter + + + + + Initialize an instance with a coded output stream. + This approach is faster than using a constructor because the instance to initialize is passed by reference + and we can write directly into it without copying. + + + + + Initialize an instance with a buffer writer. + This approach is faster than using a constructor because the instance to initialize is passed by reference + and we can write directly into it without copying. + + + + + Initialize an instance with a buffer represented by a single span (i.e. buffer cannot be refreshed) + This approach is faster than using a constructor because the instance to initialize is passed by reference + and we can write directly into it without copying. + + + + + Verifies that SpaceLeft returns zero. + + + + + If writing to a flat array, returns the space left in the array. Otherwise, + throws an InvalidOperationException. + + + + + An opaque struct that represents the current serialization state and is passed along + as the serialization proceeds. + All the public methods are intended to be invoked only by the generated code, + users should never invoke them directly. + + + + + Creates a WriteContext instance from CodedOutputStream. + WARNING: internally this copies the CodedOutputStream's state, so after done with the WriteContext, + the CodedOutputStream's state needs to be updated. + + + + + Writes a double field value, without a tag. + + The value to write + + + + Writes a float field value, without a tag. + + The value to write + + + + Writes a uint64 field value, without a tag. + + The value to write + + + + Writes an int64 field value, without a tag. + + The value to write + + + + Writes an int32 field value, without a tag. + + The value to write + + + + Writes a fixed64 field value, without a tag. + + The value to write + + + + Writes a fixed32 field value, without a tag. + + The value to write + + + + Writes a bool field value, without a tag. + + The value to write + + + + Writes a string field value, without a tag. + The data is length-prefixed. + + The value to write + + + + Writes a message, without a tag. + The data is length-prefixed. + + The value to write + + + + Writes a group, without a tag, to the stream. + + The value to write + + + + Write a byte string, without a tag, to the stream. + The data is length-prefixed. + + The value to write + + + + Writes a uint32 value, without a tag. + + The value to write + + + + Writes an enum value, without a tag. + + The value to write + + + + Writes an sfixed32 value, without a tag. + + The value to write. + + + + Writes an sfixed64 value, without a tag. + + The value to write + + + + Writes an sint32 value, without a tag. + + The value to write + + + + Writes an sint64 value, without a tag. + + The value to write + + + + Writes a length (in bytes) for length-delimited data. + + + This method simply writes a rawint, but exists for clarity in calling code. + + Length value, in bytes. + + + + Encodes and writes a tag. + + The number of the field to write the tag for + The wire format type of the tag to write + + + + Writes an already-encoded tag. + + The encoded tag + + + + Writes the given single-byte tag. + + The encoded tag + + + + Writes the given two-byte tag. + + The first byte of the encoded tag + The second byte of the encoded tag + + + + Writes the given three-byte tag. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + + + + Writes the given four-byte tag. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + The fourth byte of the encoded tag + + + + Writes the given five-byte tag. + + The first byte of the encoded tag + The second byte of the encoded tag + The third byte of the encoded tag + The fourth byte of the encoded tag + The fifth byte of the encoded tag + + + + Primitives for encoding protobuf wire format. + + + + + Writes a double field value, without a tag, to the stream. + + + + + Writes a float field value, without a tag, to the stream. + + + + + Writes a uint64 field value, without a tag, to the stream. + + + + + Writes an int64 field value, without a tag, to the stream. + + + + + Writes an int32 field value, without a tag, to the stream. + + + + + Writes a fixed64 field value, without a tag, to the stream. + + + + + Writes a fixed32 field value, without a tag, to the stream. + + + + + Writes a bool field value, without a tag, to the stream. + + + + + Writes a string field value, without a tag, to the stream. + The data is length-prefixed. + + + + + Given a QWORD which represents a buffer of 4 ASCII chars in machine-endian order, + narrows each WORD to a BYTE, then writes the 4-byte result to the output buffer + also in machine-endian order. + + + + + Write a byte string, without a tag, to the stream. + The data is length-prefixed. + + + + + Writes a uint32 value, without a tag, to the stream. + + + + + Writes an enum value, without a tag, to the stream. + + + + + Writes an sfixed32 value, without a tag, to the stream. + + + + + Writes an sfixed64 value, without a tag, to the stream. + + + + + Writes an sint32 value, without a tag, to the stream. + + + + + Writes an sint64 value, without a tag, to the stream. + + + + + Writes a length (in bytes) for length-delimited data. + + + This method simply writes a rawint, but exists for clarity in calling code. + + + + + Writes a 32 bit value as a varint. The fast route is taken when + there's enough buffer space left to whizz through without checking + for each byte; otherwise, we resort to calling WriteRawByte each time. + + + + + Writes out an array of bytes. + + + + + Writes out part of an array of bytes. + + + + + Writes out part of an array of bytes. + + + + + Encodes and writes a tag. + + + + + Writes an already-encoded tag. + + + + + Writes the given single-byte tag directly to the stream. + + + + + Writes the given two-byte tag directly to the stream. + + + + + Writes the given three-byte tag directly to the stream. + + + + + Writes the given four-byte tag directly to the stream. + + + + + Writes the given five-byte tag directly to the stream. + + + + + Encode a 32-bit value with ZigZag encoding. + + + ZigZag encodes signed integers into values that can be efficiently + encoded with varint. (Otherwise, negative values must be + sign-extended to 64 bits to be varint encoded, thus always taking + 10 bytes on the wire.) + + + + + Encode a 64-bit value with ZigZag encoding. + + + ZigZag encodes signed integers into values that can be efficiently + encoded with varint. (Otherwise, negative values must be + sign-extended to 64 bits to be varint encoded, thus always taking + 10 bytes on the wire.) + + + + + Writing messages / groups. + + + + + Writes a message, without a tag. + The data is length-prefixed. + + + + + Writes a group, without a tag. + + + + + Writes a message, without a tag. + Message will be written without a length prefix. + + + + + Indicates that certain members on a specified are accessed dynamically, + for example through . + + + This allows tools to understand which members are being accessed during the execution + of a program. + + This attribute is valid on members whose type is or . + + When this attribute is applied to a location of type , the assumption is + that the string represents a fully qualified type name. + + When this attribute is applied to a class, interface, or struct, the members specified + can be accessed dynamically on instances returned from calling + on instances of that class, interface, or struct. + + If the attribute is applied to a method it's treated as a special case and it implies + the attribute should be applied to the "this" parameter of the method. As such the attribute + should only be used on instance methods of types assignable to System.Type (or string, but no methods + will use it there). + + + + + Initializes a new instance of the class + with the specified member types. + + The types of members dynamically accessed. + + + + Gets the which specifies the type + of members dynamically accessed. + + + + + Specifies the types of members that are dynamically accessed. + + This enumeration has a attribute that allows a + bitwise combination of its member values. + + + + + Specifies no members. + + + + + Specifies the default, parameterless public constructor. + + + + + Specifies all public constructors. + + + + + Specifies all non-public constructors. + + + + + Specifies all public methods. + + + + + Specifies all non-public methods. + + + + + Specifies all public fields. + + + + + Specifies all non-public fields. + + + + + Specifies all public nested types. + + + + + Specifies all non-public nested types. + + + + + Specifies all public properties. + + + + + Specifies all non-public properties. + + + + + Specifies all public events. + + + + + Specifies all non-public events. + + + + + Specifies all interfaces implemented by the type. + + + + + Specifies all members. + + + + + Indicates that the specified method requires dynamic access to code that is not referenced + statically, for example through . + + + This allows tools to understand which methods are unsafe to call when removing unreferenced + code from an application. + + + + + Initializes a new instance of the class + with the specified message. + + + A message that contains information about the usage of unreferenced code. + + + + + Gets a message that contains information about the usage of unreferenced code. + + + + + Gets or sets an optional URL that contains more information about the method, + why it requires unreferenced code, and what options a consumer has to deal with it. + + + + + Suppresses reporting of a specific rule violation, allowing multiple suppressions on a + single code artifact. + + + is different than + in that it doesn't have a + . So it is always preserved in the compiled assembly. + + + + + Initializes a new instance of the + class, specifying the category of the tool and the identifier for an analysis rule. + + The category for the attribute. + The identifier of the analysis rule the attribute applies to. + + + + Gets the category identifying the classification of the attribute. + + + The property describes the tool or tool analysis category + for which a message suppression attribute applies. + + + + + Gets the identifier of the analysis tool rule to be suppressed. + + + Concatenated together, the and + properties form a unique check identifier. + + + + + Gets or sets the scope of the code that is relevant for the attribute. + + + The Scope property is an optional argument that specifies the metadata scope for which + the attribute is relevant. + + + + + Gets or sets a fully qualified path that represents the target of the attribute. + + + The property is an optional argument identifying the analysis target + of the attribute. An example value is "System.IO.Stream.ctor():System.Void". + Because it is fully qualified, it can be long, particularly for targets such as parameters. + The analysis tool user interface should be capable of automatically formatting the parameter. + + + + + Gets or sets an optional argument expanding on exclusion criteria. + + + The property is an optional argument that specifies additional + exclusion where the literal metadata target is not sufficiently precise. For example, + the cannot be applied within a method, + and it may be desirable to suppress a violation against a statement in the method that will + give a rule violation, but not against all statements in the method. + + + + + Gets or sets the justification for suppressing the code analysis message. + + +
+
diff --git a/Assets/Plugins/Google.Protobuf.xml.meta b/Assets/Plugins/Google.Protobuf.xml.meta new file mode 100644 index 0000000..764816e --- /dev/null +++ b/Assets/Plugins/Google.Protobuf.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 74cf1967f309f1b49ba3a6dbf830c330 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/System.Buffers.dll b/Assets/Plugins/System.Buffers.dll new file mode 100644 index 0000000000000000000000000000000000000000..b6d9c7782d275b83f4d0883f9bfb2d65fc5c9e9f GIT binary patch literal 27992 zcmeHw2Ut@})9{`<^%}hK`hQLI)eYi1e-?1PBm>1d|}eMp3Q}yQ0_t#oj9x#9pyC ztSI)1y(|Bm6Pn)g-tYgv_qp%;JpaMW*`1x8ZL_npvzr(^WCo%lglO<-Z%3#e-o)cU z!oLQ^kgR05TM2EGJ#AEv4L)rYmB|;gaz(-n5jTgG$`uHN5>^V2CCU@9_yU$sXe28~ zn8sr(D$1F5unzM@XfQ@aI#Y!4ou%DD#w>XZM~EO|O0n+V@Mgg$89oT9kYS3n-UNcE zKlxMx1iZs|1nu&eK#&suy5Aj90tL@wFN8vgKr%w-x|l$mjZoY`co!q20IyA+2P++jvVl*J#{(f~?az;%w=_=Fje_VX(*mJfZG>by$eN)K;xL48Xn%1B z?yp{1V}Y1vW~*v$2`m_54TR*(iV2*RoTe2*x;T|=DqvK5$yvgSK@n;Kk=$*n`E5kC zQJ^q%gj#^Gp-`mFNOwpH^-03sKM|T~)4GUhmN58oRwt#@MkKY) z@2Jgs)4OxfE%k{k_97XmWiLxA)Y*!C4ysPEG$0ZTD3*rAJ7OFQUPMn=o7pnVEsY7} zFe%am!o7$xt`~LAYv$EcP#rrz!He%7}E5(jET z4#U!#s4!926CHKc{g13GL+95L9B>IM02{LRLG4yII`qR z1+$i=8midQ3{_MxiX~`EIXNmJatwJHt+)!{sjHx=Xx)n`D@({5gT@eZfTmVfD^5|C zIgM}skir~e4;T~y?f6VZX;`*O=maQv852ED#ta#uz}OK9 z?m#9*GpeYoV4HeCoxjhMXZI0c16nV>9GDO&M5X>ywK3>L8> zJ2M%EDrs_tDnuM8Aa0N*Cu0yN&oESm2$0I?K%_T>wIQqxVJ!%2L0BtJUWO4T)eTf6 z2f3NR-%y2OXqc2D$FMp|u_V+7#j+njaen|~1`u&t1;~Kzn1Mu?I)>^HHxJtK|RU~AOi-@3_6JjSIILd(vUh$m8KOphCr&) zdezGG`hh9lR$+qTCpl89-~ZlqB?``wgc|K0l6Y(TsFX5 zsEEl}gl@w76$pY!q(sCQWQYlhCTPoEc$-8=qKT?f8^**xIuL4%=0m(0gw@0=TbM!+ z!$W~8#3t6t$|^(T3+8}83lXIgCIKM_kOdjT2i5~b@PHx_thyu(kq*0H#PGFo#4nr^kFM>{CpwA@U zl7v1aJWkf+G#x=rh5!Z_B2dHd5aV48f?$r;GlF}>F4LqjViZ?GpYfqL26`iqvH+m;0U8WVq7B3_v=KOjv53~rWUi#^QZY0fVoWp>eP#58^jtD+ zHd3X9L!M0?F+G_<(8{Y_u~Y zk+E{^=X4lfR7%9KdCVnf8pJ9gM$}~&8QVxw&O@^?B5g-ktPgOJK1b=}WgMxb$q9&~ z^eTE^=(k3aay(grIyy$iW@^8odsEd>6B#Q*r_m`GrvhS1p)#}@`BSw}u!%G_9X*4+ zLp&Li*3%Gi$(WRjAK#(QkFpp&p;lfJj+O)eGqO=a47?xYFHoiydzdcw}u!n zM3+FGD99Eh8$-Rw@C2CGoncrre+pAO^oW#_NR?t}2yAnp907bNXfW`>&_I&s85tE7 z3fe(p1_KQRU8fScd?8Fj(PXYa#?w(Lo#69p>c1+5;E$m>WQieUeU3wmq$OhLjEpRL z4%12%AOrOVCM76G{sKsEr~4 zTB10BHYgDwj#4NT6o@haRsggBsZOM@L7$GGvSEG}0n|kc0Ggm$fYxX|KnD``C80O; z2O9;Un*bxxH-JMChsH*!$Q$5rv<9FUZ6aY430rApptTk;#-k}v)*-YI)iIJO%g`rU zF~ITkYJe&XCaf}iiW`jlMbMrGy(0(+~d34ZpAcnB2#ejTnrVRy{ zk0k-DMQH$sqMQy$fjm^0Crrpg0lhB+P#)eCm}Bw)S)l!G&~kJiDPukutysFA6YDkx zpAoRG5VNfN$;2LaMF?`1=WJ8E38eU!` ziwK@1Pb7dSQ9xuSSJai_nGHF)5{UZ>#Cal~G|^kcBXOO%p#&*M--1kTo|uRUcoMOM zD@fyt(vUbwO!5pA5U5lh>S{dMv`Ar|2$23fNdQ-z=?zXV*_~Ap4~C}Y{Y2rzOUcW~AUJmM=&Du}U-Cz2KWK3bPbB6G1;5V| zC`cEIa-dg)0&e#2s3Li(dC(JuVLVX|U;HzNq$IG9Q-??J(zAJ~ME>71_u+|CMf}`9 zOO#4^HlIsKVn;_3!^$T{NhpZmWpfM2P>=M^AqW$}JV=#vXY5Sy7UmX;_!*f!lDr2; z5^SL$K@TiBy50H1xZq?ZrLG&-%@brzP}rT&A#9`!O86=KZ0MuzR539{_(ePv3gaKl zE#T+m<&bgdY$St`g)j$l*gkx2hCnEm@KeR?C=oXm_9v(#DJm0$E{#Bd*mp{VbPGdZ zIznkuUC|L6EX+VTd;wA5V4fgDl8KU}Wp>0mGz-*;Y-tBJ=jUi-E?+PhMiwOz<0}>I z!Mu^Y?9Q4==d_remYq$`98Xb3UJfWAn2S7eu#=<|Awmf;`3ODIkrh-#UJe>0j2qp0Qw2-{)?B8R%G17{5 zsW4EEVxa&*#}hAUr%DwKpFl{JAo9-UaYaAr45%c`Qc(}R(utAIS4i?DbSxr7!v{1+ z7<2&zL?cX96=F?P2$5dTF%2!=X^ zCkjpPD7aG;#i(nhL_sOA2oNd6>ICHzBi>o_AYP#u)Vu%|7Z?#~jr~Yvg+f!ZK<9KW zlpxL_9c7VXErtquksMK{X!k(D+<^?lBm`z1WWwAe-vUq&seB3YEdUS!;@o2qKq-7d zpdgJ`0AfpMJ83p4CW%ibq!L0w77tRu%gF_WK&;=;kp%3lKeVZHusXXF90E3AVIY4` z*b`@+=%_d2SbHgcO4w zJ4+UqdsL@H-JLhk^fIEcFpNoMA&d?IRaGLYL;wn%MZuJmNUSFbxeN`pUYI%}B5H|L z8In#(NrpwCD5(}#Fc3vaNnZ~PG9}1HKs^Sc0@Ra1G~xws$fsI7Q>KFvQw75ekct6f z%3)I0;DwO}6jU%OnPh+r5RmJUZ#3SQ2`A&85Ru!Os0Yi zjmgy4P_u+QM9Y|vp9nKZLMD^Zkw#%K!8@p?tq)}I&=?S)5Y0mnfP56X427wt%>KtifTc6^0V>ImF9=bHtVB<#P#^<^$!r>>-hSHl zR(NqWasERqMraNK*9&2VLOdeUlLIy|n5P&DDnERxAZnrG?j1UPwNY!|AKSM+cS91I zhV#mMr>>1lqMcQqFd}-@tZ8fdJo~PCcF+30E0un%Y*=QTomJr?H~1p;W3PbWg1yG^ z6IQtT8wlQyXqvU0+Yi-$;a$-?bLZ59x2gDvYD3Sm=%u=CrcHgcj$Tv0SLf;Au1~+V z?}D}KDR)1R#t4urG00~g$POXXVmJ_t1lbgWwDCa7*gr|OG&O=~feNC52b>52AZ%$G z(L@Xt*RZkT-#S!V=Tz#cnb@7kZf(`2cWhWaY)>0jhuPEL9(;)KXT$Oa>l-ZD{sO5v zX2S~0O9ABolQ&8@oG0j?n(C6maY#>3O|wr+OLO9AU{Ms6$l?54-~{#_C@e5vFe*bW zoWf9omo}B5Y6?wI3x`2gA_9qWh|(dWgdo5OGePi)Hw8#ASr(m?Jt7wbXiOq26S6`e zk;&|kYN{nj8V0)-;xQn`I*OthE8^yc2nAhB9GDTpd@%-eM90D21GYyzfi3twkvfKy zeqJ09Y(9}jFh5l!6bsWOEHHj^g(9*!2pM8Xrz`2;1{OQSH;Uy4RueB@C>oBCBZlk_ zu4Z+S^vum>v0#y9k%pO=1=V3k zxp$#ED=nLwV(a4*6B!yC7~<*gi*p>P}u*pT6uvp2FlJ4jrOC+eCGbh{j5gKSF ze6l;Tb=oRoc4r7o$TXhFhLs~u6^gR?Dc$OYIHLGl>Lta+h3k~+XP zT71ifey0^@#|=nnt&bKY$9mkhR;lpOQJB1`a-{Kqm$Ukhp!fYS=J30*8KSRQElSg# zjoD5aVWKu8@8stxdbzskQw}MG7f;`}CMdM(AnmNn*g6|_i{XjNQPzVqZ*Sbwthd4N zLAH_o1%kN`Gff-og3!BbEe8p#Ie9Tp8@0d}F7m+-Tg zCG=Q-eo12Irlkn$SfG6kz;1idOz(gZr(nmsrB@4xX&6EVt7woA> z@D_%`9v}(cA+QU8YYy-<(As_w+LnQ6pm#T>l1Kn>vP?b%OG3_jK0Xk^fGc6w`+?1$ z4Hj7-SpVr@uMv+a@Iv5hBz6-5u-LNU-MJ$n3BZ4QiAwN@1iXmcIb{3+r%fac4qj#H zpCd|v5S+jxWytFdrRBh%bnhbu{9oCJM7e|E5VkX4E?Kui=m{>#gGdjCnxsN~grwz} z4s~OZrHEihB_vzZ-3mXl4xO#{AuUuQFTcm`i{SaM>f{cdVyvs}F~A4*{J@3Sy%CQi zSh~*eu}4nu$3boo#t~RO@c4m89V2_5u!%*GgA0A#-J-uLn~leVl>mpovNfq&-~F?Z-Bb7fyNgkmjxvg(o2+? zPmVp9tLQPv->*D>9kD+fFBas@gZ|7Wr78t_*BweB#()bcws7j=L(bMv6id!ePvj3Z z!C}N5pjJ{jB&3~B<_~~eVi*~MhbvIn16?X|fwvp{Ie^rpLf&*pOMw=+faEv=-ib_c zfKUpgxI&6Ee2APJ$ce+-9_SFHFrl5EPy#VdIY6Ba^<_c*ewI$6tvGz_$v0&D|Ih!t z2Rx+rQTj=z^#45n|IhJX-2>zuXE-gzO9%QhWUa~r%0DV%GL-7lfv$jZq+l3F9+zd% zt(B-09Xi4XGvurp7!50Rp9+s1st?bgEwcS)$0+m+aXlT(PTS7#*sR zPu7SUO=GB2q9Zx#xGDo8Om(?f*inN!Rw5K|RB$B%DWfhE!Ar{#3eq?RxE_I#Q~zUc z0mle8B+{ws+TH$uC^(<9jg)Y6a#>;Cp16UQBF7nb!(BKoPOeVQLm=wfBZ`-7{kPOi z5tk=wCa+El4h@UoSm0*TsDZ$npPLDL8lOmCmTzQ;JIB%0+t%CB%gxpvcXsBO;U>}+ z>HT4gIy?nX_p#?!*4jRxj$QBbsj?vMy5B-R zOEuw?PHOSggFg<a)>2tO;>#c2)p=R3E?-T|otyXF&E~Xn^nBLNS)9l8~7jqoKCsu@(yqlS?Jnw?+ zg{*j&V;0tm;ofs2uJ8S*cR-wQev0C{n&I#JkIGs1@krT4VSB^58~ljkwa|i>m32Fb1r==+Pi4ou;7xH+lF!V_rJ%n)}k; zq~fBZ;HhVRb`W#rW3hJg!tiTjVm)#j)qrz>eNxcg?ntdzT5WR!ZOzzE(af%`Rk&*F-s5oJo~2sIeEI#x8fOG0bD$>X*4OKbpYp4|@%dUwREM z{I@6z6WmBT>AO9j;BZXiu_E~y0#J@U6qzf>)gI@7G9wh33x|W-cSP}$vVTk6eoJ3`5KMksit_(PCGHGkPg=529j{hR%GagR%EVygcracg6jiZ!SFCkp6<^ZZu~_>`m$oo1?nz)^4j38>4^R z3T%m@&spoxvV06@MQ}sRSxrvn!12TNa^AkYj8A^a(_ONYsn=)h?1ndEyhgejUm7*~ zUHz^ROAgI>S6c2=xJzBQAEwYnvld(PLnz3ZXhgn~Wc_7wl;_dgpp z(8BW`sx2J(Y(ix(W4RjjkK9hh#D$(p{G*9V?V+s}J$Rf`8oR;8^!C$Xs}Cp5&_8o+ z6dplLZdDqnqUHX$FXxx>am4KjQKG9`+uOUj;ttm7F0M`~oK)P_Da|e2*3p6EZ0nll z%(ZoKu?oUf8A?hn;X?J7{X|8eAo3h{q6x8qz{>(1F#U1IvB? zM;Z`>8AKTrUlQ(W>%f7fj)Rjra7d?u0v#BFgBI+JgAN?<_jKT&@Rs~CbxDOc{C>>6 ztLpkJkIy+zZin1RG&q`VzU<=z*4Qw?y#I_PQ=pu;6Af0nH*l**GC| zyuiP0U-N}2fqbPtW$)`6mgyR;udN#}gSF`WQnmg?@p)-&*OyHgZ?8t7WToX}E8OO9 zeOYT6n7z)_-g3aIDd{#}Da~beCbMRKjODd2zx*VeIp@Qb@B1(BXZe2j4h$`Pnbvz; za!BjplaV2YUx&<89D3TcY_$0C39o#$B#!xsO=lt}bE7^UtPm}DePoCJ*flf8)7&cy z*C*qp^u3_)mP-|$9M{2|xZa5n=a0j2+O^`bB81?z^@hbtdR)b0dFDwng~U}K(k#PqR|k&0JvgB4L7UlkMD2;_ zKdET{m2I^}6ra!=Pixe#N@lUV7L1I{9-wE9#?SX?)Bjq<^)2{~4!iTp1G* zLSjlSt?2eUgRX|AKDuC=^4homqjgO5!LMe?`Jq$IBOe#78T7{QtV=)FCEM~7>a>{L9-!2@5FxkGJ=Y(7|pFH>O{N%o?IKmbE_BPw%y}O8dQD_PVa^Nz{1DAt0 z^887cDXl9__K2~ld|;;j&FZdP; z7K`fCTA;-Oa6jCqGY(qJ_3vph=}{;#VTkzxTz{{>C>V-&8!*n?Z{ste$7cKOSufy?)#F@?N>2 zW54>Cs#lRF6Reh(>dkJQBcuPOHRRLOnv;*!>t===*S#=ZG}mfG&O)6}daoj{WHcGK zC+MH9o!Vfrr7$(dr#Afb=O@eJVs0&@`1;r-y}Q2QQmMV*+w!^U_n+|}t**7%cidV< zi8pP*jrX-*)XZghu5(@&84lWW{%*|Ua|QFX6HYj3Cf%B?A2`i+-+D(My_YH)Iw)`^N-2CoS-x{G)GB2r2ptX0gFWE-)5gY@H}@}?5x-^b1JHJ1E@njo?Vt9C#iFO zVQZ&#{GrH2?VWIQzl_q)5nC!8GUb0T^ ztGb29`um^nt{&&NM<&^ym+TR;$?JK@i>)IIo8=s3bM%TihOJ6bw;t4dec-RMK5c$` zm?nF4Bi*Q|b*`rc|IqB|b5B$>FErYqn6T(o?S}HqGKDPLJtK!B{dw!(XpZ`zS!TLx z;@PZK{v5lioA*Zazlz4D_@6&B@kG7$7bQ`}fo1(SQarNS`3vW@s;pAk<`Txda;QIE z%8&v5-PWnUH8Tm<8yqP86Z#u>!5!hdQ1(s^xErCrIb;;R9tF{VZomJpwD;1Q?9DAV z0%lo_9?tH4x1sgkkpZT_oCO@^l&On+Pa=3R!K&9_mHCh9+Z6tb-5fJx-ZiZ8xrWzP-U zcy5yyt@iVZ?AaMtEpPfoZYn?bz|xOxv93HcIzr(-)#hu~j2XD#x3}^5;xA*bRBnB2 zR5|w31@*Vgosl^a+k9s%4M2nZ(^W0{q_3*Hf00o#sP^;tm8$-|WJ{Nhe-T~q1FO;x zV@^OSxZjJNw@v)^9JY;Gy3wG(lat@Hu%&O=>>4g*yT0P)Zyy(K!Oj>5MYVsXA3DgA z@6_IFL3^+KEA9P+Sw@Q~12JH>{9N{JN3EgT!E17|pR2296BlTO8x}5uOH!n(6 z3fF7a463eMKUf_1PDY*0`>)aZe{1g!eXUYC`A`DY$NAQiZR_)IoGAy4?LXnhG92>`ede+sd4Vt58v(=EMO~slxfY~s~xg< z+Hg71-1-`~MH#k7!j+z;Bn;G?KZP~0RYu4Da}#IKNKSuik^J$ex&7NG$f>s+l;ci& zb+umWS;&-eN1UvOEo*$XcZ|H(s7sL|qnG%}Jq5gkp_rCjFQp6Dd(D5}Z&!NUR$IGA zpC^$B~h*lX9ZJL5^YREBRwKd(L`qeen7D znC`ha7?Pdh?O;{UWB07~<#MYwy;rn}RcrFZF6KE;K4$qJgJB_EHG-=4wn6?$S7c4&ME^H{VkT6tVjx=gqSbD%BYRBfR z{*!7(a<>U;)K@gF@qeWz{65(}d&`fO@Z(cWPNX+1*8fc{jndzCWBl~``$iA8Z#tQ} ztsshi$&($nZqBBbCJGjjlX12t85tGVsnv zj3=BVKjt|9_(Q?dm6c~WecF|d3{7Yb)~#v&Vz*=)Ii-Dq@X|j1;Oxa= zy8UyG3DW)hJHJV{_qn>{J7KPMc&TNn9EBdfXBs$oyM5F093{MGss>>Uc4nk;z!;2r z`dPswPIaa>uSGXnqN<)8GqMdYS=57v0;i+`FPU7OTMSpL|Kjdn5}ZQ0k*8fw9Vc71 zvdU)giEmJ z(hPoDS}BIcE9%)k-<;vp{O0hHm^_Q2iClDbDx>w&f~Pg+gG|5PdDySC&HR)3woM!9 z?~VLY#G5Mz8S-adwQs?AuC+5PK9&cL5}LURE{jLdNb7>lMatv-!5fb6I;u_Q1BJqgjtv%EsZ7W}gagPzXPF zY0t`46+Bk3y;ta@7BSa$$eLN&yQ0?6gARW1y*R|}cF1&g(YgmRZ52a4Dy|r~({jco zoqakhKb}y#_~NqgYf)}{$>$v+Mxn*=96R*t*_p+9UYp&Q`Np!^#(x}Z(iEswZef4( z&XSngD<)gYzT_|_?>4L{HJ^@`QcSxCm%%BeXaGu;6z6IGnECL>XBj<&IT6?Ht~He- z-xZO;K$N?LmCjKn{Bv;X;Kp%wbmee{{7#g;@2Qwe#<`Z&V*=apD`zm1-y7WTDJ$Tl zC1j<3f5Ntnk_z^2pO~sfN6yuj)9if;3u<4@o%7wIy|pmDvMzesyJ?r(oTGl|j@?Sx zep*=Q^+s?z&Sie9{A#|xvR3^J^O&TI_m#pA+U$9Htq3;rw)duAI{I& zQ+-f9bhl0M{m1O#1;ZS(*L~QcJF-MV`INH8y~_RjGp)&GYn_(xGgZZ9uSO5cIQOz} ztLgQa@q5eWwk$9_Pt8oreLn88@4N%`DsTBKqMpuq;<)hGJNt~WRs)NVJvtH|7i6$q ze_Cq&!@K&=($C((OHEU|r#B7bl$u5YF0`w!iE}Sg4?y(;+2JS?U6@=Rfbpm_3QRXV zp*u62eGxvUKRx>*y&ygE(pWpc9}O9(bU4fJCbz$_J?Cte!-_}jMb6_jvoc5UEO!T2 zmnzN%n_Lxa^3UB)WHjx!nag8!l1{>pE5I|Y=cvj zU!oe(C(R?=7QQ-T7H@mu#8A1mu~+Ps5+!Q1=SygjD~3}tJ_W~5$-iT5 zbf<0qa$mKx)KS!w_p{V)5=HM!od7**MOOzAoE zPj%BC)Vvy&rgH!DGmE2d?l8|OzRB3%{KoF3PH3u#9C_=e)WwC3anw(hI}y?@}s3*4>RHnt4rPo zGqFxT1huDEdF}BlFScl0STpT)(~E4^kG_M>P2ThOy~++a&at;n!JY6_XP%3#i?bug z*3prZZkv+o$OZp0C_A1b$0-eW{mBy(AV_-%jZkTa}oh;aTiT5V{pSUA9vN4ZuzA(!xs`HOnWe}tp`Szu9)gjv4J_kz2FOT7TtDZb_?)JtZXI5i| zX?`^iPrkk?8Pzz889r>Z17%ov--QpF*-4bavWs-Qua9_f|JtM4>k=ES^$!%bYrl_@ zy|hnHe3~_C`IqB2ns2yo_%h?jvWB_54Su$bVD~t+P(-T6-Z@Zq3aId3KD&vex;PvD5ahju)8D znpWB>D=xj}RMxa~+RXyZdjKu9tzdp_B2|&n ze3P~IVa)d1ZJOzau11#{gq9YZSQ4e9lDt!Et%v%|4V!u&sB&2R(q43$*A(hE-&Q$1 z*+B)g#l8>jJyDtZY~}9T%h?WDee8M-dTMaM*wu+Xq3s|IDGoo-Jg--P#>TM` zo9dGfM{FNdx^sdR3bZmWvl!xeyWw(r;9mJf1-Y`|WS1!dXM0Mgqef}Q1#&H*{vs@R z$;5xlVgSx`>0;2QdolQPZ+!Q%zyYTY956b$NnJY5WRwHUqmW;?DfrpHKi)Sj=SINh%;L1rE4|($&j!$^$b@XTHx++hZGEMxePz5 z)-3zZN&3jg_7Uc4c8}IF!_IE?*_qgUm`%-FoB8%s&Rh3{8qIfpyYINBtrMg< z6|AUERkpq8G5gcK+cJum6AJ4B`#e(ISFN7EZ%+TVulKBns2B#vSk@Ma?x?x%3>?<{ z;)VCjvTLKZj4Ic?HemDA#K)6D$LqYQv5UVyqp$4-hqxm<2mG+VxRu&}^OlXXT*qEm zTx|0`Bxa_Oli49RLE5;;-HVjh_cj@S>fLT?dBw-1SLY%cr_T9p?|vhRS(3KpjwTCB zSF`zUgPhNf-aKoAp2^D9>Cd@_S$8c17bi_@HA}o`6f_{>@b=h&rqoyGi-y`=Ho2FZ zs2uK>zx5NkyLTO>H0j2Ejjav3m!g9nxz#8?F$vtOUGFp6_x^!HqM|#ZN2V=}ehZGY z9n_1xQC9IhI1pdCc3R8xp-VS@yR|93^+09Gs25jW1U(Auvr^r1#mX@m#SbT^6eMl2 z8-F!+Q9@(BrRD1vIfpE#+f4Ux2|aLkg3qMGvV)IYs`Iv!%>5|%RKSX}QBO>sTQwlm zVf^(?6SZzH33)ef(_X*o?D-e&T$wnv%d-VX`q&fv_s*&ATOfb982!bO!cShW-yL`m zSCBfdkBDsDDV!PJyL!<>?mk_4jC0;(k|REZATXrCN`!}22UiD`2mbv72bjJvZ{bV; zj?TIkyCmEp$=;q^?1ptNZm`%z;9+=3XB-wgufKQn@E80gc*#y+#tY@=soqVU zwZLoMm(_^`ij-KFjN`E%S_pQN4e>0eM}@>YG!iW!o! zig%~XDSlQ5C#&pPzM8JE@I~gAO!nMrtASR-;{sC+W%+_3^XJ_!d$)i3TR-dD-};_w zaB35nZFsQJ;>EdJZNz#;+m%ZDpNoP=LyU zV#9N&&ymdw>jwJf8#o=kP+PmSsL1$Bz+A(%U;Ryr-!J*pIDBVNW$UxN0-fhiT^1B- z2en_>YLc1vaO0P6Q=Z8eKjrt`_zizS8$7M0B`+s+X8-exV?sh3i(`#z3RLZlirPHo zHV^!|s%d%Rftra6V@Je<1o-avIU{Ba%t65!&>A{sqxlU(SZyE<2>e&Ci;|zX$v6B~#V@zXd(#H4c zm;L?pz$5;-pT@VGzB{im_o30{xZwLIE1Iur&HnFmqUjF1wO~_7+0bYDAuXGaJZaL1 zXgP6|wpk%Tea>r3$5V65QkQF4I~}u1FdG-K=2E*wmYH_ATk*{6%FV0#j4JVR+&0~C zorcJ7gCN0L-R#SY6J^$tnBHt^e)5ho;1kLt(1e4T;s9aJ2_x87yiYO>BZ)#xwsYSwXM=~&i>!pIOAXvfk42WZozH5_o>q3oWb+KacQJbp{4h6o=kKLH(5~4i zAmYpW7oQit3)RZDz8hTsRH4~XZPLKL6Z))c*!C$Z&cY~Ua-f#|n)CIw>vj5PZHuOS z8?5y3a->esn)elNPi>7HHa8wooZ>LwC6qHN)~&_QID=QK4$^hMbgHIQeGp!%?$@>7 zqf)^+qV5bh`>w$!oFnQcfHI_D)ZaTtO0oV7`A#`e0slxTW&=(qOISfoLHs&ckB^t5 zVsK;UXU__a6|CB>&5sRuF*!$)Pkk*}z~1|8Ma}es?K=jab-Ad0ay^9+AJxzQ&>3xY zSh>1=VQy@DSGeIJ0|gXQuy@rZyOx*i_{Zh@?}7(aCpWKpQ)DH_d38O6F>}X6rqkmBy-iORobLC?&S&?^ zcQ?}-mSYE4va<_Lf7`qNgiqoy%|#eJ)Ht})^YajTs`W1o-OH)&36nW9-g=K3?WcRh zA#=!toan#0JM;Gq-OC?hPECJYn~;)uzWflFLqDw&Iy%)(2i|77Eq;QhNyR19v2N-uu@-hUJp6eu-ty~85y zI({$dZ&8-1O ze2LBJjc+}8B>hBI%lk*K3L1{BT4HwZ^WGQ3qhguX;iW!mUw1`LZF-liHhE-|hll6F zn+aO&37>~)In6hX36ivVsT|+fIPU1UH!fp_4AgtGpm5O42(-~vS?j%BVF~Zr>g~ht zA3O8mWDybu;XbCu{m#Ci*3Fw9-)HZR@3gzQOYH|)e2?B}_hZL{X%2f*lB#aRdOUf3 zW1XkKOY+lv<(yRx>MJxF{0@m=HC)Oa)HBDP!X$l4KW7?YJJY3}B( zR6SMItmI!+eB|8emFL>Vl)bv!cZ6(9qGY}?lY4zrn1Qh2^^iqS&ySvJF5MsCS?N`K;%slv;5+4?t*Vx(rsEg) zNbG}JQb)aCFxgJ`n9;`g?Hg|T^s5XTakb{ck?4E;+p!1E-^TZUZ+aN~Rk1NK^vPm_ z-mZ3g&&JW&ZHm=lPS@LHE%YvL9qVMk+J%Rwbtcy=G}-Vou`T z9q}V)?l&JweRw=OX_?it!N^bI+N;s3AaRq);OBzmfaihthvu!w{r>jShG@aG2AW|; z|K8s@qS84v;?3;6uk z^A|L2F<5qeUO~yrS2FX9!}sl$>t!%@iF>?hO{`eqho?`-yn|8U%BzobE>ybEQ(8SP zhVCtAo*bGr=tW z!u!{Qf`4_lhde!i@8yiUZEDmI-?r__lo2Q6XYOOK@+;jly(LY5%tI^ry_Ok4KR)L- zZhsfD{QKiU$^$Ztx5iA$sbmg$Zqn<0p_O{<)LB}K8Aeavu6nB5_vVf9RY4y`8XuNU zw^-F)*LsCDX>PE`YK`P!yDG7(xO}@;*6^5X&xa&9Q;VB4ZL<#Sa!3okF>Ls_X5sz~ zC3UVZ+|MM6bfym0IF&Se>Xut;knO$iX_l*3?^DtLp>fkI(E;?oJ5%-}%cIb{1?W6n)CFOPHi<^xVV~5>crFhgl zg!19L`v+{@$I89CW-4)SEWX&b!kJ%FN*xJq-C^YZ{a(#~@dlyROb&MO-S-Em8c17l z-PWm@_|{L7-dhUJ6k9vlF~3xo9K=f+mzV6tOLqNROz&U5CGz{PBZfppl3z!3^zn7G z#l4+;Z5@1ZH;y&lM{2Sg|7^0eq`z6i3g*HOOo~|E#BVtETyfy?0)>ul^-lYW8*3|f zZvSvcCue(?A)N>~q>v(T3GUv#*Mu{E8{7(q|Gj`@0G@qfuLwU**1K<`=CsS1C1VywcC z%FSm}N39*Mr*1Pw6r?=%_S;95r6bho3m5^8Mm6_;o7t{Vd3wQ|?d!~PUwAu}y*#;f zPxDc=D_@J|xOr}EJNw@F*<*7Gz0V89>xX7~xE%PAl4agnczDE}zASyJ*h4Kfw#~jmd&vWWG zXveUm^hSjZUP(5!DN6&!C%sudZ2HvNL5Dr}^RqQWnZJ`Z$cEN zn0@Ew+Zl|Wp`JIhv5ao?X#jlvZe(VO`@>Uq6Su|m*&**#GA_g6-BzbcxQ6o{X5MRZ z=FR?R_kmKs*&moSKl{z>ah)!A2iz`G{K=t#|LO-bvFHt6-)rtnPp;MUsyc_5diJ?R z`}5hW7sOn?Dlr&@m$dd^K!Mw27x0p^cu5mpvYFQFkLE61dc{kMmyi8V>@2u3$8`L% z)l4a@W&9_BN7asK@p*SjCo;)km2_didom(1K&ny;#TEjN-5PWkj6}pxyXwqDNNT&8gJ8rIokt6=)gRT^?8Ly<4>S+h_Xj zl835_VUL%*dY4rh+$%JCwuVKj-Q~CH`9FN9C*Rf8oQYb|`XFlkBFp^7(DNDQ=`R8s p=1(`YVOiJOsmv{BiLYrqa`>WJslRYS{FJ7dqq(nN+#!wT{{uAnb?5*9 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/System.Buffers.dll.meta b/Assets/Plugins/System.Buffers.dll.meta new file mode 100644 index 0000000..1364311 --- /dev/null +++ b/Assets/Plugins/System.Buffers.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 981e61f2f9d05f14080ac9c319bce628 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/System.Memory.dll b/Assets/Plugins/System.Memory.dll new file mode 100644 index 0000000000000000000000000000000000000000..bdfc501e9647719549793297acb072d33067d4e5 GIT binary patch literal 148760 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 IXGb{$00BiQzyJUM literal 0 HcmV?d00001 diff --git a/Assets/Plugins/System.Memory.dll.meta b/Assets/Plugins/System.Memory.dll.meta new file mode 100644 index 0000000..63093fe --- /dev/null +++ b/Assets/Plugins/System.Memory.dll.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: da0a789a7c2e0f541b10c9faf4986ab5 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/System.Runtime.CompilerServices.Unsafe.dll b/Assets/Plugins/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 0000000000000000000000000000000000000000..491a80a97880de93aa893f6974c5f76891d2de73 GIT binary patch literal 18024 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