From e198d3b6a807f2ee98df91a76512386157ea64ef Mon Sep 17 00:00:00 2001 From: "DESKTOP-58BB7H3\\ZJH" Date: Thu, 13 Mar 2025 15:34:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/CNAS_DBSync/v15/.suo | Bin 1001984 -> 1001984 bytes .../v15/Server/sqlite3/storage.ide-wal | Bin 4614432 -> 4614432 bytes AuthorizeDll/CNAS.db | Bin 12288 -> 12288 bytes AuthorizeDll/CNAS_Authorize.exe | Bin 24576 -> 25088 bytes CNAS_DBSync/SelectTableType.cs | 2 +- dll/CNASBalanceDBManage.exe | Bin 29184 -> 29184 bytes dll/CNAS_BalanceClient.exe | Bin 179712 -> 179712 bytes dll/CNAS_BalanceClient.exe.config | 13 +- dll/CNAS_DBSync.exe | Bin 264704 -> 268800 bytes dll/CNAS_DBSync.exe.config | 120 + dll/CNAS_RunSync.exe | Bin 61952 -> 61952 bytes dll/CNAS_RunSync.exe.config | 14 +- dll/CNAS_SerialPort.dll | Bin 15872 -> 15872 bytes dll/CNAS_SyncService.exe | Bin 26624 -> 26624 bytes dll/CnasLocalIDAL.dll | Bin 5120 -> 5120 bytes dll/CnasSynchronousCommon.dll | Bin 27136 -> 27136 bytes dll/CnasSynchronusClient.dll | Bin 87040 -> 87040 bytes dll/CnasSynchronusDAL.dll | Bin 107520 -> 107520 bytes dll/CnasSynchronusIDAL.dll | Bin 6144 -> 6144 bytes dll/CnasSynchrousModel.dll | Bin 47616 -> 47616 bytes dll/DBEngine.dll | Bin 0 -> 6656 bytes dll/DBEngine.dll.config | 9 + dll/Data/SyncCnasDataBase.mes | 2 +- dll/Data/SyncPlatDataBase.mes | 2 +- dll/SyncLocalDAL.dll | Bin 29184 -> 29184 bytes dll/System.Data.SQLite.dll | Bin 0 -> 395976 bytes dll/System.Data.SQLite.xml | 21649 ++++++++++++++++ dll/WF-ChangeGUID.exe | Bin 10240 -> 10240 bytes dll/activation.config | 2 +- 29 files changed, 21804 insertions(+), 9 deletions(-) create mode 100644 dll/CNAS_DBSync.exe.config create mode 100644 dll/DBEngine.dll create mode 100644 dll/DBEngine.dll.config create mode 100644 dll/System.Data.SQLite.dll create mode 100644 dll/System.Data.SQLite.xml diff --git a/.vs/CNAS_DBSync/v15/.suo b/.vs/CNAS_DBSync/v15/.suo index 376b852328eceffc74a15e4d52bda33918341976..fe5d73a5ca8dc327b825d4927f7c73703421a94d 100644 GIT binary patch delta 44369 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 diff --git a/.vs/CNAS_DBSync/v15/Server/sqlite3/storage.ide-wal b/.vs/CNAS_DBSync/v15/Server/sqlite3/storage.ide-wal index 8ba5ab8ea9ba82cc228c51f9e4aa3c24d4fc28a9..ebec5ac41fcc6ce72ab95216d030a1de037fa5f5 100644 GIT binary patch delta 47848 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 delta 5580 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 RW<}22#N@=3l%mw)VgOdM6F>j} diff --git a/AuthorizeDll/CNAS_Authorize.exe b/AuthorizeDll/CNAS_Authorize.exe index 50c90c0caadb37dc752a75e2993791cc1aaaa912..918da56f8967a4c29c7a0ea801bfc72886a27fea 100644 GIT binary patch delta 3599 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 a8YYgqpWZ#G$GPV_ul(lPp6JYP#eV^&ho-Fn diff --git a/CNAS_DBSync/SelectTableType.cs b/CNAS_DBSync/SelectTableType.cs index 66f97dc..cf52413 100644 --- a/CNAS_DBSync/SelectTableType.cs +++ b/CNAS_DBSync/SelectTableType.cs @@ -205,7 +205,7 @@ WHERE SqlConnection destConn = new SqlConnection(); dataClient.Open(fileUrl.Path); - destConn.Open(); + DataTable dt = dataClient.GetDataTable(sql); destConn.Close(); return dt; diff --git a/dll/CNASBalanceDBManage.exe b/dll/CNASBalanceDBManage.exe index 21fc20741454e6dbc2f0f186974d950b74707519..90efec767a10e0733b521dc8921f07bc324826ad 100644 GIT binary patch delta 171 zcmZp8!r1VHaY6@6-SXpqCiciMPMf$goY7@6BV#?|oXL$qvSKqMleoXY+nqnl))uz= z_iW<1H+hX<)@F^s34*+0CQ4r!fPe{zBPJhB(w5^<3KTfg8}C1}o7}+903}#8#N7D8^VZxh+|9@}}gN$qA7%oB2|HaWl;@ N+$>n|o^hf9I{;@0I9~t& delta 188 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

LnNt^E|R{I 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 delta 26662 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 qpK*kDo#$o^f8@_@V| +

@@ -72,5 +72,14 @@ + + + + + + - + + + + \ No newline at end of file diff --git a/dll/CNAS_DBSync.exe b/dll/CNAS_DBSync.exe index 07b1fee2eba5e8141cdf0b9de1d9dd1a6bbe8da5..6a42dfcc5221c045d8c13499f6cca4d71e8f470d 100644 GIT binary patch literal 268800 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 diff --git a/dll/CNAS_DBSync.exe.config b/dll/CNAS_DBSync.exe.config new file mode 100644 index 0000000..b274869 --- /dev/null +++ b/dll/CNAS_DBSync.exe.config @@ -0,0 +1,120 @@ + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dll/CNAS_RunSync.exe b/dll/CNAS_RunSync.exe index 7f846b6272370b8b7b8d031ccc0417265aecbb68..79910c0691369ec366fed649e04f79647c6712e0 100644 GIT binary patch delta 17326 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 SuM|1ZYm@hfze~+stp5+iVPP2n delta 16954 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 diff --git a/dll/CNAS_RunSync.exe.config b/dll/CNAS_RunSync.exe.config index d6a9636..09c4295 100644 --- a/dll/CNAS_RunSync.exe.config +++ b/dll/CNAS_RunSync.exe.config @@ -1,4 +1,4 @@ - +
@@ -50,7 +50,9 @@ - + + + @@ -74,5 +76,11 @@ + + + + + + - + \ No newline at end of file diff --git a/dll/CNAS_SerialPort.dll b/dll/CNAS_SerialPort.dll index cefab194f89157a37eda4ac567e57326a8dd0989..40bdb3eed61dc30bd0af55162c4cdf5be6f801aa 100644 GIT binary patch delta 1611 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 diff --git a/dll/CNAS_SyncService.exe b/dll/CNAS_SyncService.exe index cf05c0a52626d22c1c520fe6ba58a924b9f9a044..db8aa7ec2586e496bdb695b98cb13f9e0746d8aa 100644 GIT binary patch delta 8636 zcmZ`;34B!5)j#*XH*faI%$p?%gsdzt3tzM06z%2+j*=7_Xa>GPW_IKL(TzgVSWil&N8KmTo zIO0g9RydZYTeuE#o1SPBKBFp!tSQb7o?fx3AfvjeCl9gv_0X&voK2qifC~*PA{d4> z3NH3{xs@y8G7W1Qi|&ZK$`diH>CRs~ohwiXBkGNKO^=la>xv?@Ll!0;Rq^!GM&^cH z@AUQ-8G|{k?>Q5_MWV>L&07X+@%9l@oW0&2Vy5%Cx3b?&2;;M6F(xk+G|#YahMX?! zOi1ZG4SyxMD~O`KT~y-K`r<=o!?v;n{dVh_+kIs*gf`<6?(P;Cx;3)J!kkrFI>2Yx zw}Q@X6PTdg&SqcUWw{Z(XTbEg#l1wGBmPP=qHFf|xx=}D1{)CdnLcYCgf;qEsLfsESZ>9Y&rW>A*39$eUcm1W$T27ztKYom&tM%!JI4wE%*3TSiN6 zV{e|J09E$zp6APWDG_;gSXij4T?fzPAvDrF)*`3bAMMQLNZ5;k_7cF)yX6`gb*b}` zzp(Ez4qznx^4vHhhP|9Qcd{S2h}&MlZC3&^wRds?T~jx(OHL%GDnJoWX315?NRPE? z(QqVO<?F{)kC{M+6Hbs<(HNXp>m3l_FOyFxSBCaI;cy z)$9(bq#6~|1hj7l_>wQ3@4>KFG0h`R2a9?lo~j_ZlJCK%cHqs3*l-7|-8B17JjkE) zYUi?dxpkB5)u3x#$XRl|t+xaxu>2lUBwMS|p5&Ot&N2`nz`5{|5QlM`h?18L6SB5%u|3)Bo4Jy}Q zmg~B2cMU1mP?qc7Z+Fd6t~pt*{+w?eKv=nkvs|yt=``$uu?B4%hraaUi3F{CplCL) znDk20>}Dn33$z{Q!JIn(k0D}pqSE&{?(pE?PoSqKM_N;ztHXm*KV|3p0m;AVSTZe; ze1^3F4=mcCx5`U~wGmo(GLmP{dHAK(4dw3E)9BvtKQIP7x;jv7K2V~1M6c>X87fD# zZ)E#_VaE39+-~gL!TNx*x;?qp&mdWwoRUbj*zAmt3@d$*<6_b0Zm{o$nAaxxcpCH( za>H(A)_FP-8~G4ye%AAHZI%P%wjSoDx+nc~oez7<{SufgWf#0!efbTK0RwK2 z{WzWrx?-98JoXciiH=0jm;I!3(j0JA_7tS6{1m*brvZL<6;4F!zxuSor(r7~fYa07 z=G+?1^ZW`blwUjRqg{+Ap;*s4PesRwN1QX!et7v;#m1$!vrh%yGT6ghMgBR=#bj293ry~;nwx{uh)0i?B$A5Z!-yv3 z_7JZ+soWj|-h#nLni@{jWx6`tmbglOi`SCdej6AtJoYaW4(E0@-h*tv?|hwG zA>MbayaKV_8JRb^eG%z2O2>lWk8C&y=M}lQm1IO*pU#Q-O8f&mbW-9W7CS5PFpC8& zW|rYHj*&<-{1FEG2mn_LrjplkwRRAt&M`$d7UinNX#c6*En$C+fir-YfPg6(+;*^2}y<@nkbRzu62=LN>#L z1#>+of3Cjateur_omL$utj{ygf2e2j7s%O4mo3-&BF%NE1HT(Ms`XFjRDm_7R9aEi zEAG;4tS>_@E8?!ZfKy*Nsyv$Q1z#x=71a$xAvG4mq2heILe2gX&Q5)o9+xaPiOO(^ z{sd3LK~gqhL2~xoS@@y?uAJyKH@Jxt=xIzs7+l%tiC0{X=MLzN&Z}L9h%X&c*gv)0 zi=p6SP^;(eh(U#3#*OZ&ksK;SY=e%t_XiD{>0unD(B)EPq`Bq_SWAq$K!}E-FN3zC-&7&Z79Yk+sfWuH2Hi?^fkIjlWM)``nbOE$G)ua8 z>=QzDf$sEr_-SPSH$M+JO=il)VeH`MEK8EZK>Zvkb7v+rmg}IxqKF(=GoHPDWyd|0-Z)gKN`}^-V zOdxAr&ay_o$~%WZqPcF@%_H3kqX+2LJg)bXsoY- zURFgrt~1l>9g9VDNtgrOhd>oHS(W#_7?*Thl<@^jK?Ti4c`Im%D)RIIicCYjb%DWD z7a!{zOfwWFA{_qHa;Z^-=_@~b2JxE|dv;2xhC%A0)U9z-KS)vP zkq#5sE)F6{C21vL+JJpJ5`F_nLl_)v(28hK2U{@>LA%rPYhaVcI9B0}T3?r-kiuPB zf5;DNmjLfJM!Hghc1Op#3|ddMz+8PI49p06RZIb%@lFHIbaRL$@f(48ZVr8Oa290t ztZh6_%=AocKe~Uds6IH=lI5X?I5Z(0mr!{&j1Zl+Aew^{+cU5^%?CZr%Tt)DfSQ1bBb%G+XEM2Zyrv!rcKJ$6<2$rCR!uk zaD^yfrL}F*jjk|_$!Oi;??PK#k+zXM;xehRI;};F6RtRo>6O-A_6`%dvCi8%ml+c0!Y)cQVlpa@FdUndFZ7|!K^Dc{AloDm+8^UTj!!n90 zZ57_^29;4smaQUVyN+^=G8(5e6-IQWx(=RQ>3bQ^fz-v|*%Y)8mw^irJN80DG|sMX z4UGu=uE=X8ALyfUV3_(S9Hg*D;S~yN71k-N2d3gQ zTPgDuE&&>tZ4S|_Wqo-q?U zFBrWA^25eF@P}z3->Liop2B8NscLQcrdz%2?7U=FKP2FP39x=Zgnoad;-vy2nE?lYvl{ZWU*H6iY-C| zD|Uw{P=%_OSBndWX zoNSdmi0#r7Ou=&!JX`6B(4BIpygjxKK8fgka<;0|Y|$^U5%OZO8JHh?Twbq|X_eKH z7v&N$E}nWt&KDxETdpM@QMvrgM`FJ41@?jOiC5BWS>rk&Tj@c}Un|vk522fg>$t3w z6LU_}62Xg?>(nNX%H}|>c2qu-SV$-2AfvZDB~M1XXs6`w5~bR8s^jbM`$;)upDfpe zHaXTOrA4&z#2~Fju5?Y%*2-XXvQ{o1kKF>S^v&1iOVhnbE75rVN>om3=^5jPS~KJy zYkjnLeH*nF$Ug(~YwsgkjV7><){1{&B6twH5uXQfh4u=)p>2le+gh#mv4*Xv-5fit zrD|1!T8+0~oz}}ZO|7b%R<)|@wcp}pGFuxO`Ba;)l}0}Y9@WokO<;uHDjxB=^?Ge9 z_DH=JON41H_>GA0sR)7J7mri3HdEh-L3BxU(Oa}piE{9MRH$6eMMcX~^6!Z*TB~>~ zHXPx2>?c(B+qL%*bi4L(oRRnXPHnaCT7A2=7xR5e3~?v*E40z(VttSHfN!P#m1^~- zs?%5Ely;}SQ!#teyuyQNR70=V&IZw+KPaZ;#L263B@T-5au@ucGWX)A zZ=ZYd`CoCpaBMscXbBysu5%MtkD2F`j&`Vp>IW+$9-YhhHzN zaorhaRO4nl8rYd`0+x{ttfV`E{S*#SI70DP(mL=H6f;%f40;gE97?^8M+3gARMRpl zaSvDB)MSu5o37;g3^LQGKE&y^~w4Tx}-q@?`ghjdT>cNCc5HX{bCN|>psS-{T6VbWQ@kEfS;KCfxnZM zGpTxx{~GZ}(IyNTl)rLbuPzfGIj5?lsn7JE#1IZI=#HQHe%9~~KmYkiufuI2n>(X# zxWMm>-hz9>H{*S%`pAxFa+j%Zbn@&40YAcbzzYK|4>6Y=@MR=R_=45`5w3eL@H?ZA z#Z@Q$5p)^R6ZpyDIp{o`1CZxIV7U!4{tFQc*p1r(z8Fwa?7`n|`dGY&zmei5ZMOKc zwry1JIbQdynG2?ksc+c!*r4X%wo69uc89O&_Sn9i%g0>3`tacb>)9h7Cw9%rVz*l} z8}E}+$Ll)e!fzc=jF47L9v8__L4i{=zMH6WMvhNvz1eA08y)06c?{m^+E zIAw{yYw;IYgugoH_mfMz{Aj}5%idb?$%wTdw;Xp}`&=`pK5FpwBj(mO^zP@B*7XUl ohV!}4CTDtGXK}ByyspA|xbB8+p($tm@|labMQ-{`H1~G@2M3KPPyhe` delta 8788 zcma)B3wRXe)jr?M?CfoJvom{3xa1x(gb?o3a4AF-Q4zU`Mrb7!@JEq>4GjpwCgKGI zTGA;kh*t1cZ>={`~fukhk%g3`g}?qWA0q2q}bnf zTxuc@do;|>6@aM6^jNw*okg$dt@fF^-N0?pxCp5l7XLI^CP#~U!)J`;a=%Z@E3^^cfP+2xX#~COm(00SBhEgr~Y2) zs}Lq&{|{qogrIr4GaK^iaYVwN1t~KYJ=lx9RYcLg9!e-gej<}nKY)M6t~yu4cUdv= zsOX*Su?)#;r*zD!-gpfR70qn1F}=NP4G_?sYe6SZ2`%WY-R|BI$p4s7YP@k|{;BVT3#%DF9AgNYOsiOjeY4%TzP zS(FF7t0Jjq_3PX{!NUHFIh>vfD($s0b!Q24-qZkarq{Wi8!rW9tL`R@@*-YQ(Xbh= zHpuj4icGy?q{U9D(L6KHtv3quyY|)TEff{&#l!-LYS~ckS|fkpGVq{HxEseLpXe2_3sFsL&Qdgr1{`qM$R1|b>1@GV-2so<&$x})%k>F}o*OKh@v{PnjPlOXOr<^v();1P{ z?yO-ehd27?!)|@4Ev;&1g;n8K*PaM`ZiRcejt3vFffk`LZL(cy$U8a(=?Kw0TLI zA^WFzs17g0%=%QFwNh>cIzMwC%Bv5$5V0FE)jxOhB11y!pl4PGPE~hGq&EEvcK#(G z^@)b1xgJtLw>RK{(;7#ypLF{+Xgx?z{j1$0sMr;l+KS$KkH(EK8a_>)F%F+GQO(q< zyHl3R6CL~CxgBO4TU|ShU308=NUPVEw0{N3zSHe#)`(5+W#;$OcX3>w=}X=wS7iPv zh0m_qzhi9J);Vmz3{-cKR5Iz@jaET6=VxSty!JgDN%Li%p3`j$5Ro@pShg+5_=m`! z@pI!=_riO*WvJJcScwT79(<;lWKk;LgSy@8j<;$o?hr1?9D1!)c+P#G1K0__#bsObW|+YnO$ro#8Xffq|{mj@@B@(QFc}F-JqVxFlcya=CVKc@fDtu$(Vd$}RP2Gml`jiX>J_+Q zp25f^k=iGlMG*giL{*xz2{gV0tVq2Bi+m?qUD^J2;rs~}sz@n1&2#o;WP{~DvmEp~ z`|-qUg5j$!C9iV;nw}Y4suXV797o!@2@Qs!J)sa99r?sHzjGt~GhkgqVk*Ep;tzp4Kem%B)fL5KEVVRK${J^5AQ zHMehmH?hjSDF3pKm8H>Wjh7WZO5^KrUWykxEi2}Chy_wS$PQhk_y&tzrFe+NZY*Zk z<`RyPNHo3)gYy;u?>%6$G@f{9# zq{C#t%f#P0h@x20uuh%I0CTgQa-U2T_f^tFMRuot*^uni?`m$gGZUOgpLE{qP|(w& zPCcM}_8!?Ef^?2{SWefN-Tsf6XH&lOQAeXhQEs%4 zI}DhlWT%12sEd$gninC@5;MguNac)W$b6Uf!LgEb{?XAQwLWL0Y{f|X@ko!s$N5A$ zV#!A80Gqz+d`>IHYj}?Errqg)wm(JN%wBQ+SBA+lygWNIym&e@Jinb8o`lW}Cktj8 z55B#=kxo0Sz&ph8{_kz1*5^cgHM8K7ucggwZ;Q1)@1@51^4;5dy{=z|N$B*9d z(W%YXZ0c0#XWZx=XXcTK*g75dJ`>VurjK#7M30~415*A-;z{ZAg0}%}*GTLMK0xbz zfAH%R@qG=P6&s8DBIV`yXCuB&k9fzW@wkb8CBo#-n-L7tGJQtyQYtqI?>BGfeU0u< zgumu@9gFb>-@;&mu8ph-TC_B>FxZ90MOH_<&~Sv;LBHujnk`<7l~Se05<1PHu|^@y3o+9#!A#ujjb%xqeOJMHVWd(?Q7n=_=3kJe?L|+&bM6=b@%cV?5SK*b=4mhHi;M z8U&`0{$;!t3)449tCT(nS(uW`Z0omSIm zU{bpv%LsZ_TnzbR|774yFNc^DuLtIPIrP-fG|1d`Li78?OmEo%GlEuorUR#k8GoxW z?$l-i>%A3M<8g`Rcm~r;w7`=vRXZ2g=j`r^LpdZHcG99 zI7*nFkXkGK*cgO8_@>luCRf^Qyx0@9&F8QdgvMso{P>H|=2c~k zr2NHW(W07+X6lDMaT?htqdn#yA(FHn?Gs>e=K9%%m zTf0^(wHEq9q`!pg7^&_i9#a=;&Kh}4UFn-lL*EuYLHX z4K2n#TA%Tx8*%>P)*dL^Q6l)IryFh0YSWefq&+yo2W5=SnpZET^;zwg+6YlXa|W|5 zlUga=BehJq%jgSS(L}BJgUmsqjFh3QWs)hQpwyP**4C+v3Z&NVS&`$JE~A>P>se&z zWi&X)SWY9dw#gLLc{&Bn#>M{sLp{!(yYleOgtp37c7U0iEyj$zE1hGmG9nR$5(b;A zfC_zI;~(#Dl+CJiW|$XrSCsMFp)<+l^11TMh$d)(#7y^U4BsRK{V>l@eN2I0J9)7b z00Yz$7@>X=YbDl6JYV7jiS-g2fN`2F<@pk?1L|0a9HCXpn}J>E2ry17C1Yd|-z1bu z9H-o%8)3#ZyKT%~t+u zoPvA|3C&ji9bkD+kmXl`EMKg%JY7FUC8EX>V!jfWse57`QLp5gC%`|CW4r)Kq%q&( zqF_*5Cr4i(Zc`$nKwOXgT_9Rxak$Qm3(=xn8yh5QMbAVnFdi5odMdA?5 z^1SCD^w_|KB1Ti;KM+;fNGp}?dc9bwJRVyF|E{r{L^oNj24$SM4Kh5_qK$@``^2zp zg9qauigRR$HX5rn(PUbdxSGboS_!;2b~%{OgAt`fctld+RGMgmQlxi>d@Ne7oC9kw zrB3w2?AD2wl_uJ(lxh8x38Kt9OsN;|MbB2+6i#uQ^0l!*N!N)>;o3%nk{-5YauTZzW^Gs&B`=6f;OeZ+@f43M#i5|=8MmR+m)4+De}7k6kPl} zxC?wS?xNXBo##2FjedcNYoj{qHYB zRcdvQIIg@EwbbLvwnS2$EIXb|{|**H4k(4HP%n)2P))U4qDI}IEc1*}S1J^}NbRZI z8M^{l7?`EbS1j)wwM6A9E0IH5Nx##VtF4e%s{PdT-oRRQ1C*bGdcc3XTBizZp_Sqr z6rYpWjt)49^VMhQ8Fe!}_o@@r4^(VIb!zMYWcHt+^2V!I`{*aAO?J~Jmve*KhFfH| z+Q)oXov+5D9|DhPpQg$NPO?@NI$eVnZdR^c= zZJYWcru(=U>b*)kUmaqluhsUdt${}EE7|OTEYw%xxVl)|C7Hb$UgE(F%G?{&V@3;7 zxls<_`w2luz^?!^G5!vITfd$`|Fu$**xG4vO*0HZ-`)+KJ!M1IiwZa-HW-z*&hn>NG`SY4{cRyo6HM ziFa{PTX^v-#cRfR`j1vj%W1l|B#W!?)>uP98lczUm3Ek(uE9M%6-pV+0QREAzyT76 zN*pEm3#l3WB*{#bcqOd|a}7NWY@|N}mr%kxQg&09Mec06lpC_hOtX|*GMFZ&mXk|! zy_+PpIg8Bil=7}DGV_jZs_ zJuEj%>`lw)etMD)(MOaNtHj-6jPkWI5UclYHJ~N6YHgTykv36NaC@qF#qg64ZwK#+ z0$kFM<}vOJFxCaT1J6_*Jki{4I9x$@4dri&E;CS)6_(}-Hr#$E$swqn!(pu#g zeFZT&E`Q$BR^q>ujaUbb30$Q@q z&Ye8?t$>H{&F|X*`M=FOCv!-98U-M{Ja>G)&~D1{yDVckrVYo7Pv*lJY%+4%`8bHbQDUlkm3SS$S8bix_Zt7!7iw39woX3p zd2eLbZ^|G2%b2m}J!S0Jc5?d3-EQ^8A9;OV&1zofbGwbtSHfX;@c0VR*PS*#rB-<( z?t$?o?mx%R+qC06V8X)>-`4S$Och%no>HwO z)*KqJ8_D7oj<9QpK5W9@W$q`Jl@3-!V$=vKJLiV7QCrRB%g*LOjT$no?ut>)jG5DB z%xs!D$C)>3ZbRd=aWfan=csXYlic3*{j4Pm;hX)eW4XAsBq45bZ>g_xx71H-?Q3ie UU;eM4a{u?XnzKF?t$n@!1v{-T761SM diff --git a/dll/CnasLocalIDAL.dll b/dll/CnasLocalIDAL.dll index 737ece1cbc9896be5731e32e96da910340f15fcc..d8d1c89875099cdc0c8b03c0d7320eda0ae13d55 100644 GIT binary patch delta 200 zcmZqBXwaC@!Lq||&#Z|(GK`BRt_)`kn9Rsn&$wc8Bam#_%*fQwD9gYg%p%9Yz`zKE z3xTv2l*a+$ZC=Z~olU^!L|piX1YOsr*`k*&3H7^fF5!w{dCP@(u{K_SMq3Xp3f7^xS5ad7cYUp`&{ diff --git a/dll/CnasSynchronousCommon.dll b/dll/CnasSynchronousCommon.dll index c28c0ede3b594bd0e9d173e47d9806a5bd167396..0ead6156cf3e0a85cc748e3b52b3b3eaac2ba216 100644 GIT binary patch delta 7141 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 K{3WZ-^8F_t`$nw* delta 7239 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 D@QNE~ delta 34724 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 O*d91l9l)n~*Z&8-IM06o diff --git a/dll/CnasSynchronusDAL.dll b/dll/CnasSynchronusDAL.dll index c07f938444f8e7d518beeb9230b7bd105563ac5f..8daa8d10c8dce707e30ddbe6897b0798a2253870 100644 GIT binary patch delta 34763 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 delta 34738 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ì>jR~T&c))ToZ!+ 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 diff --git a/dll/CnasSynchronusIDAL.dll b/dll/CnasSynchronusIDAL.dll index 20f20bbba2bd7397dc1fe2bf2b6f25b113e87f39..373d6760f3261935423a8432ab6106304e1285bb 100644 GIT binary patch delta 356 zcmZoLXfT-2!7|fWylY~Q3?tXXmEnxrCNnbDGYU*@WUOa;rMH=h=^0}^0|PUoIRgU& zBM>eG((f3MdACt`!YC@wqR7>u$mu|NOkgu7KzYnyUOqCN-KTHSryeT>Prl6#d~X}T{tlItlwn*TXNJgNHn^lZ+UShF<@#I+orb74hKsq4c2Z*gOQBe#SN|S#IXiioX bd^_2JQDQTn&@W~t9{bILV(%Fz8n6QZoCrg> delta 384 zcmZoLXfT-2!J=?@;+ly)GK@+SSB5j5pUlWu&!{oEk+GhMS${JV(=*0;0S0D9a|Q+m zMj%|sAi(gB0hxCjg(r-n@+^v69g3U|l*a@%a{`pd4Cdt{^DG#Gkhu(rC_Duyj|Hre z18O0dw|PFxL{5S8jn(Vc2RQoAUSXK`k}K@bW(U4EjJ(q47WDwV#J~i^`I9XLw9TGN zNlra(ztpE!=!SSWldKsdP{!FR#xdSGKP5FLCABOyC%?csFR?hrFSQ&@JNr2XPi_=2 z75c6RG716&^?|g)L`5-R@J)Uopvm@Ml|g|)V6vd#v(0=$znGa+>^BRFy=R3#RV$Hb(agv;6fd3XLF$joch<~3?d zzShUoE#6bLFq*|zRS#!pIb#W}e5U~1+^(hYkt~6w@N!nh0y)znTGg)t2;kmb*~Snp zq&1%uJS^%hZO&u>J=viJd@ey^7(fW{y5KC~PE)P~(shQc6mErbB`{s1F61xvKH8g= zErDq#qf@OM2@=D_p~Bgs90Dk8Re}VG!x#htcUWk@?aGxvx>GGqvEMG`N+7r2YRTev zES-WJnv92s_7m{~DlUO^r-c>>_mFZWknYvcZ-jeHxe~~u%B{{abWbW*0{@-Br)A!L z0vJ851PT1nGs+==(X&dBz#l!Q90c5Hix4~frZfrs={n^Qz~}`fNZ^lNR1N`*{;mWG z{LxFwLBRKzJJc&p0)P6latL7Y6(vaEk6u*{0gPT#f&~8Pb>$%7IbkmGq;4ur0yE9O z2f&~8PE9D^I3nFHV+a1W{2V4R( z&D*yfFWh#@l|Z`7+R|TlN99T&-J5Mcv*5K3|mxYXG=8gyT=F5!|j&D;p2zfMI-A zx-Z@fC2$QG20gL9_mOz@Mb%F@r6(g-Lb?5cI;dW zTc8)Qlbr>tfxg5xBlE(JG8jm-flLGPh}r1EA7C`GTw;4+46!SeJO~qs-KJ%JhEIuI zaEa36P(f^IykMuGir9J(><-%3w*vBQb@OpN7$N0XyQ@4og$96Nmd&rSbOHs-e9pd z7(hq7X_Ry<()5CPP1(lr=o$z^t zM$rrTab|EJpP976b{m(;f&Eg`Jw|l$kD9d{)k2t-U?vyxTPa1>4AhEXx72zX`KiIo zx(vmMFecFquH_|ZN!I?TO@?x*4K+5TtqQR2$Fmo~{$w+FjOS)l(wnY=j-5 zHWX(AUHgc=hq#e_fU}u;KodQ&y6AN20w?OCGesAj>AL95(nY5`P#2{=jIVNb26Erv zb!}Ma97qEeIv*-@{^#JqM(^AcA0Qjm0D0Wo^7Jp?Y0HH7<^fZarY1 z`xO2M?42g&M8a_iw-EoAe*b^;$Ebh8dlo%pLwM>~Ckx_3$Ig#hLT&4#Mf3DjG3%qm z^zsK|yI2m8TN)#j65jd4!*QoP0#CJzIXqd+xP)e$uWiDk#>I4cO_4iC28g^D=W8x6 z8W&>;_Y6Y)X_6afDX$zC!*=uPaoboNAO6upw%o`m9`DohrcIt;)NHxIY_1MkMe;8l z`mEme&zbE9U%oQd)-2Z}3+oouh|d9T1O@n0ieKJJ`JkQ7nB0=YMdcMQeG5uX%%1V_ z>irDece;)4JEdr5dM4kvvrBjrX4R`Le#e8@DtkNphOX~QHd1$8XI1GzM(FOQ04*`y L2;2J*dFy`x{jh$3 delta 3030 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 + + + + + + + + \ No newline at end of file diff --git a/dll/Data/SyncCnasDataBase.mes b/dll/Data/SyncCnasDataBase.mes index f98f77b..768848e 100644 --- a/dll/Data/SyncCnasDataBase.mes +++ b/dll/Data/SyncCnasDataBase.mes @@ -1 +1 @@ -/4OjQUpsGecll0xqHycz/L+lPK0LSkds3kpbfxPz8zCPd+s16KzzZc3RYrVagEFqWUlC2NWJgBLtc+tMLc2HJkq++Ewf/5QYIWw0dwMY90kkel2nmqRBK0dWfVWDOZOpdcAY+4YOYSFG98a3Wg3WLDyR5VozZDPfA41720qsQqCR1q7YoyEApjVWEQyk+r9gLfaCY8Z1EtUxembAlb3j7elM+qBGcYnXd5Pb8M4TpopE/5fZCldOXIhfqAk5bYu6iMgHtcRH42D9X1cWE/19FUCq04Rt4BZKODKJAiSIU3YFyq7VBU+Ii3NHnw592fpfu09SHAs65vjpijd31AKUJzpTkvhBIBo3sJhknfamWRI= \ No newline at end of file +/4OjQUpsGecll0xqHycz/L+lPK0LSkds3kpbfxPz8zCPd+s16KzzZc3RYrVagEFqWUlC2NWJgBLtc+tMLc2HJkq++Ewf/5QYIWw0dwMY90kkel2nmqRBK0dWfVWDOZOpdcAY+4YOYSFG98a3Wg3WLDyR5VozZDPfA41720qsQqCR1q7YoyEApjVWEQyk+r9gLfaCY8Z1EtUxembAlb3j7elM+qBGcYnXd5Pb8M4TpopE/5fZCldOXBUA1tAxxYVJqzryJNSh3Kpf0WYUTuEdcVmUMbVqiuouEmA1b9WM2NsTrFUskKDUxDMTVHeN52KUorNh742X/2omUoRR0zd/oeHT7UCP2boUqkaUm2SIEhL5ycvrnDCREw== \ No newline at end of file diff --git a/dll/Data/SyncPlatDataBase.mes b/dll/Data/SyncPlatDataBase.mes index f64ae67..0de400f 100644 --- a/dll/Data/SyncPlatDataBase.mes +++ b/dll/Data/SyncPlatDataBase.mes @@ -1 +1 @@ -/4OjQUpsGecll0xqHycz/L+lPK0LSkds3kpbfxPz8zCPd+s16KzzZc3RYrVagEFqWUlC2NWJgBLtc+tMLc2HJkq++Ewf/5QYIWw0dwMY90kkel2nmqRBK0dWfVWDOZOpdcAY+4YOYSFG98a3Wg3WLDyR5VozZDPfA41720qsQqCR1q7YoyEApjVWEQyk+r9gLfaCY8Z1EtUxembAlb3j7elM+qBGcYnXd5Pb8M4TpopE/5fZCldOXIzUoHW/wcqpiG3docnnCSsnNwonHPryUY00lQgo/ytfhc4ATmWyfe3XFi5eKUPysKgSA6SVxVNPKtHiMsDbUPWowwduuXkpX/OLQH4aBGWMnYIRob6ZzWMGg+f97YPw6g== \ No newline at end of file +/4OjQUpsGecll0xqHycz/L+lPK0LSkds3kpbfxPz8zCPd+s16KzzZc3RYrVagEFqWUlC2NWJgBLtc+tMLc2HJkq++Ewf/5QYIWw0dwMY90kkel2nmqRBK0dWfVWDOZOpdcAY+4YOYSFG98a3Wg3WLDyR5VozZDPfA41720qsQqCR1q7YoyEApjVWEQyk+r9gLfaCY8Z1EtUxembAlb3j7elM+qBGcYnXd5Pb8M4TpopE/5fZCldOXIzUoHW/wcqpiG3docnnCSsnNwonHPryUY00lQgo/ytfhc4ATmWyfe1VCgsYJmU6XV2yyzq/1V3mLDF5P2jJg0apzLPhT20WMFLaphFekHypqtumqjdUdFPCaQWCv7lSavbV+hBxXhsK \ No newline at end of file diff --git a/dll/SyncLocalDAL.dll b/dll/SyncLocalDAL.dll index 3a631a463a695174986313c0c73712bbd1253d6e..09ca04f2f2acc086a700db1e209ab85bb5b7abd4 100644 GIT binary patch delta 1702 zcmb7_e@vT27{{M`uYLQ2m%{a>z-$rvmaPQ}!oaO`8-mN0$tGJS$uhu+5oM#el7dlO zmzIDAmi@wW%NjG?6bGjIV#JD9GV~inDeC~Z;Mz*jRFTHQ> z^S$Tpo_pWtP1AEEJx5NDTXug^cXRT%j~tkMXCHBLLW0)uaexT-OJTmB1W6AcA*nS@ z6QH*ps1jJAdjmjdF979}v5nb1(ye^*E8n8}$Va?Gy&OGG-2 z$O;je1C-^&UlbunPzwJcs=}18#vCcrXZGcQ=S9>A3PcKUpOuwKF)@Im=Ca&Ga{~;7 zwj)&sky@82iYoz)_S?pFG$QX3bniGKT&goaB zAvqvjZcq%#3CdbQBQRzCnC9T;Zp?j3XJ{_;;Abb!OOXpa=&Q)PLS5j;=LK*Uu3Eq5 zPxvZQ-%%AB#A`xtt^5=9z);wrz4qT}A^55d+M+DdVwg4QTRXMf2b*h*xd2ftK6ull zbxwwqe88CdnR=1(YXwchdn8~fg-D%2)ug)2QU=Kfbu2#PxI#4;*J+;Eq^L!M_H3}^ z5>3_6N60r)7xD=?Da@bGnvOG42t{r~I9?kG65YrgBAdlRjRm1wDOqR2KKf8icqQ zU>oF}T9EW*N40AY=O6xS>g>MjQ#;RhZfsk4$Z;dv|1_okN}I>M&7ID;(-$R|%bk8* zA5Xi}_|whoD+le8r}uL5GqEF9H?(4(!M}?c{(fJeWUR;??Or$i=!d5--mC~e9vA0t zk9KW6{N!M5J$J?`a@S9wWwu?sIp!rzyen48Uy4oe*J7cptACM7-Hll`us|kjZT|uj CK}b&k delta 1715 zcmah~ZA@EL7=F(^{kXKHaC&KBwg@d?VJ!?~<4b15W^*dCITFpFndrccwR#yJ5*)E5 z5YlBt*BmsGY9a}mXrezXiJ8fCGiJXQg_vbCE=Ch1OGezH(;th9@42^(j6imh^YlFL zdESrn)f-{zY=iLnf0SKTm2oA%5e#34jLfm4f^b@slY&Mq=BJo&v4y zLzKV>(K>+OK>*56MC#KAq?KIq7vHUT$XC2Wd9bK)T&St6z7AkfM-dbQGpK!HU}7eI zMmZg;UtL}O*=Zgs2Ox@>nS(Mjt8J)&Yapo+;TRQqx#64yz-09mWP^U8&H|Gf7jqUI zjNDaP8@hzjsw*pm(gu{-^eRrG&h;NrvRQV}$1EKgJIh)V42wWx2+&Y~an?OW{d(;= zEJv|3d;eoQp|5-|nk)Uto?2r~=nc%yZ{<0ad%^~bL>m6Pvygw_H0`r&n!6k~&7v>| z>wj4U928mgat;#=yG6h@2Xh3g+5JL}ZV36OsC0{vF@-6OGbq@gSTFEyG$oJa^}o5c ze#Ob0!H4f#%ZB9zHdY@KD;KA+p74C_Jv#z{qAjxMI~EYNTh)Gy(KP)p-ZK}oZg$a3 z+C5_ybpn;>B5N+aP4&8uys3}k3IKC$#}qBC;xz!|VPC+$gx!f7bt=tM=(Ei;VNLZub-OREF~<8HH`0 zW=M672`bvRSd8V z@%=uWPY?Tkd^~rK)$9tGAKm-;ALPalpIR@ZyLu?i4w~~FdmQl@NBl#{&edbC^u#e) z$_I$lJUb?0h)aD0`vQI<7WnM(lDh99Z*sAs`<^f`okwYZk#EYa&okOjHaXo{lf_(a@pCpEPu#fA%>enT$P0 zf<9r5q8!tvDV5=eHpwXEIYphBYO@sOT?s`Q60v(fDgBSZCG04^Q{W9B<4>-l7##m! z?=aA=Rd411^3`1SQ3U_{5a1q7KES=0h!FmpOekMnj=*yXB@Jf=^34d-UXDAYC}=_S z&qDZ!D5NMOm!9*+OA*%JA=^c5Wjt${P-N3cPz}yP6yrv1r#v5m8~e8k1Q`j=xxhz8 z!j*95e3U=-Z3cNyr{~uA{ zIoem_AMH(5C86B*VO6;g18>>6XW_E@fA$XZQ@^R+ zbL+R~e0lq^E53ca^@RCD?ds>VQ@^h~HL&`~YtCJ=bh+yFDT=LX<89bn7YEfbc5Bh9 zjAl1bJ#6YJcMj32KHg1EV%()nN_L^4EJ0%d!BHz}t~imUWPbof^6OIO&MMMu5$US_ zAfgS|FThC|rhBJR++Wo^WHvk-KgC&^?q$f6U8pN311?Z-)QKVF_h#a!qG=UlVitTw z&0R3V?QAP0wEVixHb9w8>Hkqn7geiO?ybU7S`YI^gbA-Mwu^ zw|JBaD9|L_aog$*-Y_z5DK1wph~hS0P(*4!aBD+@HNwpU7^5Y4_v*TVPE&%AFbNBIc4P6nd{8Hjq6k9 z(0^jgtxH=M%s!X?U311NkyH83>ya}v^w5oplH5=@dt+9&9DV%-v(G&F#Ch+!VfS!tEJQ1gP4sAEoy_-@j-M%c(4?(@A+$Om15`zS2YpTleY_It z9qI%{UDwT5%LsWD{G?281deTr9NvQI*%ne>%9M_0N*P0)=%|euBgvi(>usZOAc$ug zj$Sx$!+NgKTZD45j%;FLF+y3R%kW0wfwP}*Fx>5=1M*qb{V9jpoIEDTV-^K%KBJWW zP0)tM^+!N6^sdvPFk~Apflk3C*l80zV&vD`W+A;UWuT8UJ<0XSzK!d$I`_N5owSa7 zKQXlS{kmf2*KJ^OZOj@@!ZFra>l}TZ7`MvPZI;xCUsOax^G{4W%DJp^sX-lFM*IT2XPF_L@^>y55*+PGt`8)lCtDS zG`FM{I=zFrz$*L#M19igT9PPvNb8dINz+Q!1CG}@f#I(=RQ#%1#ruP1L@ke-lwFuq zHlg_@&ke91!#29Kz1=CWm89n&oHDv}5q5MBlhH_bwTThfCPrWzkCHBxyATd_9vtd5 zIMiKQ^-%nxPgDgxL^@Vy0!mNa?o!kXyfu`=V|vX}wd!G%b+PJ!ZyO$(LVc;S9vABy z#weHc4o5B&_pkhB%qF@L`n1HAs;cQeh;De8 zFrw{eVt$~Xot~YSgFj-X8g60MU5=60@MGsiET$R9nkhG31vTu<()WWNs$uzS5lUO# zEAFST<)4V4;odshqncKJU6gt~QV~v<-k`dce-bkJC*vopJ324F`9;ee-R06IN>{+i zWWsum3=>DQj-HoEJ?j}zR#&N}Q$m=XicEJGS>TBNsYr0sVwHCfI`XBLUXuPrC#(NJ zB*Lna{%NRi=cPoY1CSC1sL!mQC`A^_ztUYjeb75HD2 zekO};R7{s)6`Aa*>Usc6yBRmDyV=CjTZrh%x%qV&rV@HjFMEyw&^i3h8fkY7Z6s+G zUhQu{xnavOga^e->nPu7A`kDelzFsUFDIiMKzuJ6P+ANKqjQ`@ITa<922IP~2zX3d z%k^Ikf2me9X&ih$sO;z!EJtND=~ZpqJj*{F8Qn$ccyZG|1CbyO&2OxxN(QuHnN8hF zG%TCyrQ{aXt=r+)M%gkn|20%bWh4Y$6UrH&D;85K>mq3ra(HLr$2L;t8n6*&{NI)? z7#(F+FmDwIRLWxfftM;r;Sb|Qc`g1f#@__~Zo=Pt@JD6o?=$#Y`c3?xn)|L~)b69H zL-pnnbydt?jrp&R`QIG#Ula3R8}pCD?`|2DP_L^CVLG+V0t!l)3`E;zQw04BBln{+ zRkX$S&ccsCP_JYlmZGphq9m3x%{v>3MUU7_a0j|7zf(iOwB;H*u7GE^#2d;AB>4P<2eKr$dD{fV;-vt`X&`TiyEruB5|AQPMil<3gG=7 zI4p1k3Ehd!)8j#H2JCM^+FX0tM*(|pc4CRH=#>ixs~1pg@B)Cl-i7S{Ej2~@UxdF$ z`d@;-SNb(oxwudIP5AqzKLh^^>F|Q zdLFX8XupSY+iq0H{@AAIh0JJX0xONKjsZ=5S5ZWJ3#oU+yjTKIokTx5qVuD()Jcrr ze$NM>QKH!-^0bMdR!9~Loy7^rCc1H3an=L`8C@k0hP$rrf~Q}2XwQH-qF{+c-{|g^ zlA-!Tt+RYRWsS8`UfCyrC=t#Q;{!iVHZR> z(^F}+Y+(WLmm+#SDccoA);M2`#?w(@506Hy zDf(_BukM&hBhugz>0ySFJdsdVNf@ek38E?oG=ueJ78sjPtI1$ zE3juIa%}2U^&#p4iQWu#>?Cwm$}D%88pv=1rbgMc#{P^*@SdB9f>dBAEZ`btl_bY9 z2w`iwLHh>7C{7H5T4k3VtxJ<|k^)ZiBC{s2;8Q0Ozl12#FfImT<6DgDF_cn;m+W! zy08=Y2uF=AbOo0qTu4R*vcdHfQNu77ytA%EcW^&tNJS{P!3Qa#Jpz#r9-#<3is%U* z=OR%=Z}1dF)GFx)hZzipWN23_iWF>Iw!Xv?agbSS!ITr*g5K-&)g~9Q4;YGn| z2oFa27YAn&fQ~3)H1H8o8<+b9S5XE#%CIDO8%1BC=7$K|u-;JyBn*4DytrD~dQcn9C)ih*iNT zMMTV?usT>>A8|-L zA{emZ{c~in2;qp26pjj3Q#i_hbZ`>F(a^5G8Jtb7x3jypZ>Gh1MHLDULeyGx)-CTN}z9U01Gup~mGP)JR!h^RZSLwrY@m z*U&@_Wj&voGN-iRDah$2DiS)cgfci=(MY}}oL9E-7QpFJ_I8s%pqBj>EB*=5ihr0^ zeibkJuLoMR=>In@`dY#B-++ir(p@yi)Z8R*Oql0=v0ILfX(=Cov7T#)5wv z9_Tv!o2ATyWOtB)%^?574)AjN1BprP$~JW*CddCU0us9 z3;!t2#$Oit-A)soh;h-+be}u9KcschZu?5vx&&ukj?GUu}32d-z5yU{z3kBYklVEfYW-SRsA7-~Fc$D4V;3w?% z1%F_-KS(4g-;Cg3b_asZ><$Jy*@aZ|72&ai=Y=N~blX&OgvSkDBRu)w?ZVR&JR&^3!HB2J@K&b@C+tHyqYaaV|ZO5iU_zT%x+aclWRqT@O?U1eYLVD*s zjEa=$PSR9l&b8ajPtulG26`rGODhAtlVBQQps%*`*=_d60Tk>>aPBZ)Ar(*CPCKkZ zb|-N_Y;6mfyRCfwZmWkpy}fr^eTDYBt$zBM(Q~&oP_XZ|1`AzxTZLpHgF#7+x;?!+DF5zcuZ-v`WMxdhjF}V%%I2wt`ZFIR)tUBe-4Qz2|rp(lhAwyMw<#)PffPFqt+7E%gIAW-&+ zoQ~e(3hW$RLUHuIzA#FHadb%?M;{2w4TheOI5=9dBUq3^Ll_XHBd;V6vbNVEJ0eJu zK1h}Xg0HKVFr-Bb1j!f-h=cNG8NZ4cty!cMyu^5A*fd)WF$UY;HJ- zo=GghaymGP-pMOtp}xueVxj)n#BmZc>Ouo`IR|6&5=VB)n%-eIg7)OqF{qerFPR54cUZN)=Ga>Z2hay$8usj>I`|l8%#v{)$wpAcmu+%);41jK-o$Dh9y?pqW|1ZNI|NG&uL_3<(r&y!Un1J7IKs)_;jMiyX z!Z?$3>RVDrCmMoGr~jLJ63TO^uQ0v8p|*GJXC6hOIyb|;u9vf7<$Jeu?unhF5$6*j|)#K__pw* zgYHh2gEPT0;b{+ECp;a&eZtcjd_{Pi;P=AQ6;vE9l?^ruPcFDzc)Ejk3y&N8OnCCa z+%C@C6C5u*y}?bwgBA!+fACx3nGy77Df4#Xmt^~tQXU3GLA`7te)j@( zY;%JZC^5c>qG@3`2xFyPj}59z)potzsNQNQ#`rMhYEO*MgPSWPbNHu@QDl2!AXLpy zg42t|1Ekk>tUzeD(WCDG(}J?TH?iC3Yu9&RUyo3KJAyOXjU6P7>^7?H*amwG@I!0S zDBxl(ionI!BD9It9^k?ML}najd0(UDEbku+XQ~6En3uQwIKje-B=j1z-4l9^{)KI9 z!!?WOGln%%FCQ&j|1FqM=~6Gw@pr&Sh6Ov}Ld$QM{!=D4-l}&aA}Ui;?Op0#7ZmRI zZ$iW#S^j4D*|tW-(l)$Yp*0TukychtO|bo3)g zgFjZ!+v*s2n!fBYM2JG-*Ly39YB;3z{s|3V_BKk+bNKW>5ed0ko?Er0dPp6=PV^ zYK;0agjIsy8^$7(D|FU6SLHl?+`+U>i+TjxG^#}Op4lVv?KXSWF#;q6XtUO-rGr&> zobX?|1RHi$ix3>1jvS9F{}vEYfsaCxWHH=e0M8VtwJrnA?)&L&ngi{Yw7RHJp%XBIJ?I=|4 zS2aWTW&?h?QzrR1p0dlVdhGMQ3knqbyniN#dGKj~kIC+^m4H3rs(ePZ+VtOnQkl}6 zq<;rIX{+34$g}vQQ5X^?0Wjs*g~Z{c|4ulS?@ZarvXKX0fFLT?=7`B;6r@+WVjgl5-&Gp!eSxi?L@wGsniS=0a73o%WTznROPD@ zsm0zKYV|Gl-dGFltL|-oOWmBgS>0!ZlZd7@Pe@*Oi~Ts0ybx{1JaZUjTPvHI_ZsjJ zOy?-G;r$e7q|ENoney}jq4Z7Yv6r2zMFz}zGfzM_DB8s^e zS?bbwFAi$n&v+yXy3-y3+{`H?)e3Cl+Vb8H0ZquzSOpl}YW0`}_HjhU7e3W-> z)%!W(VR__cJP_6>&onCSS~=z2%GqHukTEJQ1S#<6+bF7()GC@@)(UAmVV>Ncuug8* zlP7YEo@We0TNA<$@XG@Nt_xP2&v|bZV6C3WYk2SCxZ*B>E$saSvjUg3D;+X$4FbYo z_ihoxo0nR5Yb=9#{|ZoY%DCzbXwON0N-1x~HV9siSS^gAnZYN8pqcLnb`}S zLXF)+r=VeH-=pKFH?boPNbu2eo)TWH=TdEwh*otcF%Vx5oJ4Iw5baq$i1qE6JAs!N zx*oi?e;0nz-re{e9PR5;W?uWkrjJ&a{QN2FqD|F%5PJnl5T$IFGDIoXrs})GNH>!x z42i?}ik{4G$|Pn2HvXydj9X9kY|4lZ(778hBCx)1M_*ulw@kSYQ;mF0>cO&3T`@On zu>3v+11KRA*NH)zkb=k(HNH$bSSNQoCeh7|=w{aFX4dFt*60>nITJ&q5|?dywOk|W z7MO%Lgr&j17evTfrCE;U?BaSr!}t-c z<&7@$5eyzx`K6NhcZK>1{yW;#chcp4@*kisI9J7Bfa#PF0lYcl_ze6$!HXz{8f++B zp0*-Om(tbNrNS0+HnJwE4q6)^e3C#f$2~Jq?DB_zv)I7L*^Z%k_lh3N;F#@rAT2hA z1dI0GlW;3kZ_2w50Mgpn@391qft~5XbQsd&H&JSMs!JRDEs{JuHeh%U)8xh;{~Jgu z_ZVeZVV^ycFbe04!j#4~=@M)keGOyFm&PwwCD;KZp`#LN$2=~w*wsr~Q6&(gJ!n}iHIQ^7p|2%Xec zRXGDL_^xv~^mw}W0J2v4SrmZn&b%L2l)XB5QT0K@Z>Jn0+xrnL52)S?OhrNE8z?Sm zdLMub%N;&4Q@zijNkv*v#JQQGoOq(5y$eCA`xMl@fa+c{z3v(HbyE(JjqC1>)BS_M z0!ZS2{ZU<1=W)k{bsEZBP$#x9P89X==xkr&1qx5L6^d5==82OI`A?u8mP-z zz_iL)&EnuV#aTIaG+zh6DcdST7`h4M*wbA!W{l`Y|0t|?jBL zsX6}yA{=m~H3l-jf?bvz+j4@D+|Ei3+$gw&Xs^OFUC3`hlS~nv2?&Y0R2E&ne?;TC z!Le8ba(onA&g4bsQgR8l6x`Dk5Cw?ZwLNu&Yg$=(l-NsCKQ^uJfLML7t8c82lB4=4 za5)!v8TF-n$s;z)F=~Avo!yb-EP6j zCfuxnw)Rq6UyHV8O|d9ttz0&l%i6iDU=Z1~>phI7WiwqF?}OxN&t*H7z6vtK z)P@H5v0>)4JJyYx^XrN0Vj&37Dq7zw!!cpD-0O5;E$HBRA+m|X0f z4!vIp2(IJSEp#p|bS^D)E_V8kOKaS({ewLo)DxhJj#pP95#!t;TJ z4>0yt3T7S0DGxf1=3j~Z?#sdnXkbZGAnp<5JvgwzGLz^ZJ-|s-OkQ8)_;J$f+jT54 ziTD!Zq#D;4BKHVP)FqgtV>sr)@A(V%>o2$0MiaSg*VJ0{ZbN15Fo74B=hk8{%~CPY zbXSlU)aLmltoRevzhJ6lZ6flNg;D-t5NMCnRa|`xT8h>lLxhKW9NZ0X=^urEhaci& zhiMAi5QOoEBi|2^2E|7dPqGPEq=E$zwzRbN+hYFiME40pQz$zOp{arZC)F9Xsazz! zo={%Z494?-5h+Zj!RXQbO=uA`CHihN4v=IZ!XFEz+#eeq3R?wuAEAN5oATN&UEcd( z)tdiNWEieXJCcfgjHBhAo$v(-r?>g9;5#`BbC|~};q2`NXRJe<>_pf8J#a6L!^QQN zH@bBFrGY9!Har;c(O+cegJYl@H}`C)ejIJH;e}jTnqjEcO;vykt^o}16V!Gl7u__m z%*D@zdJDq!)V~MUcF0;04MJR@lWD_Lt)qs(_fXV<)lkYPwp>nhuSm;Dy8&LaV}e@$ z7ZB6n@rNkyJxIkSq(P*maq%+XT{9gXj44~dI}7+N-8X*3xfwsbuu57x=i2p)plG1! zlCZq{33{ochW>k-R>!ja%fNp;tgi-;YxsNVaou!y?`w)6(U;~0PG|SkUss0k+I6AE zNJ&IZkLV0tTE>cVSGGq#A8?nqf}5mq;6cF)ojY$uL$O1S6U#`Lo{HqKB9oTzZts&A z-rj>P>zo9?gY?t9EuzksFzoap;MOU77Mh@LtRUr;9lE$!wnTbF{K&9y^P?%me+uZL9b*E5<#+#?((u3ysi+%;gfN&L0PLT{W*S+nRrt}TQg|uj>aKi@)%27 z%SZ`cM_drB4{gZQPb>gQPMcRro>sIeTLvT{a>hHUL$BQ*%-UVH_i3W-XYi9v)WgQ4 zbrRDsbP|jr9qO0QaO(DaI63iBz%gsq140itb=~SfVbIXAbnh7pXkC+eJb`kp`HJY< z*nojVqu;n$4w!d09sGbt;~(RtHC)q3c>i5vRNe#4A<_D>9&iq6yLK#x4n5XpLO>n?&%`h;X9nWq9hc5C=*i+y@nYU5 z7&6(xo{P3&t(^|{Jc65mnCx#x`IBRZ%s4`D7wSg$XqN<@w!|h*wThZ=pbuH1ev0Ca1nNtj?_RG$olu{g2iVXQmGU@_G<`5nLkjn*S;QsslxZyf*Y1!8 zGl1*rX1Kl%b;@?q*lwBcoR^vJ!gxMg8A82>px&IFW1SXua-d5Nr+`AM)usCv6OHNo z^;YDCj3{;gygv)eVCUy%&Db6-u9OtRsRpsj=rX-3@W^7xD0ejzufc-2Z`ZaPU?|dy ztG9dGPHeZ5>_7r1mv3~^`LM~l6s*mlz3AAqm0!Px*f!*4x==(08hp^Y0dDCG$~K0! zF&`vbA|FDR!7P_UVBmC*PqEeSPR8A`Xr3`dHo99D4jP;J)r%Bmfq1={^9-9s zwx=srKZ^mot$t{J2yHH&NHqlj$Gdu$p3*R2k%Y)M!6%G@&TEW#Iv#-q?=|N)Mm*Ip z4L(eD4ToSG5M&tLhhuR%Y@vw0r_jy6d%#+G6`xJG+o9jzCO zEc$Iv;F*uaI%AP;kk4IIsVnc=?>4xm0o-9`Mx zRhJ&7PEQ7&mSr9kx#6k=`ugI~N;)vN$2o zSw+?6T@4iQJ_6)5!OOr=9b14=2zx|m zxxLdxb(lk%@&mwt?8){DcS3}bHV|F~dCEPgegq!>9-KhKzkvMr!Y>9j&Wj(UB79y9 zRs{m#x(yx@DKEk8qu^IjnmV=!wIk}}o-jMCdG1C7RjiYg=HG(=9xRFGivN04Q(hv> zZpiB5%V^K|Vq_Ijn*V9S$^QzX<}M|tn-LmmGMl>^i%ymp=`>m@S%U+e*~!Dh*9d`)|!9i2w$8jFi?xWFuVN)^* zIZ|jay|03}IFc__tmG~{Pjm@_m4VQhBW(nap*yAa$`o!A?^GnAkY4-^shDX3A5-do z6+SdN|48_TvJUhCzjbPq(RMJAo*;tE72A$4gBIfO0-}+3C~1$x9rn06g;)l_f25|t zdzQu^@neiwQAb1_Z3lbfb@cSc>sYg|I&|;*1RCdvhVrjqDA0pAbaOyZM%%$&hV2Rb z&yQg9&=$DkvkBacLsoOWD2ZBTTPy<_K$2bm5Z})&?ShKs; zyeBNv%<;M4I0D|(fKl#^Z;#Su%`zvo$0+Jsp}FXXz3p^-*>ZqVg{BcwJncROSuJR4mnk*K7ro+nb+Imf_nART^gOokhPA4FIA0Y({?jsBUl3j0#Mx4I&${1F$K1(?%H-0}Q6$9^P;uYxp@Q4uGU`y}} zffYj_IU{Oh+DW@&81Ht{F;Ezbg2(+@IdN6n0D`>EVU1&XjnB`Au6wbfEY7JzFF>Ty z*wB$IQ(#sEYsY8_!tou9n!3H4cvLhT4P&{++|rdB;6m=@_46cPCkC!qI9NK<+#Qz# zB{E^Pg*28+>*YMB>5XaWSoJ1d5xp68W0&2Yl=ei@O1{xTY!|YLI_ZLjXn#)G=!ZOB z={=7u^+sjCq8O5NP5__a#}sW4(EBw-lUxBExpExUS82m8 zrsUzEkGFHDKb=wy^G?-Zt^V9gupMeM&wTm{a*@Y2p!i?>H0^CP)>&YWkE7iWLoq!J z-k_Be+Krn_I`vE3%uX}BNz|N*S=R!dGz@}C$yy-UsBV^0LugV3y8X>{KJ`DX^R+P| zYtlUXX(C}=0{5)W<|>6lL;tBt@-?CV5+%7U^zTrTZwvkREB1#&|2LHxzZ8Cw zahC!z_I#NC(Te8XfXd3Qh~cFyc9|e=PuatGXK!yG-L5y}dy=r@Dk~P@M)r)Oz;G>K zl7xLQnkW}-gpQ9w353p!LfY6Vu!YzPp#kqMR62tHlo2Ymte(TO2Pc~>VkIqhAin$tLz9&FVh+uu7SC15pbqML$Al`r z&dMyP5^&znn2u4sn`|T!dqVq&L{1$3k`lkpKEfjV2#f3^EV7TVVnz`T6ena36k$}w zVP%h=}(ezys6& z9}f3-5nN5#ENS--ARJ%aOB?<-Kzgg}TG|*9aHQc7u+KY(I+ErVt##N#Nt-Tl70kOA zwhp%I?S|ueKLDn<7}>qIEj`t4aO56&`w9kl;to`g(lIZ*1C>^0jR-&Ka?gTjd->C}4P!M!C{}YR#EBQiM#xBb9>z6PAoQLrKTm}TD$fCvs+M4lT#?Nfp-rN5Jd)h6 zz#l-+3z1Me6zq`;m*R~zB?O!t9gy|*j%Gt3)o+3}JC=YCfWIdqrSRso#cE(I1PK@C zJwgjygXG{2{b)K_{Z>>uN#*GZkg;PHK{G4u6hTVTQ287Snd0J%vI^_ZJdm_vvRGJ> z4{J^WYzU#I%rR5WY%kwp^3T4Tpmj7aTbwMcqBC6SbZQdh%akz6Fb zfs!Z=NpG%CA|2@tibE2~%CSji1DxB+oYtW;}Gv!z`YPW z?d@|gP1y)m+<{}8RO#IxNz#kiD!qJcz#3=F$*)lJaX$?UCEZW6!mVH#d!2`fUrTqS~?hgFV?+8RhzuAg*e7^68%1H8#fOAN-X0%a4slzNv9))a-vjaWs1mL7{PDur29&nrGM#oK6BiZxXQ4egwB}=uY!@uxuc$8f^wt zZx51?~ zur|r7YnW^>PfySltSg1L8eKy-tm;+NSg{8?SW#CqOHuGzFHzasjap-qFBMc~hP$fb zpJ;<|JcXI)33mbdfPx-~xJ{?v+iO86s}`k#Z$%M8ueA{LMRwRH-^gS18v3nOt$BY0 zF>qGbu6jF>6y8oMzP?2P@AouOXl&?wCO8c?y#R1+LnVm%gQ&)eDga)8D~uN#VGIhS zc?#ad&D##jkYx1?Xp1QrbzFQ3J}r_fC9OPDkb>qN^+q`F$d8-iJR9=k1gmjQQEmI2 zQ@ClK^KL~hdMyXu+oe~Jyg5yJS+@(3p4K$7U-|*sp!pA=faZS?zg!maKSaC_oNV}k zq3r`P@=uZfS^Q{Y|3-~?4&D@ARmZckihU^-8x?n69|9o5{{eQ0{*MqnY>K;kKb&&R zt;mN*%%WRLa;zSq6a(=zj|Te(j6nXUdOt>SwJREdcyk;kZ{Nw|`^3_DgvFDJrkjCp0zaXptU)ToXwKk!J-)-duJTYlwiWD3#b48W4 zTKPC!1sg+?@vgFPeYDly3b8;<@!d8Pk2dGWGms@PVkjfDS+Fnn9t6g!=#ZaL+jHaS zB7Le0myPkL#Lp=zKTgfTdjT_uv?nRqa~16!=nEAq^~O8GyLoMFI(0g=36$h!VZJ5} zamQ$?gRzJ%AJOBK#B1nZPmiMA4tS(vIT+zHm@dFZCtc|nd3+FuwoRoz5jK6GL|6K8 zWo<8dR@%$`80b@W;@K+M0VuCwSWFlXZ(B2oYNW9lDLnOU_|J>RQ%JEg^imr}3=M5@!&AMC3h{+M5Phkkj?-;GQH(4FeudUCWki(W zzd+69Za4h@Mmr3?1ZbqD_Qw+y^F=Pa#K6Qi{9hwCHfJ*Q?+6VWOn1&ryiRwkjw)jRE@S=b56wUh$wUfpi4;UPLG05LiEUu!@ z3RgVUyNfE;c&dnA8?IGCy#iJ*s??Z^6laNG9tTDoui-;2)&Bt8ZFoq)dmoV`M6&uY z4XZH3qXUDCaE88%|Aja=L-LXul3cWmAuEx64tNP<%ML~$1;@^X>UkWDmcBgZ5i3W< z+NDE87h()GG>CIj9^%inSYla%o|_r78a)Ym`OxNs{9c5kR>sZP7kQ*off4A;XNPhF z$jjh0yt=RX?O0OsF8Mm}Owxr|jl*z$jeBDlMr>$1H6Brj>*@yA&Z_j|-ueuCF_tiA34 z*o%J?BKBDRf5FM61s_(Gdz6`v@h%eE$oa~q>*;7wjFYR#gMZDb|9fis^#Fxs>N!vb z)HrfZeU$$PBMUljUhSGn5*QNt6<#2+>E+u1drQ5y!s^h>C9^{ z@H>n7CB6kT0ntG3)DqSCSa#>)J70$XM_>S}8iZ3gjX<}+`lozUJMN6SpxiQCBd~U* zt*sgrrWcNj zy)2XIWiY)gNv{Oxg=-)VO!Vc2w zl$mOu!m5N`WisT7$?&YlRBpdZw2x%$*?<<~>)yvu79YiWA6Ph^xpu36MwhbaLhm_> zx$TP4g&XLc5Q`^_z&B~EEdX2$l#m~2gPZc3xEw~Bg3aN$v0p3q2*Z%epT=2pI>|TTyxri#DZSE3mIFrY1qVQ5w)FtmmL6wY z=mXKVLzRv92z~|D&2nIk+fH81`wnFSBZTxv@_G(KdzvZ)Z)&MZFKAEy zL{_2S?jRWXaVpzXzfC%(L6kWkeWr;Gj)AwKQOd`Wzs=9m^YjCaNQXBAdBKGoah?A! zKr=F))1=`X+r`bS%V*Aw=VPW7W(N25yHHc{-!yzv4xZ5-?b5^02z9UVG+JKG5iWO- zh}0zh9TYzcuM6M`x{a@KdQYN=fWttj$2dy!+`1fjgf6A64<0ECbM!=U5un~Es+O%U zii@)KM^UwGGom<*A%WHaqGA{gQZPy^)F%$rCC;o*q(M?EIjcUAhD}jJUqRQz|77(( z0TBXhx9U?N5wJ9N`P+P)M-!>>UvD;@6W|A**-Hm z{r)h56?`L5rn8<=<6lugdI@*-t`j%Zr(r507~dM1=Al%K`W^*&Z6e+a@yyX?`1277 zj$4G2QcdsY7){t*o8B+rfq8Ijg`o3a>WJRg@9`Q z2>BP_CsP_s3WWk{##8Htj}3#(#&dWVG(9yWAA0-YR4&O11y-<`kk)u@a_R9GQTKpS zJe=R^Wj=oy>V93V?nP9eth*kWR2?$&V#wfbb`6jPF(03&DXNWQRpW07vkNXDBESq~I#xTclbYGhy|bmI*gF2n30DG?fhy*TCpYXa`i3*jVFqaSsT%tbV zf?A1#Fp#ECQ~-5_$M#5Zu?D1&Ec?EN>3E$EzM~GBZgbbgc(Kp?~EQ6*JEz={Us{K;UJ= zYTjZc{euB_IR0iRDt;#_UOt9Ppi|wBF4h?AonqU-*h*Jy^UxZ6baUmy;Xdym<@ztv zXP78{q4Ll(;r>XxeRd(y23z)f{@ybvaq^V5CWe5f2T_t#TW?3Rg-(DrBed5z0`*@+ zb(NELT-#jLE{#g323XKy8jhP#k>az1?0nm$^Je(VH&rLMk58IbRm z(|W!Nb@-@5z_t0gLCGR{wnZ$mDc_vJ4eV=ye)x`US}89T_F)7Y{O9Gtu7Q#3ep<=T z7I6AJk3?WBuk*<#)zE)tua_D`40EJD)z+FVVdj4_bs(gNG6e?umgkBkp zr7Ry2`yFbOFP!n)1mOi6eun_2ws<4PL`9zh2zu8V>%XF0s+{;`W%L-ZX%+r!|15MN zp>B9}L@zRkCk9o<5em6Jcs}0I5q>NUc!6%4hA)C~L?w~X*V1dmloQ5ZSQ+f%mRfRK zn56q_C<%MEHs0UW*GF6sDog%Urhg3x!;inx+qj$DojW3xclTB=J%wJ}pg;b~>=rHT`3ejykXa*p*wcn>Y5ln21sd85^euDwjMY z_VcuNoj@aMbf7VL(!6j?QZF!7&T#ESdA11X{`E9yx-q6HP50k|pjZ~y$^4psJdlX8 zXg(G*xpGEXu+Y*6GyUuEL&!BB1GF5`7$DcjI!8oh|B3J$#m|e`RgbmEQAy}I9u$-v zx2}P!+?$DaiqLG#Ynq!)OXICf`tmSWrul$j7j?W7!Bbg6got40i=PN5I7tkk-Z?}) zo`+&`YEVwo)S=I68^v$_)!d0Hz5)i?*2;XOq0F}$Ymk|-vo(r;Ewjk0@%!q~NvPca zRT|sCJ+?Oa^<3*9ufA2G)q5(~8l}W6C%zO#nm&XTTB&NEkTCgM3U%L)C>H5C0S_N6 zG>WI{6|(R3UPl3v(Jmkl#)qmrfIhpF=OH*N9->r>>V%D5i+?J*qI;CWyaTokes_zw zUm(Bn4*frvRAJsiJYb3sjn5(f$YAMkxGThEbOXQ_;g1wXh<){F$qc_kZYIT>XLCQyb0tLyN)`I(yJ;#|cTJRK=#a()x?#zgy{Kapaisiuz&hOL`xi+w}1yP$0|Z7_=0$eM8sGDI(_loFioL;klf-Hh&y zazNs5kptR2#$Jn+!l^sQiE3gAz~5GG2L5k~@TU`1>}?0az!AORviF|jf+6Q^X#v5SqxE#f){W*hdLSjZC z(4_)5ESdaIHlU9)X|ZhL{TGZIThZGTWgGVqH@0AN<~U5T1}u9NAk{J2r_IgkEH0~K zSiy9%+91~`pI@adD2~inqT}r+{8;k!ar%KD%ey{KKc>ND5JkPtT@U}c&bQu*7*s_|6rKgwh4?M1D&w%6H@jmrbj2I)A}4lyR5cu`6<<+zVcK>a zuv7~v{;o>Ap>m%vs*F7>p0C^>z*hJ(5mbSHBCSuS%4m|wICd??_IYz529Q>g3CRJMTO{&Vad{q4~7|t6j*@o zq_G_n9#|{lA5A1$EV6P8*Z}JR4i`gJQ3Iod7iNXx*ir}lQ^0PDYT(9W`@`5-wOFi} z!7zfNPRvbRISnw!Fs6e`5sz;T0$ z;Ll?SV#2d^Wo1O%qkb5O%6$mS#d!BJSEe^QNkSHvsd3FjogPEfX!oC0e1 zVJ{T4Rg{aZDsMyC6oM9Y9HgTij5dJ16ET$sp)g4_QJ93bMJn!oZn#|NMrbdNQzw#% zqP;OQMsd|F#?y)4ho2N8H5ndVm)Fb;*i)J~t>mvmft_6h;tz-XH4)>lc=Sau+Ob=} z0lkaR*mB~TT_Bl=h7fuRnkZyA!EW6}WH;$k&Qx$ml!!PkoeFT7Ei_W*c|Am{kGPly z`!LNr9>`c$^`o%6Wj?LW5UYahSBxM?4#f0#<5FfjGV|A@z?Naw3S!cMB<+<|d~sxO zQFw=LqwVTPk!Z~%RNfb|Qd+nrFav{C80P}qPH@4;HY zZvcg7Z#v|Ed|U`^g0N4Uf#5@Eif_q_-0A$xc%D zwgR|4l^C8u_5j z*vW#0Av=M%s(~-wiilDoxF3#`TSNR`1`hnjQE{cL2ovJ<7`%{~G=3wCs8)vquJ@vv zzX85@Hz{1(jv|2g*8p?wqDGitXYyKTD%eS>ak>fO(pRX2jzMLG6SjF|?}^(2+o%b= z?(L7d@K?7-6VEpH7=gA}xmdMs;VYB=8!#4z<&(`njrLZwmXR*y3Wkx?0taQ*!Wfbl zlAhDch+0q=wUMuvl5OlEs@cP9N!l9HFb)i}XCpr;;avj!Dg}sL812EeC@#1Ny~-&+ zw}dLp9=tgz>RJ5pu$`v^mlJ@Ci$PNk$C#prv{K0iS#&xEyCmQUzO4wktT9^6*Yd^z zP*tEEX~7lcN@{mlRB00s`PdpC_)x&`7iO_^t}qInBm0Ypk&)6;_>i`+3oho}$P5u4 z=_?JAuTvT6Bv)x0u}W#qQsn3&b6Ko^DWxN=C|6P4LUh~?Z5s|tnh4@`!Xxj@a2!V> zq&kM(j_$Jd!8QVWG~ARzfti~Gc%l9^#SS{c_@Rw_~MR_8J? ztotaqiO-Qr-N{OqjQ8+RoFSr(U_S;nvukDpFj84m<_j%*c9vMz1lS2E7Ona!GrtOY|x(mezx0IPlv z`WCx#P#E{xTHO3FZd)y`+c9J;93W#0F=4h46Yhdl-E17E%oa!XcnS1y5CN}?_HcJW zohe?ro#V`baJAc+Q(GR5;5O7EbOq>^118Z*p>znlMYXn4TqWH#cW-wG_`Nf?l(O!l zxGLmXTb#&UM(1)K_MSE@v_$|LIOvYjA|#3$!H43t!Pa4%4)Tm(vN4(t_S|gJ&0^p@ zhs0iQE~YQ5H27S~dn1U@J2GEP;NKvJY~!#q?8;A>JHtZ2dlRy5GlG-%3mclnD?`Ex z@Trg~!(Ds~kc^R^qo zPmuuvPm`|6b{GM!U)DyJ1G|HmJI7Y3W`%?p;KXf3Vn5ibByH3Lp(PXd$l!HW zrj8Jx#}Ol%86{Gi76twNuZ#f27{YUKl*esSKfE{n)M;*4NN zMaja3(ivg;^FhDUFHZV_;_2X5p!;GJjMkAOW0O5Q!wU@mM1^NVqqM}+io`pO4}C{ESDEpisQP9LQFzU3_C z&w{htS=0=!hop!ICrlpHDC1aLDXN^b?jyH*q!L!Q3I*k8U+gS)@%H@UX7DeH!=Fav zg@1hMrICmrSJyy}I-@m$j5Y)Op*Y}^Cl8#CI7JcS+F6e~Q=9l<2t?5fzp=OPUaUNi(>IqEtlmrf|2^;O_72-vsXd)8Rs<>IdVDzU)kv zW^`gI7z7&>jX}wy^UGiA7}RSzZV}03s5EqbE=(PR`Y4tF-GI)okEvtOUd0li7}5Rr z5w{$JUMZFUt%1&OpLv&q4P*zML9~^a&Kx6nFSRRsK-U3{D*^b#puZitRHv6&LM~fS z^IZj@X6|(gBp60=;ZkQQ%Y{p8a^X~JI4lZ_gXFL{a@pHgR90Vx0RT?^GyLW7_hxjwC)fRE``ufRN7tDX>?dN3a7`w&m`Mz*|AeR#HUZlloes#^<6i~b{j2F`Bjh*I(Ik{F0OzZ* z*N?L1Z1zrK;)+eW>%SRA%5$bgUxR3O*QJy(W#T*=jmo7(E==HNg=5jOFvVopF5E~% zZ)%nIH!4Q3auv==aIY}98J@I|P9B3-S|ef$PhWJ@^HyjdRm>H)OpuxaCMp_CRM-zH z@)=9~ysM&1ioxNp(giFqMw**$q|t_cqJ*bYrgFl&eu~eBvSX=%eS~{kP;3Iya&{hOyLpNsV@n zcM%$IB5(%heUdmO44&EjM99C0!eom0sYXQPR^mRwhV*(btByxx9qbBQ=o5e&{fk$K z)08={3L6gFJiI1?$Io!SPj6&Q*IOa`ZBcfd_0o0*`aYd(Rg`O^c8eVaHD=kNA#gSo zNe$8?AvO#+wWGZ2;4}Ml;Sv1|Lr;^wM~Jaf!RdwTU5`8`>t>(uOy%N_V`Ey~fMh(2 z9gg=QW!0wej)~6S>MJ+F>9h4X*?o)?>EanBiOCFu5lKzu%=fT&9fs~pzdc@73Vwh!KJj=Y%x-8W9 z;TRx&x%U=OASkZ^_ul~@9~XvS1Ws|HzZ3CnGfC^q?I=&>V)z9|ptRHwUE+NXqPf)+?4MhtK-r!su;)sPSUp zzYX5GsbybmQHjJGJ<|V2_AwK}LQ)3aNC8_0Zl*v=2Hr=3vWXEuK89lp<-d*0~4dE|0guhZBHu`pXU$2kyz8VXAPs9QQ z{~HbAZ-!y-Yvl93NWbFk2Ovvx@T+jq3Mcqykf?e)`WZ7~1t{Xb9e#svy9NJ&wA%Cj z^w12w!BK(}qz`YIgez=KO5K4{-Uo29oZpG_-!>cr70P!d{auL8@_q4nd|w>zy}lDs zV1AZ=Cp_Ygh3Ve~KW;?SZihc*@C7x)zngM_=WEJsXcHKa!!x5*n~rFT9k=ORN`l}Z zwDWb%y}4-;x9K6Ysd^9L48xIk!5udJdkLoo{B-3Ln2T>A{2l|e7WhraWBazT4^*YpD$N$&(eUKll@8o{<-t zJ8M8(-P~;r22UPAU<%3L+rne>lm0SaAr)M9B&Vl?xks@l6T&F82Wv!BM{uO@bQU^f zLI0zS^ay^%e5)V9BwHKGdksa|L1Xwl6mKzxgEt_p`4|pvZJqQ`>!dHWPWl&0TGDLD z1;3-D@uo=~N4K2nizun-7!FRMBwAp_-LyDAtWr|*x^}h(cwcLPk5E$cc721Anoir` zrPfK6V_KG4+dAn&N^0J&TPdkIH6Cr9^o!O>9mlo=INCbtl-5br)=9UtPI{nq(ibSH z`PleD>r&6RE@d9q3?Ok2X-H(U)g<;Be09*9i-lZn)VonsZq(^RGkEzvNgH+Xkr}lL zxezxD{ZGTm>PsKR(jyjJn!HG_fX4W+5hkERQq*BL;wIP)^{< zPrS47=nm?7S(tc1JeQ27$&TpHgoR}^O?1Z!ra<6Y+l9Qfg@i7F9E~9rr8~pY_sv9w zVvp%9AnK4pX<9Mj2PpN~u#|*GtQOIqYlx;XjOcPhG!0Tjf4(7_W)~3uV}!WCl*TP` zFRII3C#$8{aANsi{=#=sQ^Ld&9}9xQKP`+Xp#B$6P~C(^?P++nD2)R^7=6f`8f@HP zxVaY@moFiRX?pz#F`}rQEaSx`_BXCst3SZH24xQP-!=yN2-dG|$cgk1LB&P<0(jOS zKFzTrK81K37%L|=#J3@S6XMT|#Z$3wLBsYg#QTVcmv!j~Di0&@G(6j5`6>Rri2pe} zHzM9fnEv(S&Gs{)tKUiMYwq}PeXTwUD&zahjner)e3hMpDqAr0RjrdYv`*RwyKK(* zSPZ|I0AAU2mA#shu4$TdW9y{%woZDib<)=l-XTXff*KJENTq%aB;& zjHSQFjB+!U{}^UVxYRj@SiE$()IEhf0(#%t2s+F&2)dIGbHg96gH|RXqO-|9^b+rb=wgiWf;j-SvRP7SS zvo-EM4GgbaY+@g-*;=B4?Rss$AZRbDyQo$j%vOlL*%*DZar#1f5%jf}>fnfwIhd4T zEszXeh)V{4139SmAvj4bUbyTY|DQl@##DUlI!-epqI@QY$RXPE0klWnV1`W%wI`Pk zK?kc(#I^S|_+j&HB=ykc=3Kmyu!j?kOqU8yy3cl^L z3__W3<*tn+#};e-Z^T+p=2do7CW(+-?fEHPTxOx_m%sF977XIAUerkujiQ0FdQKb5 z0B-|VI1nTv?huy&aLJqBcz-q)k8H{Ygl~oW0$lu$*7_epg;++|XjtpXpcc)DYXv8mihGRZ?2J^yEW{zp++ixuYwO_OL@5sbf#(-~Z6 z;nRiI8>p9Ra{;>XV3*F3v!T) zwsNAJ6f7D8{oeVs+#A6H1k(wtwz+)=7ps#-%7(uD z3PiUaE)u#N8$>iq`iV;Ts)GL&jQJfzEg4TFauU7Fs9CKiq0V*}CDZno^P1^T}3`O5(QC1E~x)zEdDW6M;ug~CFVoVxKAECiz2<9Y3 z-EvB>!ew`Hn&|mLrZD7x6+@3R4&PHX$g@^I|w{C(3~ zXzbB*U9HC6@n~m@p|X!o-%O>ZaVYB901w$-ELcX`;?BvG&Pw90YOj3)$S zx}2y~Z&I)c8AH`2-G-SSCm^2rCZ_ZD_>*AuZ)l7HxA340!$Ht)yK>!deO(zF$lDSvD0qz|?R_&6n9-IVt| z+dApRrT}U3c<+B%2dNmpq$k7oZj`su{2o{zj?wCqfYL-yb^vm;X!+@_ldfo;^bc3O z?L+;u52evQ6mR=D6S=o_yFN}y4fD3O6rI%#pZl#*TSMvvELm~ALhaBXT(V5;Ge}$W zb@W*)ZOu=x9}zNIOk4BUvuo(zb95I}i~7zHJY zD=7MKM@65zPl>qu3!~5dx!}HQ_?No_p@O=kDj8 z>wgtL2iUv$=t1n=JOVWNV|uYpO0G=cx8A{1_QD~O5~an7?8R_1AzZS{oy!@UeL6?lbr0G0N6}-KMWwQ5#Vn+Edj@rPCPf$bW$^Az zrnh62h9q>VFKjl|H+P&0>kIoIjT&l6E@x8R4R&WUGjf?eTwBA&$*e%nGfd+4_V=N& z&G50%wcQz7F+G@Pp+?;qk?M5&N>1hKv*c<`OU=4&BQLibyE%Bt7$y~CZg0E##9obT zwR~rvtUx2XH!XWra$pl|;+(9JJ8t5H`!~Nn;Qo!M`lwn>0pq~2f7G*@nV7Gvga0CY zqx&NL@ShKOH3Em%_yKD99(=C>Ji0G(3i_nQ2-}XaC5q>nfJ2qoxG4fBo_@fu2mDUJ zqj(;N2M2)0J0tOtmGKk69|inFEpP~fF$`SXCyM6#9>A9X{{0A?YxcijUkLk8Zsj^u zX{Y(w8xhuF)cauPps#ig`eEmw|04t9{}IiN{itXB|4;{GKWBhXpUT93W+^Ze(3qt} z7S`Ci=BO|OBN2Y1<3VEvvEppB*l>0d3+D;JSaUSObbO1bO*Brbf&(F(T19au-NaL0 zisu%`AA{znQD2Xz6T!qPDCx+{7aJ#IR5_U3w4i~t9Ea&EUL zeRN1PdD9#9;`VK4HI2v6E7b=>_A=r8hJ8oKqc($~s3XLtsUxWB#>Ce-Z*lpfL!*q7 zv59ZAfY}K(5vQ?5Wg~u2DjShlK~^&4#;2))h$ct8y(ULIqRF8YsOm=iDXDJ6+pBKG zr}2ty38inVx)E=$x)E=$x)I-x>P9lZu_qY_g#S%cz|oKBF-*s!o0h>Jl7}Oj;Gha& zokxB>9$oeNf68>C;|Xc7cM*>K$9_h~{Ub0ou7WI6=OQ|8763mD@LCI;XB)7{YTVoc z9{~J1z+c}2rw+&)0e^c7{6Vz*F8qC<1%5tYm*ek|7WhWMUV*>IB5nq*S6gw*w{H}fZhGk+2?d5enID;V>$~#f{=QK#A%?P5p_enc|ZjVS(N}V zh^_A?fQ+VXh8Gz}@NitP+WHm;4(*yLpOwLL>kC>6Wz)ViMX?D$0mQz$5EUSy;Ne|5 zXGnq6!}B9~P{P7-kaEMQS}0N3i$37S@&xk4a}{F9qKGF2 zXGY^twt_gbB5`I#<50+gII|;hW;fzQ7Wa*P1D3VzVi1o9gEHqGHT$qi}6=T*=Nx|NBezTzA0c59dy@o|lQ4Zg3%*ly*jgHVlz6*@`8VXH7jza}UXgE9lt+z$%%s|#It<;GcEPwXRoM<7EUG(!{XFkpnA?~3GzFueL@
+rvRs0^SQdU!mY9?Um-wGVS#CX;vK$jw_iHW7vy9a*ZA(SL>UIXc3%WGpO(CY*u#Pld0?n_EXu&OWV?XWA&Cseb1ZMxxOz0HOjvqkbnOm z|0<-grM?Lh8#Le_(**o`26EJQ$dGs2epMq2|LT#|z|D02-KX`WtiHIx-$Eg5-?p*2Uf(P@%>nUi zPJElwrSIV9pj-8q_FK_f&$Eox8yj@YoT+s1UiBK#fg8Z?#0@Z0pYr|=&XxkxwR?eB zZ8f3uuwm5dWjXA;V;_nWsjv@u3%YLJ$+r&cGH~Zz{_QvhMNu=3l~Xt4UD;#dube~I zTDo3F*Ku@ROV=~u+B1p<=J`PEe;0+HJRUH4S#1&<)-l?WKOA6vHmY_NKro5VF$c!% zy*%m`<_QEEQ|RxT;=>AD%p9m~=O1RSeJM=TjPp-zUzktL;ic%8BG+|s5;-N%I ziT4U6Dc&oTw0N&j65n2b><~NZe8%kte&V$o`9b1WG6z^_VR2}JM~Y?DZYG%h0FDBT zU8oOvJ_|-)dQdbPck$BSdGIv@LEd}#ed zD0@%QNxRbDhoiJSa0o75pdvQjaUr^lZLLT658%X7Dn#qr8&3zGHz1etdt1&Su>uIJ zZmT}Wjm8;|>2#HEcz@xSYBGwpqpw2=fTGSDypZOPMA)Kc$D2xBI@wt`jw@s|f5%Uq z0mZ4+3ID%9C0=eGN%}tpW!unynDr-3p>%_H=snmRNGYRohkZ3-AzW>z%rVX#59u?F zM?v2kBlO_`)zS9kDRb@O%fKTtw;P81g|`<64y~u+p--O1iQ7=j5DSZZSSISrZ=7TV z>@mK z=E_-)`XGtR$}k~YK-_xum{W@rm~#FDH2OaREjuXV9z-}bR)m559|Hsf9`M!;(xVU3 zIvFuetAuuNVg{O@ad(8S8A8`QpDTP?reR|TWy#{n9b5fXO*w_+`iB+$msr{cK@mQkzGknrua!SR&c)nJ) zNZ=Vz)NIHk+F0p0DD+OEz)3ud9M$V1A^w zkluuPRJsGQZ$X)#j4dSTJ+-RMNha=W3yF4Du&yxPj6BV8)@lmYOYGbdyydb9^9%N) zc+hJbVh!Piq2I%QwMMdJU(El#U?q+fbsQg#;?O5CX6~6AP7l04 zAc^h&5x@5mSg`f8&a5z@wUfXIUfz*Z+V({8dJ8bo!Q(I$LM^>DBgBxFMw;KZO+#qs zH0G8l55jy1ZB5hQ+h8;e4X_0^?U$Ps23cC5W?moGISqr_rdiQB4TIXIIWd|hQm0@Z zgPLkm?bB#{ zw{03iJE!?;+cboBPLn;aom>*ynx;{IUNlX!TrwykFN^E#Y*iyoX^yQ8IBm;?JMU#! zHWr{6ZC?pXMKfWA4?@KFmUk6Gf@TZ5K9<8oj)*39{B^?W;PxOjCO-Z zu^Y^jl}v8!q(5Y(@T7tN(PsP*&@STVSMbvztFS133C$5dlUw?>p!VF_-Z?HP{lALf z9}4Oom3^h+$9(u~3<0QiR2-v59s+i zG$D?AU4;SG3zN&p7h-Sihwp6QAB#32)B}SeJRGjq<%c_`VNfJZqc8hHG);YsCA77V zX{7mK+cbo>rfJZYxS%d0t>s}*gtimv! z_nA1I!<3ivM9cpZJY~KF75M)Q|F*9|6fqkH*esv4sD3_&4Nf@R0ih7lP*9 zq&e^X0|EX&@zY&g>8Rlr(ukSkzW}Vx>abXVn1 zPPvYl{XnMJG`S71@ZIzt1GlAJWNTncXBGmuA9XF}&e)Fvt(>8w1hK+qv-&DPJquXP zDsG3TY9L)^?$=3d?*@F>2XftkB@)k_@NSSf&S>Zc)#1mHlFv62>f7+xriTqO!aRpw z>>-&3x*1yZbNQ z0@DX7StiR*6MlIB58scLpqSs&Aq`$|!xE#uG$J`*JoCZE8|ph&7_)Gl485wnNuHJ^ zkmciu70JFZ6f$V51#7^h#VVTvczPO#HQ2)FW2~@tSK-+Nhz*uu8O<~5#VYB|tjwH5 zK_Qw0V`9okq7?9=8D2ZWeeIymW7z33jJJyHMl!$y-6hP6Ql@1`65~OOE^OA~IbC#a z!KUdoC|mVf@*YCe4H>vaY6{^Jw_LSKSD51@9gpsKZ$ieX5c&G&LVmDx6wb-dlnYe#4NrO31xI2)|(n%);36>TVW%0wYK;pVbTG3OY?SeRr30z0H8%%d&fS z2*LrRnLwkA`8l|*Oro1e;W*LqacMlYEdeB@QQO;vxDtlPh>*0N$ngi6X9HmQLjV-; z9&QVIOJeG~);O~<-bNZqp6L%GJ|6|k+jxYsk!cLxf;|6d-+JlNA7xumqP;+X+vKGI zq)OkVn}@v6zeb6cl5Pu1ihWJXhcY-9+~g1AzoQYK=rn#xIV16BF+N^9)iTb8@5&6S zpSuA9vb;G>F-F?N7;TC%w@r+BO)=)TiLrn&&eUBF)}gvcGi+OS^NdE{d8P?4N(LHl z485hvk2%hd|4!)c=wrHQe9h2Jz*ut$jn&Xqa9ba}DL?4`&@A6C0<;&ubFx`QXJ)f{ ziUFg)v7L(`J-Z{1K5Cp2-fsIRTF)3P%#TCeK31A-j*~JpvS+nzWPJDR;d)t^;Yd#; z$B|_CM70jAyKTG&LBuiy?zVBhNAd%5U^)?+Ii}1fMd4WXCc}L|+vGgNB7=8J{pvDhI zu-Fu6#V``%=*F*qF^p{*J1;7GC{$6i$XM8PfFX5Mp~A%{l6d$ zO?1DijsUinrFvlH`?n3?Ry=3QI)FbF+ zbp|YXAy~4JU1flnM0&eGWDT>SSOHI$H_)n7V7OI0&0!w&Rps?&5@33;NQTjq{o{AR zuXnP494E%PWaBaTQ}q#Rq`QFPFvRkvkY=0{vlQO>&Tl$ChG=p8VIVcO;O{E@t-wyX z5gSP_!)!J-(ygDAdG+>5&W-mJlDO*59Hfz~oMA@g2lk(B@vzO%< zqM*EnOSGy7)?W>RW*(LlTP^QGIpaCh9SfAgA-fbAr#Mgi1%F$Frx-mBMKVsvr!F!* zc1}3*Gp9BsoPNuH24)l`D+&KeNguMT4>_AtMiIs|5;RJ@^F(X5Yl~>v4RsAi!9vQlvT6A4c}j`?JS?g{m*$VRDMvQgjz22oFihHvn&n z`7a>>Tp3-5y=hD) zi>RY=H*0qZYqv-kX0NGg89#D*yhvhHCL)DmVm`in;6lAj3pE%NDk7ocw0yiuAa&sw z-$2>kb1-GwqR*yOarj}Uq@3N5kN1N<+fmUlMKltnBb@QyfK;68c<4=WrU5kwoJ8Ok z>qdJkI#_-@blzBEin}ndwOf{Ma87p*AG-M>mpmhV)u*roEgi$B2vvhMbveD6J& z@-^!2Gwti{w?W-4k(z0)yQP3ltGjPR>W+!MWd~DtS8EAJdOH=--=Sr5j9;Q`4;)O{ z!n(ueM5ONeFKSzNziX{KoF6?cbvG_0Ym7T4$d_@ajGktsuTy!$DxC~uHfCU!X}qsq z?gO=O>}c2pZVxp2X>A2KeA^n}v<-|EPqt550RFYCx2O9Lr2B9Y?#inobPN25gAv`D(mh-0 zmQEDU)YQip4uU$*P`joGYpoK$hLVkPd`Ni9nWdBw9r?l4&2jbq_e*WcxX|AIN0#wO zE#p+Ai~?T)_+|BesMCNkp@p2&v2v=coWJWBdm!1oLXb_HaUE>(7f(x0!K;t=Xd_RS zZ@Cvtmuc|rPvqN5<(r2np-c-L*RfJBJRsk8DBnhA?3Z!gQ9!2i7037i=>PX8C)=Cb z(2se-pGp5}rT_8>{Q}1%@4!RqWI%pW$WJGRmz75P{96YzCcHeLJKd3P%45J=PZ3|W1HQ|jBEC-Ly-e_NEw&rHJGRjlWoKc`9Oqs}xi3%(`W}`Ey1OB8 z3zG>Dlqx^FO-p|vFsJN+Wvx?NA15UYSdzpNovSDwS1=cxtbkigf>Ee3eoofM&+1yp z`qg$}O|X>9=R98emN|jGJNN<6ABUQ2y!vAVRF6aa4ZX4TIqsTHrKjA&k1 zP{Ki$rs*IrdYnYI`V%D1#GFJ@UGeyOH`Z_a#{)xogr58@*JGEEuK?uiyIrSx0z&*} z;ip)1?Gp4_ZLyVHoE?eGD~pJn(8wnuGAOg5o_7+Qc79{Zjvaj=R_GiDct&$Fz8^$+ zFo`Q2Z~E()#k29#Q=HRpc_+h#ZS9ORj{S4!>#9i0T%A-nh=f3qOZ4mSkU~0V+8w5SnIp~9( zgFf6jXbFR^MODfnqrQU_2YllbiA|ff0GU1Lr4r5 zCESfzJ_3l6?e=(BDA}s_7(}I51CBny4pUQ{0V+m7tkWP`F&@@*XA%g#2vYz(t#Z(94_uAg0Xbky%CYWCAYEDKOaR;K+ zC9TZu*UIbF2lMa{{OsI_cb7X`-^_z0wOcREulW+jE7(-q1%Bu9yMm~A!8|u|=v{cA z9Onh8Ob``n;1YFE9^lK2xFdXm&mGB+EW&RXRaZ3<{jWXtrA<9?~ zrB^zh(nv0YDR0YK+3oJ1C0lh6c#T&^FDN5cU{)_F<;6XUyGWs!v~w|QOQ5?t`n-)BBHuq4yO+Z*+qz*by8hkAs__&az zG+kV)$e2DBq+g7iGzpn#XvZ~j036cuk`HSUyHhE?u$L zi@Pn5=#Msd=QXXw^rU@oi_T)w_Nsp&m10?m?e)MZlC$!M&3=C!GFkZ*025^>TeQ#s z8{Rzq6FrmsmX&XlwCsh=ajMMZH~Mel(TTnCCWb5wfTB*5D9^GbN83LgNJ_m3CM$7? zlAkc_VuY2C%=P48Lbu=QkNGCeJ}hu!W$X%2*<)ZCl}_ja0)CPk#aD!qU1HVc=sH7G zLhFii0Lh`M+EA%Ff>N=I9jFb_)l77Vid1z&Q`1@Xa^cLvFhGjJ6YNM)pg2TK#j~CA zhFk_W-)y@-j?Dlm$wJpI&+kwYHy$m@2{0WKW}`(p9FUMqTQx_V8vE{Pdo9{vZdr>; z5S;oXW zF?+UQ-GM=yvb~W2{KHWJYcx4?q^J6FU@yeH6#~eQq(i_;0uqCB)USd?qpfuTi+NBn z1(K1}ERADHKfDe2A0mz8)QySl!n^LFyGo_lh26UyXr|!I9cE=vIw~eau&OhLokc{D zu~A;{wnc@uIJ-?$|5A`4inh|$Sk4=yl;CBPRtYtTf~GLIr3C5I?qFb967nfR6+p@- zEBohcDIYbBG;Iv?TO>%&-~;6a|8n#P=xtO$bGYcBbcpoxd2>~QvHWwne&D%$U9U!u z=?gy$#`QKDMOcy6XHjsoI;s~UKT$WT>!?;tkK1F=spHB9dU9L_K@pZqF5OE-Ly&)} z?+Pu~lBIgD<4h5gUsabCZCKfZipg&jN_;U{$TgsO$bo4*7ueBPV{gkU z83jLI14x(z&=CzFY6+kt2nfcZF97#k;2zPJ-l5Z1`7_3H=+{;HFX4BvvQEB3m6yqP zxbkNC&aCW_@2pDdQpTHISuNi=l`G_nSBURcN2;<%9o?0Gsv})VZDpE~p2`Y!^j6MM z$BfD)>gcOnrw+Grw>tVOA5}-D@;!BAD}NP7bqkm<3FTH^?t~i2`S3#VAn`)XK`(&2 z23=8f6u)Epyqpp6CY@fB`vqe`&MsuIrdh)@7d8Ahu^t4yIZo6&pN$6M zUo7}y-X-`_<%%KoFYECz@cQFy&)%hoG8#X|n8bds_Zt%P2mGY^4LP{LJOC~pRd`#8 zYpXf>#1l}c8hx*080T4KXB3Dgv0OZlXP>5VJjTOM5U)J_*;X&=i-k`ofqTp zTKv5Ve{aCweZikSa^WUYBR~eMcnf}Va-38c8OeFSM={mMB2B7uW)nOHwgge$1x!t0 z-)I4h^fm=wm2ZjvdF(MX#W=SW@EoYCMPrOCZSq|a^^KyEnj()r*phnm(Y}@#H>1j$ zaD4VgGc4ZX(U!1tu}#(#`J`6B39W$JTJVo_HzBxZXFazoT4=?sjz(?tcd42YW`>+& zCFIV;Cm{f%9x5=k2f3(bd}S6Il^v=8!;pz7!VmK$FNCPdO)K6#f$C_-<$iS|{d1bqH`<)20ZR+K9`Z^xVDCkO zQ?>%wg{4dtQ&W30-8I8cbLCU#r2;zRcGcuR#5O7v~$(zU()h&4&%Ks^(xAvq$UM`w3!3d?ZEcq_OD2-R; z?7$e#T9t@5zbM?rX=@B8k6tdYk7Kp5kJDsVr~mSh(lpFmwx&~immclvWQFE9ZHlnB zb0=;FnX7ifSGgQGvfi0s75e=1P_be*$A38{6h4#^Q{8rHwroGy$`fwU9>pg{5uVLeFN5&Zb}~W~`gzXe1PbBzdyuXn{C6NSg#VPV z!l)}0-ge0xY1A<9b;RQ?7I*UWvnXVeeZ0!%MMAk@2w)y!?J-O6vacAI`)rJq;p=XU+D zNNATNEI6N=Z5(!rp3gP6Qz`U;+G(1M85cfbB&ILRUW1N89S}HjZ0p?5*^DmnGnDyT zFdlTJtXnWq@9K`>K`vgqPUX@ojzkPa>m+Vt=!^M7mQWu!4ozva7WR)aGM|O-OYnyd z+W7C5KlH)IiXY?0PRP#q?iJq_PaEvFAd;n z-Nowk)VVCIh2MnGOM8-{){?>6m%NJ>5>{JtNr^RPC-B^9u@Gi5J+9BJ{49QU&Ld5- zKVcpHX|DdHt;WQD(`Ui!SSb+`1}wuq2lKT2*CJgZ=AQ>SOWAvf!1Li=hN+iC&`<1M zhWMBX**+F;NU;sQK5kc*GC@4YzZ$jX-_Ae?1BK9A0#7=DdSadQ;%^LpYw))Lf2dpo z>zfD_fhVR)!Q(`SR>Mo35-EUhC;Zh>xO8nwRv1-o^82r1EZVO+A9=lwZ4st$K$vNn zW-RVyA)kI9e!Kzvh-ot+dp~v}X|V8NbUd957P4IEaq!Zo0YkVJC7ZrEa~d|*cEJBR z(h`rUIY{Wyio?%}n38TLYf zVeg4Sd#Bc7xAj26LnEX6$c-dSNGD~?YqE9;Ve!!88P7K6U#@qaus|_ZKh&t79XlHJ z^Ffpw>&`~GSGFtng0S4Cl)IEo$Osb_+~0w6Lm5A87PgOPSAzE7+ATd#6rh zU)3n)(zdo#**E7Z2_FSTC(XB-b@*;u*5i!)S>d$MH;#RvQPvl|$T*RG4DV3SM=Saw z%38e!Q$3XpS4(36X67JrOGxS+wT z7H>OD_3*^l$K;V7r~(0NcP^7Io&z(~>0PDg%4g3x;WQ!VV|tUqIeiZz%Hz+6xIONS zUE3G~V?K`Zna`i0cbVF~Ok9|N%G3z)X3Rv=^5(&5Cz3v< zYpG(wPGrS}bUe?)W&h@y-_ZB)}sI63j=dJXh+2O*YYrBqO#)U^A6DNxQ20UZf zgzp9hDfI_X>d15C!I)(l^NeR~3GMw|Z9Mmj>gIYo37LLG%HLgCg$|EeZmL>H(Z!M*{HF zlwCcUDLCbh*@IzjjJ2!%CT)|zh-uyl{OtqTU%_L)B4!B zWIE0q^8R(G<*|b4#Kr~jII-mYmkSi~K)!6n_bKtELCt6zYO>jEPO`@_5eT4<+0sXw z1RNOy0~BMp@9eQX(G&&OUl?-Uz~ETzjrfFZ{SeTJ-7{A;6C#r>3w!jja*wVGG5f)+ zhxRpij&($kW?0q{Oe15glSi7t;D)j@6bFLdHW;*Tngbl%CyAG0R;rk^a=W$-qgA8r zbQNMY?$zfv?b-k$ncs98WvG+48LzYW-Z%Cue-U1pyT6|jBF#jfluzpfbaSv2j zML>gRapPRz{u*Uo;+Gfd&cJ#|e|_U2n6k=@BfO|f+Iwx()YrW<*!l+6s zr_R5d@)Dk&s(JO=Qpd2>u{4@lEax8;=GN_OyB_^`$#L%Gx1cq5UA^WwUzA*QuBhC6 zj?VIM(!!Mt4Q|@pin|LQ>_)J|@O*T7(cK8Oy)lF`@t?*WlMDB6IetH!0f021h#>#KkuY(x3k5Sfkn=eH7d~ftXk<8IsJ)j6W3>nP ziPzr8Pqy}c{rtOr9>j-DfKjDQhyws75`Z`WU~&P70{|itfH(jkN&$!i071@nB@UFE zYsO*QFuq9{kS(Mt_DWKzD!Q~(cNOb^R8RHw_{DrUUi%>MS@ION{|wAQIsc7l1HUs#*%!fuq%syh1a+SIGUdrEa2H_s zUEtq_;Jp|kBQMIw!iUH(%tlC9Sgb)qs6hhM!dq1Z&xwLmgAY^QhK`_upr4rZccI*6 zw~F?hO2ZEW$^aCT3_@eWz! z*?)-lCi*y!UNMV+Ztu+i;3?622#3;luO<3lL#qGfxn2%&b|Y}N>kYa+_*D%pzVBJw zf%iHaYFdXDPjU~9aKm-`%0sSO;rm}w1@~UdR%yF#rnh*A+m~O)(7GyCG&BiBQa$fM z^&G0jD!2tyPeH2(sW)cuY~A2u$L(FY4dr)x%R`OgyhTct--L3GVj^x;zI7V+_^+g( z6y0K@P(>+JQ47^?2Zi23-hnk+BG=J5%ysiESzd zHmkIP!rww5OWP6hT%c&Q!GNP0e6E`>9n(K&-@q31m;G~su-d25(EI1OJ+=Q($Lz+l zcG82_J_EQLgJ$U4Sg-ZczMZ~d)bcQt?y#gRYjc>V&7rJvv&dZpxmgs*&8!lXCf%9Z ze1;)J!|rf^P+yIE0NZ;|7Caofl-SZq<(3ozmkQ4aQjhrWK*m-;Jyw|`)f>_AW(ISa z(G`&KdVP$xt&h3=^Y#sFCIjZV+1e*qX=)5NF9T< zht)A!`xG2W=qSFE{1`={pnBR=s27qWX*UN(1WXE+!XSaYgYe<# zui>3r^dIj6VAX?s^R~DDkbSum>wD%vA9+g&M&{p*n76Q)wGWUybDSUlK0r+@zcALN zZlM&^J`6C8Q1I(xG~}cxd?WW*FcVoA*l`j&z4%}s$1s-R552hYX8fh`$A5%>27kBU zZvz^|0KWW3_@nTn!!$g2qVRF_4OqV$SY$WB2LL}8aVzm={1}#vU*T`E1^!9ke*|f6 zZGm47_-VlXDZsf;%YR7DyFkWFz@l&G@~r$~z>kIeC^t&yTBWmMrRU{R#S;}`-$s^= zv%Of_qKZucY(KEz$Ce0<5^^+1!3I>2i%AN;_0pyH4{)9zGqB}rd`t3V1(kMKrR}lO zRmgLzR+)VpD{-81802|MQvl^M$n$V>oMX0hiRx^MNeTBKK$nDx`qo8`qlP{Ls+c*b zx)~=iVlX5j=c1RQT{Vt|K7u%yjA6#wW->Ob3%pVRFzKZoL$b9bJ!8VU|)tEM+!1 zHL%RCLSDtj8`lV!mT(^evhg93+*QbO1L;MY&e3#I7#Ij)CJ~Um2&cv^FihLa$h2*J z1xf4m<=+GXW#>uJpq_377f6TdcyRwm77$xu3y9-{tnn;k38-TIpgu;eChjv*aNEGd z0TZt-YB=ino9H354p_hZ2irZDwaThgLQu;Gtb~~VQF2QKTXCPFs5|36=nBTtB~?c) zvh(!e#ww@@w{4tuAi9?|)mdl33=G3ySyj)0^7-`9j`dj`GkN~>(~bpSJ%^{4cB~xh zn4fNWK_~RTh8z9r{~B)eyZ>vrF=vS2=KSCq$a$XQPN%ki(CrhWChbVH9daTApG*;; zld?4&0BsK)Ua(j8bkg%FENz||J?L%g^lX3H`1ARvN{@^^PhWrWAn6FZXz52W5Xrx$ z9xa%ph~5LVdpe8^2Q3|<9t||tV}L2yb*wZSA$lV^7R6*OKw{d^0vo>nb2>izBx)hI zRj!lBITa@5#&^(8I4xU&Wl}(3WE#ddR9j|Y_EFp0#Z1|&xTLV;5^_4BH;a#L031m-ZXhRGFCZscuaYKOuOBBS zPD3+^+!{^D^}8kj?;c0)FefI~BS~Z46BO}u0Gnd*PHYn|Bm6kEHPa2P0B&70rRL-* z$cmd6O<|mC1!27M8YM&S@5zKxB4{Nfc|Q*G#e9;W1~v|4uuc;T|qEM6ut@ zYYukpvtSq&CjGrJ2ikxzsf>OC4+!#tSua<3KbvZ3;O#ZX8C|c={uVQHJ;>p4$B9=M zS3ofa)20-(abmj@gYiHk$Nv#HrV0J~k#jb;RXPa&C+I510=>JmQ9M#@ncr@e>?#%j zw4%y|0awQS`e?9J@1tA$mdKs6oW})8B$J%~8vrcL=e@ zgEt934-!7ltOxd-#{~zc^wEQaM>V)yv`TZK!rRE2+C^kgU}#%-i-i|)wd(ycxBad? zUlKe&7^{5&$+5luMSk!|;g^W*tcgeH^_D}buDk$5PSRfoLuD`urtZiyAp_r&HAS|2 z$5#*;Cz0sOiZDJ3y-#d7q!jGb!ML}SPbGSwgUYK zsuJ)_tb3spX#79qQ#lzD5oo61Oy>@iH?`xNNG0!}<(DnUb(`Mn0qvezz(;3%RBUR@ zDR*lm@GLd9H{!NSN7|!5$EHor2SZZjL-m;G1<0j-94g_`u0n0FD_EU@j=+2)Su*7K zhixK@4tp=?-0}60rm@PW>m-+lcYG^^=a=-TM`+3wyo(@1yr-n9HmH|Wc}C?|jkE}w z_)nx>nD(wi{ullR*E=fK5EgXxV%&J246z zsG`rKhnggG;%f|A4h-)i2JB1OlLSc;3H0v=49&JbD*<*T{bC&Z^DfHOl}q5%YAM_K z$!{Z__YR<$auWI!TpmhsTE7<lm8p&8*3`? zI}tZ0xP_+D3ad0MF8?GYENxeI)=83(Y)CVLzR(C_xk|PcLzq(f;`*T6#YHmesTioPjm#AL>5y zy!)VVH_!yKnl|$D8+c{|&(b=L`o5lb4@&%G-q#a})bg3$ZX|AGs`Z^V5?Rf2c!F|) zb4IDd!n~~My$uO)`#|nzSal!IYXcwK6!&bW>U65~3#!sg;a(}5Pl>}n79G?!_FLV> zSPq>^y}s;H-YI1rm3q_4R&PVb{;Qcg@{)chZFq-=ys?Z$?RdNgIZkP&lQs28 ztKg~XW_H%;5BbS`OALs{_fdxy_5-bP4mwc(NXYexRB=G=98=9{4jO>{4^E@vz1@ zM0HpC;7L2%o{efPCxS!$6ZBBOC#l!TdXm63i}8v_Bu8d0OH@kY@scC6;8`V}naPn0 z7sZn!7cFxu>jaW?kk{#SI;EqWiFxc*(P^g2i*yt?4?#K?k-HQL+@-(+_HJy@4sTU> zG7@O)oroP6{h*E}V#lFB9I9tZ#6|it0^1Daj_)U*4ZiT79B@y52LY9fad0>JUAnT* zh3k8C&E5pp|D%gXn3H?yI_V6!9;55Jv*4PdD|R+q->2*TQ{nmnT$qJ;?}d2a0RD&c zuBDDZcGNI&5b`m=0kE0@n_B>8%;#K(5o4_>W4U+))pEw5CUbx|Yc<8+Y&HWLhyjm9 z@GNCS=#Yo>#o|$dPv9kz-e~-v@E1t=g{;-K?TfrE0&X zGhch02%zH{{LdCnFvl6>qrIg#Zq1atgj^sIr&LPyqr{8HmVSiqn9Oguhn8u?seYs- z26f;1>*3Y+w*-rB+**Wl|9${cNMRLIGv%H@bbT~?bfE*wa4|s$MC0cZUUXajf5Bto z6=g^V3XFDoZ49mjU2~D%}u2UXqTM){1EmWNuoJh9DPNMTV3@7E>@N(1gVQ4S{RI(!`{OJLL3R zMx7T5HRjxL12^-GAFwTqQ_%5Hlo0Jxc4+E_?P2_9Fd-qwcmsflXi@evi4|!i?oW8X zqc09k{vPaAP%!Zdg{Q0e`!FU3mkpuipHowKyJ2{WR}#B<(3HzKRvCwt^_=|wM&06W zfQ1VJRwf2(GAj`W21alfsvarf|AMiwS2F$w(mlhC@ilr2SW8Igz;2~n)N<{mpLU({ z3#L(nTLrnKuIXUxO{me#mOu5JJ_}y_9>rhvb7+r1Ga|7s$NoXpDRAi%b|<7aId&GB z9%Soq{PCW^Y4{8E0ytN~IlS>-tP{OnY1L509KFD28PrgX9OM3sPYw-SLd|h{{R`1| z<6M2s9YE0=FC}{8sSSdXxf!JKeqhaXd_C6U~1jx(D?R`1O@OK+D=5nLmTY>NC9F|a9eF*~HzO%d7v z!s<@`nd6LEKE^7cwUQa!#NpS6_5wF?gh5#?WLC-tps*)f6Q<>B#DM1AdS*|8_PcL_ z%^4yp74)mOzGkB*Ak;_CY@d!oOJ4pN@SU2+VKDOH-H)sB{h_omvY!_QU?oGQy16B} z$_LRzpd|~%)|CHJ{0uBJ^Qcuuz4cNWQ(7G`bC+#FLxJ$bE=g@~QY;=|u#1S{2WH&@ zhR1g23(^9dr4N%3jz5Qij$;~hbfGMo3wyNz6P>aqM$hhmA3-Pmv+1^I{sbDZ4{)%y zX!wo|8nuBPJAKE7qDq0`mv?KPfF=>%v7tAHJ3tR3uIa@=0y>iTWAB4E=6@Tb5;m3a zK8vIR%)qiOFvRb~q~Ad}rZ@HQ(Rz3W5g>p1lcW61D4DMm!!chq>_*TVO49OGid`7!vwdlC<$ z=GB6BglOW>*9CephQY>$4L;aV^oYsKvs(*-1&f;)=~};C{syG}) zvvKYv)W3k4HHWzIGPGxH58-w(fzd)-IuJKNAHca@;X z5X~3ZdohZ1%pt)mY`BP=-8M)E&}|Gu^rEasG{A=d=&|`+mayv7fMiGHi2uoZA_8R+})r&wRdy zu!-w)gxHXkg+^2qoO_Qz-DFbzDeqrI7bJ>C*}p8d#2kiP<;eVfz_ydZ7fNxq8QLt- zEm%5ACYDjCRg8G-|39UoH+*8C&E_>ES4qmCs1B+n&0c|P8 z?bB4{c8N4vi%5g6cbV z?>OM~JBeL7`@pUJaOQwBqo12jO-l2)>2-l%tk)nyd@Pb5eLWI#gSnBIAL=uT@lg&E zH3$rVzKb3a6MZj@uQ^U2k7OV*oPA*QoId-|c|sX{<3EjC&RDosm-900Uoofi`{9uL z9wuqZ*N8CE|BFqw8BAZ#n&e`Y?DdkMvjT$hf^iI%Fo=+I2hM#sk>futW4X`5+kKCL zrF!>{M$PJF#{;^+yGWuOb!9lTgi(U$03{Sgu!Dgo3>`n2vX1GLV54n#|NUqVv;ap) zuEucY{m)3!yezZ46v+i6(H_XiOWQJ%I+6`OGHPc&_5dOH$VhGZ$g_eAz>}YHF5?YI z?0|VnKZ(t6DhJGw1IZLN`nEwK9&-?EGad~|8*4s+WHA>C8}gf^w3s>)hKkVr;X{q= zGxRKx`B#uX)W+kR-bOnUI)(eeBfE2?dPOzJ88>$7S7`^U4vEJb1|Lib}Fw4vv)#H zG~R)pN{m@0bKme3&RV1}YRkaH6ee2?^XoGXInqb~Zxb^dgjit!*WswJkAn zXBo(;3@}nh8F&cg#JmzR04-`rOeh2BN@L|U(Hc0I%Gc6{wH`^0DK$FEnD$8Bm3M%7 zI%{((zkoXkjiK?2bhY7W=lU#YUCuMI%aymLah`GH>l$*#slYE<<*X-=v*f~5`T0>w zA!$xj(wv5*1!S3ajqHiO{QcN<$YZ}U7s(=Rn%*e5T_Z~pmDo$BGa#WtRnMvMg8G3) z+u-}DCM=m0H-xe_Y@BeO%C-rupQRrQ;WcC3=R=vd_;wiIk!z9pm3IS-H?S!X2Pgi4 z&`(_ww1V@r(ZK#hR0igu*eU~w$|apyFqLYQ9VRWbTarfAXk~2AQs#yXV9&rA{(c$+uOLXyGDnTs@w$1bjQV`bYh>cOZFIlg*4t9 z(GlwHby%B*8+5SmI0ZPDB77o+mbXyP1b6hntN)0)89=*l05gY~ZO_zthQf2XxY5&P7{6}i7t;&BU_9eD$Y9C|_)+;Zszi^;S3ZaU zU6GkD4L8Z4^5V@!>uORqu)%E4!Oz&EQO*@Aa|#BKw6dn2H5NpQOQc*=q_{@fHyp&V+r+Uo4n)c5g7H}s zw{kKgVSQg>EPh>Re`L9_F*D5{1F!$=YH;>kiW;T{6NoSa%KAU2_6g!5rxeoXbs_6h?fb;kpx(!%?=V zAdF`PIFK|RXM2Hsq;XiaR&x- z4sr|dqV5In3ZgJ&(;d02r>}}-B@O_5v=5jD1l-84*0S(hI#@5AP}XbJw6PqP&o)}GONA|al!7B*s5ZmeJK3D zXWD)C5lC4*3O^|iLV}GOz>ciLY|~#25BVAP^?%TG%Ngfr{6x~NsKadk7$&29d=6>< zsO3Hmu-szUKo1=a^pzaRBVrI!g@fWv+q5>4$;kDrks3CR0d z3RXfRY_6V&EP4_!=CCxGOyqXea!3sCAieorwY++V=pEcu8&vNwy+gZdL+YJL@9?e~ zIcX+0$`NKG)_1fzHh&?G01>J)`(HOgwZDvuK1Gw2$;3a&MD zokQ2raH(7$L)aS$dlp>T$rJG_>R6K}!6n8pQGapcMAI<-jIvEI!NMNta3>f=B6~NX zge7wdV^mW6U2h?(pz87wPuS0!VSglS(RdTS)$mqc(hR$fu#YywK1Z0by(w)kyp6T0L*)~`i+KjqKKc3h@Y1$!z z^n8LE<9mU&s~}QxS9SnjUhnrR* z3;Cp_pkVGK@~LyD?BwytKR0;-exsA8P{*owIGj6~#*s)rUYBp3YfdnEDIuTK)bIrH zlw#S`)QtKh%3F_eaaI}PoaHre{*`3_PF1431vIDZ3ASDD6r}2QJajy%(rj%Ps!HYv z$#qpR2O}|Ca=QfD2EznFvvUgG*}&Z{pOL2a7o@9CxZ36vCeb-qJxMVAatZ-Poqpw& z&k5`q-T;xTXSTo}4vV+X|#tXR4Unnm7e? zqB^v}1l0=dC9W~XE)3_0bBvK^7$wdTX)k0CXu|OZ-a@dfaw3Lt?2~|0F^Yi%)1QT} zzQ$acy(644iK#p*)WGs*BhEJ9pk2+AvuUUDg(0-mIe?Zz&j>u>%Zqbi`6J>!3;?bS=)INKZ8m9$RV@niv^{Qaa7~F z$bj|C#h(kyZ5Vglp>yL!X34Iw2bT7x?;QM{JW!U8t0)BH0{ih&MtW_UahuCx#q9Ld z^XkKcSy?rS0<-$MoqR2twO4 z@#I9%{<6lb!@~BbdVc??)3^%LB*UEGAQ*_vNkLoDA{?b*fz%jN#XxFa0xANv0WuP& zP}A9GPH;q3v`4)X`DE29VS1_V{gkXVikk)s zP~1LasvI0)Rc>#f|g$kq}%Q-WUtd4eRv~qwh$gNO`7R`-N`_;oFQv zErfr~82d{I|AgT_Vw4%5Yltrb+dskA%KU4ME4+EEUG&4SL}wN9seE@fT{)v30Ih)H z0$n~_3ZOC)3q>x*n+h_0E%G|YDK_*79ydm7)Gzb zAxNX9t@VjUq?k8`^yRlgXC$^ScM3S8IwSR_i+5hpPjJLM?{zZeg?q@j_3e#z$NupN z;UnhsiN`(-ujwBGtU(7|5-@g2uy*iBzvCZ@4=RxZA{PRQ$GDzMNUz?LY>b)GEM(M7 zSP4wY6H}KY8v`W!SRGTt&~@1iEFIe3Mie%;B!nK045k)m932&Y)DSVM1-WS8fyLHH zGs3JN@7hTJ_-11)(m&pPx3-JUbCBcEGvp?piQlI*2Vru|LHOYugm_x#Am>nq+s;Aa zMlV`8TDdDmQnAOjFc`CSNY5)>3GhwFY>Z`(Awjm=rt|=B8P`?{Qb*DqmBRGlm@nmO zjQL294Lrk@3t}WBMq-ks#bhzKufc(BUC@u-`SP$6 z;W;<^(dm^HAk#@;y@;uBTB7SW*%Qhci8=R)_MnwSkFx^z#7`!u+lO#23I<)rJvd^(fEdysdFfc_{dFKm~WIpR% zpsqovg(rKQ44<4WZgug<-!3+=(xzl4oy+vVcvjl&*~L~>f?ZR{2>T3Mdyezqq`gmV zZ$qXV+W({+aOX zxL36BY`hM@JdTV|UN%@!cuz11nJYy{?r5~AtYF&(?){~VOH zlDxj&NIOiK;tpO;cf6IL?HcTLboIu>;(uc^0Tz~@iD!t>^I*e3kiHp6g9$BXQ0S%| zn4AvOCLK;|r_ZP$VR6h2c{l-UH47gM+wNn=>Y*-+`?-XlvR7?wKMq4buR--$rNc~X z{9UM^+C}(*``vWEK;8GzeX+Xlr~4B86mCV@*Gk$!#D5Rrmuj5%(!Di|gEMsCXPgHJ zf1$>CAKjNR&RP@a_~Rv%yCBTKk$lX14K${pWO=nj_R0)gYAUZ5(Sy=){5cxm7-eFd zG0VJrzMYsf=3=<8E*wP#>2{3+3BlMLn3Bf>Enh*<-h8@w6x9P&6Zfef;8 zo2fKf*>Zz%#hy1ptW>}DyXd5=OGP#(8BZb?h9`EwjlI)J`JU;$10}A!{!A;ve{KsX(G$?;84?m?dpdSE|Z=lA9woO|d|RnC6}h$t;<0$mRfMuj*`0;8KwPtCGn zDws*I21q*o5g=gtn}^sZJw^K%u9KdD{5YnCBLFt6y!W6Ssmfg-*~Hwc@>w{FUADIz z=%6VS_+#Stj$|Q$gS7t(J(WXVz7oYR4^_U4gq4SH#QH0SSROWrQ^%=&S$1I{ zJa1wr(X5!b0iRM%J~CmH8Q>%Xi!&!~WMEc4ErFUmXmk-;DSz=8@ zc7U_N^=1jd<3zRxogIw2SX@>SH$8D1q9is>@`H=l5TzvSL0JAtpbr{9Qo5{^POc|>80Bu* zZ1^|EAJ~JrX&VJW>gcTn75rz8GirIIRa$J06DJkw`1OxRdBc2!eOV8Bz$r{SG*@W5 zF)5hYVoQ*e?Dt**0IqXQF-gPyn9|i}VM-?7+x4q6yt#+~DFQB4e>l z#*E`YH~J^cO-aji8ZGZEM^?VwvK6i>r5c%5`3JlYp+Mf31tI4a99#bf_`FXaQ~~~j zu@1!7&m2so&oa{QJC+_dFn9tGEw+X0jX|*=J}6>8&saZvQd#&vLtF4Z$Ak@`dM$-2 zSYOn{b5^j}5TU|C)~x;r>Ey2I^H2}nZ12z$$rh|g#WLP4yHQKH(E~;5vX$_BRB?~( zBsJDesL?VW*|3v>P7LxSWZAtj?V!$=e#NG23kCSzL9({$7wkF{-D~*j!0Q-vy+(~t zV2yM`?Uw1iPqK*UZ|RA|;BrAK1JTkIj7&FkD7^HGB{))?h%lkDVs*N+#dz|hG4sLjR7jArrUsm1)wThON zeHG}x8foeKBl*MuoQ=Pu@pnG{Ch_-H{H^#nelX;)?(kwX5Sn?Y3$m7-0u(#z6g0<3 zON<0#)ah!D(IYXEj6rIf12ZuR#as%(^-{FNiEEsA!IaXqgxVTP1FN^1GrGpPMSu@? z2k_y>06yFk@cu|<-Cpmk-vt=vE$`+hUb~MUSOvHrUp$q9G~6%1XDdG5pP3X3=%AnH zegcxdmvO^2mZW*1rn!u1{??r40ZqfLg~CLL>6UxJ^xFF+=$5z9{qGD%^CFC2@l!S} zk=@xfdetYB>6Z3e#gLeTEUIq;uml)Ul7Ia`o zY|YR4wR3BJz;7bA<~#hxy;Bjb+jY#d#Fch!OIw)(2kd58zDWBLY8n=QBRVNa0AEjjezdG(r+J&=D_ZA1bA`WZMrv>)OrME!8(tr` z)or~&RC&E9nYf7;xZ=XJC?5u*e8A?t@;qAZY_!}a?pl)XL5VnW<3@fX8!UgM>@nkm zV9bm*Wk+!@lj64FK{E$}m_6;dl~J*SIYOMnDl@oEFEZ8ONX$uA`;pm(*m{2uU!GII zW&j=@`v=-EA0|`ZKk38y3Ve-5%VQ;J$$BiZIN^4?sk6LGiHDEzCB2i;%52eR%%#v7R;VK^D-DkMa_ zVE&0tku4mi!4sVnqZ@$mqCt|njE&#H1TSuEgN+&E8_MAJ#A2-d*0SNX?9$lxsAaUbm--nqG(+S_WRW zd?cWz(X%Okq`-X*xz;?~T&5odMicJe<-M9&WOh=L*=$_5DT{t&(GTeK0;34FZ-SvZ z{xtJj0%HiwdFL^T3|-9(vwa&OWh-CAtKD>FvPk7-Lv$fy1yzDbWL%5~5{Mq#PchX% z|A2QSgt(NKm;%f7=e+f(FRy|aZaffwCK2)XY(LGU`To534R*qsRA7VsgWd)veX%AD z$*{FiAZag?4)qUtry^RARA9sX!`^93I*m|iDoEPLq%-?xMspR|to~VzTsei~Y>8i) zDK!?ApC%ZaFAISP&xOz@>mM#XFoa{jNJ9LX2**ZI3hTezk{I^fp>M`@(thIQ5ifrb z@dgoZkn!qd{0GTc6J%}G=*`1=R)k2t!$D%9JH7;W@8}$~cJrD=9m!{igmYGL@b&mH zmeHF;{qQR4XAzDqyLUrOWzH8hv$|G;VU8tVW4uDko|~ZB@17etd?>TCYF}Xbb-~-AsKJ|}2p=2*`#S1g4jJBW;s zy9Ty6=)kqYX7c}&M3K+pAfJ~v@%bwV2cPfjz-I;vpXr#!XQJ9KpJAF#S2j+4Wdr%` z68l|p=IXr`>mJnuXolaRa4g#x15Lvtgx{A0-`5A3Z6oGG!YOV{8D8VNg8XDy3uV@*8FOk}9UeeL7Hur`hN~u-7R?FE}|n zw$3{p+`%{Jok54v6*IV3m0_Ok_o}YM7RQ12s${CucCQLN)H6@m-3`tdZ@u)EZHl!x zWIMOfZ92Ow;g;w9yW4P*4B;HH{mON zb(p7>-vo)-Xun`f0m>yCW8PL~k0$KB65G<^IFn)wb7>wO-t*{V_(nS9I`@r?DXvX~ z!5&-8JBx9}D*42RJD?YUMs`5oW3#HBi|Dm) zh;uWY-xTK-I=>b0p8DQ5f>(G)8#^9f2Q<>eu)!fd?9&mUw}nD!dN0GL+cfvtFNLFe zGkVF|qr_}MsZQdX9hWh>(J)NsJ}n?NsabTw95slCuc#GajL3>&9jh9CS3 z_iBj>%ryOLkgsoMnvEb6Mhuon7sdg>|F<76xG(gGqc%j0x6rG5MU|70tpZT zp_h;Zh=c@^5UNT@76^nara&M>Lq|ZQH_@kpiinCRf)y1WVnMNC$ASfW7i;{#bLQ^s zrcm@fed?bm-^_RJx&7QbXYSmY^^iY8^8O@;EAAnGl;lYyhkNQFKS=VyB!?U1AwNX& zp(KZo<01by$umd}r^Z8mnB-X`hhyU*e~jd#NRBzeLw-q$e$wlG?K$`J>*A8?j$*^+C%;{$xBEM^Y)NGL-JW9hpl_a zkCD8BUqEu0yNCRFk}o0o1ju{*sJM&*=6nO0b1j>IcpHgp znFPe!NnFb!Aij~rwG0B{n@C*C9w5G%#I?);;vFQeWepJDLgHG+0P#)|*RlnOZzXXp zQ-F9EiECK`#J7>SmLWiVJBe%A0mOHZxRx0}yqmEI0|5?7nMl3f|L!}>IVu)bkHtWV-6NZ&9+)~AVx^$lBOeG*rjlS$vOPu8aiiuDa6WqlG?n}?9T zVYsYM6Bp|n*30@Nt~RHUzG2ayxyxl*`_^+{Z9E+>6s zkh4Bb?5uB$bk-+vwRtY-8>64~X~JiHV+vq>5?7n6NZ*(iSf4HgtZ&Q>tWV-<^Fq=$ z<_p%R3k2&MlLqUPxZ1pw^o@yx-T^oBcTvJIhe#LdB-|hNrhRdrPs@2`Z1oDk8=m3# zL3rNtlZV+TNDb1Q_v0icN{by(C*%Qy#J01<1pAv+i*q>``_))wJ2BYbyZBW&ee9O8 zw1b~N-cKekjj88{XHMY#Zhw5Mk6+jEP!Zw0g;;*)C`w?1m#^+k@w;*1^iCB0F2Gs{ zBgjWIIhP@QEMdfHF+QrpY?u@>7B=MUjLHd3u1my^C|OGkVt8vbURu*N4wo*3Ln zb*?4-?lut`T&3?L>U@#wtwp>xg)Q5~rWM#T=v5qz13t3h?Rt^wMtqb~zRid2F!;TA zB!u0(^llvQf9@|5t6ck^@yxlO7))iS=NLWBB_sJ+F`HM1>t%bIwCKR zci{X@#!GP9UAczI2Ueb|omijrdgBq~5QfJq?ls587LO&)#;$zZjN57Wfo9@(yjWqdGBHZ^xzhIMBOqY6Fjn@0aiYHKO@s4q0pSWj(HATO8KK-cu z)Q7f_^S5!R?>lyMwc{Sq{X^GzPcdt^=%=@7PqFU{e(H^TLNC!4ap+!)ciC&smMD9T zTUXkJVCD~~S0YINP6xhwqsP&2H~9Wb-=n|uT+!>xv&)$yT~2xWhG0RWQn!I_TwbL5U12n9v&LE*j|JTsQCUPyr zxgIKQa1%%w)hG)FSv_TGCRL|;mP0NFX!cx;F21LvcB8iS786kJDC!T7whd6V;<>O9 zJ#*Sl!Gjc==IDrJ4Ch27L@)8+_LSd8xXBn3_{g!Qf4NkD1HqLB?b|IxUQH-3ysFDd zxo)ua8%Mmr=v;t;x$J@O_nKm=SO}qJcDBMnkB2R5c_=|RUKsI?t#Nzk2Xz|kdWv{N zsox()iug4CWQim9Z4{&TEhwooQ{ys52#1 zx6X@e*EtN8jpxcz1XLE=D$Z2dC7zWCAEI z*;|dcV`%M=<2K>ATh1Iepmtn*dtAmH&T+R=Tr5^UhofF|+M&iwbFQfoNLNgcz;#3i zVYyM?IP7n>SLl+kS`yw@pM<*GIB(Z=yG2MNQ#js!3_~o{?CpFI$JoZ+rf_>W&cggo zgr2ZARy7NI3i?n#0WSeNqsb2G57!4PT?g8zSS_7Pne*x=pV6FfDRf%Y$TK6Pk&4A3 z=fjlOK<}6?_%OQjN)Yx_YQGy5V?rt7FkyWKBh*XK0l&OZ9JA6z&s0KvtWX)pkJrmc z<+%vFCCZ~uAo#%l704MYcbanrPO#SB5~X>BiU!|>rwI5ibkv;K^#tF=??iLT(Ok1l z;Du;T8msU^^nK&>5J#9rkA8aI@c6{g5pLfD)9TsF(Ny)u53$g*W_AzXhmYxel*&a7 z!rfA<2zthPznDdQPj{XBohvUt)cN4~r`@WZJ8fJOMXR&5XCTr(L}}y6s}g>;qDz}H zi#9Q?^i5(A(rHI(!TXHm0&RqF?I3>o&gb5e84z zZND~~D@}c$TFo?Jyv`$MP0BS^!^6*&&g1{3be{MxrSs%(OvfzB(QeqIg!$Dq$7SiG z2=`lPeD5IoX`rW&Y)o%UOb6BEZE>yy!yu|&gSTHY1b}z%y-u{o zoHNBe=LF+(>zcfSa`hU&faz-M2@^yx&5JbWkbhgV&jL{t9^1~NXRV>z2AVc?_g!qA z^f05EoKK%4DPzu#h&X3j&-@qDI`&)Ba$O25UUB&ad}4^{`2#M3;m+rgvisrlYY^k1 z=pL8j?D_B+*FUpZg?7UZMm*af)m{rhwHW-m3H3bv)+ZgE*v*PZ9Q1fW_a50x#glQ8 z*nh!oy#CygpJklri_iSgB{?Rx-rF%aj>Vf`GVgk$44`|lBbnM zBe+iTPFh&>EO?FFowSTdd-yr++Ra72G_4zYmdvv~owP`J#=zZY3#8@0GsfIQfot3q zraarwTLn}~X&cVFNa>6nP0M*_4yDDrGl$Yr-I+u8Q79$_`G#T{iTxVRZ>SDx1yQ;)r6b*qPep2cH?Aub^Zhl)p;Z!H&E%X0t#H~D z6JS9RimT~jb(#`1M2)YiBZ{so>ReYesIDldu4qDCQDI%t978lw7F8`?=#n|Vtx@0= zF1fo7Tk48#z@lNTn%-1bYfoL#19c-lVTjzNd%zXb`CX0D9e2syrF*xo==-`N%PLoa zF?+m2ogI4Y?)nTA7bu$lBXOiZUAYba<^f;&!Ye6ujqkMk_~^gkjNJlZ_8?dS_Izpf zuTgO9L3$V3c-{OY9grTa4|T_p)()`#>00b*hT`c9pjbd~ts6KuB8fJ9>y=E!XBytV z2%laEX>a0pe`CB&{6i>s&y<{5eNRRJ(hny)pNemq*(PGAO3?(`r9xu>yLH3>3Zr`i z+<~DuW?yU&pkmrfLEzSSJHx0FXsGufMMLeazoBZj6Y1*h6i9<1ypjaetFnE}~R%3ywvD+4Y8fAIT$^4{$)k(zj0sB2D^J?X9Q;&X$A~q{rVC(NFn< zzxbFpN5s!MQYdueC{bnzqxUxJCP9mKlo)?o7_Vy8Rl#;%U84~50)FqWh6WeZC1W-H ztKwLbWX4k=rH_};WJDV(fSo0q&^r37Xw)aCpn^WR=gfU#<5nQsC0(jr3nauQoIuqK zuO#{FavcwQkpp%6#nPiG%-#mNxZ-GbD^BRAn~qcV`oN^ z2ScE=73T(=!z~CSmyC*}Ia@6B5k zW3?_w)jWD21W~Ykn_AiR`(sr0^Nh#qbe&K>d?Onvn4Qr;T;n8IpWdhOPy_T zg7Uc2!SBr1U!DlHPDS+VftgdIGMM(_|=a{~B>&cP-F4u^nBBJcmTw zi@nnBjKyBJ?P08b46DLe-FN1(>b}m9u0DT8q9z!mB&c`(#6t{|oy-)Mm+3UqaGmj? z036$KKNUghn*T^67T>$B4$YyJPfSrHapJ)ocD3n*ryi23cCulbWiS?eQSy<9QfF5& z&HFawMSr?xjX9>ZUVKWS?i|Bqzd$eh3~02+7`zlm8iT~0#ek9$fNKnz#Kp*`J=cpg zwK6KynZ{sk`=e?$@?Jqzj|n9^;nVso5tS}Q@~HHv`YMew)V$u2vff|a^$L@q-u_yn zVixVO#+XI%#h1Y1A>g|3DHL%I+T3;X_$&GyJ&U(z@yro!wUfF8EA}L(BL(n2$et(@ z@3G_{!h?Vu0j!f^@7_gkt=2#i?>o3t^5?mLLC@XGkT=gGtQkA8PU{R;?bDH>-HvQy`ZW*L zAKvXjf!uQh9;%0}_)alp&0dMf(!E%~)q<3Tr;wZki^Sh_9ons$^JHd$Y%fIW-C zLVZn}?9mENfB0=Ks@PfYm2wOd(~vw&%tUR1Mj)zpxHOVJD5mr{U~m+y&oTP9?P9qv zD!3hI60(N95gQxUUpfYRH_soFLPhn*KU)3m5ExcGi4tWapewVv_#uP0RKrTjkP!FJ zTu!%2_Kz3xM*sY~zW$;5CnItCQ!7X_HqNs$%gExJs})qu7<}K0>R}H;DceY!AOSZw z#dXhBy?fW&zErTYw(meZaL^ zB=-k!7g(Bx=uH)*`gq%YP-gyeqMy}N{E^XY-j?u^%aEe)iSFjuc+a;@{VaMt^*qkD z@jxGMA!6`2zAfSMuKy3qtJ!@$3mmcD)$jj}0;6oMG7lNAml+o9jpl}#9Inqyc;2Qt zg#K_5X9MFHv39kBI?7|R!@2}XcyoZX65?znlnD(=J%4Y}rKfHup8altj;r5kUAz1-A?*!4KSS?I((6QeBvUI0(dl$8-HQ5QdkfaPDNlN?-#io_tz8VU*M(tm zoxLvP*C`sAy~DgNbe6$oz}K7N!aPmT2U{O3{ECT}C7ZtVm4;WLuRxae4s?x)t9RL( zKVDXhcP6n5$txTmtMt-8|Lw8#ZNqnyg!?<}>0-c2*V?xb!-k1LwDwJPp!q7!vksQ# zp?+^vQ5C}C+IZ;|s8M1QYNNlmgA?aW)XMCf1;k_1w8rOAc)Z9OR{RMU-V}}xugQ;a z*C;%0&hVI5;p^dGF<^v7NP; zSiRrbC)Uk?x|gZm+tjg4>4YZ+iV6$V?Hb=t>Q&$MgNt_7>qn+>eGWu|s(mf$g54Gs z0hA%u7D~#|q?N?l!`A564)AUU_Y=wRCa|vRoK05MAu>p{&%qh}a8Ct}@QJXpLz4pn z=0XsA0^i_PtHZ{^a-CPl7;5^yX_h-;E4>wl|40=k?(;X znM;xFp_nVMWfQ+cl|WJ13BsLEMGyi>ORbHha+Fn zmHXWz?;6)OTwSk4Q84W_Dqcf*;T{$*WO6|~uW>CmV2^Akvr*2~))f4f!P6UaVe!sVF_%eO1x-ED0fW4(rw?jtJ z_#w%SP;pO9q15%E$DXLy;`MvY(P#_$Q!7Y0HU%H0kS2o%6=WvP4U}XEn@kP0e$@CB!lh}ixk4e6-)5j#qXiVNpb!83rm^2Hx zb@cmV$d0qGpxotFgCs=Ici}WTk&NXPzE$MQcx=6waX16TIj9|eJjN`)=IHtKI!yoF zHl7Syh(5;eZD5a?P5;L9Wvcx_Dx`e}7nK?=)UKeGSk|VMZLBTV4iD$>HuVLC$)I{u zRnL(sg`Xi+JqSx4waa3+xD&DFpOEdD(?_dMh-gL@vLX61Rv3;O!hdYzHWe`y|a=Sy#wy6+z_$L>OTd5-m* zhp0?ur+Xf1j-u&v>~luZYR|FmJnE^Nw^29$&93qG7pa@gs9QgyXjC`-x0AZ@HOgH# zYQJ*Qt!nxkKobW7+J(aG@32}Us3&zOL zmUv+;ypoFLzP9A&yPqxT*NXOCH2ZACDftqByD?t&zOuDbT5x_ZgF zQh88UDiG>Q#qh2mnXIds>e?1Ifx5ybn<4}@`P3P0vL)Jp{&dw?i`J&D1yLgIbr!6@ z;&m{Jb1|*29YB*{eXSXE)Ue9tIJBQwTaM2jascAc`r9@fdr`aFk5c3citFJr^Avzj zi0T2jIb!cQ%+F#DB40Wfl`|IKhNE@$(TW$n$l0X(Zq;5$>FWN%zi}FDJ`rDQ(amr{ z8+lG9HQ&6q!pGOgc~dcbI)C1t=d@o@e*BVU-STT?N70hF5(E}kpk(;$ub&_~6%B zxC!uyv${>-b0W?2jVpW@&uD_*^I<%z-2bkMA!5pIk%lG_17(M5A^7+(nw`cnT?3Zm z*r(q1!qhLWc3lX_Y92u}Y}oU%KZ+CCNLZ5P)|2b9Sihhr8$K4Z?9xb2gJ?;~$tN40 z>vFh0jCS31G&a@-x{IDO^!a;>T0tgCTaMV2nU#D46#VJBu|Zl)fSwk6z?2Qo(}$2C9x+gQ?s+;oS|4K*RqS+g4YF2Hfj8Y6 z2W*V1KLC4sD=#30r_~D5M-vaHHj$5^T97ClH@KXZK168IvyuWR4keB_^F89Ubj6`C zIjlGi1)!7ZnRF`Z$@dTTSExGnXBnR(te~Xb3#w`bMe}fsqItHWoAG;$&I=*i35M;= z#<4HkPVIEHvZq~x?F+>79BfX`y;i>FTD(p)tEmN{HPcx@78RJigOD@sv+}NvYe}f8tnOe~nifGVlsWGJSlE_I5rQC8Hw9c-s&k^L=76gN0Jd)-iTmQz3%J)qt8G549|M+UxZp-jwJ1` zQPH%@c1RW1m(`cqPf)?a;Wf%Pvs%g|4#G7AIUK z78x8F$LJY9TYtusFP<0kADf}fjbeHFH2BdY_Gt_|tc-;Q*&!Wk*&&H^J4D-gu|G3_ z+ODD_0%F>#b35T^??~VJi&E!ec0}{jGOV9EH;%|Hbf;3H+P^|Q^c$W~_&ao+|esO3G37DTzg1m6WUMT`~_@RZ^y^MPFnn*@^rrDQA8E z&@8k@BA2%dWU<)s;VuYXP_0o2#qMX!OJ5kd%auJm7K>B8ubdB;y^@lGBhvw|jL|7R zF>5ug*7M(rd#lmpvf;~@UEb2yo9H<)#)Va#8xL)6t5}RiDhPcB-J>1sR%2d{xW+Xv zt7g5*6qy!+@Le_x$gdGw?*tml9x}Z{66p(3wF0D?6G2O^8$Ze5RxVQt>-kD9eH+uy@Mzux_ZxB>q`+(3`G^pHm3)~k}! zSyxmLBl)>{2NaE`3s67$Q!7YS`Zd&JJmJ#`Piz!OL(F&%1E0o1@hA=VJ_*kKtaDq+ z3L&0;;`4{_xJ<0Zzrw89C8dt(9Wxyz&a&b>M~QKk>B!A@6vx=6m*hE%3kxR3*m4}j zB?Zo+zFj(YrvGAWNo9qlWyOxZMUJx4;@rX*+wii9g#~#-9ka8Y(;P*8CwA|i+byqK zLR`=Iu8z(x*C6{vG*& z;W8NS35uX(d>OwK|FYrU%)n2LlyG3+P@K*dvxHL=i+l(_sK9$%!yqJGSDYjS7vevM z$b-B9tO%+Jm!p|ao>uzwFP~m$n<*>ZGOlCimbQ}8+@k#4LT8bqZ_C+^l9v7Z`T6?! z_Gu9t>*w34{qOwq^R>0NB_?NdOi#(Sp>b`=xuvsl(L+ zw)l>tInt=&g3?k)k!|8^Tc&fOqqx+TRWN-%5~!#0Dv&zA3;o?B29V=F6h*m6s4vtbxE=d2=IaY4zn z78LP!{&n*6jg8eCEZLb?Hr-KFno{VX1B5nPAF6it>=}*{rVtQG&zl1R?kTIOIK0@AS3rX}D=!ztsS%-8 zm=Q6}Sv1*QaArnWdRbv1SIm`?Auv?39J$4LQ)(!Ai0V-rRZu!5tzeo*)!q6=m=SLz z8ftQpBi~&@Lt^L*bd;11%Pq}ww~$*xO73pfP46t0cwR;rcOFJamU>=R7~jQRJlDXe zVQyTc8WN-84F=dJwZv^bhP``;jJ9&i3?nl}Ydv8`Jj2`!Z9`({xXsNqPTUewa`*5# z4RE?6zo2aTU(gIa3f5qZaw7hV&xVG@{%&i;Wv}p@7v&!3F&*Mkd+ymV*$D>)SGcoY zl=UM0O-<0~5x#^sT#;SQ;90K7B?U#3$tcd{8N%y3r)Svxe5^1_W_VUBbd{>X4qaEg zzxZ6}D(3H=3MUmhbI*N)^5@QlvP=y|=<3~nx)J8fE95yQ!#~#wU4?2e!@r3c8eYin zo(!jBg>3dYugSRFp7W9%*YkX?$;nvOz#7pxTtiu^zo{L%jHkghtg%jb7S}MZthm@w zl=s&&M0dd&Z1Mlgt#ZC=iaN)&`OlsdjdC@Z;@`s*UDtu%eQ_?rqnF}>yuaM#*(g_o zCH_4u@jv$yCl;LhmO1`>yu|Zy5(he+c-~ob4kwX|^f$FYqeK42KB9YC`;R9&JfSag zo^zV}lkH0us=>ls-TSAn$+#`d7%y(oZ+skA=$u@DN9lhxBQuKCU}paaGnTLuQsES74~h%HnwK*wZ9@j0)japz-&=l6UfwWu_q>p5;bjbfdz z9l9E;?k+#0)oN}UHQe2rVndrPs9`VZpS71X&xzgde?2=iiq&9;`gZC+{RY*T{fq%? zNQ|-SzGF3%+#=F)&o<}WQ<{r?>IJTS>VLIqu~y+4jPn19QR3Yfyc<+{?uWO3_GQ{A zSA!}3KQTqT?=|_aHZAI9YB0h7Cnh+tVDkCgH~-0Vp{rC4X88Zc42yD$&*PGO9?Lgf z;<|S4+9N)p>v?Uur*)ih7rA}fdf$YbSfH2ge9h7Dod1wJXd`vc+iJsquWz-cW{f}n z?GGbA_xo+GcJ+L1?zg-TN3SX4RdAGjQbBpY(QW&5swt86m%^;FNu=i1k^-ZZ+_yBY z#SXXRH{RsT%q@1=$2r!x&*$~cKfroD3fN%4#;clVz4`t-8L&~--)+GY3!M|s?S}r3 zrd}>vgWWdRZQZXoU}yg1^LRn;e`C0^a1EB*V7YZIce101yqUl1q-zwf!Fn64x32YK z>x6USR7c*qx7hxVJYJ6iHdt_j1=qD;+!Eo_LFe(L9-ogm=YEm1-?HfjI6Su)-hPLOjgrVyxtf^URIihBaT7gE)|Jk>rT+0RSl?`JRLl&;) zx`cZPLM~m@)cP|QDvJJ*R`04+gW3O)pG^B3oBedh^mD(fL7(LN+f4LSqXu*TXPUcl z`TO0gdGr9c)KPvO&iUWT=3TXFu=@tPr^hUHeflCN?Z`gYBbdLF%~OpU?7hL>>$mrR z-W*RgYOwbPd#~T#v8DZ==G1VN8Z5rS;_J8g61nR4Px5K>IyKmQgU#1(^Z&eMd8$!^ zy*Jo<{q|neVDNwV&zBf$Y7Gye{?mt0MpORo<;i^f%nkiC(>a%F&TFOSyx!Hv(^N+` zXK6fFl~3Vn><)03tcKWl=2-UusnHsBgN#@;ACej|YKjeQPYZQDbMchbRIK%M)JU9T z)Cx3WHat4T@AXh?xF4tMi-~9X;4A-56xqjL&uTr2)?l`-A#>Kv-7Y2fBmA?zoKRQ& z&wAo-jOX7y+0sOdpO%|G|7nQG=zry7s^6$Nmp3)yVp6riuxz&W}zjPni=3W@Ki^ zBqn92W~9d?CMU-v4$4l+j7dyO!#_StPfQy#HYFx89bsAcKPe_LJ3BFHNKE3$?2Od( zq|B6IDe2iU15*ZNWTxOSI5i!ZJt`#y$1yQUh>@6_LPv(|n4}>oNke0jGSbo#vmwez z8#yc;hhf7~5tflYC@nRKPqMNz6H}2ga$v>GjI6Afq>-7K$nKJ47DnxiPJ zrl)47qG!h7EFGPcnx2({&ch))C6R*BUs)+AH_kF*QnT=XI%Rhux+!L8%9xn6ltI}s zX{kd~0My#U60=dU^u+9unTcsJ=^6MxoBj=_*RIvkyw zor2yc$jGF^WDkKUqD5d&=~>d$k?i2XDE!EDGJGIP95Zq_n-#hf_0LI68aZ+p4rwD% z-kj8wQGm?sk!Yz=lpp}zH7YfG2m{(e`7pds|MKaDwwZW=20t?1w`E+%&Mj^D2_|Pg z-iztmvaEDcY>$?<{{4J?`?QFS_3iXKe@VVQeuUnZn4HluJtf=LrDJDXGJX=u=DM=j zCOM03StIBL4_l625?g%7(G+J?aY1RRqsTUKwk^{+(NSD#%PN>Yqr_QcvllZTFtIQ< zZ(3e%Nok>@#5t+7W1e$*JBmsFG9CCBafu_}R_e5sPI1^~;OA%y@@)Ce>A3|(F}AW2 zhb_0%HrrWNY;(>kvK1GUOlyI7zw@t?Z)_|zRPAYtmPCg+N^_~s@Z}2ef*;ztq#xu6 zaZA$iCR4w96xjomu~{~`6_=a2t@y1 zB*EtJvkJedDtNE2r9JVx+usEtRg zKc+T#U)oVHxoD_k_HXJNk8=Hn+Wg^tlU-ae86TwoBdUV=5ns`DyJntssU3D^->mMv zv#-$qzQbYQFhcs9iGOzd3zYv9VZxaZRrq(vU;jtk{a2+2R#mYMAx_1^4?m0}PQSHwM1PIGF!*bX>A;-~GFB+_Ai3|1uo^jQUgGlMS4`|4|lb+&l|^m;d_3%}eojc`}aktV?xn zU7DPn3_edkMl7ATbk5G3m%5HiBO<`JiKW)1IQG8FVkM3v5}LEKyYNQBb9PqT_%yBKsQ1MrMhnH>x~pS`8kVnvAeb;9p#Vuz~on8Y$yX#lRZ%>plH_0ziIL;zgL? z+%**8Wr+HlgfROEvBFP?KH&2;AwEV}ApYUh_=h41sEQE$i^acR@NY9@UO1B8c>Fsg z&mm?x>379Hl!0}G@Rc<;i;V%R0?gui#=98rV>}G>6(0q>gwSvJ{8v5?3?%(-fl-0J zVqoA)(8&OrMFAvcQOWWvSiX^QJBJ<(+ztKL`215&p&IBbELKV(gt0x)EJj&-SpCHu z>m;jL+-O|`yvs@{Kf?G7OL_-U8HNCT#q~i?;`}p~lm{0Eqej6L>J>t`mGMc&@!^!t z9W6+wQ)h}>)S2RL?@V=>9rq+8Yr7Ecizht5*t{#1@L!C}yOI8+1WI`g&{vGHj2B3arbSM+7ZTAZlm;nVvM?-2z)%0S< z8(A_uljJ#!Z?GhEH%Zzv_GcW-IE*oiaV+Bm#>tFDj0+gIGy302CGUGD_37(F``l(0 zvvF<~kFxw(KL6!TvbsKdNIsPDl0DQ8Q~7-Uo_if;@h_Zr5clq();P3>diiQrM1m8oWW6V8dZ&i%T8E*ob#as7KnOp5U znG6eLjNeC+6vnCh$ig4s^QSoU(|yz?KQtwsw)+X+*?%(GSA4#oQu~R|{qLn5Pu)jz zMZ*2m%bCC+@x=X9)06j83P0Yz#u_A|9-!JKGCCM%GHzx(%=j9k_8@6S0)54V2Px(0 z4^r;e06U0#9u%TP)BC08LnNQ}P{u=Mv4nBoLzLr7eEuz;ha8~L;sYe#bb#~^9H2gW zk@2Sk)OU>^rg2*KFpcYL9;V#y24d7dLi+KHy%{qfq24d$^EHgGJwhW(eU#F)J-R9& zOiX`t;-g{WGRBQS%!iMjOb!ygT9G9zJvieatm`19^T0tWRpKGSv_nyW{^HU@G!MMh zljeb!53QoBle{+2)lpFbMGMgzR}mLWXQtA11eX^lm=Dgq#5`O9=Yjcw`G_j8tH44; zbI}(m28u0U5u&Ad4DkZR4PeothbTm{fnqnu>nSRg>!JG~m=K9#K4mFh1PcXQpeSG; zGD`)cuwR)ikzv6KX|9)H?U>ynSzl(4NzHU-N0|kRTrfZJnq-Awk>Z3{jr;<|9IzJR zWAQk%t61|B@sUEcy%FpJ@iVT{3fR41qrpC5_AIks#OKUDVx}rTa2+(2+RRJ&g;^8H z6qWLe2lGRimrCt27|bku6+e}7xESmLFn?$YQOxmzlmL!*6%vwoynpqFYe&YNxB>R=wRLL}r%DF@` zZ)R6Z)`;2Nk_9k(O0r20F=%~zUmSUA`PVzFdxnJrVI zIjlRgGp!1(J08prtQ86xC@zJQ|v-`lP%o>?{i(z6h*gUjkBp6yy^)YGaF}s=4+^DuT zQNJf3%tvfiFJLxQvUbcamMoT8v1D;3>i4B!U6svhH)j80c8!|Mn!CY5#kJ}XW)E__ z8^EZopOP$%*;|qgXU#7--VJItGu4|?xf#p{ts4P0Qrya6fucQ_m$*aCK`Mb_AebM< zPrj)USf;mt=6&i?W@DK>3P#qG59TNS4MugCj(8V{BkEP0-yAR>@ua%SG!L4qIL#;3 zbAu`)K|GI@37|Q>My2w$l)unT=9eI>qYrlEWO2b z$}eh&7o`#fwq2=KqrAw>thZ#{nI%isn^}fr{h5uEEQwjZ zWP_Pam24=pOC`%-He0eRW|vDgirGTR#xYwV*(J=@N|wj$YRM)uyFs#P%yvlTWVTzf z5@z>FHjCL2$tsu~lk9S4uSvFm*}IZ0VfKY&%gxj)zk-cKTVKV@AIm`_MXqE`nB_~> ziJ3#PA=7+EsnRREj zUONdUL=sr2*ra{UY#g(jnFWeM*4!!Cd}g<6-*PJJneEn2GuzEfqOy>hQGI)0;+WOE5pM5zIPCHkMf*X2-Ni%!Wu- z;7xNuj$~!H#0H8yEN1wL*R|uE-%NxZQQy|SX0`(eYfYFv2=)Tz z{0o@9(D;YOFRPzuJ(z{~{m}Sz^)s!ng<3Gyk6Q2xZ6LE$X5UFRnc0t$%>(lhzeu)K zvOyNA``utzz0fXX_HW73nY}DoCbMrP8)u`rDurY+14f(2?}rkgp3XPGrM9pJF{ zz&dNqO#f!~6SEekXSih604ir&(`y{o0j!VK&UA{|P-ZcvPnk_)%~;cy$U%t5cT@j$ zGig4-XzSH?(%9@JnJ?}Q-E8M0E=K(x@NbGon#B4s>ud7zQN-KUp>%-^8Y;4?3WLgk zvl!9?irxdHG4tWjOJoFSWE%a+(1>yIk08y~Rr`Z??%|600CLi7m~p zf&BVr`@Kx!PR9G1Q96$?zQB@qn_Un6&spEx{5G6NG^eLB?Z@ zZvpjC4LKJ0XyT!k(}71@uD597#g@f5e~ZsQ;`7rjXQJgPHM2Rm)eJSKs!6NWJ~>r3 z#&(SHjJ+89F{S`X|F|IiYb-fc!x%?1hO{6_9-o&p&S%`ncnjk`#zTxRFrH-mn(ICoz^YE@#}#cr)XE#wQt1Fn-RcTtI1tF}7#y#hAf3iLrw5YR3B+ zUt;{0(YFny(2}t$V+!L~#v;Z=j2jtuGCsigIO8jfpECNirPSIm4r452T*0`OF@;;> zTAaK3=#I8;G|H)Zn(;$MFFQ$^GxlZ7Wn9GgFUI>Ak28MF7~1ZQMy@pD+W9ojsT#zX z%UHpj2jqtGCs!m z4&$#tSDBl1ydNpVGWKW8W^@2uI^`V?KxY}_wT$;LKEe17dl3jLvcKCbhAxU83THu)*ys?I)s znz*&IKkz<|^?2t9$Z71$89;<5toJvI774dm%%Wq$W}Np(DE2Xnq=f5nJ}lu0+~to> zxCQ4$33mZ25*`FDN%%K#W5QA3^$9NlcO|?D+?VhH@X>^!i1l;=&4e!`P+q4Kj-$+K z_hQUEe%+tIc|>)jc#o5ubOD1orMhlH?xiaGuj+6L3loN^K6XjmYTv zct9Hw82B`BY5enqJzoZH?fC|9l=U6p%{_;THey%LHI}TZJ9{p{{CqzoBdVSSW>tOO zGc7Qy%G@h0a70zJUe{PgRK@oihx0+bCIH7ko>k@S^$s)__4)v~xfjLV%lH`MbBu2@ ze#>a-O*#?1XQ(5p+A?-$9LhMJ(aE@!@oL7~d++xeQFVy%6~@niSyk119@vLM?Toz` zQyDK}oWXbn<3?as)y_VY`@?;>ri^c~6)0(cWa-zoEE>X7rn(Y9g0$WZ&;#VD^2|mBA1Z< zTY;_mlV(@OzWvE^hB1x>YGN{<&thEIpVHaLsE>|q{hve%Z})!*c)@^^z>5Za4qQLr zC*Vs1yse4|O$-LMO^g8cPHYMsn%ELJF0n0eYGMpf8JGa{yl#Fxv^qGa>MO?6z&7Hi zq3bb@OljYT=;v)jK$=%*8xfU8*4Ucy-3#fwBhE?FH`FzIB&0P9&8h0k`1H_bh^1>L zbF2#?ZzG1M9Y?I3wEbRf#AL`_eY7|&J=7{Tq-6oguds^i(+F<^wh~{YEf3YicR1IC zI*eK`V%XJ2z5_F(!g8vHGv+Yf+><01@%co?&w@zOq*YXytF)6d9}mc>ax%_hJa8dN zF6Z;iWIA8W=krtOd_A9E$9OyA!;D85pJ9B9@f${S7R3q$x^irp^$vUwJ7Z_Y(?KNZ z#pgpAQ(C2@kCIseGC8QCK%_2NKlyD-S_v6rMICtxhV;#behZ24TbcHr))f_G0 z%pxpjyqqxwa<`5bdT??t8SRX*jPZ;;82dBYT9M`p94mz-Lm9IezZy!RKNTe4Fu0M$^TV zOCV!2#u&z)jA@MH7^gE{&bXTK2F5!WA7*@-@h!%$7)_UOi!ruk?8TVMIF@k+<6_1w zjJGi!WIWDzit&3!p9z#^6UJD^0gR&=r!tl@E(PkNBSG9W;f2UJF>)x)_CdL)BCVoL z?x(`lP^FY^}@J8OJki5(IG2_=j zSLly0afCs+*vx-|t(+tBxz8t>R;cx0U>*l{o*wLFhAS z3y{1Ws|cP%`gX?tjM>G`oHR9kdLi&lIXx@DysRri|^UP^dolzEJQ$Q}|#7WDoip z!jY-ehR3H)ZKjEnQ>pd7oB9eQ>NF=Lo-=m9v{#Uh-tu%;;+lKcPD_J-MRFHDF^$S_ zd>Z9T@)1?v;e14urI4@*V<*M|jG2YB@-v>#r{g?Mlo!&<&w|1=mN>Bn@;Gq=&?@dO zq*amo8IJ(7s*X*cfwh`f8Ba2P&iErRPDB^ceNF!&z9KLVXB^EqfiQ4N5$=Pq;<2rH zPE}>mO~3_=OBq)(ZeZNPcrD{L## zBJVNENtnQx<|KJ80^`KfjBhf2&FDLWmPi=ONj@htibZ7e!HYLx47$-OdMw`1#wvy{zPinbs?Qda&Hut!jl10uRV^4_!`;D% zs=y_LHej5HT|)O_y@6ISgmJ_Yn*Vc`jI>)tA#|)_<`SA)<}dd=ZE~tcTrmPThS9+|i?NDvJ>%7k*D>D6xQlTg z3MGyKb=#dYA%a<2I^X}zz{;w6saen8Dx7&@VdSM0K1;5Mq9Z(ToSJDjD_sVMM zTzn<956wpK&3x~<(hiAR-zpwmNps85m2aTe%&RDFlU1WSD8jyK zJTPGur9605F3!_eO#|kvDgz!^O}+3np(u z>j~%cc{$EqIt$j1f_y1s?6^^eyh*F^kgr-lK6XS^)<&}Di-C$L+eqVL?nYVxvaUlO3+!#noBoQpZOdlFx_=9;?H}5*4d=&MPWr*3-JQq7f|c9v z>=z%b*!PT$4;DAi8J-psWyi||`9x}_xM)@var$uS!}&siMtnspFz zd{bwZkF4p~hx>s?m@2-LVSz#Em{sUc<9Im+JFIjK8qa%qDeSP46O1+^3f=^@ax`^3guwO)wn8xg|@=UOo5-duk=F7p2lu+>kv(@4~ zEY^gJk0tv&I82EU)sp=f+(d~Kfh{SA)gmy&rbLO(t#sA|ELx)g7PD(T3djYY< zqH{=s(pY35c`>}6}>~oD{aNAl4XFk6DOtSB_WfP z4&n>RrXjx=5z&^?TrFmWOjlw>M`nw~Gr?s_CozQC2C%tGXVKM8nhTKMGNr3XX0}0G z8L~!65O=quu(e`s$Y!O7IM$xn2C*w-o6<)#?x2S~5^}53Pt1(b!yXB_TS*ifnXN?* z_bLO$4kPR#B}qI=Tegwrv50w>MlE4--TP+g9E>uT}?ULn$WvHXYgap#uASNShj9AQU zt(X<|kTO=RkZcjyIPtJ#>%hi~?WK8*w4jM1 zW&knWu3fw74+gvwmW~|;`rpBT&%(-8gL#Yaxo#HFD14qe$pT!SMT3 zr@@Ydr;8aLY`f}aFNPmbFEzs6ME%_C!|;P1?91@y)tQE-0Gnm7@4{bI%MJE3(wuED zE#jmH3yk<&ooj?OkN952D-!&7(7Qu~rp-54LWIAz*kA)ABDG}(8y3-8TWPQ{5uLO( z2AdSoOWR1j1PHnHjsu6FW!K{%hw0jNK8ti_9 zb&cGkVH+|39rR9$+^-!lSZ3rC+7W|Ik9c5aMKBc9gJ*lddpx>MYc7)W3c0> z(Yppa5!uP~zQI0->|^@GV4p`On?5tx_mLw^-x$mk^?~-C!5T%4GktHcCQ${ZpAFVN zYA*KH>GYs?|ER?#xNZDLY!!Czx!B04t@J2PhUG_HZ^Ff0va+a~On9^<+0v-prVxW| zMZ8dh-4V6dgryFt`DoOArf`G35Ou&5VX*h34x6x8A~nB^I%>kAiDcDL&zo?YFPU$X zS4_tnD_n_R2*HQ4txSfl7p zUhc54={?&pum1eLzqZg^e40a%Tj+dJ~8{OPA+z2}vy}&Ee#R5J-yc`$v{waEu zmz#Mv-Rw2S2#aXC&1<~DS~cC}b&0{^!6q0isp%fCT&4Q}>ZJFT;Y|;y6O}>C=80Tp z4rYfCwijXLIulNW1$pk3bq2{PrnwIDG`H+ z(Y5%1rA&E_nO=tq^=_LA=y!8mZ6lxTFd*)LM8iwS!>DsY@7qLgT7=- z^OdbSQ^_ltuh`S{a*|iFK7FXFmw_K?_CBw+mS*a`?uBS;J%Q|I~ zWaP1|Qw~W+e$P53aD=W&9?N>=XJ%`~?Y8^9HYnwpdKmdH8lg}KCqi2MVELC)ZZO5? zdgTbS)wsWE7cSnGV-1tQyO2ahmpVZ zq;d*xqf(mWOFg3un4mNAo}O2hN=Dw(apeoi$a{KODa_S1$$NTDc}+6%o=zxVNJie% zn@ZP-x+Zx~Z!1G2Bk$>?@_=OIJ-x4dBN=&5raA1TR_k@xh8QYaaDPoF89 zBqQ(X3#CWC9*_K`ACzY#BY){9s0rj69@)>Wz|- zhm@r5lZ-s16!l@r$U_>ez91QSNU7=@l97irRDEAE@{oq9Ur0tCQo0&Fl}bHN^ly>i zGhCg(?4U~i(g-zWnqDLFm$KAxl94|+Qq7l)yr&%Xlw{;RjZyOpDc))^y2Vk;Md~5R z3YoQ@u7_1JTgdF7N`BTw>M6;{&&pMki}c*d&&pGW@J$%5c<`kh>UENlpEXGxQmku| zpEX6Tl#KkW0`)4%$j>TJua}JctO9i>v$bM%i#|Tn)cwp>iyK-b`%G7VmYU>)6{#~y z^c=_so1wlV8Tnwv>Q9o94_2y%lt;`OpFkbw>W+N_DAZDm_1%uWwUB=IM;)@;lWj zlF=NpSAAVFns@i9w)wgy%{KR{LnNcQ^?r4RWHh%vsBV&s=GFu1!;;Y`enfr46%S+c zQS~#)Xv7^-y%taoRND%l!)h;Px)=MDn#xSC`%~%^$;bnIN_~piA@*XAs+5KhhrP5` z%Y2TiKkJ%E^JwFz)sTf0wn4xY2#Pa z7nm&;Z+H3@?;?Ybr`Iv-+Sr|gDvy8j%>r-{p6%=o+c)fEUzt7aynavaL zbv~eeuG*JT*gSEXSvj)>!aI(_)=3r`m*n@kx@$RUE)Z?vQo+OuVuuBJ+h3^NbY_W< zOBY|L$&w|-4FcODSyo)R`lY%Ng({JvIS zWwu!Ci<<~`N@teG;--LoFWK?9WjS+$|vfA%E)hgMSxxx z*H9R-<9^;+7_$Z9D01-Dnln2r-sn;e)>&%4(dBh$&Xr-Gb~)*1(N@T?PrG~oc1p7E z(0@MK_XhjS&qq77mhw9+K15g}?J1pEe(Lg#UnA{R$pYhl1p8333*r~4jkVK~^^V^Q z)_5JI^1d=6{-mFu7R5}T75%g}%=Gc#r*$$|M{JGGW~N)RzgEgjw`6~9mt;rdyZHxb zFH81T{B|{1!|UAmJ0#wUALt*V#Y*-iSg4jDnNQcj{$bh-X7fbXuEYGpwb{%TThh9Y z^pDh5NH)G}N3g4PCJMWb^N-SQH`oNQMi`ITN*aWb^4OGs< zmOHvm@^7j&lk8yELa!{%y3zn~CYY*;Wf-wvgw#wpuhZx+3gV+iD$jP0Jezi&VQ7FWE;4 zd%^k`nxFf(({c^=y??B>SZc;}pQpxYD<$jQ{oBTI+D6GP?5+fK(f%dbnC@nZSo*wfAM%x82i4ckMIDOg-8Jbl1L< zEWAetFlqzOf#2aRWbq$&pkYTW#pvr(z2BUbn zS~cfR*N3eEd0MM2ls{b?Zwi>Kb!4{KvZ6=2n5HE#TVUDTV-Q$>8Fo{TI|B-}!IC}D z;~uaK$)4+R(yve(CD|!vm*|Z9woof%My>Qd;(6A+)F@}ypkD%J8Z0Ns6j*LBdKNiX zdjP4}#A?f{eeVdY)Sj2@6xe0jN6h9~?(Tmq@N!MNnl$HG9tW$^q9yyL|LcMCv~H3$ z8t{7Hd@WtFt^-a5F3=`RHW+N7RwY^CfNug9X`3ax9Bi?+N3v}LgmsDbq-1-+mTK=x zc4|Ol>lNBBlKldn7O&gssp9Np?Ij z&U&Sm17^d_;5V?hb*1K%tSQ)4+EUik$Ji=uwZR67Rod0es2>JeS8J~`n2>dM;_YEvp zw`(JqEf7x+oM+vx&5-P!fmc{>)>cT(uc3L1wqG)@q^qpAXzRA=se~qN0<&$`S?i>7 zb(c0$vhGROTX$(oB^#P_i}iNxWy!RN-PYZj`9?jS7IB|-kJd}Fz=+4Jd$q}uIg&>E z+@q~yMt;`Q)_q#Dn<(B|u_)<9>wc{rv(;elSnt;cNOpD7SJngC_mb^R`ri78w(e$% zH%~m7qy;^yP2NFF_ahH#<;?Ue-a%~>GyRHpP>a4r*QBfHAuWd42Ju>wf6yUq2(ty^ z{iNWae``yatrp)TH4A!7TPedrlUsvrV76FvOl}Xh-(X#X9@kzqSnr@Gw9gE-(CE@+A9?2i9%ZpL{@J(eZg%$tvgsk61VbP|AT$X*ga9FcQW8J~42V=wNvT1bpCqSPd04Dml&h zff`LzVV#_u4xeCdAm}-;`GJ~2RKQ+N?px)EI+*AH+nU_Xc|;v4bZ;m31S%BtadJQB zQS}8$SE{dod zQ3C9QFuQhRLRy8i9gIKNb_8<8s5^!D4G z=hW14qyjdw<{syHHDVJ|30u(qpz|wrnxN(Fk2^1^JBW(e`|ZDU{!@L6sDR;F!uRTB zK`X0&|M)9P28KdX5}CG4B_H`onz zxu6^EYkK{no*^nmo%5zTd@IJwWok;k@|$`>kYCE5&fnA?+fY}*HbI}brCxp$3GQ;F z3^8u0zj3m*OvwhF*IT5sc2C&_6euVQbib=L1&smS?`k7Kd7%44Z6{~}=>AY260{0* zf2#cjZ3o?->L@|)fsSdD1$_oOrp*!bEtJ8eEfvH%Yz0~?$iIWtN71$mis)bfRS1gf z;Nzoe#{?yH2m?AVD7`~E)3mFC26jjRqOaM5(J>Bmx>n@?FZ*=R=~}2DJdrnR?T9L@ zMG(@gbrU*#17Oz1aiV7~v$kC5@O^+;dsFD}&4F3_M(FUZf1TKYJ()!#PVD9R9gkLP zt4$O198f#$sGt`*o~o9t)u*ch1=fu~?X_uw_IJEgEk!#c=nzl`t-gjfbJ=GdH~6G# zrv&}8<2Ij;+8VlIkjwt)c)+Kt*3`^XH#%Lb)d?wl8(_iTDnMCy+AZeh}@Xe|eZ;;d_I=A^e zA*q+s&v%5RfzFz~V=KiQCv}O=13uZ3dO7R*PL_nv0eO|;hR9jL47_nnp{sfOP*ZKkBX$}d{6q!jiGr3W*nJ~}Pl@1~?r0#eu?l13%(RsNJT zF|C!Ko2I6v_$m5IvRT4Lr#$@G8mlD_+S8>|(esmS7gyGKEu4m9yq!KnU?I}OI zenrsKv>d-G`VRQ)4#wM=Ho)6kzb5GYv?qY@)6ldUrp@qk>Uo^#Mx?L4oe0am(9c&t zLByXT{q?UUr7(Z}7ouDi-6e$u=slchv%q=|Zbby@69m=kvI}Ujpypjx`UUBy1f_O) z3FwNTo?Y_cTgANbi)p~h&@Nknq6JL_U3I;^pxL0Su4f2Z1iBDCN6<^43(@BY!d-f( zzDdwl$Y-d&PtbubaAKxk6m$r5Vfr;e$3PdZ2h(M)0_z#jh3m0`a5oyErwhW}XoQ|6 z2zR5A`Yb`X8;#Ug3c}rJlwKhSccW4IDM7d!t)VM)U97;0yU`kYpdj3hM(ZsF;chfq z?;+?ils!ftE9eH4Jw`7Sq@?F7HTAWEeABlA?G{uMbPwoX2x87f2dWoQ?(+Bv(>1zZ{hj_Jh{H!0gZ3)Dyt)CIJ zDm`1NqnqhET!FPbeHT!Opgo|A*V_s@0=jrTL(mz})zzm6`W|$3^#y`%rN8D^Pd_cF zYS+y`*91j%-Q`zbZ%G&K3akyg?gQ!}D7kAoOVDQtdZcR#&|*R3K-WP3K+sIkHPBB9 zTHf^?zlM4QUE3?LuIqXjC{fVvuF=j!JzLQ6uE+cm^*Ms#I(+WeNIxzpsl!>I%YyK! zps|jh^29pBr-H_Mgdlt>XriYG!l!~JdJjQYy5=iQ^|69jx2-^hf~s}PSDNW-1=R#y zGkv$9q;Bc#LH(Sd^lm9YR|MgcO>@01T|_Lf;*(8tJws4`u$iRi2zm-^Ch2noO#@vE z{WU@JK-WUwCujxeTIy#7m4mLOeofE;(6!S2;B$~z_T!*yrN)~{H^P(xS=S2U9^aqJ}8G7h#D^YhzF-8x4q@+-zr#?$kExotCSW>Qk zrv45QKPT#^Un1h?ME&#y5xjOM^eps$ME^t3ETBjAK)Og;!k+KB!2dD5J5ho4jh@T> z`|Cpm9ReDl=Mf!Xr+cpPAE<8;bh+mS|Ht)nBIM1UeXC^Y*9F;o#TZ$-7R6H!?bWx+ zAU!}(Jy03#0119Jz;ge|??}wmf0TcDbbP>3MWo5LjGEKiM=$D{&0lE6Bx;*5V zj7|a5^+Ncp6UG}K)IDH^-l{%Q0h^l9D@5?4y$t)K}3v-BN;)()l7D`4Az=I9xM zDuCwdYXp4^RHXkxRKdNi)n|pWNslI~upaD_4OE8+ z_ojP+h7c9APy5sf+@$9TI^U;3;1>NvI_9jH?tgC81G{qiwNJ~yZF&X~-mpn$JM=Ol zUK2a?wM6_xeuut;h|e!O^iKuh&5j-VB_e*aW2YY24O4(!Q2)b0JN24^mI3Y36NxI| zG`pMgb-j(C4gF6By{@MVI?#Wl@w(nu&?o&*gKmhRpZcE%8Y^f!+=F;spH9Tv;dOl# zQ3>k_pMH8>-^X?AaU#|ob9UA=ZNQIUWeZVm>-7W98@u&>5222~qus5Kk`x-eTYrg& z*Tg=3D-o}WeflvXe)oKzKL25~!fRr`zK^KDnli9f@P7RRB0OiP3-qa=s{x6@Z|YwP z${5%p_-*}?Dg8nB;Rhvz6->{!QanGYOLW?+2T1DW zbXE_Rgl9A1=C3?T8)5!IQepK7v$a3g%K=mLb({4j6z|D!iU~e1G-&=5Rr|kG}&HD`*Mm63q1ly$repa}p

a#X6r;E>#RXrl||WO5<;Z9Ak;jF(E4@ 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≤vI`0 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 Q%6IgkhNL@J3AV@n57;o?5dZ)H literal 0 HcmV?d00001 diff --git a/dll/System.Data.SQLite.xml b/dll/System.Data.SQLite.xml new file mode 100644 index 0000000..df1d4c1 --- /dev/null +++ b/dll/System.Data.SQLite.xml @@ -0,0 +1,21649 @@ + + + + System.Data.SQLite + + + +

+ Defines a source code identifier custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code identifier value. + + + The source code identifier value to use. + + + + + Gets the source code identifier value. + + + + + Defines a source code time-stamp custom attribute for an assembly + manifest. + + + + + Constructs an instance of this attribute class using the specified + source code time-stamp value. + + + The source code time-stamp value to use. + + + + + Gets the source code time-stamp value. + + + + + This is the method signature for the SQLite core library logging callback + function for use with sqlite3_log() and the SQLITE_CONFIG_LOG. + + WARNING: This delegate is used more-or-less directly by native code, do + not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET + + + + + This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement + a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. + + + + + This base class provides datatype conversion services for the SQLite provider. + + + + + This character is used to escape other characters, including itself, in + connection string property names and values. + + + + + This character can be used to wrap connection string property names and + values. Normally, it is optional; however, when used, it must be the + first -AND- last character of that connection string property name -OR- + value. + + + + + This character can be used to wrap connection string property names and + values. Normally, it is optional; however, when used, it must be the + first -AND- last character of that connection string property name -OR- + value. + + + + + The character is used to separate the name and value for a connection + string property. This character cannot be present in any connection + string property name. This character can be present in a connection + string property value; however, this should be avoided unless deemed + absolutely necessary. + + + + + This character is used to separate connection string properties. When + the "No_SQLiteConnectionNewParser" setting is enabled, this character + may not appear in connection string property names -OR- values. + + + + + The fallback default database type when one cannot be obtained from an + existing connection instance. + + + + + The format string for DateTime values when using the InvariantCulture or CurrentCulture formats. + + + + + These are the characters that are special to the connection string + parser. + + + + + The fallback default database type name when one cannot be obtained from + an existing connection instance. + + + + + The value for the Unix epoch (e.g. January 1, 1970 at midnight, in UTC). + + + + + The value of the OLE Automation epoch represented as a Julian day. This + field cannot be removed as the test suite relies upon it. + + + + + This is the minimum Julian Day value supported by this library + (148731163200000). + + + + + This is the maximum Julian Day value supported by this library + (464269060799000). + + + + + An array of ISO-8601 DateTime formats that we support parsing. + + + + + The internal default format for UTC DateTime values when converting + to a string. + + + + + The internal default format for local DateTime values when converting + to a string. + + + + + An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 + + + + + The default DateTime format for this instance. + + + + + The default DateTimeKind for this instance. + + + + + The default DateTime format string for this instance. + + + + + Initializes the conversion class + + The default date/time format to use for this instance + The DateTimeKind to use. + The DateTime format string to use. + + + + Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. + + The string to convert to UTF-8 + A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. + + + + Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. + + + This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the + string result. + + The DateTime to convert. + The UTF-8 encoded string, including a 0 terminating byte at the end of the array. + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Converts a UTF-8 encoded IntPtr of the specified length into a .NET string + + The pointer to the memory where the UTF-8 string is encoded + The number of bytes to decode + A string containing the translated character(s) + + + + Checks if the specified is within the + supported range for a Julian Day value. + + + The Julian Day value to check. + + + Non-zero if the specified Julian Day value is in the supported + range; otherwise, zero. + + + + + Converts a Julian Day value from a to an + . + + + The Julian Day value to convert. + + + The resulting Julian Day value. + + + + + Converts a Julian Day value from an to a + . + + + The Julian Day value to convert. + + + The resulting Julian Day value. + + + + + Converts a Julian Day value to a . + This method was translated from the "computeYMD" function in the + "date.c" file belonging to the SQLite core library. + + + The Julian Day value to convert. + + + The value to return in the event that the + Julian Day is out of the supported range. If this value is null, + an exception will be thrown instead. + + + A value that contains the year, month, and + day values that are closest to the specified Julian Day value. + + + + + Converts a Julian Day value to a . + This method was translated from the "computeHMS" function in the + "date.c" file belonging to the SQLite core library. + + + The Julian Day value to convert. + + + The value to return in the event that the + Julian Day value is out of the supported range. If this value is + null, an exception will be thrown instead. + + + A value that contains the hour, minute, and + second, and millisecond values that are closest to the specified + Julian Day value. + + + + + Converts a to a Julian Day value. + This method was translated from the "computeJD" function in + the "date.c" file belonging to the SQLite core library. + Since the range of Julian Day values supported by this method + includes all possible (valid) values of a + value, it should be extremely difficult for this method to + raise an exception or return an undefined result. + + + The value to convert. This value + will be within the range of + (00:00:00.0000000, January 1, 0001) to + (23:59:59.9999999, December + 31, 9999). + + + The nearest Julian Day value corresponding to the specified + value. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + A DateTime value + + + + Converts a string into a DateTime, using the specified DateTimeFormat, + DateTimeKind and DateTimeFormatString. + + + Acceptable ISO8601 DateTime formats are: + + THHmmssK + THHmmK + HH:mm:ss.FFFFFFFK + HH:mm:ssK + HH:mmK + yyyy-MM-dd HH:mm:ss.FFFFFFFK + yyyy-MM-dd HH:mm:ssK + yyyy-MM-dd HH:mmK + yyyy-MM-ddTHH:mm:ss.FFFFFFFK + yyyy-MM-ddTHH:mmK + yyyy-MM-ddTHH:mm:ssK + yyyyMMddHHmmssK + yyyyMMddHHmmK + yyyyMMddTHHmmssFFFFFFFK + THHmmss + THHmm + HH:mm:ss.FFFFFFF + HH:mm:ss + HH:mm + yyyy-MM-dd HH:mm:ss.FFFFFFF + yyyy-MM-dd HH:mm:ss + yyyy-MM-dd HH:mm + yyyy-MM-ddTHH:mm:ss.FFFFFFF + yyyy-MM-ddTHH:mm + yyyy-MM-ddTHH:mm:ss + yyyyMMddHHmmss + yyyyMMddHHmm + yyyyMMddTHHmmssFFFFFFF + yyyy-MM-dd + yyyyMMdd + yy-MM-dd + + If the string cannot be matched to one of the above formats -OR- + the DateTimeFormatString if one was provided, an exception will + be thrown. + + The string containing either a long integer number of 100-nanosecond units since + System.DateTime.MinValue, a Julian day double, an integer number of seconds since the Unix epoch, a + culture-independent formatted date and time string, a formatted date and time string in the current + culture, or an ISO8601-format string. + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + A DateTime value + + + + Converts a julianday value into a DateTime + + The value to convert + A .NET DateTime + + + + Converts a julianday value into a DateTime + + The value to convert + The DateTimeKind to use. + A .NET DateTime + + + + Converts the specified number of seconds from the Unix epoch into a + value. + + + The number of whole seconds since the Unix epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts the specified number of ticks since the epoch into a + value. + + + The number of whole ticks since the epoch. + + + Either Utc or Local time. + + + The new value. + + + + + Converts a DateTime struct to a JulianDay double + + The DateTime to convert + The JulianDay value the Datetime represents + + + + Converts a DateTime struct to the whole number of seconds since the + Unix epoch. + + The DateTime to convert + The whole number of seconds since the Unix epoch + + + + Returns the DateTime format string to use for the specified DateTimeKind. + If is not null, it will be returned verbatim. + + The DateTimeKind to use. + The DateTime format string to use. + + The DateTime format string to use for the specified DateTimeKind. + + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Converts a string into a DateTime, using the DateTimeFormat, DateTimeKind, + and DateTimeFormatString specified for the connection when it was opened. + + The DateTime value to convert + The SQLiteDateFormats to use. + The DateTimeKind to use. + The DateTime format string to use. + Either a string containing the long integer number of 100-nanosecond units since System.DateTime.MinValue, a + Julian day double, an integer number of seconds since the Unix epoch, a culture-independent formatted date and time + string, a formatted date and time string in the current culture, or an ISO8601-format date/time string. + + + + Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. + + + This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls + ToDateTime() on the string to return a DateTime. + + A pointer to the UTF-8 encoded string + The length in bytes of the string + The parsed DateTime value + + + + Smart method of splitting a string. Skips quoted elements, removes the quotes. + + + This split function works somewhat like the String.Split() function in that it breaks apart a string into + pieces and returns the pieces as an array. The primary differences are: + + Only one character can be provided as a separator character + Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. + + Thus, if splitting the following string looking for a comma:
+ One,Two, "Three, Four", Five
+
+ The resulting array would contain
+ [0] One
+ [1] Two
+ [2] Three, Four
+ [3] Five
+
+ Note that the leading and trailing spaces were removed from each item during the split. +
+ Source string to split apart + Separator character + A string array of the split up elements +
+ + + Splits the specified string into multiple strings based on a separator + and returns the result as an array of strings. + + + The string to split into pieces based on the separator character. If + this string is null, null will always be returned. If this string is + empty, an array of zero strings will always be returned. + + + The character used to divide the original string into sub-strings. + This character cannot be a backslash or a double-quote; otherwise, no + work will be performed and null will be returned. + + + If this parameter is non-zero, all double-quote characters will be + retained in the returned list of strings; otherwise, they will be + dropped. + + + Upon failure, this parameter will be modified to contain an appropriate + error message. + + + The new array of strings or null if the input string is null -OR- the + separator character is a backslash or a double-quote -OR- the string + contains an unbalanced backslash or double-quote character. + + + + + Queries and returns the string representation for an object, using the + specified (or current) format provider. + + + The object instance to return the string representation for. + + + The format provider to use -OR- null if the current format provider for + the thread should be used instead. + + + The string representation for the object instance -OR- null if the + object instance is also null. + + + + + Attempts to convert an arbitrary object to the Boolean data type. + Null object values are converted to false. Throws an exception + upon failure. + + + The object value to convert. + + + The format provider to use. + + + If non-zero, a string value will be converted using the + + method; otherwise, the + method will be used. + + + The converted boolean value. + + + + + Convert a value to true or false. + + A string or number representing true or false + + + + + Converts an integer to a string that can be round-tripped using the + invariant culture. + + + The integer value to return the string representation for. + + + The string representation of the specified integer value, using the + invariant culture. + + + + + Attempts to convert a into a . + + + The to convert, cannot be null. + + + The converted value. + + + The supported strings are "yes", "no", "y", "n", "on", "off", "0", "1", + as well as any prefix of the strings + and . All strings are treated in a + case-insensitive manner. + + + + + Converts a SQLiteType to a .NET Type object + + The SQLiteType to convert + Returns a .NET Type object + + + + For a given intrinsic type, return a DbType + + The native type to convert + The corresponding (closest match) DbType + + + + Returns the ColumnSize for the given DbType + + The DbType to get the size of + + + + + Determines the default database type name to be used when a + per-connection value is not available. + + + The connection context for type mappings, if any. + + + The default database type name to use. + + + + + If applicable, issues a trace log message warning about falling back to + the default database type name. + + + The database value type. + + + The flags associated with the parent connection object. + + + The textual name of the database type. + + + + + If applicable, issues a trace log message warning about falling back to + the default database value type. + + + The textual name of the database type. + + + The flags associated with the parent connection object. + + + The database value type. + + + + + For a given database value type, return the "closest-match" textual database type name. + + The connection context for custom type mappings, if any. + The database value type. + The flags associated with the parent connection object. + The type name or an empty string if it cannot be determined. + + + + Convert a DbType to a Type + + The DbType to convert from + The closest-match .NET type + + + + For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. + + The type to evaluate + The flags associated with the connection. + The SQLite type affinity for that type. + + + + Builds and returns a map containing the database column types + recognized by this provider. + + + A map containing the database column types recognized by this + provider. + + + + + Determines if a database type is considered to be a string. + + + The database type to check. + + + Non-zero if the database type is considered to be a string, zero + otherwise. + + + + + Determines and returns the runtime configuration setting string that + should be used in place of the specified object value. + + + The object value to convert to a string. + + + Either the string to use in place of the object value -OR- null if it + cannot be determined. + + + + + Determines the default value to be used when a + per-connection value is not available. + + + The connection context for type mappings, if any. + + + The default value to use. + + + + + Converts the object value, which is assumed to have originated + from a , to a string value. + + + The value to be converted to a string. + + + A null value will be returned if the original value is null -OR- + the original value is . Otherwise, + the original value will be converted to a string, using its + (possibly overridden) method and + then returned. + + + + + Determines if the specified textual value appears to be a + value. + + + The textual value to inspect. + + + Non-zero if the text looks like a value, + zero otherwise. + + + + + Determines if the specified textual value appears to be an + value. + + + The textual value to inspect. + + + Non-zero if the text looks like an value, + zero otherwise. + + + + + Determines if the specified textual value appears to be a + value. + + + The textual value to inspect. + + + Non-zero if the text looks like a value, + zero otherwise. + + + + + Determines if the specified textual value appears to be a + value. + + + The object instance configured with + the chosen format. + + + The textual value to inspect. + + + Non-zero if the text looks like a in the + configured format, zero otherwise. + + + + + For a given textual database type name, return the "closest-match" database type. + This method is called during query result processing; therefore, its performance + is critical. + + The connection context for custom type mappings, if any. + The textual name of the database type to match. + The flags associated with the parent connection object. + The .NET DBType the text evaluates to. + + + + The error code used for logging exceptions caught in user-provided + code. + + + + + Returns non-zero if this connection to the database is read-only. + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Shutdown the SQLite engine so that it can be restarted with different config options. + We depend on auto initialization to recover. + + + + + Determines if the associated native connection handle is open. + + + Non-zero if a database connection is open. + + + + + Returns the fully qualified path and file name for the currently open + database, if any. + + + The name of the attached database to query. + + + The fully qualified path and file name for the currently open database, + if any. + + + + + Opens a database. + + + Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection + to bind all attributed user-defined functions and collating sequences to the new connection. + + The filename of the database to open. SQLite automatically creates it if it doesn't exist. + The name of the VFS to use -OR- null to use the default VFS. + The flags associated with the parent connection object + The open flags to use when creating the connection + The maximum size of the pool for the given filename + If true, the connection can be pulled from the connection pool + + + + Closes the currently-open database. + + + After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated + memory associated with the user-defined functions and collating sequences tied to the closed connection. + + Non-zero if connection is being disposed, zero otherwise. + + + + Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. + + The number of milliseconds to wait before returning SQLITE_BUSY + + + + Returns the text of the last error issued by SQLite + + + + + + Returns the text of the last error issued by SQLite -OR- the specified default error text if + none is available from the SQLite core library. + + + The error text to return in the event that one is not available from the SQLite core library. + + + The error text. + + + + + When pooling is enabled, force this connection to be disposed rather than returned to the pool + + + + + When pooling is enabled, returns the number of pool entries matching the current file name. + + The number of pool entries matching the current file name. + + + + Prepares a SQL statement for execution. + + The source connection preparing the command. Can be null for any caller except LINQ + The SQL command text to prepare + The previous statement in a multi-statement command, or null if no previous statement exists + The timeout to wait before aborting the prepare + The remainder of the statement that was not processed. Each call to prepare parses the + SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned + here for a subsequent call to Prepare() until all the text has been processed. + Returns an initialized SQLiteStatement. + + + + Steps through a prepared statement. + + The SQLiteStatement to step through + True if a row was returned, False if not. + + + + Returns non-zero if the specified statement is read-only in nature. + + The statement to check. + True if the outer query is read-only. + + + + Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, + transparently attempt to rebuild the SQL statement and throw an error if that was not possible. + + The statement to reset + Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + This function unbinds a user-defined function from the connection. + + + The object instance containing + the metadata for the function to be unbound. + + + The flags associated with the parent connection object. + + Non-zero if the function was unbound. + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Returns the current and/or highwater values for the specified database status parameter. + + + The database status parameter to query. + + + Non-zero to reset the highwater value to the current value. + + + If applicable, receives the current value. + + + If applicable, receives the highwater value. + + + A standard SQLite return code. + + + + + Change a limit value for the database. + + + The database limit to change. + + + The new value for the specified limit. + + + The old value for the specified limit -OR- negative one if an error + occurs. + + + + + Change a configuration option value for the database. + + + The database configuration option to change. + + + The new value for the specified configuration option. + + + A standard SQLite return code. + + + + + Enables or disables extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Enables or disables extened result codes returned by SQLite + + true to enable extended result codes, false to disable. + + + + + Returns the numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Result code + + + + Returns the extended numeric result code for the most recent failed SQLite API call + associated with the database connection. + + Extended result code + + + + Add a log message via the SQLite sqlite3_log interface. + + Error code to be logged with the message. + String to be logged. Unlike the SQLite sqlite3_log() + interface, this should be pre-formatted. Consider using the + String.Format() function. + + + + + Checks if the SQLite core library has been initialized in the current process. + + + Non-zero if the SQLite core library has been initialized in the current process, + zero otherwise. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy or negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Returns the error message for the specified SQLite return code using + the internal static lookup table. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns a string representing the active version of SQLite + + + + + Returns an integer representing the active version of SQLite + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of changes the last executing insert/update caused. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. This is not really a per-connection + value, it is global to the process. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + This is not really a per-connection value, it is global to the process. + + + + + Returns non-zero if the underlying native connection handle is owned by this instance. + + + + + Returns the logical list of functions associated with this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + This field is used to refer to memory allocated for the + SQLITE_DBCONFIG_MAINDBNAME value used with the native + "sqlite3_db_config" API. If allocated, the associated + memeory will be freed when the underlying connection is + closed. + + + + + The opaque pointer returned to us by the sqlite provider + + + + + The user-defined functions registered on this connection + + + + + This is the name of the native library file that contains the + "vtshim" extension [wrapper]. + + + + + This is the flag indicate whether the native library file that + contains the "vtshim" extension must be dynamically loaded by + this class prior to use. + + + + + This is the name of the native entry point for the "vtshim" + extension [wrapper]. + + + + + The modules created using this connection. + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + This method attempts to dispose of all the derived + object instances currently associated with the native database connection. + + + + + Returns the number of times the method has been + called. + + + + + This method determines whether or not a + with a return code of should + be thrown after making a call into the SQLite core library. + + + Non-zero if a to be thrown. This method + will only return non-zero if the method was called + one or more times during a call into the SQLite core library (e.g. when + the sqlite3_prepare*() or sqlite3_step() APIs are used). + + + + + Resets the value of the field. + + + + + Attempts to interrupt the query currently executing on the associated + native database connection. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + This function binds a user-defined function to the connection. + + + The object instance containing + the metadata for the function to be unbound. + + + The flags associated with the parent connection object. + + Non-zero if the function was unbound and removed. + + + + Attempts to free as much heap memory as possible for the database connection. + + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + Returns a standard SQLite result code. + + + + Shutdown the SQLite engine so that it can be restarted with different + configuration options. We depend on auto initialization to recover. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. This parameter has no + effect on non-Windows operating systems. + + Returns a standard SQLite result code. + + + + Determines if the associated native connection handle is open. + + + Non-zero if the associated native connection handle is open. + + + + + Returns the fully qualified path and file name for the currently open + database, if any. + + + The name of the attached database to query. + + + The fully qualified path and file name for the currently open database, + if any. + + + + + This method attempts to determine if a database connection opened + with the specified should be + allowed into the connection pool. + + + The that were specified when the + connection was opened. + + + Non-zero if the connection should (eventually) be allowed into the + connection pool; otherwise, zero. + + + + + Has the sqlite3_errstr() core library API been checked for yet? + If so, is it present? + + + + + Returns the error message for the specified SQLite return code using + the sqlite3_errstr() function, falling back to the internal lookup + table if necessary. + + WARNING: Do not remove this method, it is used via reflection. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Has the sqlite3_stmt_readonly() core library API been checked for yet? + If so, is it present? + + + + + Returns non-zero if the specified statement is read-only in nature. + + The statement to check. + True if the outer query is read-only. + + + + This field is used to keep track of whether or not the + "SQLite_ForceLogPrepare" environment variable has been queried. If so, + it will only be non-zero if the environment variable was present. + + + + + This field is used to keep track of whether or not the + "SQLite_ForceLogLifecycle" environment variable has been queried. If + so, it will only be non-zero if the environment variable was present. + + + + + Determines if all calls to prepare a SQL query will be logged, + regardless of the flags for the associated connection. + + + Non-zero to log all calls to prepare a SQL query. + + + + + Determines if calls into key members pertaining to the lifecycle of + connections and their associated classes will be logged, regardless + of the flags for the associated connection. + + + Non-zero to log calls into key members pertaining to the lifecycle of + connections and their associated classes (e.g. LINQ, EF6, etc). + + + + + Determines the file name of the native library containing the native + "vtshim" extension -AND- whether it should be dynamically loaded by + this class. + + + This output parameter will be set to non-zero if the returned native + library file name should be dynamically loaded prior to attempting + the creation of native disposable extension modules. + + + The file name of the native library containing the native "vtshim" + extension -OR- null if it cannot be determined. + + + + + Calls the native SQLite core library in order to create a disposable + module containing the implementation of a virtual table. + + + The module object to be used when creating the native disposable module. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to cleanup the resources + associated with a module containing the implementation of a virtual table. + + + The module object previously passed to the + method. + + + The flags for the associated object instance. + + + + + Calls the native SQLite core library in order to declare a virtual table + in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + being declared. + + + The string containing the SQL statement describing the virtual table to + be declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual table + function in response to a call into the + or virtual table methods. + + + The virtual table module that is to be responsible for the virtual table + function being declared. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon failure, + it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Builds an error message string fragment containing the + defined values of the + enumeration. + + + The built string fragment. + + + + + Builds an error message string fragment containing the + defined values of the + enumeration. + + + The built string fragment. + + + + + Builds an error message string fragment containing the + defined values of the + enumeration. + + + The built string fragment. + + + + + Returns the current and/or highwater values for the specified + database status parameter. + + + The database status parameter to query. + + + Non-zero to reset the highwater value to the current value. + + + If applicable, receives the current value. + + + If applicable, receives the highwater value. + + + A standard SQLite return code. + + + + + Change a limit value for the database. + + + The database limit to change. + + + The new value for the specified limit. + + + The old value for the specified limit -OR- negative one if an error + occurs. + + + + + Change a configuration option value for the database. + + + The database configuration option to change. + + + The new value for the specified configuration option. + + + A standard SQLite return code. + + + + + Enables or disables extension loading by SQLite. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + Enables or disables extended result codes returned by SQLite + + + Gets the last SQLite error code + + + Gets the last SQLite extended error code + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Allows the setting of a logging callback invoked by SQLite when a + log event occurs. Only one callback may be set. If NULL is passed, + the logging callback is unregistered. + + The callback function to invoke. + Returns a result code + + + + Appends an error message and an appropriate line-ending to a + instance. This is useful because the .NET Compact Framework has a slightly different set + of supported methods for the class. + + + The instance to append to. + + + The message to append. It will be followed by an appropriate line-ending. + + + + + This method attempts to cause the SQLite native library to invalidate + its function pointers that refer to this instance. This is necessary + to prevent calls from native code into delegates that may have been + garbage collected. Normally, these types of issues can only arise for + connections that are added to the pool; howver, it is good practice to + unconditionally invalidate function pointers that may refer to objects + being disposed. + + + Non-zero to also invalidate global function pointers (i.e. those that + are not directly associated with this connection on the native side). + + + Non-zero if this method is being executed within a context where it can + throw an exception in the event of failure; otherwise, zero. + + + Non-zero if this method was successful; otherwise, zero. + + + + + This method attempts to free the cached database name used with the + method. + + + Non-zero if this method is being executed within a context where it can + throw an exception in the event of failure; otherwise, zero. + + + Non-zero if this method was successful; otherwise, zero. + + + + + Creates a new SQLite backup object based on the provided destination + database connection. The source database connection is the one + associated with this object. The source and destination database + connections cannot be the same. + + The destination database connection. + The destination database name. + The source database name. + The newly created backup object. + + + + Copies up to N pages from the source database to the destination + database associated with the specified backup object. + + The backup object to use. + + The number of pages to copy, negative to copy all remaining pages. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True if there are more pages to be copied, false otherwise. + + + + + Returns the number of pages remaining to be copied from the source + database to the destination database associated with the specified + backup object. + + The backup object to check. + The number of pages remaining to be copied. + + + + Returns the total number of pages in the source database associated + with the specified backup object. + + The backup object to check. + The total number of pages in the source database. + + + + Destroys the backup object, rolling back any backup that may be in + progess. + + The backup object to destroy. + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Determines if the SQLite core library has been initialized for the + current process. + + + A boolean indicating whether or not the SQLite core library has been + initialized for the current process. + + + + + Helper function to retrieve a column of data from an active statement. + + The statement being step()'d through + The flags associated with the connection. + The column index to retrieve + The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. + Returns the data in the column + + + + Returns non-zero if the underlying native connection handle is owned + by this instance. + + + + + Returns the logical list of functions associated with this connection. + + + + + Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) + + + + + Constructs the object used to interact with the SQLite core library + using the UTF-8 text encoding. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + The native handle to be associated with the database connection. + + + The fully qualified file name associated with . + + + Non-zero if the newly created object instance will need to dispose + of when it is no longer needed. + + + + + Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 + + A pointer to a UTF-16 string + The length (IN BYTES) of the string + A .NET string + + + + Represents a single SQL backup in SQLite. + + + + + The underlying SQLite object this backup is bound to. + + + + + The actual backup handle. + + + + + The destination database for the backup. + + + + + The destination database name for the backup. + + + + + The source database for the backup. + + + + + The source database name for the backup. + + + + + The last result from the StepBackup method of the SQLite3 class. + This is used to determine if the call to the FinishBackup method of + the SQLite3 class should throw an exception when it receives a non-Ok + return code from the core SQLite library. + + + + + Initializes the backup. + + The base SQLite object. + The backup handle. + The destination database for the backup. + The destination database name for the backup. + The source database for the backup. + The source database name for the backup. + + + + Disposes and finalizes the backup. + + + + + + + + + + Creates temporary tables on the connection so schema information can be queried. + + + The connection upon which to build the schema tables. + + + + + The extra behavioral flags that can be applied to a connection. + + + + + No extra flags. + + + + + Enable logging of all SQL statements to be prepared. + + + + + Enable logging of all bound parameter types and raw values. + + + + + Enable logging of all bound parameter strongly typed values. + + + + + Enable logging of all exceptions caught from user-provided + managed code called from native code via delegates. + + + + + Enable logging of backup API errors. + + + + + Skip adding the extension functions provided by the native + interop assembly. + + + + + When binding parameter values with the + type, use the interop method that accepts an + value. + + + + + When binding parameter values, always bind them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + When returning column values, always return them as though they were + plain text (i.e. no numeric, date/time, or other conversions should + be attempted). + + + + + Prevent this object instance from + loading extensions. + + + + + Prevent this object instance from + creating virtual table modules. + + + + + Skip binding any functions provided by other managed assemblies when + opening the connection. + + + + + Skip setting the logging related properties of the + object instance that was passed to + the method. + + + + + Enable logging of all virtual table module errors seen by the + method. + + + + + Enable logging of certain virtual table module exceptions that cannot + be easily discovered via other means. + + + + + Enable tracing of potentially important [non-fatal] error conditions + that cannot be easily reported through other means. + + + + + When binding parameter values, always use the invariant culture when + converting their values from strings. + + + + + When binding parameter values, always use the invariant culture when + converting their values to strings. + + + + + Disable using the connection pool by default. If the "Pooling" + connection string property is specified, its value will override + this flag. The precise outcome of combining this flag with the + flag is unspecified; however, + one of the flags will be in effect. + + + + + Enable using the connection pool by default. If the "Pooling" + connection string property is specified, its value will override + this flag. The precise outcome of combining this flag with the + flag is unspecified; however, + one of the flags will be in effect. + + + + + Enable using per-connection mappings between type names and + values. Also see the + , + , and + methods. These + per-connection mappings, when present, override the corresponding + global mappings. + + + + + Disable using global mappings between type names and + values. This may be useful in some very narrow + cases; however, if there are no per-connection type mappings, the + fallback defaults will be used for both type names and their + associated values. Therefore, use of this flag + is not recommended. + + + + + When the property is used, it + should return non-zero if there were ever any rows in the associated + result sets. + + + + + Enable "strict" transaction enlistment semantics. Setting this flag + will cause an exception to be thrown if an attempt is made to enlist + in a transaction with an unavailable or unsupported isolation level. + In the future, more extensive checks may be enabled by this flag as + well. + + + + + Enable mapping of unsupported transaction isolation levels to the + closest supported transaction isolation level. + + + + + When returning column values, attempt to detect the affinity of + textual values by checking if they fully conform to those of the + , + , + , + or types. + + + + + When returning column values, attempt to detect the type of + string values by checking if they fully conform to those of + the , + , + , + or types. + + + + + Skip querying runtime configuration settings for use by the + class, including the default + value and default database type name. + NOTE: If the + and/or + properties are not set explicitly nor set via their connection + string properties and repeated calls to determine these runtime + configuration settings are seen to be a problem, this flag + should be set. + + + + + When binding parameter values with the + type, take their into account as + well as that of the associated . + + + + + If an exception is caught when raising the + event, the transaction + should be rolled back. If this is not specified, the transaction + will continue the commit process instead. + + + + + If an exception is caught when raising the + event, the action should + should be denied. If this is not specified, the action will be + allowed instead. + + + + + If an exception is caught when raising the + event, the operation + should be interrupted. If this is not specified, the operation + will simply continue. + + + + + Attempt to unbind all functions provided by other managed assemblies + when closing the connection. + + + + + When returning column values as a , skip + verifying their affinity. + + + + + Enable using per-connection mappings between type names and + values. Also see the + , + , and + methods. + + + + + Enable using per-connection mappings between type names and + values. Also see the + , + , and + methods. + + + + + If the database type name has not been explicitly set for the + parameter specified, fallback to using the parameter name. + + + + + If the database type name has not been explicitly set for the + parameter specified, fallback to using the database type name + associated with the value. + + + + + When returning column values, skip verifying their affinity. + + + + + Allow transactions to be nested. The outermost transaction still + controls whether or not any changes are ultimately committed or + rolled back. All non-outermost transactions are implemented using + the SAVEPOINT construct. + + + + + When binding parameter values, always bind + values as though they were plain text (i.e. not , + which is the legacy behavior). + + + + + When returning column values, always return + values as though they were plain text (i.e. not , + which is the legacy behavior). + + + + + When binding parameter values, always use + the invariant culture when converting their values to strings. + + + + + When returning column values, always use + the invariant culture when converting their values from strings. + + + + + EXPERIMENTAL -- + Enable waiting for the enlistment to be reset prior to attempting + to create a new enlistment. This may be necessary due to the + semantics used by distributed transactions, which complete + asynchronously. + + + + + When returning column values, always use + the invariant culture when converting their values from strings. + + + + + When returning column values, always use + the invariant culture when converting their values from strings. + + + + + EXPERIMENTAL -- + Enable strict conformance to the ADO.NET standard, e.g. use of + thrown exceptions to indicate common error conditions. + + + + + EXPERIMENTAL -- + When opening a connection, attempt to hide the password from the + connection string, etc. Given the memory architecture of the CLR, + (and P/Invoke) this is not 100% reliable and should not be relied + upon for security critical uses or applications. + + + + + Skip adding the extension functions provided by the native interop + assembly if they would conflict with a function provided by the + SQLite core library. + + + + + When binding parameter values or returning column values, always + treat them as though they were plain text (i.e. no numeric, + date/time, or other conversions should be attempted). + + + + + When binding parameter values, always use the invariant culture when + converting their values to strings or from strings. + + + + + When binding parameter values or returning column values, always + treat them as though they were plain text (i.e. no numeric, + date/time, or other conversions should be attempted) and always + use the invariant culture when converting their values to strings. + + + + + When binding parameter values or returning column values, always + treat them as though they were plain text (i.e. no numeric, + date/time, or other conversions should be attempted) and always + use the invariant culture when converting their values to strings + or from strings. + + + + + Enables use of all per-connection value handling callbacks. + + + + + Enables use of all applicable + properties as fallbacks for the database type name. + + + + + Enable all logging. + + + + + The default logging related flags for new connections. + + + + + The default extra flags for new connections. + + + + + The default extra flags for new connections with all logging enabled. + + + + + These are the supported status parameters for use with the native + SQLite library. + + + + + This parameter returns the number of lookaside memory slots + currently checked out. + + + + + This parameter returns the approximate number of bytes of + heap memory used by all pager caches associated with the + database connection. The highwater mark associated with + SQLITE_DBSTATUS_CACHE_USED is always 0. + + + + + This parameter returns the approximate number of bytes of + heap memory used to store the schema for all databases + associated with the connection - main, temp, and any ATTACH-ed + databases. The full amount of memory used by the schemas is + reported, even if the schema memory is shared with other + database connections due to shared cache mode being enabled. + The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED + is always 0. + + + + + This parameter returns the number malloc attempts that might + have been satisfied using lookaside memory but failed due to + all lookaside memory already being in use. Only the high-water + value is meaningful; the current value is always zero. + + + + + This parameter returns the number malloc attempts that were + satisfied using lookaside memory. Only the high-water value + is meaningful; the current value is always zero. + + + + + This parameter returns the number malloc attempts that might + have been satisfied using lookaside memory but failed due to + the amount of memory requested being larger than the lookaside + slot size. Only the high-water value is meaningful; the current + value is always zero. + + + + + This parameter returns the number malloc attempts that might + have been satisfied using lookaside memory but failed due to + the amount of memory requested being larger than the lookaside + slot size. Only the high-water value is meaningful; the current + value is always zero. + + + + + This parameter returns the number of pager cache hits that + have occurred. The highwater mark associated with + SQLITE_DBSTATUS_CACHE_HIT is always 0. + + + + + This parameter returns the number of pager cache misses that + have occurred. The highwater mark associated with + SQLITE_DBSTATUS_CACHE_MISS is always 0. + + + + + This parameter returns the number of dirty cache entries that + have been written to disk. Specifically, the number of pages + written to the wal file in wal mode databases, or the number + of pages written to the database file in rollback mode + databases. Any pages written as part of transaction rollback + or database recovery operations are not included. If an IO or + other error occurs while writing a page to disk, the effect + on subsequent SQLITE_DBSTATUS_CACHE_WRITE requests is + undefined. The highwater mark associated with + SQLITE_DBSTATUS_CACHE_WRITE is always 0. + + + + + This parameter returns zero for the current value if and only + if all foreign key constraints (deferred or immediate) have + been resolved. The highwater mark is always 0. + + + + + This parameter is similar to DBSTATUS_CACHE_USED, except that + if a pager cache is shared between two or more connections the + bytes of heap memory used by that pager cache is divided evenly + between the attached connections. In other words, if none of + the pager caches associated with the database connection are + shared, this request returns the same value as DBSTATUS_CACHE_USED. + Or, if one or more or the pager caches are shared, the value + returned by this call will be smaller than that returned by + DBSTATUS_CACHE_USED. The highwater mark associated with + SQLITE_DBSTATUS_CACHE_USED_SHARED is always 0. + + + + + This parameter returns the number of dirty cache entries that have + been written to disk in the middle of a transaction due to the page + cache overflowing. Transactions are more efficient if they are + written to disk all at once. When pages spill mid-transaction, that + introduces additional overhead. This parameter can be used help + identify inefficiencies that can be resolved by increasing the cache + size. + + + + + These are the supported configuration verbs for use with the native + SQLite library. They are used with the + method. + + + + + This value represents an unknown (or invalid) option, do not use it. + + + + + This option is used to change the name of the "main" database + schema. The sole argument is a pointer to a constant UTF8 string + which will become the new schema name in place of "main". + + + + + This option is used to configure the lookaside memory allocator. + The value must be an array with three elements. The second element + must be an containing the size of each buffer + slot. The third element must be an containing + the number of slots. The first element must be an + that points to a native memory buffer of bytes equal to or greater + than the product of the second and third element values. + + + + + This option is used to enable or disable the enforcement of + foreign key constraints. + + + + + This option is used to enable or disable triggers. + + + + + This option is used to enable or disable the two-argument version + of the fts3_tokenizer() function which is part of the FTS3 full-text + search engine extension. + + + + + This option is used to enable or disable the loading of extensions. + + + + + This option is used to enable or disable the automatic checkpointing + when a WAL database is closed. + + + + + This option is used to enable or disable the query planner stability + guarantee (QPSG). + + + + + This option is used to enable or disable the extra EXPLAIN QUERY PLAN + output for trigger programs. + + + + + This option is used as part of the process to reset a database back + to an empty state. Because resetting a database is destructive and + irreversible, the process requires the use of this obscure flag and + multiple steps to help ensure that it does not happen by accident. + + + + + This option activates or deactivates the "defensive" flag for a + database connection. When the defensive flag is enabled, language + features that allow ordinary SQL to deliberately corrupt the database + file are disabled. The disabled features include but are not limited + to the following: + ]]> + ]]> + The PRAGMA writable_schema=ON statement. + ]]> + ]]> + The PRAGMA journal_mode=OFF statement. + ]]> + ]]> + Writes to the sqlite_dbpage virtual table. + ]]> + ]]> + Direct writes to shadow tables. + ]]> + ]]> + + + + + This option activates or deactivates the "writable_schema" flag. + + + + + This option activates or deactivates the legacy behavior of the ALTER + TABLE RENAME command such it behaves as it did prior to version 3.24.0 + (2018-06-04). + + + + + This option activates or deactivates the legacy double-quoted string + literal misfeature for DML statement only, that is DELETE, INSERT, + SELECT, and UPDATE statements. + + + + + This option activates or deactivates the legacy double-quoted string + literal misfeature for DDL statements, such as CREATE TABLE and CREATE + INDEX. + + + + + This option is used to enable or disable CREATE VIEW. + + + + + This option activates or deactivates the legacy file format flag. + + + + + This option tells SQLite to assume that database schemas (i.e. the + contents of the sqlite_master tables) are untainted by malicious + content. When the trusted schema option is disabled, SQLite takes + additional defensive steps to protect the application from harm + including: + ]]> + ]]> + Prohibit the use of SQL functions inside triggers, views, CHECK + constraints, DEFAULT clauses, expression indexes, partial indexes, + or generated columns unless those functions are tagged with + SQLITE_INNOCUOUS. + ]]> + ]]> + Prohibit the use of virtual tables inside of triggers or views + unless those virtual tables are tagged with SQLITE_VTAB_INNOCUOUS. + ]]> + This setting defaults to "on" for legacy compatibility, however + all applications are advised to turn it off if possible. This + setting can also be controlled using the PRAGMA trusted_schema + statement. + + + + + These constants are used with the sqlite3_trace_v2() API and the + callbacks registered by it. + + + + + These constants are used with the sqlite3_limit() API. + + + + + This value represents an unknown (or invalid) limit, do not use it. + + + + + The maximum size of any string or BLOB or table row, in bytes. + + + + + The maximum length of an SQL statement, in bytes. + + + + + The maximum number of columns in a table definition or in the + result set of a SELECT or the maximum number of columns in an + index or in an ORDER BY or GROUP BY clause. + + + + + The maximum depth of the parse tree on any expression. + + + + + The maximum number of terms in a compound SELECT statement. + + + + + The maximum number of instructions in a virtual machine program + used to implement an SQL statement. If sqlite3_prepare_v2() or + the equivalent tries to allocate space for more than this many + opcodes in a single prepared statement, an SQLITE_NOMEM error + is returned. + + + + + The maximum number of arguments on a function. + + + + + The maximum number of attached databases. + + + + + The maximum length of the pattern argument to the LIKE or GLOB + operators. + + + + + The maximum index number of any parameter in an SQL statement. + + + + + The maximum depth of recursion for triggers. + + + + + The maximum number of auxiliary worker threads that a single + prepared statement may start. + + + + + Represents a single SQL blob in SQLite. + + + + + The underlying SQLite object this blob is bound to. + + + + + The actual blob handle. + + + + + Initializes the blob. + + The base SQLite object. + The blob handle. + + + + Creates a object. This will not work + for tables that were created WITHOUT ROWID -OR- if the query + does not include the "rowid" column or one of its aliases -OR- + if the was not created with the + flag. + + + The instance with a result set + containing the desired blob column. + + + The index of the blob column. + + + Non-zero to open the blob object for read-only access. + + + The newly created instance -OR- null + if an error occurs. + + + + + Creates a object. This will not work + for tables that were created WITHOUT ROWID. + + + The connection to use when opening the blob object. + + + The name of the database containing the blob object. + + + The name of the table containing the blob object. + + + The name of the column containing the blob object. + + + The integer identifier for the row associated with the desired + blob object. + + + Non-zero to open the blob object for read-only access. + + + The newly created instance -OR- null + if an error occurs. + + + + + Throws an exception if the blob object does not appear to be open. + + + + + Throws an exception if an invalid read/write parameter is detected. + + + When reading, this array will be populated with the bytes read from + the underlying database blob. When writing, this array contains new + values for the specified portion of the underlying database blob. + + + The number of bytes to read or write. + + + The byte offset, relative to the start of the underlying database + blob, where the read or write operation will begin. + + + + + Retargets this object to an underlying database blob for a + different row; the database, table, and column remain exactly + the same. If this operation fails for any reason, this blob + object is automatically disposed. + + + The integer identifier for the new row. + + + + + Queries the total number of bytes for the underlying database blob. + + + The total number of bytes for the underlying database blob. + + + + + Reads data from the underlying database blob. + + + This array will be populated with the bytes read from the + underlying database blob. + + + The number of bytes to read. + + + The byte offset, relative to the start of the underlying + database blob, where the read operation will begin. + + + + + Writes data into the underlying database blob. + + + This array contains the new values for the specified portion of + the underlying database blob. + + + The number of bytes to write. + + + The byte offset, relative to the start of the underlying + database blob, where the write operation will begin. + + + + + Closes the blob, freeing the associated resources. + + + + + Disposes and finalizes the blob. + + + + + The destructor. + + + + + SQLite implementation of DbCommand. + + + + + The default connection string to be used when creating a temporary + connection to execute a command via the static + or + + methods. + + + + + The command text this command is based on + + + + + The connection the command is associated with + + + + + The version of the connection the command is associated with + + + + + Indicates whether or not a DataReader is active on the command. + + + + + The timeout for the command, kludged because SQLite doesn't support per-command timeout values + + + + + Designer support + + + + + Used by DbDataAdapter to determine updating behavior + + + + + The collection of parameters for the command + + + + + The SQL command text, broken into individual SQL statements as they are executed + + + + + Unprocessed SQL text that has not been executed + + + + + Transaction associated with this command + + + + + Constructs a new SQLiteCommand + + + Default constructor + + + + + Initializes the command with the given command text + + The SQL command text + + + + Initializes the command with the given SQL command text and attach the command to the specified + connection. + + The SQL command text + The connection to associate with the command + + + + Initializes the command and associates it with the specified connection. + + The connection to associate with the command + + + + Initializes a command with the given SQL, connection and transaction + + The SQL command text + The connection to associate with the command + The transaction the command should be associated with + + + + Disposes of the command and clears all member variables + + Whether or not the class is being explicitly or implicitly disposed + + + + This method attempts to query the flags associated with the database + connection in use. If the database connection is disposed, the default + flags will be returned. + + + The command containing the databse connection to query the flags from. + + + The connection flags value. + + + + + Clears and destroys all statements currently prepared + + + + + Builds an array of prepared statements for each complete SQL statement in the command text + + + + + Not implemented + + + + + Forwards to the local CreateParameter() function + + + + + + Create a new parameter + + + + + + Verifies that all SQL queries associated with the current command text + can be successfully compiled. A will be + raised if any errors occur. + + + + + This function ensures there are no active readers, that we have a valid connection, + that the connection is open, that all statements are prepared and all parameters are assigned + in preparation for allocating a data reader. + + + + + Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements + + The behavior the data reader should adopt + Returns a SQLiteDataReader object + + + + This method creates a new connection, executes the query using the given + execution type, closes the connection, and returns the results. If the + connection string is null, a temporary in-memory database connection will + be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method creates a new connection, executes the query using the given + execution type and command behavior, closes the connection unless a data + reader is created, and returns the results. If the connection string is + null, a temporary in-memory database connection will be used. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection string to the database to be opened, used, and closed. If + this parameter is null, a temporary in-memory databse will be used. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + This method executes a query using the given execution type and command + behavior and returns the results. + + + The text of the command to be executed. + + + The execution type for the command. This is used to determine which method + of the command object to call, which then determines the type of results + returned, if any. + + + The command behavior flags for the command. + + + The connection used to create and execute the command. + + + The SQL parameter values to be used when building the command object to be + executed, if any. + + + The results of the query -OR- null if no results were produced from the + given execution type. + + + + + Overrides the default behavior to return a SQLiteDataReader specialization class + + The flags to be associated with the reader. + A SQLiteDataReader + + + + Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class + + A SQLiteDataReader + + + + Called by the SQLiteDataReader when the data reader is closed. + + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The number of rows inserted/updated affected by it. + + + + Execute the command and return the number of rows inserted/updated affected by it. + + The flags to be associated with the reader. + The number of rows inserted/updated affected by it. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The first column of the first row of the first resultset from the query. + + + + Execute the command and return the first column of the first row of the resultset + (if present), or null if no resultset was returned. + + The flags to be associated with the reader. + The first column of the first row of the first resultset from the query. + + + + This method resets all the prepared statements held by this instance + back to their initial states, ready to be re-executed. + + + + + This method resets all the prepared statements held by this instance + back to their initial states, ready to be re-executed. + + + Non-zero if the parameter bindings should be cleared as well. + + + If this is zero, a may be thrown for + any unsuccessful return codes from the native library; otherwise, a + will only be thrown if the connection + or its state is invalid. + + + + + Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. + + + + + Clones a command, including all its parameters + + A new SQLiteCommand with the same commandtext, connection and parameters + + + + The SQL command text associated with the command + + + + + The amount of time to wait for the connection to become available before erroring out + + + + + The type of the command. SQLite only supports CommandType.Text + + + + + The connection associated with this command + + + + + Forwards to the local Connection property + + + + + Returns the SQLiteParameterCollection for the given command + + + + + Forwards to the local Parameters property + + + + + The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the + command's underlying connection. + + + + + Forwards to the local Transaction property + + + + + Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. + + + + + Determines if the command is visible at design time. Defaults to True. + + + + + SQLite implementation of DbCommandBuilder. + + + + + Default constructor + + + + + Initializes the command builder and associates it with the specified data adapter. + + + + + + Cleans up resources (native and managed) associated with the current instance. + + + Zero when being disposed via garbage collection; otherwise, non-zero. + + + + + Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema + + The parameter to use in applying custom behaviors to a row + The row to apply the parameter to + The type of statement + Whether the application of the parameter is part of a WHERE clause + + + + Returns a valid named parameter + + The name of the parameter + Error + + + + Returns a named parameter for the given ordinal + + The i of the parameter + Error + + + + Returns a placeholder character for the specified parameter i. + + The index of the parameter to provide a placeholder for + Returns a named parameter + + + + Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL + statements that may not have previously been generated. + + A data adapter to receive events on. + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + Returns the automatically-generated SQLite command to delete rows from the database + + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + Returns the automatically-generated SQLite command to update rows in the database + + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + Returns the automatically-generated SQLite command to insert rows into the database + + + + + + + Places brackets around an identifier + + The identifier to quote + The bracketed identifier + + + + Removes brackets around an identifier + + The quoted (bracketed) identifier + The undecorated identifier + + + + Override helper, which can help the base command builder choose the right keys for the given query + + + + + + + Gets/sets the DataAdapter for this CommandBuilder + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + Overridden to hide its property from the designer + + + + + This class represents a single value to be returned + from the class via + its , + , + , + , + , + , + , + , + , + , + , + , + , + , + , or + method. If the value of the + associated public field of this class is null upon returning from the + callback, the null value will only be used if the return type for the + method called is not a value type. + If the value to be returned from the + method is unsuitable (e.g. null with a value type), an exception will + be thrown. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method -OR- null to + indicate an error. + + + + + The value to be returned from the + method. + + + + + The value to be returned from the + method. + + + + + This class represents the parameters that are provided + to the methods, with + the exception of the column index (provided separately). + + + + + This class represents the parameters that are provided to + the method, with + the exception of the column index (provided separately). + + + + + Provides the underlying storage for the + property. + + + + + Constructs an instance of this class to pass into a user-defined + callback associated with the + method. + + + The value that was originally specified for the "readOnly" + parameter to the method. + + + + + The value that was originally specified for the "readOnly" + parameter to the method. + + + + + This class represents the parameters that are provided + to the and + methods, with + the exception of the column index (provided separately). + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Constructs an instance of this class to pass into a user-defined + callback associated with the + method. + + + The value that was originally specified for the "dataOffset" + parameter to the or + methods. + + + The value that was originally specified for the "buffer" + parameter to the + method. + + + The value that was originally specified for the "bufferOffset" + parameter to the or + methods. + + + The value that was originally specified for the "length" + parameter to the or + methods. + + + + + Constructs an instance of this class to pass into a user-defined + callback associated with the + method. + + + The value that was originally specified for the "dataOffset" + parameter to the or + methods. + + + The value that was originally specified for the "buffer" + parameter to the + method. + + + The value that was originally specified for the "bufferOffset" + parameter to the or + methods. + + + The value that was originally specified for the "length" + parameter to the or + methods. + + + + + The value that was originally specified for the "dataOffset" + parameter to the or + methods. + + + + + The value that was originally specified for the "buffer" + parameter to the + method. + + + + + The value that was originally specified for the "buffer" + parameter to the + method. + + + + + The value that was originally specified for the "bufferOffset" + parameter to the or + methods. + + + + + The value that was originally specified for the "length" + parameter to the or + methods. + + + + + This class represents the parameters and return values for the + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , and + methods. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Constructs a new instance of this class. Depending on the method + being called, the and/or + parameters may be null. + + + The name of the method that was + responsible for invoking this callback. + + + If the or + method is being called, + this object will contain the array related parameters for that + method. If the method is + being called, this object will contain the blob related parameters + for that method. + + + This may be used by the callback to set the return value for the + called method. + + + + + The name of the method that was + responsible for invoking this callback. + + + + + If the or + method is being called, + this object will contain the array related parameters for that + method. If the method is + being called, this object will contain the blob related parameters + for that method. + + + + + This may be used by the callback to set the return value for the + called method. + + + + + This represents a method that will be called in response to a request to + bind a parameter to a command. If an exception is thrown, it will cause + the parameter binding operation to fail -AND- it will continue to unwind + the call stack. + + + The instance in use. + + + The instance in use. + + + The flags associated with the instance + in use. + + + The instance being bound to the command. + + + The database type name associated with this callback. + + + The ordinal of the parameter being bound to the command. + + + The data originally used when registering this callback. + + + Non-zero if the default handling for the parameter binding call should + be skipped (i.e. the parameter should not be bound at all). Great care + should be used when setting this to non-zero. + + + + + This represents a method that will be called in response to a request + to read a value from a data reader. If an exception is thrown, it will + cause the data reader operation to fail -AND- it will continue to unwind + the call stack. + + + The instance in use. + + + The instance in use. + + + The flags associated with the instance + in use. + + + The parameter and return type data for the column being read from the + data reader. + + + The database type name associated with this callback. + + + The zero based index of the column being read from the data reader. + + + The data originally used when registering this callback. + + + Non-zero if the default handling for the data reader call should be + skipped. If this is set to non-zero and the necessary return value + is unavailable or unsuitable, an exception will be thrown. + + + + + This class represents the custom data type handling callbacks + for a single type name. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Provides the underlying storage for the + property. + + + + + Constructs an instance of this class. + + + The custom paramater binding callback. This parameter may be null. + + + The custom data reader value callback. This parameter may be null. + + + The extra data to pass into the parameter binding callback. This + parameter may be null. + + + The extra data to pass into the data reader value callback. This + parameter may be null. + + + + + Creates an instance of the class. + + + The custom paramater binding callback. This parameter may be null. + + + The custom data reader value callback. This parameter may be null. + + + The extra data to pass into the parameter binding callback. This + parameter may be null. + + + The extra data to pass into the data reader value callback. This + parameter may be null. + + + + + The database type name that the callbacks contained in this class + will apply to. This value may not be null. + + + + + The custom paramater binding callback. This value may be null. + + + + + The custom data reader value callback. This value may be null. + + + + + The extra data to pass into the parameter binding callback. This + value may be null. + + + + + The extra data to pass into the data reader value callback. This + value may be null. + + + + + This class represents the mappings between database type names + and their associated custom data type handling callbacks. + + + + + Constructs an (empty) instance of this class. + + + + + Event data for connection event handlers. + + + + + The type of event being raised. + + + + + The associated with this event, if any. + + + + + The transaction associated with this event, if any. + + + + + The command associated with this event, if any. + + + + + The data reader associated with this event, if any. + + + + + The critical handle associated with this event, if any. + + + + + Command or message text associated with this event, if any. + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + The type of event being raised. + The base associated + with this event, if any. + The transaction associated with this event, if any. + The command associated with this event, if any. + The data reader associated with this event, if any. + The critical handle associated with this event, if any. + The command or message text, if any. + The extra data, if any. + + + + Raised when an event pertaining to a connection occurs. + + The connection involved. + Extra information about the event. + + + + SQLite implentation of DbConnection. + + + The property can contain the following parameter(s), delimited with a semi-colon: + + + Parameter + Values + Required + Default + + + Data Source + + This may be a file name, the string ":memory:", or any supported URI (starting with SQLite 3.7.7). + Starting with release 1.0.86.0, in order to use more than one consecutive backslash (e.g. for a + UNC path), each of the adjoining backslash characters must be doubled (e.g. "\\Network\Share\test.db" + would become "\\\\Network\Share\test.db"). + + Y + + + + Uri + + If specified, this must be a file name that starts with "file://", "file:", or "/". Any leading + "file://" or "file:" prefix will be stripped off and the resulting file name will be used to open + the database. + + N + null + + + FullUri + + If specified, this must be a URI in a format recognized by the SQLite core library (starting with + SQLite 3.7.7). It will be passed verbatim to the SQLite core library. + + N + null + + + Version + 3 + N + 3 + + + UseUTF16Encoding + + True - The UTF-16 encoding should be used. +
+ False - The UTF-8 encoding should be used. +
+ N + False +
+ + DefaultDbType + + This is the default to use when one cannot be determined based on the + column metadata and the configured type mappings. + + N + null + + + DefaultTypeName + + This is the default type name to use when one cannot be determined based on the column metadata + and the configured type mappings. + + N + null + + + NoDefaultFlags + + True - Do not combine the specified (or existing) connection flags with the value of the + property. +
+ False - Combine the specified (or existing) connection flags with the value of the + property. +
+ N + False +
+ + NoSharedFlags + + True - Do not combine the specified (or existing) connection flags with the value of the + property. +
+ False - Combine the specified (or existing) connection flags with the value of the + property. +
+ N + False +
+ + VfsName + + The name of the VFS to use when opening the database connection. + If this is not specified, the default VFS will be used. + + N + null + + + ZipVfsVersion + + If non-null, this is the "version" of ZipVFS to use. This requires + the System.Data.SQLite interop assembly -AND- primary managed assembly + to be compiled with the INTEROP_INCLUDE_ZIPVFS option; otherwise, this + property does nothing. The valid values are "v2" and "v3". Using + anyother value will cause an exception to be thrown. Please see the + ZipVFS documentation for more information on how to use this parameter. + + N + null + + + DateTimeFormat + + Ticks - Use the value of DateTime.Ticks.
+ ISO8601 - Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC + DateTime values and "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values).
+ JulianDay - The interval of time in days and fractions of a day since January 1, 4713 BC.
+ UnixEpoch - The whole number of seconds since the Unix epoch (January 1, 1970).
+ InvariantCulture - Any culture-independent string value that the .NET Framework can interpret as a valid DateTime.
+ CurrentCulture - Any string value that the .NET Framework can interpret as a valid DateTime using the current culture.
+ N + ISO8601 +
+ + DateTimeKind + + Unspecified - Not specified as either UTC or local time. +
+ Utc - The time represented is UTC. +
+ Local - The time represented is local time. +
+ N + Unspecified +
+ + DateTimeFormatString + + The exact DateTime format string to use for all formatting and parsing of all DateTime + values for this connection. + + N + null + + + BaseSchemaName + + Some base data classes in the framework (e.g. those that build SQL queries dynamically) + assume that an ADO.NET provider cannot support an alternate catalog (i.e. database) without supporting + alternate schemas as well; however, SQLite does not fit into this model. Therefore, this value is used + as a placeholder and removed prior to preparing any SQL statements that may contain it. + + N + sqlite_default_schema + + + BinaryGUID + + True - Store GUID columns in binary form +
+ False - Store GUID columns as text +
+ N + True +
+ + Cache Size + + If the argument N is positive then the suggested cache size is set to N. + If the argument N is negative, then the number of cache pages is adjusted + to use approximately abs(N*4096) bytes of memory. Backwards compatibility + note: The behavior of cache_size with a negative N was different in SQLite + versions prior to 3.7.10. In version 3.7.9 and earlier, the number of + pages in the cache was set to the absolute value of N. + + N + -2000 + + + Synchronous + + Normal - Normal file flushing behavior +
+ Full - Full flushing after all writes +
+ Off - Underlying OS flushes I/O's +
+ N + Full +
+ + Page Size + {size in bytes} + N + 4096 + + + Password + + {password} - Using this parameter requires that the legacy CryptoAPI based + codec (or the SQLite Encryption Extension) be enabled at compile-time for + both the native interop assembly and the core managed assemblies; otherwise, + using this parameter may result in an exception being thrown when attempting + to open the connection. + + N + + + + HexPassword + + {hexPassword} - Must contain a sequence of zero or more hexadecimal encoded + byte values without a leading "0x" prefix. Using this parameter requires + that the legacy CryptoAPI based codec (or the SQLite Encryption Extension) + be enabled at compile-time for both the native interop assembly and the + core managed assemblies; otherwise, using this parameter may result in an + exception being thrown when attempting to open the connection. + + N + + + + TextPassword + + {password} - Using this parameter requires that the legacy CryptoAPI based + codec (or the SQLite Encryption Extension) be enabled at compile-time for + both the native interop assembly and the core managed assemblies; otherwise, + using this parameter may result in an exception being thrown when attempting + to open the connection. + + N + + + + Enlist + + Y - Automatically enlist in distributed transactions +
+ N - No automatic enlistment +
+ N + Y +
+ + Pooling + + True - Use connection pooling.
+ False - Do not use connection pooling.

+ WARNING: When using the default connection pool implementation, + setting this property to True should be avoided by applications that make + use of COM (either directly or indirectly) due to possible deadlocks that + can occur during the finalization of some COM objects. +
+ N + False +
+ + FailIfMissing + + True - Don't create the database if it does not exist, throw an error instead +
+ False - Automatically create the database if it does not exist +
+ N + False +
+ + Max Page Count + {size in pages} - Limits the maximum number of pages (limits the size) of the database + N + 0 + + + Legacy Format + + True - Use the more compatible legacy 3.x database format +
+ False - Use the newer 3.3x database format which compresses numbers more effectively +
+ N + False +
+ + Default Timeout + {time in seconds}
The default command timeout
+ N + 30 +
+ + BusyTimeout + {time in milliseconds}
Sets the busy timeout for the core library.
+ N + 0 +
+ + WaitTimeout + {time in milliseconds}
+ EXPERIMENTAL -- The wait timeout to use with + method. This is only used when + waiting for the enlistment to be reset prior to enlisting in a transaction, + and then only when the appropriate connection flag is set.
+ N + 30000 +
+ + Journal Mode + + Delete - Delete the journal file after a commit. +
+ Persist - Zero out and leave the journal file on disk after a + commit. +
+ Off - Disable the rollback journal entirely. This saves disk I/O + but at the expense of database safety and integrity. If the application + using SQLite crashes in the middle of a transaction when this journaling + mode is set, then the database file will very likely go corrupt. +
+ Truncate - Truncate the journal file to zero-length instead of + deleting it. +
+ Memory - Store the journal in volatile RAM. This saves disk I/O + but at the expense of database safety and integrity. If the application + using SQLite crashes in the middle of a transaction when this journaling + mode is set, then the database file will very likely go corrupt. +
+ Wal - Use a write-ahead log instead of a rollback journal. +
+ N + Delete +
+ + Read Only + + True - Open the database for read only access +
+ False - Open the database for normal read/write access +
+ N + False +
+ + Max Pool Size + The maximum number of connections for the given connection string that can be in the connection pool + N + 100 + + + Default IsolationLevel + The default transaciton isolation level + N + Serializable + + + Foreign Keys + Enable foreign key constraints + N + False + + + Flags + Extra behavioral flags for the connection. See the enumeration for possible values. + N + Default + + + SetDefaults + + True - Apply the default connection settings to the opened database.
+ False - Skip applying the default connection settings to the opened database. +
+ N + True +
+ + ToFullPath + + True - Attempt to expand the data source file name to a fully qualified path before opening. +
+ False - Skip attempting to expand the data source file name to a fully qualified path before opening. +
+ N + True +
+ + PrepareRetries + + The maximum number of retries when preparing SQL to be executed. This + normally only applies to preparation errors resulting from the database + schema being changed. + + N + 3 + + + ProgressOps + + The approximate number of virtual machine instructions between progress + events. In order for progress events to actually fire, the event handler + must be added to the event as well. + + N + 0 + + + Recursive Triggers + + True - Enable the recursive trigger capability. + False - Disable the recursive trigger capability. + + N + False + +
+
+
+ + + The "invalid value" for the enumeration used + by the property. This constant is shared + by this class and the SQLiteConnectionStringBuilder class. + + + + + The default "stub" (i.e. placeholder) base schema name to use when + returning column schema information. Used as the initial value of + the BaseSchemaName property. This should start with "sqlite_*" + because those names are reserved for use by SQLite (i.e. they cannot + be confused with the names of user objects). + + + + + The managed assembly containing this type. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + The extra connection flags to be used for all opened connections. + + + + + The instance (for this thread) that + had the most recent call to . + + + + + State of the current connection + + + + + The connection string + + + + + Nesting level of the transactions open on the connection + + + + + Transaction counter for the connection. Currently, this is only used + to build SAVEPOINT names. + + + + + If this flag is non-zero, the method will have + no effect; however, the method will continue to + behave as normal. + + + + + If set, then the connection is currently being disposed. + + + + + The default isolation level for new transactions + + + + + This object is used with lock statements to synchronize access to the + field, below. + + + + + Whether or not the connection is enlisted in a distrubuted transaction + + + + + The per-connection mappings between type names and + values. These mappings override the corresponding global mappings. + + + + + The per-connection mappings between type names and optional callbacks + for parameter binding and value reading. + + + + + The base SQLite object to interop with + + + + + The database filename minus path and extension + + + + + Temporary password storage, emptied after the database has been opened + + + + + This will be non-zero if the "TextPassword" connection string property + was used. When this value is non-zero, + will retain treatment of the password as a NUL-terminated text string. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. + + + + + The extra behavioral flags for this connection, if any. See the + enumeration for a list of + possible values. + + + + + The cached values for all settings that have been fetched on behalf + of this connection. This cache may be cleared by calling the + method. + + + + + The default databse type for this connection. This value will only + be used if the + flag is set. + + + + + The default databse type name for this connection. This value will only + be used if the + flag is set. + + + + + The name of the VFS to be used when opening the database connection. + + + + + Default command timeout + + + + + The default busy timeout to use with the SQLite core library. This is + only used when opening a connection. + + + + + The default wait timeout to use with + method. This is only used when waiting for the enlistment to be reset + prior to enlisting in a transaction, and then only when the appropriate + connection flag is set. + + + + + The maximum number of retries when preparing SQL to be executed. This + normally only applies to preparation errors resulting from the database + schema being changed. + + + + + The approximate number of virtual machine instructions between progress + events. In order for progress events to actually fire, the event handler + must be added to the event as + well. This value will only be used when opening the database. + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Constructs a new SQLiteConnection object + + + Default constructor + + + + + Initializes the connection with the specified connection string. + + The connection string to use. + + + + Initializes the connection with a pre-existing native connection handle. + This constructor overload is intended to be used only by the private + method. + + + The native connection handle to use. + + + The file name corresponding to the native connection handle. + + + Non-zero if this instance owns the native connection handle and + should dispose of it when it is no longer needed. + + + + + Initializes user-settable properties with their default values. + This method is only intended to be used from the constructor. + + + + + Initializes the connection with the specified connection string. + + + The connection string to use. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Clones the settings and connection string from an existing connection. If the existing connection is already open, this + function will open its own connection, enumerate any attached databases of the original connection, and automatically + attach to them. + + The connection to copy the settings from. + + + + Attempts to lookup the native handle associated with the connection. An exception will + be thrown if this cannot be accomplished. + + + The connection associated with the desired native handle. + + + The native handle associated with the connection or if it + cannot be determined. + + + + + Raises the event. + + + The connection associated with this event. If this parameter is not + null and the specified connection cannot raise events, then the + registered event handlers will not be invoked. + + + A that contains the event data. + + + + + Creates and returns a new managed database connection handle. This + method is intended to be used by implementations of the + interface only. In theory, it + could be used by other classes; however, that usage is not supported. + + + This must be a native database connection handle returned by the + SQLite core library and it must remain valid and open during the + entire duration of the calling method. + + + The new managed database connection handle or null if it cannot be + created. + + + + + Backs up the database, using the specified database connection as the + destination. + + The destination database connection. + The destination database name. + The source database name. + + The number of pages to copy at a time -OR- a negative value to copy all + pages. When a negative value is used, the + may never be invoked. + + + The method to invoke between each step of the backup process. This + parameter may be null (i.e. no callbacks will be performed). If the + callback returns false -OR- throws an exception, the backup is canceled. + + + The number of milliseconds to sleep after encountering a locking error + during the backup process. A value less than zero means that no sleep + should be performed. + + + + + Clears the per-connection cached settings. + + + The total number of per-connection settings cleared. + + + + + Queries and returns the value of the specified setting, using the + cached setting names and values for this connection, when available. + + + The name of the setting. + + + The value to be returned if the setting has not been set explicitly + or cannot be determined. + + + The value of the cached setting is stored here if found; otherwise, + the value of is stored here. + + + Non-zero if the cached setting was found; otherwise, zero. + + + + + Adds or sets the cached setting specified by + to the value specified by . + + + The name of the cached setting to add or replace. + + + The new value of the cached setting. + + + + + Clears the per-connection type mappings. + + + The total number of per-connection type mappings cleared. + + + + + Returns the per-connection type mappings. + + + The per-connection type mappings -OR- null if they are unavailable. + + + + + Adds a per-connection type mapping, possibly replacing one or more + that already exist. + + + The case-insensitive database type name (e.g. "MYDATE"). The value + of this parameter cannot be null. Using an empty string value (or + a string value consisting entirely of whitespace) for this parameter + is not recommended. + + + The value that should be associated with the + specified type name. + + + Non-zero if this mapping should be considered to be the primary one + for the specified . + + + A negative value if nothing was done. Zero if no per-connection type + mappings were replaced (i.e. it was a pure add operation). More than + zero if some per-connection type mappings were replaced. + + + + + Clears the per-connection type callbacks. + + + The total number of per-connection type callbacks cleared. + + + + + Attempts to get the per-connection type callbacks for the specified + database type name. + + + The database type name. + + + Upon success, this parameter will contain the object holding the + callbacks for the database type name. Upon failure, this parameter + will be null. + + + Non-zero upon success; otherwise, zero. + + + + + Sets, resets, or clears the per-connection type callbacks for the + specified database type name. + + + The database type name. + + + The object holding the callbacks for the database type name. If + this parameter is null, any callbacks for the database type name + will be removed if they are present. + + + Non-zero if callbacks were set or removed; otherwise, zero. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + + + Attempts to bind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be bound. + + + A object instance that helps implement the + function to be bound. For scalar functions, this corresponds to the + type. For aggregate functions, + this corresponds to the type. For + collation functions, this corresponds to the + type. + + + A object instance that helps implement the + function to be bound. For aggregate functions, this corresponds to the + type. For other callback types, it + is not used and must be null. + + + + + Attempts to unbind the specified object + instance to this connection. + + + The object instance containing + the metadata for the function to be unbound. + + Non-zero if the function was unbound. + + + + This method unbinds all registered (known) functions -OR- all previously + bound user-defined functions from this connection. + + + Non-zero to unbind all registered (known) functions -OR- zero to unbind + all functions currently bound to the connection. + + + Non-zero if all the specified user-defined functions were unbound. + + + + + Parses a connection string into component parts using the custom + connection string parser. An exception may be thrown if the syntax + of the connection string is incorrect. + + + The connection string to parse. + + + Non-zero to parse the connection string using the algorithm provided + by the framework itself. This is not applicable when running on the + .NET Compact Framework. + + + Non-zero if names are allowed without values. + + + The list of key/value pairs corresponding to the parameters specified + within the connection string. + + + + + Parses a connection string into component parts using the custom + connection string parser. An exception may be thrown if the syntax + of the connection string is incorrect. + + + The connection that will be using the parsed connection string. + + + The connection string to parse. + + + Non-zero to parse the connection string using the algorithm provided + by the framework itself. This is not applicable when running on the + .NET Compact Framework. + + + Non-zero if names are allowed without values. + + + The list of key/value pairs corresponding to the parameters specified + within the connection string. + + + + + Attempts to escape the specified connection string property name or + value in a way that is compatible with the connection string parser. + + + The connection string property name or value to escape. + + + Non-zero if the equals sign is permitted in the string. If this is + zero and the string contains an equals sign, an exception will be + thrown. + + + The original string, with all special characters escaped. If the + original string contains equals signs, they will not be escaped. + Instead, they will be preserved verbatim. + + + + + Builds a connection string from a list of key/value pairs. + + + The list of key/value pairs corresponding to the parameters to be + specified within the connection string. + + + The connection string. Depending on how the connection string was + originally parsed, the returned connection string value may not be + usable in a subsequent call to the method. + + + + + Disposes and finalizes the connection, if applicable. + + + + + Cleans up resources (native and managed) associated with the current instance. + + + Zero when being disposed via garbage collection; otherwise, non-zero. + + + + + Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection + will also be opened. + + + + + + Creates a database file. This just creates a zero-byte file which SQLite + will turn into a database when the file is opened properly. + + The file to create + + + + Raises the state change event when the state of the connection changes + + The new connection state. If this is different + from the previous state, the event is + raised. + The event data created for the raised event, if + it was actually raised. + + + + Determines and returns the fallback default isolation level when one cannot be + obtained from an existing connection instance. + + + The fallback default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + Determines and returns the default isolation level for this connection instance. + + + The default isolation level for this connection instance -OR- + if it cannot be determined. + + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + This parameter is ignored. + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. + + When TRUE, SQLite defers obtaining a write lock until a write operation is requested. + When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer + environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already active on the connection. + + Supported isolation levels are Serializable, ReadCommitted and Unspecified. + + Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the + connection string, Serializable is used. + Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads + may begin a transaction. Other threads may read from the database, but not write. + With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start + a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread + has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. + + Returns a SQLiteTransaction object. + + + + Creates a new if one isn't already + active on the connection. + + Returns the new transaction object. + + + + Forwards to the local function + + Supported isolation levels are Unspecified, Serializable, and ReadCommitted + + + + + This method is not implemented; however, the + event will still be raised. + + + + + + When the database connection is closed, all commands linked to this connection are automatically reset. + + + + + Clears the connection pool associated with the connection. Any other active connections using the same database file + will be discarded instead of returned to the pool when they are closed. + + + + + + Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. + + + + + Create a new and associate it with this connection. + + Returns a new command object already assigned to this connection. + + + + Forwards to the local function. + + + + + + Attempts to create a new object instance + using this connection and the specified database name. + + + The name of the database for the newly created session. + + + The newly created session -OR- null if it cannot be created. + + + + + Attempts to create a new object instance + using this connection and the specified raw data. + + + The raw data that contains a change set (or patch set). + + + The newly created change set -OR- null if it cannot be created. + + + + + Attempts to create a new object instance + using this connection and the specified raw data. + + + The raw data that contains a change set (or patch set). + + + The flags used to create the change set iterator. + + + The newly created change set -OR- null if it cannot be created. + + + + + Attempts to create a new object instance + using this connection and the specified stream. + + + The stream where the raw data that contains a change set (or patch set) + may be read. + + + The stream where the raw data that contains a change set (or patch set) + may be written. + + + The newly created change set -OR- null if it cannot be created. + + + + + Attempts to create a new object instance + using this connection and the specified stream. + + + The stream where the raw data that contains a change set (or patch set) + may be read. + + + The stream where the raw data that contains a change set (or patch set) + may be written. + + + The flags used to create the change set iterator. + + + The newly created change set -OR- null if it cannot be created. + + + + + Attempts to create a new object + instance using this connection. + + + The newly created change group -OR- null if it cannot be created. + + + + + Determines if the legacy connection string parser should be used. + + + The connection that will be using the parsed connection string. + + + Non-zero if the legacy connection string parser should be used. + + + + + Parses a connection string into component parts using the custom + connection string parser. An exception may be thrown if the syntax + of the connection string is incorrect. + + + The connection string to parse. + + + Non-zero if names are allowed without values. + + + The list of key/value pairs corresponding to the parameters specified + within the connection string. + + + + + Parses a connection string into component parts using the custom + connection string parser. An exception may be thrown if the syntax + of the connection string is incorrect. + + + The connection that will be using the parsed connection string. + + + The connection string to parse. + + + Non-zero if names are allowed without values. + + + The list of key/value pairs corresponding to the parameters specified + within the connection string. + + + + + Parses a connection string using the built-in (i.e. framework provided) + connection string parser class and returns the key/value pairs. An + exception may be thrown if the connection string is invalid or cannot be + parsed. When compiled for the .NET Compact Framework, the custom + connection string parser is always used instead because the framework + provided one is unavailable there. + + + The connection that will be using the parsed connection string. + + + The connection string to parse. + + + Non-zero to throw an exception if any connection string values are not of + the type. This is not applicable when running on + the .NET Compact Framework. + + The list of key/value pairs. + + + + Manual distributed transaction enlistment support + + The distributed transaction to enlist in + + + + EXPERIMENTAL -- + Waits for the enlistment associated with this connection to be reset. + This method always throws when + running on the .NET Compact Framework. + + + The approximate maximum number of milliseconds to wait before timing + out the wait operation. + + + The return value to use if the connection has been disposed; if this + value is null, will be raised + if the connection has been disposed. + + + Non-zero if the enlistment assciated with this connection was reset; + otherwise, zero. It should be noted that this method returning a + non-zero value does not necessarily guarantee that the connection + can enlist in a new transaction (i.e. due to potentical race with + other threads); therefore, callers should generally use try/catch + when calling the method. + + + + + Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value + + The list to look in + The key to find + The default value to return if the key is not found + The value corresponding to the specified key, or the default value if not found. + + + + Attempts to convert the string value to an enumerated value of the specified type. + + The enumerated type to convert the string value to. + The string value to be converted. + Non-zero to make the conversion case-insensitive. + The enumerated value upon success or null upon error. + + + + Attempts to convert an input string into a byte value. + + + The string value to be converted. + + + The number styles to use for the conversion. + + + Upon sucess, this will contain the parsed byte value. + Upon failure, the value of this parameter is undefined. + + + Non-zero upon success; zero on failure. + + + + + Change a limit value for the database. + + + The database limit to change. + + + The new value for the specified limit. + + + The old value for the specified limit -OR- negative one if an error + occurs. + + + + + Change a configuration option value for the database. + + + The database configuration option to change. + + + The new value for the specified configuration option. + + + + + Enables or disables extension loading. + + + True to enable loading of extensions, false to disable. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + + + Loads a SQLite extension library from the named dynamic link library file. + + + The name of the dynamic link library file containing the extension. + + + The name of the exported function used to initialize the extension. + If null, the default "sqlite3_extension_init" will be used. + + + + + Creates a disposable module containing the implementation of a virtual + table. + + + The module object to be used when creating the disposable module. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + Creates and returns a string containing the hexadecimal encoded byte + values from the input array. + + + The input array of bytes. + + + The resulting string or null upon failure. + + + + + Parses a string containing a sequence of zero or more hexadecimal + encoded byte values and returns the resulting byte array. The + "0x" prefix is not allowed on the input string. + + + The input string containing zero or more hexadecimal encoded byte + values. + + + Upon failure, this will contain an appropriate error message. + + + A byte array containing the parsed byte values or null if an error + was encountered. + + + + + This method figures out what the default connection pool setting should + be based on the connection flags. When present, the "Pooling" connection + string property value always overrides the value returned by this method. + + + Non-zero if the connection pool should be enabled by default; otherwise, + zero. + + + + + Determines the transaction isolation level that should be used by + the caller, primarily based upon the one specified by the caller. + If mapping of transaction isolation levels is enabled, the returned + transaction isolation level may be significantly different than the + originally specified one. + + + The originally specified transaction isolation level. + + + The transaction isolation level that should be used. + + + + + Opens the connection using the parameters found in the . + + + + + Opens the connection using the parameters found in the and then returns it. + + The current connection object. + + + + This method causes any pending database operation to abort and return at + its earliest opportunity. This routine is typically called in response + to a user action such as pressing "Cancel" or Ctrl-C where the user wants + a long query operation to halt immediately. It is safe to call this + routine from any thread. However, it is not safe to call this routine + with a database connection that is closed or might close before this method + returns. + + + + + Checks if this connection to the specified database should be considered + read-only. An exception will be thrown if the database name specified + via cannot be found. + + + The name of a database associated with this connection -OR- null for the + main database. + + + Non-zero if this connection to the specified database should be considered + read-only. + + + + + Returns various global memory statistics for the SQLite core library via + a dictionary of key/value pairs. Currently, only the "MemoryUsed" and + "MemoryHighwater" keys are returned and they have values that correspond + to the values that could be obtained via the + and connection properties. + + + This dictionary will be populated with the global memory statistics. It + will be created if necessary. + + + + + Attempts to free as much heap memory as possible for this database connection. + + + + + Attempts to free N bytes of heap memory by deallocating non-essential memory + allocations held by the database library. Memory used to cache database pages + to improve performance is an example of non-essential memory. This is a no-op + returning zero if the SQLite core library was not compiled with the compile-time + option SQLITE_ENABLE_MEMORY_MANAGEMENT. Optionally, attempts to reset and/or + compact the Win32 native heap, if applicable. + + + The requested number of bytes to free. + + + Non-zero to attempt a heap reset. + + + Non-zero to attempt heap compaction. + + + The number of bytes actually freed. This value may be zero. + + + This value will be non-zero if the heap reset was successful. + + + The size of the largest committed free block in the heap, in bytes. + This value will be zero unless heap compaction is enabled. + + + A standard SQLite return code (i.e. zero for success and non-zero + for failure). + + + + + Sets the status of the memory usage tracking subsystem in the SQLite core library. By default, this is enabled. + If this is disabled, memory usage tracking will not be performed. This is not really a per-connection value, it is + global to the process. + + Non-zero to enable memory usage tracking, zero otherwise. + A standard SQLite return code (i.e. zero for success and non-zero for failure). + + + + Queries and returns the value of the specified setting, using the + cached setting names and values for the last connection that used + the method, when available. + + + The name of the setting. + + + The value to be returned if the setting has not been set explicitly + or cannot be determined. + + + The value of the cached setting is stored here if found; otherwise, + the value of is stored here. + + + Non-zero if the cached setting was found; otherwise, zero. + + + + + Adds or sets the cached setting specified by + to the value specified by using the cached + setting names and values for the last connection that used the + method, when available. + + + The name of the cached setting to add or replace. + + + The new value of the cached setting. + + + + + Passes a shutdown request to the SQLite core library. Does not throw + an exception if the shutdown request fails. + + + A standard SQLite return code (i.e. zero for success and non-zero for + failure). + + + + + Passes a shutdown request to the SQLite core library. Throws an + exception if the shutdown request fails and the no-throw parameter + is non-zero. + + + Non-zero to reset the database and temporary directories to their + default values, which should be null for both. + + + When non-zero, throw an exception if the shutdown request fails. + + + + Enables or disables extended result codes returned by SQLite + + + Enables or disables extended result codes returned by SQLite + + + Enables or disables extended result codes returned by SQLite + + + Add a log message via the SQLite sqlite3_log interface. + + + Add a log message via the SQLite sqlite3_log interface. + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Change the password (or assign a password) to an open database. + + + No readers or writers may be active for this process. The database must already be open + and if it already was password protected, the existing password must already have been supplied. + + The new password to assign to the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Sets the password for a password-protected database. A password-protected database is + unusable for any operation until the password has been set. + + The password for the database + + + + Queries or modifies the number of retries or the retry interval (in milliseconds) for + certain I/O operations that may fail due to anti-virus software. + + The number of times to retry the I/O operation. A negative value + will cause the current count to be queried and replace that negative value. + The number of milliseconds to wait before retrying the I/O + operation. This number is multiplied by the number of retry attempts so far to come + up with the final number of milliseconds to wait. A negative value will cause the + current interval to be queried and replace that negative value. + Zero for success, non-zero for error. + + + + Sets the chunk size for the primary file associated with this database + connection. + + + The new chunk size for the main database, in bytes. + + + Zero for success, non-zero for error. + + + + + Removes one set of surrounding single -OR- double quotes from the string + value and returns the resulting string value. If the string is null, empty, + or contains quotes that are not balanced, nothing is done and the original + string value will be returned. + + The string value to process. + + The string value, modified to remove one set of surrounding single -OR- + double quotes, if applicable. + + + + + Determines the directory to be used when dealing with the "|DataDirectory|" + macro in a database file name. + + + The directory to use in place of the "|DataDirectory|" macro -OR- null if it + cannot be determined. + + + + + Expand the filename of the data source, resolving the |DataDirectory| + macro as appropriate. + + The database filename to expand + + Non-zero if the returned file name should be converted to a full path + (except when using the .NET Compact Framework). + + The expanded path and filename of the filename + + + + The following commands are used to extract schema information out of the database. Valid schema types are: + + + MetaDataCollections + + + DataSourceInformation + + + Catalogs + + + Columns + + + ForeignKeys + + + Indexes + + + IndexColumns + + + Tables + + + Views + + + ViewColumns + + + + + Returns the MetaDataCollections schema + + A DataTable of the MetaDataCollections schema + + + + Returns schema information of the specified collection + + The schema collection to retrieve + A DataTable of the specified collection + + + + Retrieves schema information using the specified constraint(s) for the specified collection + + The collection to retrieve. + + The restrictions to impose. Typically, this may include: + + + restrictionValues element index + usage + + + 0 + The database (or catalog) name, if applicable. + + + 1 + The schema name. This is not used by this provider. + + + 2 + The table name, if applicable. + + + 3 + + Depends on . + When "IndexColumns", it is the index name; otherwise, it is the column name. + + + + 4 + + Depends on . + When "IndexColumns", it is the column name; otherwise, it is not used. + + + + + A DataTable of the specified collection + + + + Builds a MetaDataCollections schema datatable + + DataTable + + + + Builds a DataSourceInformation datatable + + DataTable + + + + Build a Columns schema + + The catalog (attached database) to query, can be null + The table to retrieve schema information for, can be null + The column to retrieve schema information for, can be null + DataTable + + + + Returns index information for the given database and catalog + + The catalog (attached database) to query, can be null + The name of the index to retrieve information for, can be null + The table to retrieve index information for, can be null + DataTable + + + + Retrieves table schema information for the database and catalog + + The catalog (attached database) to retrieve tables on + The table to retrieve, can be null + The table type, can be null + DataTable + + + + Retrieves view schema information for the database + + The catalog (attached database) to retrieve views on + The view name, can be null + DataTable + + + + Retrieves catalog (attached databases) schema information for the database + + The catalog to retrieve, can be null + DataTable + + + + Returns the base column information for indexes in a database + + The catalog to retrieve indexes for (can be null) + The table to restrict index information by (can be null) + The index to restrict index information by (can be null) + The source column to restrict index information by (can be null) + A DataTable containing the results + + + + Returns detailed column information for a specified view + + The catalog to retrieve columns for (can be null) + The view to restrict column information by (can be null) + The source column to restrict column information by (can be null) + A DataTable containing the results + + + + Retrieves foreign key information from the specified set of filters + + An optional catalog to restrict results on + An optional table to restrict results on + An optional foreign key name to restrict results on + A DataTable with the results of the query + + + + Static variable to store the connection event handlers to call. + + + + + This event is raised whenever the database is opened or closed. + + + + + This event is raised when events related to the lifecycle of a + SQLiteConnection object occur. + + + + + This property is used to obtain or set the custom connection pool + implementation to use, if any. Setting this property to null will + cause the default connection pool implementation to be used. + + + + + Returns the number of pool entries for the file name associated with this connection. + + + + + The connection string containing the parameters for the connection + + + For the complete list of supported connection string properties, + please see . + + + + + Returns the data source file name without extension or path. + + + + + Returns the fully qualified path and file name for the currently open + database, if any. + + + + + Returns the string "main". + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + This can also be set in the ConnectionString with "Default Timeout" + + + + + Gets/sets the default busy timeout to use with the SQLite core library. This is only used when + opening a connection. + + + + + EXPERIMENTAL -- + The wait timeout to use with method. + This is only used when waiting for the enlistment to be reset prior to + enlisting in a transaction, and then only when the appropriate connection + flag is set. + + + + + The maximum number of retries when preparing SQL to be executed. This + normally only applies to preparation errors resulting from the database + schema being changed. + + + + + The approximate number of virtual machine instructions between progress + events. In order for progress events to actually fire, the event handler + must be added to the event as + well. This value will only be used when the underlying native progress + callback needs to be changed. + + + + + Non-zero if the built-in (i.e. framework provided) connection string + parser should be used when opening the connection. + + + + + Gets/sets the extra behavioral flags for this connection. See the + enumeration for a list of + possible values. + + + + + Gets/sets the default database type for this connection. This value + will only be used when not null. + + + + + Gets/sets the default database type name for this connection. This + value will only be used when not null. + + + + + Gets/sets the VFS name for this connection. This value will only be + used when opening the database. + + + + + Returns non-zero if the underlying native connection handle is + owned by this instance. + + + + + Returns the version of the underlying SQLite database engine + + + + + Returns the rowid of the most recent successful INSERT into the database from this connection. + + + + + Returns the number of rows changed by the last INSERT, UPDATE, or DELETE statement executed on + this connection. + + + + + Returns non-zero if the given database connection is in autocommit mode. + Autocommit mode is on by default. Autocommit mode is disabled by a BEGIN + statement. Autocommit mode is re-enabled by a COMMIT or ROLLBACK. + + + + + Returns the amount of memory (in bytes) currently in use by the SQLite core library. + + + + + Returns the maximum amount of memory (in bytes) used by the SQLite core library since the high-water mark was last reset. + + + + + Returns a string containing the define constants (i.e. compile-time + options) used to compile the core managed assembly, delimited with + spaces. + + + + + Returns the version of the underlying SQLite core library. + + + + + This method returns the string whose value is the same as the + SQLITE_SOURCE_ID C preprocessor macro used when compiling the + SQLite core library. + + + + + Returns a string containing the compile-time options used to + compile the SQLite core native library, delimited with spaces. + + + + + This method returns the version of the interop SQLite assembly + used. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the interop + assembly. If the SQLite interop assembly is not in use or the + necessary information cannot be obtained for any reason, a null + value may be returned. + + + + + Returns a string containing the compile-time options used to + compile the SQLite interop assembly, delimited with spaces. + + + + + This method returns the version of the managed components used + to interact with the SQLite core library. If the necessary + information cannot be obtained for any reason, a null value may + be returned. + + + + + This method returns the string whose value contains the unique + identifier for the source checkout used to build the managed + components currently executing. If the necessary information + cannot be obtained for any reason, a null value may be returned. + + + + + The default connection flags to be used for all opened connections + when they are not present in the connection string. + + + + + The extra connection flags to be used for all opened connections. + + + + + Returns the state of the connection. + + + + + This event is raised periodically during long running queries. Changing + the value of the property will + determine if the operation in progress will continue or be interrupted. + For the entire duration of the event, the associated connection and + statement objects must not be modified, either directly or indirectly, by + the called code. + + + + + This event is raised whenever SQLite encounters an action covered by the + authorizer during query preparation. Changing the value of the + property will determine if + the specific action will be allowed, ignored, or denied. For the entire + duration of the event, the associated connection and statement objects + must not be modified, either directly or indirectly, by the called code. + + + + + This event is raised whenever SQLite makes an update/delete/insert into the database on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is committing a transaction. + Return non-zero to trigger a rollback. + + + + + This event is raised whenever SQLite statement first begins executing on + this connection. It only applies to the given connection. + + + + + This event is raised whenever SQLite is rolling back a transaction. + + + + + Returns the instance. + + + + + The I/O file cache flushing behavior for the connection + + + + + Normal file flushing at critical sections of the code + + + + + Full file flushing after every write operation + + + + + Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing + + + + + Raised each time the number of virtual machine instructions is + approximately equal to the value of the + property. + + The connection performing the operation. + A that contains the + event data. + + + + Raised when authorization is required to perform an action contained + within a SQL query. + + The connection performing the action. + A that contains the + event data. + + + + Raised when a transaction is about to be committed. To roll back a transaction, set the + rollbackTrans boolean value to true. + + The connection committing the transaction + Event arguments on the transaction + + + + Raised when data is inserted, updated and deleted on a given connection + + The connection committing the transaction + The event parameters which triggered the event + + + + Raised when a statement first begins executing on a given connection + + The connection executing the statement + Event arguments of the trace + + + + Raised between each backup step. + + + The source database connection. + + + The source database name. + + + The destination database connection. + + + The destination database name. + + + The number of pages copied with each step. + + + The number of pages remaining to be copied. + + + The total number of pages in the source database. + + + Set to true if the operation needs to be retried due to database + locking issues; otherwise, set to false. + + + True to continue with the backup process or false to halt the backup + process, rolling back any changes that have been made so far. + + + + + The event data associated with progress reporting events. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The return code for the current call into the progress callback. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The progress return code. + + + + + The data associated with a call into the authorizer. + + + + + The user-defined native data associated with this event. Currently, + this will always contain the value of . + + + + + The action code responsible for the current call into the authorizer. + + + + + The first string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The second string argument for the current call into the authorizer. + The exact value will vary based on the action code, see the + enumeration for possible + values. + + + + + The database name for the current call into the authorizer, if + applicable. + + + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + + + The return code for the current call into the authorizer. + + + + + Constructs an instance of this class with default property values. + + + + + Constructs an instance of this class with specific property values. + + + The user-defined native data associated with this event. + + + The authorizer action code. + + + The first authorizer argument. + + + The second authorizer argument. + + + The database name, if applicable. + + + The name of the inner-most trigger or view that is responsible for + the access attempt or a null value if this access attempt is directly + from top-level SQL code. + + + The authorizer return code. + + + + + Whenever an update event is triggered on a connection, this enum will indicate + exactly what type of operation is being performed. + + + + + A row is being deleted from the given database and table + + + + + A row is being inserted into the table. + + + + + A row is being updated in the table. + + + + + Passed during an Update callback, these event arguments detail the type of update operation being performed + on the given connection. + + + + + The name of the database being updated (usually "main" but can be any attached or temporary database) + + + + + The name of the table being updated + + + + + The type of update being performed (insert/update/delete) + + + + + The RowId affected by this update. + + + + + Event arguments raised when a transaction is being committed + + + + + Set to true to abort the transaction and trigger a rollback + + + + + Passed during an Trace callback, these event arguments contain the UTF-8 rendering of the SQL statement text + + + + + SQL statement text as the statement first begins executing + + + + + This interface represents a custom connection pool implementation + usable by System.Data.SQLite. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This default method implementations in this class should not be used by + applications that make use of COM (either directly or indirectly) due + to possible deadlocks that can occur during finalization of some COM + objects. + + + + + This field is used to synchronize access to the private static data + in this class. + + + + + When this field is non-null, it will be used to provide the + implementation of all the connection pool methods; otherwise, + the default method implementations will be used. + + + + + The dictionary of connection pools, based on the normalized file + name of the SQLite database. + + + + + The default version number new pools will get. + + + + + The number of connections successfully opened from any pool. + This value is incremented by the Remove method. + + + + + The number of connections successfully closed from any pool. + This value is incremented by the Add method. + + + + + Counts the number of pool entries matching the specified file name. + + + The file name to match or null to match all files. + + + The pool entry counts for each matching file. + + + The total number of connections successfully opened from any pool. + + + The total number of connections successfully closed from any pool. + + + The total number of pool entries for all matching files. + + + + + Disposes of all pooled connections associated with the specified + database file name. + + + The database file name. + + + + + Disposes of all pooled connections. + + + + + Adds a connection to the pool of those associated with the + specified database file name. + + + The database file name. + + + The database connection handle. + + + The connection pool version at the point the database connection + handle was received from the connection pool. This is also the + connection pool version that the database connection handle was + created under. + + + + + Removes a connection from the pool of those associated with the + specified database file name with the intent of using it to + interact with the database. + + + The database file name. + + + The new maximum size of the connection pool for the specified + database file name. + + + The connection pool version associated with the returned database + connection handle, if any. + + + The database connection handle associated with the specified + database file name or null if it cannot be obtained. + + + + + This method is used to obtain a reference to the custom connection + pool implementation currently in use, if any. + + + The custom connection pool implementation or null if the default + connection pool implementation should be used. + + + + + This method is used to set the reference to the custom connection + pool implementation to use, if any. + + + The custom connection pool implementation to use or null if the + default connection pool implementation should be used. + + + + + We do not have to thread-lock anything in this function, because it + is only called by other functions above which already take the lock. + + + The pool queue to resize. + + + If a function intends to add to the pool, this is true, which + forces the resize to take one more than it needs from the pool. + + + + + Keeps track of connections made on a specified file. The PoolVersion + dictates whether old objects get returned to the pool or discarded + when no longer in use. + + + + + The queue of weak references to the actual database connection + handles. + + + + + This pool version associated with the database connection + handles in this pool queue. + + + + + The maximum size of this pool queue. + + + + + Constructs a connection pool queue using the specified version + and maximum size. Normally, all the database connection + handles in this pool are associated with a single database file + name. + + + The initial pool version for this connection pool queue. + + + The initial maximum size for this connection pool queue. + + + + + SQLite implementation of DbConnectionStringBuilder. + + + + + Properties of this class + + + + + Constructs a new instance of the class + + + Default constructor + + + + + Constructs a new instance of the class using the specified connection string. + + The connection string to parse + + + + Private initializer, which assigns the connection string and resets the builder + + The connection string to assign + + + + Helper function for retrieving values from the connectionstring + + The keyword to retrieve settings for + The resulting parameter value + Returns true if the value was found and returned + + + + Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() + + The hashtable to fill with property descriptors + + + + Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. + + + + + Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". + + + + + Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. + + + + + Gets/Sets whether or not to use connection pooling. The default is "False" + + + + + Gets/Sets whethor not to store GUID's in binary format. The default is True + which saves space in the database. + + + + + Gets/Sets the filename to open on the connection string. + + + + + An alternate to the data source property + + + + + An alternate to the data source property that uses the SQLite URI syntax. + + + + + Gets/sets the default command timeout for newly-created commands. This is especially useful for + commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. + + + + + Gets/sets the busy timeout to use with the SQLite core library. + + + + + EXPERIMENTAL -- + The wait timeout to use with + method. + This is only used when waiting for the enlistment to be reset + prior to enlisting in a transaction, and then only when the + appropriate connection flag is set. + + + + + Gets/sets the maximum number of retries when preparing SQL to be executed. + This normally only applies to preparation errors resulting from the database + schema being changed. + + + + + Gets/sets the approximate number of virtual machine instructions between + progress events. In order for progress events to actually fire, the event + handler must be added to the event + as well. + + + + + Determines whether or not the connection will automatically participate + in the current distributed transaction (if one exists) + + + + + If set to true, will throw an exception if the database specified in the connection + string does not exist. If false, the database will be created automatically. + + + + + If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger + database sizes. + + + + + When enabled, the database will be opened for read-only access and writing will be disabled. + + + + + Gets/sets the database encryption password + + + + + Gets/sets the database encryption hexadecimal password + + + + + Gets/sets the database encryption textual password + + + + + Gets/Sets the page size for the connection. + + + + + Gets/Sets the maximum number of pages the database may hold + + + + + Gets/Sets the cache size for the connection. + + + + + Gets/Sets the DateTime format for the connection. + + + + + Gets/Sets the DateTime kind for the connection. + + + + + Gets/sets the DateTime format string used for formatting + and parsing purposes. + + + + + Gets/Sets the placeholder base schema name used for + .NET Framework compatibility purposes. + + + + + Determines how SQLite handles the transaction journal file. + + + + + Sets the default isolation level for transactions on the connection. + + + + + Gets/sets the default database type for the connection. + + + + + Gets/sets the default type name for the connection. + + + + + Gets/sets the VFS name for the connection. + + + + + If enabled, use foreign key constraints + + + + + Enable or disable the recursive trigger capability. + + + + + If non-null, this is the version of ZipVFS to use. This requires the + System.Data.SQLite interop assembly -AND- primary managed assembly to + be compiled with the INTEROP_INCLUDE_ZIPVFS option; otherwise, this + property does nothing. + + + + + Gets/Sets the extra behavioral flags. + + + + + If enabled, apply the default connection settings to opened databases. + + + + + If enabled, attempt to resolve the provided data source file name to a + full path before opening. + + + + + If enabled, skip using the configured default connection flags. + + + + + If enabled, skip using the configured shared connection flags. + + + + + SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite + understands. The DateTime extension to the spec is for internal use only. + + + + + Not used + + + + + All integers in SQLite default to Int64 + + + + + All floating point numbers in SQLite default to double + + + + + The default data type of SQLite is text + + + + + Typically blob types are only seen when returned from a function + + + + + Null types can be returned from functions + + + + + Used internally by this provider + + + + + Used internally by this provider + + + + + These are the event types associated with the + + delegate (and its corresponding event) and the + class. + + + + + Not used. + + + + + Not used. + + + + + The connection is being opened. + + + + + The connection string has been parsed. + + + + + The connection was opened. + + + + + The method was called on the + connection. + + + + + A transaction was created using the connection. + + + + + The connection was enlisted into a transaction. + + + + + A command was created using the connection. + + + + + A data reader was created using the connection. + + + + + An instance of a derived class has + been created to wrap a native resource. + + + + + The connection is being closed. + + + + + The connection was closed. + + + + + A command is being disposed. + + + + + A data reader is being disposed. + + + + + A data reader is being closed. + + + + + A native resource was opened (i.e. obtained) from the pool. + + + + + A native resource was closed (i.e. released) to the pool. + + + + + This implementation of SQLite for ADO.NET can process date/time fields in + databases in one of six formats. + + + ISO8601 format is more compatible, readable, fully-processable, but less + accurate as it does not provide time down to fractions of a second. + JulianDay is the numeric format the SQLite uses internally and is arguably + the most compatible with 3rd party tools. It is not readable as text + without post-processing. Ticks less compatible with 3rd party tools that + query the database, and renders the DateTime field unreadable as text + without post-processing. UnixEpoch is more compatible with Unix systems. + InvariantCulture allows the configured format for the invariant culture + format to be used and is human readable. CurrentCulture allows the + configured format for the current culture to be used and is also human + readable. + + The preferred order of choosing a DateTime format is JulianDay, ISO8601, + and then Ticks. Ticks is mainly present for legacy code support. + + + + + Use the value of DateTime.Ticks. This value is not recommended and is not well supported with LINQ. + + + + + Use the ISO-8601 format. Uses the "yyyy-MM-dd HH:mm:ss.FFFFFFFK" format for UTC DateTime values and + "yyyy-MM-dd HH:mm:ss.FFFFFFF" format for local DateTime values). + + + + + The interval of time in days and fractions of a day since January 1, 4713 BC. + + + + + The whole number of seconds since the Unix epoch (January 1, 1970). + + + + + Any culture-independent string value that the .NET Framework can interpret as a valid DateTime. + + + + + Any string value that the .NET Framework can interpret as a valid DateTime using the current culture. + + + + + The default format for this provider. + + + + + This enum determines how SQLite treats its journal file. + + + By default SQLite will create and delete the journal file when needed during a transaction. + However, for some computers running certain filesystem monitoring tools, the rapid + creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. + + If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" + when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. + + + + + The default mode, this causes SQLite to use the existing journaling mode for the database. + + + + + SQLite will create and destroy the journal file as-needed. + + + + + When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, + and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. + + + + + This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database + corruption in this mode! + + + + + SQLite will truncate the journal file to zero-length instead of deleting it. + + + + + SQLite will store the journal in volatile RAM. This saves disk I/O but at the expense of database safety and integrity. + If the application using SQLite crashes in the middle of a transaction when the MEMORY journaling mode is set, then the + database file will very likely go corrupt. + + + + + SQLite uses a write-ahead log instead of a rollback journal to implement transactions. The WAL journaling mode is persistent; + after being set it stays in effect across multiple database connections and after closing and reopening the database. A database + in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later. + + + + + Possible values for the "synchronous" database setting. This setting determines + how often the database engine calls the xSync method of the VFS. + + + + + Use the default "synchronous" database setting. Currently, this should be + the same as using the FULL mode. + + + + + The database engine continues without syncing as soon as it has handed + data off to the operating system. If the application running SQLite + crashes, the data will be safe, but the database might become corrupted + if the operating system crashes or the computer loses power before that + data has been written to the disk surface. + + + + + The database engine will still sync at the most critical moments, but + less often than in FULL mode. There is a very small (though non-zero) + chance that a power failure at just the wrong time could corrupt the + database in NORMAL mode. + + + + + The database engine will use the xSync method of the VFS to ensure that + all content is safely written to the disk surface prior to continuing. + This ensures that an operating system crash or power failure will not + corrupt the database. FULL synchronous is very safe, but it is also + slower. + + + + + The requested command execution type. This controls which method of the + object will be called. + + + + + Do nothing. No method will be called. + + + + + The command is not expected to return a result -OR- the result is not + needed. The or + method + will be called. + + + + + The command is expected to return a scalar result -OR- the result should + be limited to a scalar result. The + or method will + be called. + + + + + The command is expected to return result. + The or + method will + be called. + + + + + Use the default command execution type. Using this value is the same + as using the value. + + + + + The action code responsible for the current call into the authorizer. + + + + + No action is being performed. This value should not be used from + external code. + + + + + No longer used. + + + + + An index will be created. The action-specific arguments are the + index name and the table name. + + + + + + A table will be created. The action-specific arguments are the + table name and a null value. + + + + + A temporary index will be created. The action-specific arguments + are the index name and the table name. + + + + + A temporary table will be created. The action-specific arguments + are the table name and a null value. + + + + + A temporary trigger will be created. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be created. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be created. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be created. The action-specific arguments are the view + name and a null value. + + + + + A DELETE statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + An index will be dropped. The action-specific arguments are the + index name and the table name. + + + + + A table will be dropped. The action-specific arguments are the tables + name and a null value. + + + + + A temporary index will be dropped. The action-specific arguments are + the index name and the table name. + + + + + A temporary table will be dropped. The action-specific arguments are + the table name and a null value. + + + + + A temporary trigger will be dropped. The action-specific arguments + are the trigger name and the table name. + + + + + A temporary view will be dropped. The action-specific arguments are + the view name and a null value. + + + + + A trigger will be dropped. The action-specific arguments are the + trigger name and the table name. + + + + + A view will be dropped. The action-specific arguments are the view + name and a null value. + + + + + An INSERT statement will be executed. The action-specific arguments + are the table name and a null value. + + + + + A PRAGMA statement will be executed. The action-specific arguments + are the name of the PRAGMA and the new value or a null value. + + + + + A table column will be read. The action-specific arguments are the + table name and the column name. + + + + + A SELECT statement will be executed. The action-specific arguments + are both null values. + + + + + A transaction will be started, committed, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + COMMIT, or ROLLBACK) and a null value. + + + + + An UPDATE statement will be executed. The action-specific arguments + are the table name and the column name. + + + + + A database will be attached to the connection. The action-specific + arguments are the database file name and a null value. + + + + + A database will be detached from the connection. The action-specific + arguments are the database name and a null value. + + + + + The schema of a table will be altered. The action-specific arguments + are the database name and the table name. + + + + + An index will be deleted and then recreated. The action-specific + arguments are the index name and a null value. + + + + + A table will be analyzed to gathers statistics about it. The + action-specific arguments are the table name and a null value. + + + + + A virtual table will be created. The action-specific arguments are + the table name and the module name. + + + + + A virtual table will be dropped. The action-specific arguments are + the table name and the module name. + + + + + A SQL function will be called. The action-specific arguments are a + null value and the function name. + + + + + A savepoint will be created, released, or rolled back. The + action-specific arguments are the name of the operation (BEGIN, + RELEASE, or ROLLBACK) and the savepoint name. + + + + + A recursive query will be executed. The action-specific arguments + are two null values. + + + + + The possible return codes for the progress callback. + + + + + The operation should continue. + + + + + The operation should be interrupted. + + + + + The return code for the current call into the authorizer. + + + + + The action will be allowed. + + + + + The overall action will be disallowed and an error message will be + returned from the query preparation method. + + + + + The specific action will be disallowed; however, the overall action + will continue. The exact effects of this return code vary depending + on the specific action, please refer to the SQLite core library + documentation for futher details. + + + + + Class used internally to determine the datatype of a column in a resultset + + + + + The DbType of the column, or DbType.Object if it cannot be determined + + + + + The affinity of a column, used for expressions or when Type is DbType.Object + + + + + Constructs a default instance of this type. + + + + + Constructs an instance of this type with the specified field values. + + + The type affinity to use for the new instance. + + + The database type to use for the new instance. + + + + + SQLite implementation of DbDataAdapter. + + + + + This class is just a shell around the DbDataAdapter. Nothing from + DbDataAdapter is overridden here, just a few constructors are defined. + + + Default constructor. + + + + + Constructs a data adapter using the specified select command. + + + The select command to associate with the adapter. + + + + + Constructs a data adapter with the supplied select command text and + associated with the specified connection. + + + The select command text to associate with the data adapter. + + + The connection to associate with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + + + Constructs a data adapter with the specified select command text, + and using the specified database connection string. + + + The select command text to use to construct a select command. + + + A connection string suitable for passing to a new SQLiteConnection, + which is associated with the select command. + + + Non-zero to parse the connection string using the built-in (i.e. + framework provided) parser when opening the connection. + + + + + Cleans up resources (native and managed) associated with the current instance. + + + Zero when being disposed via garbage collection; otherwise, non-zero. + + + + + Raised by the underlying DbDataAdapter when a row is being updated + + The event's specifics + + + + Raised by DbDataAdapter after a row is updated + + The event's specifics + + + + Row updating event handler + + + + + Row updated event handler + + + + + Gets/sets the select command for this DataAdapter + + + + + Gets/sets the insert command for this DataAdapter + + + + + Gets/sets the update command for this DataAdapter + + + + + Gets/sets the delete command for this DataAdapter + + + + + SQLite implementation of DbDataReader. + + + + + Underlying command this reader is attached to + + + + + The flags pertaining to the associated connection (via the command). + + + + + Index of the current statement in the command being processed + + + + + Current statement being Read() + + + + + State of the current statement being processed. + -1 = First Step() executed, so the first Read() will be ignored + 0 = Actively reading + 1 = Finished reading + 2 = Non-row-returning statement, no records + + + + + Number of records affected by the insert/update statements executed on the command + + + + + Count of fields (columns) in the row-returning statement currently being processed + + + + + The number of calls to Step() that have returned true (i.e. the number of rows that + have been read in the current result set). + + + + + Maps the field (column) names to their corresponding indexes within the results. + + + + + Datatypes of active fields (columns) in the current statement, used for type-restricting data + + + + + The behavior of the datareader + + + + + If set, then dispose of the command object when the reader is finished + + + + + If set, then raise an exception when the object is accessed after being disposed. + + + + + An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified + + + + + Matches the version of the connection. + + + + + The "stub" (i.e. placeholder) base schema name to use when returning + column schema information. Matches the base schema name used by the + associated connection. + + + + + Internal constructor, initializes the datareader and sets up to begin executing statements + + The SQLiteCommand this data reader is for + The expected behavior of the data reader + + + + Dispose of all resources used by this datareader. + + + + + + Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. + + + + + Throw an error if the datareader is closed + + + + + Throw an error if a row is not loaded + + + + + Enumerator support + + Returns a DbEnumerator object. + + + + Forces the connection flags cached by this data reader to be refreshed + from the underlying connection. + + + + + This method is used to make sure the result set is open and a row is currently available. + + + + + SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table + and the affinity of returned types are all we have to go on to type-restrict data in the reader. + + This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In + the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) + to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. + + + This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. + + The index of the column to type-check + The type we want to get out of the column + + + + Invokes the data reader value callback configured for the database + type name associated with the specified column. If no data reader + value callback is available for the database type name, do nothing. + + + The index of the column being read. + + + The extra event data to pass into the callback. + + + Non-zero if the default handling for the data reader call should be + skipped. If this is set to non-zero and the necessary return value + is unavailable or unsuitable, an exception will be thrown. + + + + + Attempts to query the integer identifier for the current row. This + will not work for tables that were created WITHOUT ROWID -OR- if the + query does not include the "rowid" column or one of its aliases -OR- + if the was not created with the + flag. + + + The index of the BLOB column. + + + The integer identifier for the current row -OR- null if it could not + be determined. + + + + + Retrieves the column as a object. + This will not work for tables that were created WITHOUT ROWID + -OR- if the query does not include the "rowid" column or one + of its aliases -OR- if the was + not created with the + flag. + + The index of the column. + + Non-zero to open the blob object for read-only access. + + A new object. + + + + Retrieves the column as a boolean value + + The index of the column. + bool + + + + Retrieves the column as a single byte value + + The index of the column. + byte + + + + Retrieves a column as an array of bytes (blob) + + The index of the column. + The zero-based index of where to begin reading the data + The buffer to write the bytes into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of bytes written into the array + + To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. + + + + + Returns the column as a single character + + The index of the column. + char + + + + Retrieves a column as an array of chars (blob) + + The index of the column. + The zero-based index of where to begin reading the data + The buffer to write the characters into + The zero-based index of where to begin writing into the array + The number of bytes to retrieve + The actual number of characters written into the array + + To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. + + + + + Retrieves the name of the back-end datatype of the column + + The index of the column. + string + + + + Retrieve the column as a date/time value + + The index of the column. + DateTime + + + + Retrieve the column as a decimal value + + The index of the column. + decimal + + + + Returns the column as a double + + The index of the column. + double + + + + Determines and returns the of the + specified column. + + + The index of the column. + + + The associated with the specified + column, if any. + + + + + Returns the .NET type of a given column + + The index of the column. + Type + + + + Returns a column as a float value + + The index of the column. + float + + + + Returns the column as a Guid + + The index of the column. + Guid + + + + Returns the column as a short + + The index of the column. + Int16 + + + + Retrieves the column as an int + + The index of the column. + Int32 + + + + Retrieves the column as a long + + The index of the column. + Int64 + + + + Retrieves the name of the column + + The index of the column. + string + + + + Returns the name of the database associated with the specified column. + + The index of the column. + string + + + + Returns the name of the table associated with the specified column. + + The index of the column. + string + + + + Returns the original name of the specified column. + + The index of the column. + string + + + + Retrieves the i of a column, given its name + + The name of the column to retrieve + The int i of the column + + + + Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done + to gather the necessary information so it can be represented in an ADO.NET manner. + + Returns a DataTable containing the schema information for the active SELECT statement being processed. + + + + Retrieves the column as a string + + The index of the column. + string + + + + Retrieves the column as an object corresponding to the underlying datatype of the column + + The index of the column. + object + + + + Retreives the values of multiple columns, up to the size of the supplied array + + The array to fill with values from the columns in the current resultset + The number of columns retrieved + + + + Returns a collection containing all the column names and values for the + current row of data in the current resultset, if any. If there is no + current row or no current resultset, an exception may be thrown. + + + The collection containing the column name and value information for the + current row of data in the current resultset or null if this information + cannot be obtained. + + + + + Returns True if the specified column is null + + The index of the column. + True or False + + + + Moves to the next resultset in multiple row-returning SQL command. + + True if the command was successful and a new resultset is available, False otherwise. + + + + This method attempts to query the database connection associated with + the data reader in use. If the underlying command or connection is + unavailable, a null value will be returned. + + + The connection object -OR- null if it is unavailable. + + + + + Retrieves the SQLiteType for a given column and row value. + + + The original SQLiteType structure, based only on the column. + + + The textual value of the column for a given row. + + + The SQLiteType structure. + + + + + Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. + + The flags associated with the parent connection object. + The index of the column. + A SQLiteType structure + + + + Reads the next row from the resultset + + True if a new row was successfully loaded and is ready for processing + + + + Not implemented. Returns 0 + + + + + Returns the number of columns in the current resultset + + + + + Returns the number of rows seen so far in the current result set. + + + + + Returns the number of visible fields in the current resultset + + + + + Returns True if the resultset has rows that can be fetched + + + + + Returns True if the data reader is closed + + + + + Returns the number of rows affected by the statement being executed. + The value returned may not be accurate for DDL statements. Also, it + will be -1 for any statement that does not modify the database (e.g. + SELECT). If an otherwise read-only statement modifies the database + indirectly (e.g. via a virtual table or user-defined function), the + value returned is undefined. + + + + + Indexer to retrieve data from a column given its name + + The name of the column to retrieve data for + The value contained in the column + + + + Indexer to retrieve data from a column given its i + + The index of the column. + The value contained in the column + + + + SQLite exception class. + + + + + This value was copied from the "WinError.h" file included with the + Platform SDK for Windows 10. + + + + + Private constructor for use with serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + Public constructor for generating a SQLite exception given the error + code and message. + + + The SQLite return code to report. + + + Message text to go along with the return code message text. + + + + + Public constructor that uses the base class constructor for the error + message. + + Error message text. + + + + Public constructor that uses the default base class constructor. + + + + + Public constructor that uses the base class constructor for the error + message and inner exception. + + Error message text. + The original (inner) exception. + + + + Adds extra information to the serialized object data specific to this + class type. This is only used for serialization. + + + Holds the serialized object data about the exception being thrown. + + + Contains contextual information about the source or destination. + + + + + This method performs extra initialization tasks. It may be called by + any of the constructors of this class. It must not throw exceptions. + + + + + Maps a Win32 error code to an HRESULT. + + + The specified Win32 error code. It must be within the range of zero + (0) to 0xFFFF (65535). + + + Non-zero if the HRESULT should indicate success; otherwise, zero. + + + The integer value of the HRESULT. + + + + + Attempts to map the specified onto an + existing HRESULT -OR- a Win32 error code wrapped in an HRESULT. The + mappings may not have perfectly matching semantics; however, they do + have the benefit of being unique within the context of this exception + type. + + + The to map. + + + The integer HRESULT value -OR- null if there is no known mapping. + + + + + Returns the error message for the specified SQLite return code. + + The SQLite return code. + The error message or null if it cannot be found. + + + + Returns the composite error message based on the SQLite return code + and the optional detailed error message. + + The SQLite return code. + Optional detailed error message. + Error message text for the return code. + + + + Gets the associated SQLite result code for this exception as a + . This property returns the same + underlying value as the property. + + + + + Gets the associated SQLite return code for this exception as an + . For desktop versions of the .NET Framework, + this property overrides the property of the same name within the + + class. This property returns the same underlying value as the + property. + + + + + SQLite error codes. Actually, this enumeration represents a return code, + which may also indicate success in one of several ways (e.g. SQLITE_OK, + SQLITE_ROW, and SQLITE_DONE). Therefore, the name of this enumeration is + something of a misnomer. + + + + + The error code is unknown. This error code + is only used by the managed wrapper itself. + + + + + Successful result + + + + + SQL error or missing database + + + + + Internal logic error in SQLite + + + + + Access permission denied + + + + + Callback routine requested an abort + + + + + The database file is locked + + + + + A table in the database is locked + + + + + A malloc() failed + + + + + Attempt to write a readonly database + + + + + Operation terminated by sqlite3_interrupt() + + + + + Some kind of disk I/O error occurred + + + + + The database disk image is malformed + + + + + Unknown opcode in sqlite3_file_control() + + + + + Insertion failed because database is full + + + + + Unable to open the database file + + + + + Database lock protocol error + + + + + Database is empty + + + + + The database schema changed + + + + + String or BLOB exceeds size limit + + + + + Abort due to constraint violation + + + + + Data type mismatch + + + + + Library used incorrectly + + + + + Uses OS features not supported on host + + + + + Authorization denied + + + + + Auxiliary database format error + + + + + 2nd parameter to sqlite3_bind out of range + + + + + File opened that is not a database file + + + + + Notifications from sqlite3_log() + + + + + Warnings from sqlite3_log() + + + + + sqlite3_step() has another row ready + + + + + sqlite3_step() has finished executing + + + + + Used to mask off extended result codes + + + + + A collation sequence was referenced by a schema and it cannot be + found. + + + + + An internal operation failed and it may succeed if retried. + + + + + The specified snapshot has been overwritten by a checkpoint. + + + + + A file read operation failed. + + + + + A file read operation returned less data than requested. + + + + + A file write operation failed. + + + + + A file synchronization operation failed. + + + + + A directory synchronization operation failed. + + + + + A file truncate operation failed. + + + + + A file metadata operation failed. + + + + + A file unlock operation failed. + + + + + A file lock operation failed. + + + + + A file delete operation failed. + + + + + Not currently used. + + + + + Out-of-memory during a file operation. + + + + + A file existence/status operation failed. + + + + + A check for a reserved lock failed. + + + + + A file lock operation failed. + + + + + A file close operation failed. + + + + + A directory close operation failed. + + + + + A shared memory open operation failed. + + + + + A shared memory size operation failed. + + + + + A shared memory lock operation failed. + + + + + A shared memory map operation failed. + + + + + A file seek operation failed. + + + + + A file delete operation failed because it does not exist. + + + + + A file memory mapping operation failed. + + + + + The temporary directory path could not be obtained. + + + + + A path string conversion operation failed. + + + + + Reserved. + + + + + An attempt to authenticate failed. + + + + + An attempt to begin a file system transaction failed. + + + + + An attempt to commit a file system transaction failed. + + + + + An attempt to rollback a file system transaction failed. + + + + + Data read from the file system appears to be incorrect. + + + + + File system corruption was detected during a read or write. + + + + + A database table is locked in shared-cache mode. + + + + + A virtual table in the database is locked. + + + + + A database file is locked due to a recovery operation. + + + + + A database file is locked due to snapshot semantics. + + + + + An internal timeout was encountered while waiting for a database lock. + + + + + A database file cannot be opened because no temporary directory is available. + + + + + A database file cannot be opened because its path represents a directory. + + + + + A database file cannot be opened because its full path could not be obtained. + + + + + A database file cannot be opened because a path string conversion operation failed. + + + + + No longer used. + + + + + A database file is a symbolic link and cannot be opened. + + + + + A virtual table is malformed. + + + + + A required sequence table is missing or corrupt. + + + + + An index entry that should be present is missing. + + + + + A database file is read-only due to a recovery operation. + + + + + A database file is read-only because a lock could not be obtained. + + + + + A database file is read-only because it needs rollback processing. + + + + + A database file is read-only because it was moved while open. + + + + + The shared-memory file is read-only and it should be read-write. + + + + + Unable to create journal file because the directory is read-only. + + + + + An operation is being aborted due to rollback processing. + + + + + A CHECK constraint failed. + + + + + A commit hook produced a unsuccessful return code. + + + + + A FOREIGN KEY constraint failed. + + + + + Not currently used. + + + + + A NOT NULL constraint failed. + + + + + A PRIMARY KEY constraint failed. + + + + + The RAISE function was used by a trigger-program. + + + + + A UNIQUE constraint failed. + + + + + Not currently used. + + + + + A ROWID constraint failed. + + + + + A database cursor is busy and cannot be moved. + + + + + Method called without an appropriate license. + + + + + Frames were recovered from the WAL log file. + + + + + Pages were recovered from the journal file. + + + + + An automatic index was created to process a query. + + + + + User authentication failed. + + + + + Success. Prevents the extension from unloading until the process + terminates. + + + + + Success. The specified file name refers to a symbolic link. + + + + + SQLite implementation of . + + + SQLite implementation of . + + + + + Constructs a new instance. + + + + + Cleans up resources (native and managed) associated with the current instance. + + + + + Cleans up resources associated with the current instance. + + + + + Static instance member which returns an instanced class. + + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + Creates and returns a new object. + + The new object. + + + + This method is called to perform preliminary static initialization + necessary for this class. + + + + + This method is called to perform some of the static initialization + necessary for this class. + + + + + Will provide a object in .NET 3.5. + + The class or interface type to query for. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. This event is provided for backward compatibility only. + New code should use the class instead. + + + + + This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each + connection to the database. + + + Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access + to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database + calls during processing. + + It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class + services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement + information in member variables of user-defined function classes. + + For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will + be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. + + + + + The base connection this function is attached to + + + + + Internal array used to keep track of aggregate function context data + + + + + The connection flags associated with this object (this should be the + same value as the flags associated with the parent connection object). + + + + + Holds a reference to the callback function for user functions + + + + + Holds a reference to the callbakc function for stepping in an aggregate function + + + + + Holds a reference to the callback function for finalizing an aggregate function + + + + + Holds a reference to the callback function for collating sequences + + + + + Current context of the current callback. Only valid during a callback + + + + + This static dictionary contains all the registered (known) user-defined + functions declared using the proper attributes. The contained dictionary + values are always null and are not currently used. + + + + + Internal constructor, initializes the function's internal variables. + + + + + Constructs an instance of this class using the specified data-type + conversion parameters. + + + The DateTime format to be used when converting string values to a + DateTime and binding DateTime parameters. + + + The to be used when creating DateTime + values. + + + The format string to be used when parsing and formatting DateTime + values. + + + Non-zero to create a UTF-16 data-type conversion context; otherwise, + a UTF-8 data-type conversion context will be created. + + + + + Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if + someone closes the connection while a DataReader is open. + + + + + Placeholder for a user-defined disposal routine + + True if the object is being disposed explicitly + + + + Cleans up resources associated with the current instance. + + + + + Scalar functions override this method to do their magic. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The arguments for the command to process + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + Aggregate functions override this method to do their magic. + + + Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. + + The arguments for the command to process + The 1-based step number. This is incrememted each time the step method is called. + A placeholder for implementers to store contextual data pertaining to the current context. + + + + Aggregate functions override this method to finish their aggregate processing. + + + If you implemented your aggregate function properly, + you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have + all the information you need in there to figure out what to return. + NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will + be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value + if that is the case. + + Your own assigned contextData, provided for you so you can return your final results. + You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or + you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, + just return it! + + + + + User-defined collating sequences override this method to provide a custom string sorting algorithm. + + The first string to compare. + The second strnig to compare. + 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2. + + + + Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. + + + Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available + to force them into a certain type. Therefore the only types you will ever see as parameters are + DBNull.Value, Int64, Double, String or byte[] array. + + The number of arguments + A pointer to the array of arguments + An object array of the arguments once they've been converted to .NET values + + + + Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. + + The context the return value applies to + The parameter to return to SQLite + + + + Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. + WARNING: Must not throw exceptions. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + Internal collating sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + Internal collating sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. + WARNING: Must not throw exceptions. + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. Returns 0 if an exception is caught. + + + + The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. + WARNING: Must not throw exceptions. + + + This function takes care of doing the lookups and getting the important information put together to call the Step() function. + That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so + binary searches can be done to find the data. + + A raw context pointer + Number of arguments passed in + A pointer to the array of arguments + + + + An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. + WARNING: Must not throw exceptions. + + A raw context pointer + + + + Using reflection, enumerate all assemblies in the current appdomain looking for classes that + have a SQLiteFunctionAttribute attribute, and registering them accordingly. + + + + + Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work + properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. + + The type of the function to register + + + + Alternative method of registering a function. This method + does not require the specified type to be annotated with + . + + + The name of the function to register. + + + The number of arguments accepted by the function. + + + The type of SQLite function being resitered (e.g. scalar, + aggregate, or collating sequence). + + + The that actually implements the function. + This will only be used if the + and parameters are null. + + + The to be used for all calls into the + , + , + and virtual methods. + + + The to be used for all calls into the + virtual method. This + parameter is only necessary for aggregate functions. + + + + + Replaces a registered function, disposing of the associated (old) + value if necessary. + + + The attribute that describes the function to replace. + + + The new value to use. + + + Non-zero if an existing registered function was replaced; otherwise, + zero. + + + + + Creates a instance based on the specified + . + + + The containing the metadata about + the function to create. + + + The created function -OR- null if the function could not be created. + + + Non-zero if the function was created; otherwise, zero. + + + + + Called by the SQLiteBase derived classes, this method binds all registered (known) user-defined functions to a connection. + It is done this way so that all user-defined functions will access the database using the same encoding scheme + as the connection (UTF-8 or UTF-16). + + + The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to + all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. + + The base object on which the functions are to bind. + The flags associated with the parent connection object. + Returns a logical list of functions which the connection should retain until it is closed. + + + + Called by the SQLiteBase derived classes, this method unbinds all registered (known) + functions -OR- all previously bound user-defined functions from a connection. + + The base object from which the functions are to be unbound. + The flags associated with the parent connection object. + + Non-zero to unbind all registered (known) functions -OR- zero to unbind all functions + currently bound to the connection. + + Non-zero if all the specified user-defined functions were unbound. + + + + This function binds a user-defined function to a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + + + + This function unbinds a user-defined functions from a connection. + + + The object instance associated with the + that the function should be bound to. + + + The object instance containing + the metadata for the function to be bound. + + + The object instance that implements the + function to be bound. + + + The flags associated with the parent connection object. + + Non-zero if the function was unbound. + + + + Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert + strings and DateTime's into the current connection's encoding schema. + + + + + This type is used with the + method. + + + This is always the string literal "Invoke". + + + The arguments for the scalar function. + + + The result of the scalar function. + + + + + This type is used with the + method. + + + This is always the string literal "Step". + + + The arguments for the aggregate function. + + + The step number (one based). This is incrememted each time the + method is called. + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + + + This type is used with the + method. + + + This is always the string literal "Final". + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + The result of the aggregate function. + + + + + This type is used with the + method. + + + This is always the string literal "Compare". + + + The first string to compare. + + + The second strnig to compare. + + + A positive integer if the parameter is + greater than the parameter, a negative + integer if the parameter is less than + the parameter, or zero if they are + equal. + + + + + This class implements a SQLite function using a . + All the virtual methods of the class are + implemented using calls to the , + , , + and strongly typed delegate types + or via the method. + The arguments are presented in the same order they appear in + the associated methods with one exception: + the first argument is the name of the virtual method being implemented. + + + + + This error message is used by the overridden virtual methods when + a required property (e.g. + or ) has not been + set. + + + + + This error message is used by the overridden + method when the result does not have a type of . + + + + + Constructs an empty instance of this class. + + + + + Constructs an instance of this class using the specified + as the + implementation. + + + The to be used for all calls into the + , , and + virtual methods needed by the + base class. + + + The to be used for all calls into the + virtual methods needed by the + base class. + + + + + Returns the list of arguments for the method, + as an of . The first + argument is always the literal string "Invoke". + + + The original arguments received by the method. + + + Non-zero if the returned arguments are going to be used with the + type; otherwise, zero. + + + The arguments to pass to the configured . + + + + + Returns the list of arguments for the method, + as an of . The first + argument is always the literal string "Step". + + + The original arguments received by the method. + + + The step number (one based). This is incrememted each time the + method is called. + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + Non-zero if the returned arguments are going to be used with the + type; otherwise, zero. + + + The arguments to pass to the configured . + + + + + Updates the output arguments for the method, + using an of . The first + argument is always the literal string "Step". Currently, only the + parameter is updated. + + + The original arguments received by the method. + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + Non-zero if the returned arguments are going to be used with the + type; otherwise, zero. + + + The arguments to pass to the configured . + + + + + Returns the list of arguments for the method, + as an of . The first + argument is always the literal string "Final". + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + Non-zero if the returned arguments are going to be used with the + type; otherwise, zero. + + + The arguments to pass to the configured . + + + + + Returns the list of arguments for the method, + as an of . The first + argument is always the literal string "Compare". + + + The first string to compare. + + + The second strnig to compare. + + + Non-zero if the returned arguments are going to be used with the + type; otherwise, zero. + + + The arguments to pass to the configured . + + + + + This virtual method is the implementation for scalar functions. + See the method for more + details. + + + The arguments for the scalar function. + + + The result of the scalar function. + + + + + This virtual method is part of the implementation for aggregate + functions. See the method + for more details. + + + The arguments for the aggregate function. + + + The step number (one based). This is incrememted each time the + method is called. + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + + + This virtual method is part of the implementation for aggregate + functions. See the method + for more details. + + + A placeholder for implementers to store contextual data pertaining + to the current context. + + + The result of the aggregate function. + + + + + This virtual method is part of the implementation for collating + sequences. See the method + for more details. + + + The first string to compare. + + + The second strnig to compare. + + + A positive integer if the parameter is + greater than the parameter, a negative + integer if the parameter is less than + the parameter, or zero if they are + equal. + + + + + The to be used for all calls into the + , , and + virtual methods needed by the + base class. + + + + + The to be used for all calls into the + virtual methods needed by the + base class. + + + + + Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. + + + User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. + + + + + Obtains the collating sequence in effect for the given function. + + + + + + Cleans up resources (native and managed) associated with the current instance. + + + Zero when being disposed via garbage collection; otherwise, non-zero. + + + + + The type of user-defined function to declare + + + + + Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. + + + + + Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. + Examples include SUM(), COUNT(), AVG(), etc. + + + + + Collating sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is + sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting + in a user-defined manner. + + + + + An internal callback delegate declaration. + + Raw native context pointer for the user function. + Total number of arguments to the user function. + Raw native pointer to the array of raw native argument pointers. + + + + An internal final callback delegate declaration. + + Raw context pointer for the user function + + + + Internal callback delegate for implementing collating sequences + + Not used + Length of the string pv1 + Pointer to the first string to compare + Length of the string pv2 + Pointer to the second string to compare + Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater + than the second. + + + + The type of collating sequence + + + + + The built-in BINARY collating sequence + + + + + The built-in NOCASE collating sequence + + + + + The built-in REVERSE collating sequence + + + + + A custom user-defined collating sequence + + + + + The encoding type the collation sequence uses + + + + + The collation sequence is UTF8 + + + + + The collation sequence is UTF16 little-endian + + + + + The collation sequence is UTF16 big-endian + + + + + A struct describing the collating sequence a function is executing in + + + + + The name of the collating sequence + + + + + The type of collating sequence + + + + + The text encoding of the collation sequence + + + + + Context of the function that requested the collating sequence + + + + + Calls the base collating sequence to compare two strings + + The first string to compare + The second string to compare + -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 + + + + Calls the base collating sequence to compare two character arrays + + The first array to compare + The second array to compare + -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 + + + + A simple custom attribute to enable us to easily find user-defined functions in + the loaded assemblies and initialize them in SQLite as connections are made. + + + + + Default constructor, initializes the internal variables for the function. + + + + + Constructs an instance of this class. This sets the initial + , , and + properties to null. + + + The name of the function, as seen by the SQLite core library. + + + The number of arguments that the function will accept. + + + The type of function being declared. This will either be Scalar, + Aggregate, or Collation. + + + + + The function's name as it will be used in SQLite command text. + + + + + The number of arguments this function expects. -1 if the number of arguments is variable. + + + + + The type of function this implementation will be. + + + + + The object instance that describes the class + containing the implementation for the associated function. The value of + this property will not be used if either the or + property values are set to non-null. + + + + + The that refers to the implementation for the + associated function. If this property value is set to non-null, it will + be used instead of the property value. + + + + + The that refers to the implementation for the + associated function. If this property value is set to non-null, it will + be used instead of the property value. + + + + + This class provides key info for a given SQLite statement. + + Providing key information for a given statement is non-trivial :( + + + + + + This function does all the nasty work at determining what keys need to be returned for + a given statement. + + + + + + + + Make sure all the subqueries are open and ready and sync'd with the current rowid + of the table they're supporting + + + + + Release any readers on any subqueries + + + + + Append all the columns we've added to the original query to the schema + + + + + + How many additional columns of keyinfo we're holding + + + + + Used to support CommandBehavior.KeyInfo + + + + + Used to keep track of the per-table RowId column metadata. + + + + + A single sub-query for a given table/database. + + + + + Event data for logging event handlers. + + + + + The error code. The type of this object value should be + or . + + + + + SQL statement text as the statement first begins executing + + + + + Extra data associated with this event, if any. + + + + + Constructs the object. + + Should be null. + + The error code. The type of this object value should be + or . + + The error message, if any. + The extra data, if any. + + + + Raised when a log event occurs. + + The current connection + Event arguments of the trace + + + + Manages the SQLite custom logging functionality and the associated + callback for the whole process. + + + + + Maximum number of milliseconds a non-primary thread should wait + for the method to be completed. + + + + + Object used to synchronize access to the static instance data + for this class. + + + + + This will be signaled when the + method has been completed. + + + + + Member variable to store the AppDomain.DomainUnload event handler. + + + + + The default log event handler. + + + + + The log callback passed to native SQLite engine. This must live + as long as the SQLite library has a pointer to it. + + + + + The base SQLite object to interop with. + + + + + The number of times that the + method has been called when the logging subystem was actually + eligible to be initialized (i.e. without the "No_SQLiteLog" + environment variable being set). + + + + + The number of times that the method + has been called. + + + + + The number of times that the + method has been completed (i.e. without the "No_SQLiteLog" + environment variable being set). + + + + + This will be non-zero if an attempt was already made to initialize + the (managed) logging subsystem. + + + + + This will be non-zero if logging is currently enabled. + + + + + Creates the that will be used to + signal completion of the method, + if necessary, and then returns it. + + + The that will be used to signal + completion of the method. + + + + + Initializes the SQLite logging facilities. + + + + + Initializes the SQLite logging facilities -OR- waits for the + SQLite logging facilities to be initialized by another thread. + + + The name of the managed class that called this method. This + parameter may be null. + + + + + Initializes the SQLite logging facilities. + + + The name of the managed class that called this method. This + parameter may be null. + + + Non-zero if everything was fully initialized successfully. + + + + + Uninitializes the SQLite logging facilities. + + + + + Uninitializes the SQLite logging facilities. + + + The name of the managed class that called this method. This + parameter may be null. + + + Non-zero if the native SQLite library should be shutdown prior + to attempting to unset its logging callback. + + + + + Handles the AppDomain being unloaded. + + Should be null. + The data associated with this event. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The SQLite error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + The integer error code. + The message to be logged. + + + + Log a message to all the registered log event handlers without going + through the SQLite library. + + + The error code. The type of this object value should be + System.Int32 or SQLiteErrorCode. + + The message to be logged. + + + + Creates and initializes the default log event handler. + + + + + Adds the default log event handler to the list of handlers. + + + + + Removes the default log event handler from the list of handlers. + + + + + Internal proxy function that calls any registered application log + event handlers. + + WARNING: This method is used more-or-less directly by native code, + do not modify its type signature. + + + The extra data associated with this message, if any. + + + The error code associated with this message. + + + The message string to be logged. + + + + + Default logger. Currently, uses the Trace class (i.e. sends events + to the current trace listeners, if any). + + Should be null. + The data associated with this event. + + + + Member variable to store the application log handler to call. + + + + + This event is raised whenever SQLite raises a logging event. + Note that this should be set as one of the first things in the + application. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + + + + + If this property is true, logging is enabled; otherwise, logging is + disabled. When logging is disabled, no logging events will fire. + For internal use only. + + + + + MetaDataCollections specific to SQLite + + + + + Returns a list of databases attached to the connection + + + + + Returns column information for the specified table + + + + + Returns index information for the optionally-specified table + + + + + Returns base columns for the given index + + + + + Returns the tables in the given catalog + + + + + Returns user-defined views in the given catalog + + + + + Returns underlying column information on the given view + + + + + Returns foreign key information for the given catalog + + + + + Returns the triggers on the database + + + + + SQLite implementation of DbParameter. + + + + + This value represents an "unknown" . + + + + + The command associated with this parameter. + + + + + The data type of the parameter + + + + + The version information for mapping the parameter + + + + + The value of the data in the parameter + + + + + The source column for the parameter + + + + + The column name + + + + + The data size, unused by SQLite + + + + + The database type name associated with this parameter, if any. + + + + + Constructor used when creating for use with a specific command. + + + The command associated with this parameter. + + + + + Default constructor + + + + + Constructs a named parameter given the specified parameter name + + The parameter name + + + + Constructs a named parameter given the specified parameter name and initial value + + The parameter name + The initial value of the parameter + + + + Constructs a named parameter of the specified type + + The parameter name + The datatype of the parameter + + + + Constructs a named parameter of the specified type and source column reference + + The parameter name + The data type + The source column + + + + Constructs a named parameter of the specified type, source column and row version + + The parameter name + The data type + The source column + The row version information + + + + Constructs an unnamed parameter of the specified data type + + The datatype of the parameter + + + + Constructs an unnamed parameter of the specified data type and sets the initial value + + The datatype of the parameter + The initial value of the parameter + + + + Constructs an unnamed parameter of the specified data type and source column + + The datatype of the parameter + The source column + + + + Constructs an unnamed parameter of the specified data type, source column and row version + + The data type + The source column + The row version information + + + + Constructs a named parameter of the specified type and size + + The parameter name + The data type + The size of the parameter + + + + Constructs a named parameter of the specified type, size and source column + + The name of the parameter + The data type + The size of the parameter + The source column + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + The source column + The row version information + + + + Constructs a named parameter of the specified type, size, source column and row version + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + Ignored + The source column + The row version information + The initial value to assign the parameter + + + + Constructs a named parameter, yet another flavor + + The name of the parameter + The data type + The size of the parameter + Only input parameters are supported in SQLite + Ignored + Ignored + The source column + The row version information + Whether or not this parameter is for comparing NULL's + The intial value to assign the parameter + + + + Constructs an unnamed parameter of the specified type and size + + The data type + The size of the parameter + + + + Constructs an unnamed parameter of the specified type, size, and source column + + The data type + The size of the parameter + The source column + + + + Constructs an unnamed parameter of the specified type, size, source column and row version + + The data type + The size of the parameter + The source column + The row version information + + + + Resets the DbType of the parameter so it can be inferred from the value + + + + + Clones a parameter + + A new, unassociated SQLiteParameter + + + + The command associated with this parameter. + + + + + Whether or not the parameter can contain a null value + + + + + Returns the datatype of the parameter + + + + + Supports only input parameters + + + + + Returns the parameter name + + + + + Returns the size of the parameter + + + + + Gets/sets the source column + + + + + Used by DbCommandBuilder to determine the mapping for nullable fields + + + + + Gets and sets the row version + + + + + Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. + + + + + The database type name associated with this parameter, if any. + + + + + SQLite implementation of DbParameterCollection. + + + + + The underlying command to which this collection belongs + + + + + The internal array of parameters in this collection + + + + + Determines whether or not all parameters have been bound to their statement(s) + + + + + Initializes the collection + + The command to which the collection belongs + + + + Retrieves an enumerator for the collection + + An enumerator for the underlying array + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + The source column + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + The size of the value + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter name + The data type + A SQLiteParameter object + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a parameter to the collection + + The parameter to add + A zero-based index of where the parameter is located in the array + + + + Adds a named/unnamed parameter and its value to the parameter collection. + + Name of the parameter, or null to indicate an unnamed parameter + The initial value of the parameter + Returns the SQLiteParameter object created during the call. + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Adds an array of parameters to the collection + + The array of parameters to add + + + + Clears the array and resets the collection + + + + + Determines if the named parameter exists in the collection + + The name of the parameter to check + True if the parameter is in the collection + + + + Determines if the parameter exists in the collection + + The SQLiteParameter to check + True if the parameter is in the collection + + + + Not implemented + + + + + + + Retrieve a parameter by name from the collection + + The name of the parameter to fetch + A DbParameter object + + + + Retrieves a parameter by its index in the collection + + The index of the parameter to retrieve + A DbParameter object + + + + Returns the index of a parameter given its name + + The name of the parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Returns the index of a parameter + + The parameter to find + -1 if not found, otherwise a zero-based index of the parameter + + + + Inserts a parameter into the array at the specified location + + The zero-based index to insert the parameter at + The parameter to insert + + + + Removes a parameter from the collection + + The parameter to remove + + + + Removes a parameter from the collection given its name + + The name of the parameter to remove + + + + Removes a parameter from the collection given its index + + The zero-based parameter index to remove + + + + Re-assign the named parameter to a new parameter object + + The name of the parameter to replace + The new parameter + + + + Re-assign a parameter at the specified index + + The zero-based index of the parameter to replace + The new parameter + + + + Un-binds all parameters from their statements + + + + + This function attempts to map all parameters in the collection to all statements in a Command. + Since named parameters may span multiple statements, this function makes sure all statements are bound + to the same named parameter. Unnamed parameters are bound in sequence. + + + + + Returns false + + + + + Returns false + + + + + Returns false + + + + + Returns null + + + + + Returns a count of parameters in the collection + + + + + Overloaded to specialize the return value of the default indexer + + Name of the parameter to get/set + The specified named SQLite parameter + + + + Overloaded to specialize the return value of the default indexer + + The index of the parameter to get/set + The specified SQLite parameter + + + + Represents a single SQL statement in SQLite. + + + + + The underlying SQLite object this statement is bound to + + + + + The command text of this SQL statement + + + + + The actual statement pointer + + + + + An index from which unnamed parameters begin + + + + + Names of the parameters as SQLite understands them to be + + + + + Parameters for this statement + + + + + Command this statement belongs to (if any) + + + + + The flags associated with the parent connection object. + + + + + Initializes the statement and attempts to get all information about parameters in the statement + + The base SQLite object + The flags associated with the parent connection object + The statement + The command text for this statement + The previous command in a multi-statement command + + + + Disposes and finalizes the statement + + + + + If the underlying database connection is open, fetches the number of changed rows + resulting from the most recent query; otherwise, does nothing. + + + The number of changes when true is returned. + Undefined if false is returned. + + + The read-only flag when true is returned. + Undefined if false is returned. + + Non-zero if the number of changed rows was fetched. + + + + Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to + this statement, and if so, keeps a reference to the parameter so it can be bound later. + + The parameter name to map + The parameter to assign it + + + + Bind all parameters, making sure the caller didn't miss any + + + + + This method attempts to query the database connection associated with + the statement in use. If the underlying command or connection is + unavailable, a null value will be returned. + + + The connection object -OR- null if it is unavailable. + + + + + Invokes the parameter binding callback configured for the database + type name associated with the specified column. If no parameter + binding callback is available for the database type name, do + nothing. + + + The index of the column being read. + + + The instance being bound to the + command. + + + Non-zero if the default handling for the parameter binding call + should be skipped (i.e. the parameter should not be bound at all). + Great care should be used when setting this to non-zero. + + + + + Perform the bind operation for an individual parameter + + The index of the parameter to bind + The parameter we're binding + + + + SQLite implementation of DbTransaction that does not support nested transactions. + + + + + Base class used by to implement DbTransaction for SQLite. + + + + + The connection to which this transaction is bound. + + + + + Matches the version of the connection. + + + + + The isolation level for this transaction. + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Rolls back the active transaction. + + + + + Attempts to start a transaction. An exception will be thrown if the transaction cannot + be started for any reason. + + TRUE to defer the writelock, or FALSE to lock immediately + + + + Issue a ROLLBACK command against the database connection, + optionally re-throwing any caught exception. + + + Non-zero to re-throw caught exceptions. + + + + + Checks the state of this transaction, optionally throwing an exception if a state + inconsistency is found. + + + Non-zero to throw an exception if a state inconsistency is found. + + + Non-zero if this transaction is valid; otherwise, false. + + + + + Gets the isolation level of the transaction. SQLite only supports Serializable transactions. + + + + + Returns the underlying connection to which this transaction applies. + + + + + Forwards to the local Connection property + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Attempts to start a transaction. An exception will be thrown if the transaction cannot + be started for any reason. + + TRUE to defer the writelock, or FALSE to lock immediately + + + + Issue a ROLLBACK command against the database connection, + optionally re-throwing any caught exception. + + + Non-zero to re-throw caught exceptions. + + + + + SQLite implementation of DbTransaction that does support nested transactions. + + + + + The original transaction level for the associated connection + when this transaction was created (i.e. begun). + + + + + The SAVEPOINT name for this transaction, if any. This will + only be non-null if this transaction is a nested one. + + + + + Constructs the transaction object, binding it to the supplied connection + + The connection to open a transaction on + TRUE to defer the writelock, or FALSE to lock immediately + + + + Disposes the transaction. If it is currently active, any changes are rolled back. + + + + + Commits the current transaction. + + + + + Attempts to start a transaction. An exception will be thrown if the transaction cannot + be started for any reason. + + TRUE to defer the writelock, or FALSE to lock immediately + + + + Issue a ROLLBACK command against the database connection, + optionally re-throwing any caught exception. + + + Non-zero to re-throw caught exceptions. + + + + + Constructs the name of a new savepoint for this transaction. It + should only be called from the constructor of this class. + + + The name of the new savepoint -OR- null if it cannot be constructed. + + + + + This static class provides some methods that are shared between the + native library pre-loader and other classes. + + + + + This lock is used to protect the static and + fields. + + + + + This type is only present when running on Mono. + + + + + This type is only present when running on .NET Core. + + + + + Keeps track of whether we are running on Mono. Initially null, it is + set by the method on its first call. Later, it + is returned verbatim by the method. + + + + + Keeps track of whether we are running on .NET Core. Initially null, + it is set by the method on its first + call. Later, it is returned verbatim by the + method. + + + + + Keeps track of whether we successfully invoked the + method. Initially null, it is set by + the method on its first call. + + + + + Determines the ID of the current process. Only used for debugging. + + + The ID of the current process -OR- zero if it cannot be determined. + + + + + Determines whether or not this assembly is running on Mono. + + + Non-zero if this assembly is running on Mono. + + + + + Determines whether or not this assembly is running on .NET Core. + + + Non-zero if this assembly is running on .NET Core. + + + + + Resets the cached value for the "PreLoadSQLite_BreakIntoDebugger" + configuration setting. + + + + + If the "PreLoadSQLite_BreakIntoDebugger" configuration setting is + present (e.g. via the environment), give the interactive user an + opportunity to attach a debugger to the current process; otherwise, + do nothing. + + + + + Determines the ID of the current thread. Only used for debugging. + + + The ID of the current thread -OR- zero if it cannot be determined. + + + + + Determines if the specified flags are present within the flags + associated with the parent connection object. + + + The flags associated with the parent connection object. + + + The flags to check for. + + + Non-zero if the specified flag or flags were present; otherwise, + zero. + + + + + Determines if preparing a query should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the query preparation should be logged; otherwise, zero. + + + + + Determines if pre-parameter binding should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the pre-parameter binding should be logged; otherwise, + zero. + + + + + Determines if parameter binding should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the parameter binding should be logged; otherwise, zero. + + + + + Determines if an exception in a native callback should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the exception should be logged; otherwise, zero. + + + + + Determines if backup API errors should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the backup API error should be logged; otherwise, zero. + + + + + Determines if logging for the class is + disabled. + + + The flags associated with the parent connection object. + + + Non-zero if logging for the class is + disabled; otherwise, zero. + + + + + Determines if errors should be logged. + + + The flags associated with the parent connection object. + + + Non-zero if the error should be logged; + otherwise, zero. + + + + + Determines if exceptions should be + logged. + + + The flags associated with the parent connection object. + + + Non-zero if the exception should be + logged; otherwise, zero. + + + + + Determines if the current process is running on one of the Windows + [sub-]platforms. + + + Non-zero when running on Windows; otherwise, zero. + + + + + This is a wrapper around the + method. + On Mono, it has to call the method overload without the + parameter, due to a bug in Mono. + + + This is used for culture-specific formatting. + + + The format string. + + + An array the objects to format. + + + The resulting string. + + + + + This static class provides a thin wrapper around the native library + loading features of the underlying platform. + + + + + Attempts to load the specified native library file using the Win32 + API. + + + The file name of the native library to load. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + Attempts to determine the machine name of the current process using + the Win32 API. + + + The machine name for the current process -OR- null on failure. + + + + + Attempts to load the specified native library file using the POSIX + API. + + + The file name of the native library to load. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + Attempts to determine the machine name of the current process using + the POSIX API. + + + The machine name for the current process -OR- null on failure. + + + + + Attempts to load the specified native library file. + + + The file name of the native library to load. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + Attempts to determine the machine name of the current process. + + + The machine name for the current process -OR- null on failure. + + + + + This delegate is used to wrap the concept of loading a native + library, based on a file name, and returning the loaded module + handle. + + + The file name of the native library to load. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This delegate is used to wrap the concept of querying the machine + name of the current process. + + + The machine name for the current process -OR- null on failure. + + + + + This class declares P/Invoke methods to call native POSIX APIs. + + + + + For use with dlopen(), bind function calls lazily. + + + + + For use with dlopen(), bind function calls immediately. + + + + + For use with dlopen(), make symbols globally available. + + + + + For use with dlopen(), opposite of RTLD_GLOBAL, and the default. + + + + + For use with dlopen(), the defaults used by this class. + + + + + This is the P/Invoke method that wraps the native Unix uname + function. See the POSIX documentation for full details on what it + does. + + + Structure containing a preallocated byte buffer to fill with the + requested information. + + + Zero for success and less than zero upon failure. + + + + + This is the P/Invoke method that wraps the native Unix dlopen + function. See the POSIX documentation for full details on what it + does. + + + The name of the executable library. + + + This must be a combination of the individual bit flags RTLD_LAZY, + RTLD_NOW, RTLD_GLOBAL, and/or RTLD_LOCAL. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This is the P/Invoke method that wraps the native Unix dlclose + function. See the POSIX documentation for full details on what it + does. + + + The handle to the loaded native library. + + + Zero upon success -OR- non-zero on failure. + + + + + These are the characters used to separate the string fields within + the raw buffer returned by the P/Invoke method. + + + + + This method is a wrapper around the P/Invoke + method that extracts and returns the human readable strings from + the raw buffer. + + + This structure, which contains strings, will be filled based on the + data placed in the raw buffer returned by the + P/Invoke method. + + + Non-zero upon success; otherwise, zero. + + + + + This structure is used when running on POSIX operating systems + to store information about the current machine, including the + human readable name of the operating system as well as that of + the underlying hardware. + + + + + This structure is passed directly to the P/Invoke method to + obtain the information about the current machine, including + the human readable name of the operating system as well as + that of the underlying hardware. + + + + + This class declares P/Invoke methods to call native Win32 APIs. + + + + + This is the P/Invoke method that wraps the native Win32 LoadLibrary + function. See the MSDN documentation for full details on what it + does. + + + The name of the executable library. + + + The native module handle upon success -OR- IntPtr.Zero on failure. + + + + + This is the P/Invoke method that wraps the native Win32 GetSystemInfo + function. See the MSDN documentation for full details on what it + does. + + + The system information structure to be filled in by the function. + + + + + This enumeration contains the possible values for the processor + architecture field of the system information structure. + + + + + This structure contains information about the current computer. This + includes the processor type, page size, memory addresses, etc. + + + + + This class declares P/Invoke methods to call native SQLite APIs. + + + + + The file extension used for dynamic link libraries. + + + + + The primary file extension used for the XML configuration file. + + + + + The secondary file extension used for the XML configuration file. + + + + + This is the name of the primary XML configuration file specific + to the System.Data.SQLite assembly. + + + + + This is the name of the secondary XML configuration file specific + to the System.Data.SQLite assembly. + + + + + This is the XML configuratrion file token that will be replaced with + the qualified path to the directory containing the XML configuration + file. + + + + + This is the environment variable token that will be replaced with + the qualified path to the directory containing this assembly. + + + + + This is the environment variable token that will be replaced with an + abbreviation of the target framework attribute value associated with + this assembly. + + + + + This lock is used to protect the static _SQLiteNativeModuleFileName, + _SQLiteNativeModuleHandle, and processorArchitecturePlatforms fields. + + + + + This dictionary stores the mappings between target framework names + and their associated (NuGet) abbreviations. These mappings are only + used by the method. + + + + + This dictionary stores the mappings between processor architecture + names and platform names. These mappings are now used for two + purposes. First, they are used to determine if the assembly code + base should be used instead of the location, based upon whether one + or more of the named sub-directories exist within the assembly code + base. Second, they are used to assist in loading the appropriate + SQLite interop assembly into the current process. + + + + + This is the cached return value from the + method -OR- null if that method + has never returned a valid value. + + + + + When this field is non-zero, it indicates the + method was not able to locate a + suitable assembly directory. The + method will check this + field and skips calls into the + method whenever it is non-zero. + + + + + This is the cached return value from the + method -OR- null if that method + has never returned a valid value. + + + + + When this field is non-zero, it indicates the + method was not able to locate a + suitable XML configuration file name. The + method will check this + field and skips calls into the + method whenever it is non-zero. + + + + + For now, this method simply calls the Initialize method. + + + + + Attempts to initialize this class by pre-loading the native SQLite + library for the processor architecture of the current process. + + + + + Combines two path strings. + + + The first path -OR- null. + + + The second path -OR- null. + + + The combined path string -OR- null if both of the original path + strings are null. + + + + + Resets the cached XML configuration file name value, thus forcing the + next call to method to rely + upon the method to fetch the + XML configuration file name. + + + + + Queries and returns the cached XML configuration file name for the + assembly containing the managed System.Data.SQLite components, if + available. If the cached XML configuration file name value is not + available, the method will + be used to obtain the XML configuration file name. + + + The XML configuration file name -OR- null if it cannot be determined + or does not exist. + + + + + Queries and returns the XML configuration file name for the assembly + containing the managed System.Data.SQLite components. + + + The XML configuration file name -OR- null if it cannot be determined + or does not exist. + + + + + If necessary, replaces all supported XML configuration file tokens + with their associated values. + + + The name of the XML configuration file being read. + + + A setting value read from the XML configuration file. + + + The value of the will all supported XML + configuration file tokens replaced. No return value is reserved + to indicate an error. This method cannot fail. + + + + + Queries and returns the value of the specified setting, using the + specified XML configuration file. + + + The name of the XML configuration file to read. + + + The name of the setting. + + + The value to be returned if the setting has not been set explicitly + or cannot be determined. + + + Non-zero to expand any environment variable references contained in + the setting value to be returned. This has no effect on the .NET + Compact Framework. + + + Non-zero to replace any special token references contained in the + setting value to be returned. This has no effect on the .NET Compact + Framework. + + + The value of the setting -OR- the default value specified by + if it has not been set explicitly or + cannot be determined. + + + + + Attempts to determine the target framework attribute value that is + associated with the specified managed assembly, if applicable. + + + The managed assembly to read the target framework attribute value + from. + + + The value of the target framework attribute value for the specified + managed assembly -OR- null if it cannot be determined. If this + assembly was compiled with a version of the .NET Framework prior to + version 4.0, the value returned MAY reflect that version of the .NET + Framework instead of the one associated with the specified managed + assembly. + + + + + Accepts a long target framework attribute value and makes it into a + much shorter version, suitable for use with NuGet packages. + + + The long target framework attribute value to convert. + + + The short target framework attribute value -OR- null if it cannot + be determined or converted. + + + + + If necessary, replaces all supported environment variable tokens + with their associated values. + + + A setting value read from an environment variable. + + + The value of the will all supported + environment variable tokens replaced. No return value is reserved + to indicate an error. This method cannot fail. + + + + + Queries and returns the value of the specified setting, using the XML + configuration file and/or the environment variables for the current + process and/or the current system, when available. + + + The name of the setting. + + + The value to be returned if the setting has not been set explicitly + or cannot be determined. + + + The value of the setting -OR- the default value specified by + if it has not been set explicitly or + cannot be determined. By default, all references to existing + environment variables will be expanded to their corresponding values + within the value to be returned unless either the "No_Expand" or + "No_Expand_" environment variable is set [to + anything]. + + + + + Resets the cached assembly directory value, thus forcing the next + call to method to rely + upon the method to fetch the + assembly directory. + + + + + Queries and returns the cached directory for the assembly currently + being executed, if available. If the cached assembly directory value + is not available, the method will + be used to obtain the assembly directory. + + + The directory for the assembly currently being executed -OR- null if + it cannot be determined. + + + + + Queries and returns the directory for the assembly currently being + executed. + + + The directory for the assembly currently being executed -OR- null if + it cannot be determined. + + + + + The name of the environment variable containing the processor + architecture of the current process. + + + + + The native module file name for the native SQLite library or null. + + + + + The native module handle for the native SQLite library or the value + IntPtr.Zero. + + + + + Determines the base file name (without any directory information) + for the native SQLite library to be pre-loaded by this class. + + + The base file name for the native SQLite library to be pre-loaded by + this class -OR- null if its value cannot be determined. + + + + + Searches for the native SQLite library in the directory containing + the assembly currently being executed as well as the base directory + for the current application domain. + + + Upon success, this parameter will be modified to refer to the base + directory containing the native SQLite library. + + + Upon success, this parameter will be modified to refer to the name + of the immediate directory (i.e. the offset from the base directory) + containing the native SQLite library. + + + Upon success, this parameter will be modified to non-zero only if + the base directory itself should be allowed for loading the native + library. + + + Non-zero (success) if the native SQLite library was found; otherwise, + zero (failure). + + + + + Queries and returns the base directory of the current application + domain. + + + The base directory for the current application domain -OR- null if it + cannot be determined. + + + + + Determines if the dynamic link library file name requires a suffix + and adds it if necessary. + + + The original dynamic link library file name to inspect. + + + The dynamic link library file name, possibly modified to include an + extension. + + + + + Queries and returns the processor architecture of the current + process. + + + The processor architecture of the current process -OR- null if it + cannot be determined. + + + + + Given the processor architecture, returns the name of the platform. + + + The processor architecture to be translated to a platform name. + + + The platform name for the specified processor architecture -OR- null + if it cannot be determined. + + + + + Attempts to load the native SQLite library based on the specified + directory and processor architecture. + + + The base directory to use, null for default (the base directory of + the current application domain). This directory should contain the + processor architecture specific sub-directories. + + + The requested processor architecture, null for default (the + processor architecture of the current process). This caller should + almost always specify null for this parameter. + + + Non-zero indicates that the native SQLite library can be loaded + from the base directory itself. + + + The candidate native module file name to load will be stored here, + if necessary. + + + The native module handle as returned by LoadLibrary will be stored + here, if necessary. This value will be IntPtr.Zero if the call to + LoadLibrary fails. + + + Non-zero if the native module was loaded successfully; otherwise, + zero. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> + <DocumentElement> + <DataTypes> + <TypeName>smallint</TypeName> + <ProviderDbType>10</ProviderDbType> + <ColumnSize>5</ColumnSize> + <DataType>System.Int16</DataType> + <CreateFormat>smallint</CreateFormat> + <IsAutoIncrementable>false</IsAutoIncrementable> + <IsCaseSensitive>false</IsCaseSensitive> + <IsFixedLength>true</IsFixedLength> + <IsFixedPrecisionScale>true</IsFixedPrecisionScale> + <IsLong>false</IsLong> + <IsNullable>true</ [rest of string was truncated]";. + + + + + Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. + + + + + Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> + <DocumentElement> + <MetaDataCollections> + <CollectionName>MetaDataCollections</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataCollections> + <CollectionName>DataSourceInformation</CollectionName> + <NumberOfRestrictions>0</NumberOfRestrictions> + <NumberOfIdentifierParts>0</NumberOfIdentifierParts> + </MetaDataCollections> + <MetaDataC [rest of string was truncated]";. + + + + + This interface represents a virtual table implementation written in + native code. + + + + + + int (*xCreate)(sqlite3 *db, void *pAux, + int argc, char *const*argv, + sqlite3_vtab **ppVTab, + char **pzErr); + + + The xCreate method is called to create a new instance of a virtual table + in response to a CREATE VIRTUAL TABLE statement. + If the xCreate method is the same pointer as the xConnect method, then the + virtual table is an eponymous virtual table. + If the xCreate method is omitted (if it is a NULL pointer) then the virtual + table is an eponymous-only virtual table. + + + The db parameter is a pointer to the SQLite database connection that + is executing the CREATE VIRTUAL TABLE statement. + The pAux argument is the copy of the client data pointer that was the + fourth argument to the sqlite3_create_module() or + sqlite3_create_module_v2() call that registered the + virtual table module. + The argv parameter is an array of argc pointers to null terminated strings. + The first string, argv[0], is the name of the module being invoked. The + module name is the name provided as the second argument to + sqlite3_create_module() and as the argument to the USING clause of the + CREATE VIRTUAL TABLE statement that is running. + The second, argv[1], is the name of the database in which the new virtual table is being created. The database name is "main" for the primary database, or + "temp" for TEMP database, or the name given at the end of the ATTACH + statement for attached databases. The third element of the array, argv[2], + is the name of the new virtual table, as specified following the TABLE + keyword in the CREATE VIRTUAL TABLE statement. + If present, the fourth and subsequent strings in the argv[] array report + the arguments to the module name in the CREATE VIRTUAL TABLE statement. + + + The job of this method is to construct the new virtual table object + (an sqlite3_vtab object) and return a pointer to it in *ppVTab. + + + As part of the task of creating a new sqlite3_vtab structure, this + method must invoke sqlite3_declare_vtab() to tell the SQLite + core about the columns and datatypes in the virtual table. + The sqlite3_declare_vtab() API has the following prototype: + + + int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable) + + + The first argument to sqlite3_declare_vtab() must be the same + database connection pointer as the first parameter to this method. + The second argument to sqlite3_declare_vtab() must a zero-terminated + UTF-8 string that contains a well-formed CREATE TABLE statement that + defines the columns in the virtual table and their data types. + The name of the table in this CREATE TABLE statement is ignored, + as are all constraints. Only the column names and datatypes matter. + The CREATE TABLE statement string need not to be + held in persistent memory. The string can be + deallocated and/or reused as soon as the sqlite3_declare_vtab() + routine returns. + + + The xCreate method need not initialize the pModule, nRef, and zErrMsg + fields of the sqlite3_vtab object. The SQLite core will take care of + that chore. + + + The xCreate should return SQLITE_OK if it is successful in + creating the new virtual table, or SQLITE_ERROR if it is not successful. + If not successful, the sqlite3_vtab structure must not be allocated. + An error message may optionally be returned in *pzErr if unsuccessful. + Space to hold the error message string must be allocated using + an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + If the xCreate method is omitted (left as a NULL pointer) then the + virtual table is an eponymous-only virtual table. New instances of + the virtual table cannot be created using CREATE VIRTUAL TABLE and the + virtual table can only be used via its module name. + Note that SQLite versions prior to 3.9.0 (2015-10-14) do not understand + eponymous-only virtual tables and will segfault if an attempt is made + to CREATE VIRTUAL TABLE on an eponymous-only virtual table because + the xCreate method was not checked for null. + + + If the xCreate method is the exact same pointer as the xConnect method, + that indicates that the virtual table does not need to initialize backing + store. Such a virtual table can be used as an eponymous virtual table + or as a named virtual table using CREATE VIRTUAL TABLE or both. + + + If a column datatype contains the special keyword "HIDDEN" + (in any combination of upper and lower case letters) then that keyword + it is omitted from the column datatype name and the column is marked + as a hidden column internally. + A hidden column differs from a normal column in three respects: + + + ]]> + ]]> Hidden columns are not listed in the dataset returned by + "PRAGMA table_info", + ]]>]]> Hidden columns are not included in the expansion of a "*" + expression in the result set of a SELECT, and + ]]>]]> Hidden columns are not included in the implicit column-list + used by an INSERT statement that lacks an explicit column-list. + ]]>]]> + + + For example, if the following SQL is passed to sqlite3_declare_vtab(): + + + CREATE TABLE x(a HIDDEN VARCHAR(12), b INTEGER, c INTEGER Hidden); + + + Then the virtual table would be created with two hidden columns, + and with datatypes of "VARCHAR(12)" and "INTEGER". + + + An example use of hidden columns can be seen in the FTS3 virtual + table implementation, where every FTS virtual table + contains an FTS hidden column that is used to pass information from the + virtual table into FTS auxiliary functions and to the FTS MATCH operator. + + + A virtual table that contains hidden columns can be used like + a table-valued function in the FROM clause of a SELECT statement. + The arguments to the table-valued function become constraints on + the HIDDEN columns of the virtual table. + + + For example, the "generate_series" extension (located in the + ext/misc/series.c + file in the source tree) + implements an eponymous virtual table with the following schema: + + + CREATE TABLE generate_series( + value, + start HIDDEN, + stop HIDDEN, + step HIDDEN + ); + + + The sqlite3_module.xBestIndex method in the implementation of this + table checks for equality constraints against the HIDDEN columns, and uses + those as input parameters to determine the range of integer "value" outputs + to generate. Reasonable defaults are used for any unconstrained columns. + For example, to list all integers between 5 and 50: + + + SELECT value FROM generate_series(5,50); + + + The previous query is equivalent to the following: + + + SELECT value FROM generate_series WHERE start=5 AND stop=50; + + + Arguments on the virtual table name are matched to hidden columns + in order. The number of arguments can be less than the + number of hidden columns, in which case the latter hidden columns are + unconstrained. However, an error results if there are more arguments + than there are hidden columns in the virtual table. + + + Beginning with SQLite version 3.14.0 (2016-08-08), + the CREATE TABLE statement that + is passed into sqlite3_declare_vtab() may contain a WITHOUT ROWID clause. + This is useful for cases where the virtual table rows + cannot easily be mapped into unique integers. A CREATE TABLE + statement that includes WITHOUT ROWID must define one or more columns as + the PRIMARY KEY. Every column of the PRIMARY KEY must individually be + NOT NULL and all columns for each row must be collectively unique. + + + Note that SQLite does not enforce the PRIMARY KEY for a WITHOUT ROWID + virtual table. Enforcement is the responsibility of the underlying + virtual table implementation. But SQLite does assume that the PRIMARY KEY + constraint is valid - that the identified columns really are UNIQUE and + NOT NULL - and it uses that assumption to optimize queries against the + virtual table. + + + The rowid column is not accessible on a + WITHOUT ROWID virtual table (of course). + + + The xUpdate method was originally designed around having a + ROWID as a single value. The xUpdate method has been expanded to + accommodate an arbitrary PRIMARY KEY in place of the ROWID, but the + PRIMARY KEY must still be only one column. For this reason, SQLite + will reject any WITHOUT ROWID virtual table that has more than one + PRIMARY KEY column and a non-NULL xUpdate method. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + int (*xConnect)(sqlite3*, void *pAux, + int argc, char *const*argv, + sqlite3_vtab **ppVTab, + char **pzErr); + + + The xConnect method is very similar to xCreate. + It has the same parameters and constructs a new sqlite3_vtab structure + just like xCreate. + And it must also call sqlite3_declare_vtab() like xCreate. + + + The difference is that xConnect is called to establish a new + connection to an existing virtual table whereas xCreate is called + to create a new virtual table from scratch. + + + The xCreate and xConnect methods are only different when the + virtual table has some kind of backing store that must be initialized + the first time the virtual table is created. The xCreate method creates + and initializes the backing store. The xConnect method just connects + to an existing backing store. When xCreate and xConnect are the same, + the table is an eponymous virtual table. + + + As an example, consider a virtual table implementation that + provides read-only access to existing comma-separated-value (CSV) + files on disk. There is no backing store that needs to be created + or initialized for such a virtual table (since the CSV files already + exist on disk) so the xCreate and xConnect methods will be identical + for that module. + + + Another example is a virtual table that implements a full-text index. + The xCreate method must create and initialize data structures to hold + the dictionary and posting lists for that index. The xConnect method, + on the other hand, only has to locate and use an existing dictionary + and posting lists that were created by a prior xCreate call. + + + The xConnect method must return SQLITE_OK if it is successful + in creating the new virtual table, or SQLITE_ERROR if it is not + successful. If not successful, the sqlite3_vtab structure must not be + allocated. An error message may optionally be returned in *pzErr if + unsuccessful. + Space to hold the error message string must be allocated using + an SQLite memory allocation function like + sqlite3_malloc() or sqlite3_mprintf() as the SQLite core will + attempt to free the space using sqlite3_free() after the error has + been reported up to the application. + + + The xConnect method is required for every virtual table implementation, + though the xCreate and xConnect pointers of the sqlite3_module object + may point to the same function if the virtual table does not need to + initialize backing store. + + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + + SQLite uses the xBestIndex method of a virtual table module to determine + the best way to access the virtual table. + The xBestIndex method has a prototype like this: + + + int (*xBestIndex)(sqlite3_vtab *pVTab, sqlite3_index_info*); + + + The SQLite core communicates with the xBestIndex method by filling + in certain fields of the sqlite3_index_info structure and passing a + pointer to that structure into xBestIndex as the second parameter. + The xBestIndex method fills out other fields of this structure which + forms the reply. The sqlite3_index_info structure looks like this: + + + struct sqlite3_index_info { + /* Inputs */ + const int nConstraint; /* Number of entries in aConstraint */ + const struct sqlite3_index_constraint { + int iColumn; /* Column constrained. -1 for ROWID */ + unsigned char op; /* Constraint operator */ + unsigned char usable; /* True if this constraint is usable */ + int iTermOffset; /* Used internally - xBestIndex should ignore */ + } *const aConstraint; /* Table of WHERE clause constraints */ + const int nOrderBy; /* Number of terms in the ORDER BY clause */ + const struct sqlite3_index_orderby { + int iColumn; /* Column number */ + unsigned char desc; /* True for DESC. False for ASC. */ + } *const aOrderBy; /* The ORDER BY clause */ + /* Outputs */ + struct sqlite3_index_constraint_usage { + int argvIndex; /* if >0, constraint is part of argv to xFilter */ + unsigned char omit; /* Do not code a test for this constraint */ + } *const aConstraintUsage; + int idxNum; /* Number used to identify the index */ + char *idxStr; /* String, possibly obtained from sqlite3_malloc */ + int needToFreeIdxStr; /* Free idxStr using sqlite3_free() if true */ + int orderByConsumed; /* True if output is already ordered */ + double estimatedCost; /* Estimated cost of using this index */ + ]]>/* Fields below are only available in SQLite 3.8.2 and later */]]> + sqlite3_int64 estimatedRows; /* Estimated number of rows returned */ + ]]>/* Fields below are only available in SQLite 3.9.0 and later */]]> + int idxFlags; /* Mask of SQLITE_INDEX_SCAN_* flags */ + ]]>/* Fields below are only available in SQLite 3.10.0 and later */]]> + sqlite3_uint64 colUsed; /* Input: Mask of columns used by statement */ + }; + + + Note the warnings on the "estimatedRows", "idxFlags", and colUsed fields. + These fields were added with SQLite versions 3.8.2, 3.9.0, and 3.10.0, respectively. + Any extension that reads or writes these fields must first check that the + version of the SQLite library in use is greater than or equal to appropriate + version - perhaps comparing the value returned from sqlite3_libversion_number() + against constants 3008002, 3009000, and/or 3010000. The result of attempting + to access these fields in an sqlite3_index_info structure created by an + older version of SQLite are undefined. + + + In addition, there are some defined constants: + + + #define SQLITE_INDEX_CONSTRAINT_EQ 2 + #define SQLITE_INDEX_CONSTRAINT_GT 4 + #define SQLITE_INDEX_CONSTRAINT_LE 8 + #define SQLITE_INDEX_CONSTRAINT_LT 16 + #define SQLITE_INDEX_CONSTRAINT_GE 32 + #define SQLITE_INDEX_CONSTRAINT_MATCH 64 + #define SQLITE_INDEX_CONSTRAINT_LIKE 65 /* 3.10.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_GLOB 66 /* 3.10.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_REGEXP 67 /* 3.10.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_NE 68 /* 3.21.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_ISNOT 69 /* 3.21.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70 /* 3.21.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_ISNULL 71 /* 3.21.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_IS 72 /* 3.21.0 and later */ + #define SQLITE_INDEX_CONSTRAINT_FUNCTION 150 /* 3.25.0 and later */ + #define SQLITE_INDEX_SCAN_UNIQUE 1 /* Scan visits at most 1 row */ + + + The SQLite core calls the xBestIndex method when it is compiling a query + that involves a virtual table. In other words, SQLite calls this method + when it is running sqlite3_prepare() or the equivalent. + By calling this method, the + SQLite core is saying to the virtual table that it needs to access + some subset of the rows in the virtual table and it wants to know the + most efficient way to do that access. The xBestIndex method replies + with information that the SQLite core can then use to conduct an + efficient search of the virtual table. + + + While compiling a single SQL query, the SQLite core might call + xBestIndex multiple times with different settings in sqlite3_index_info. + The SQLite core will then select the combination that appears to + give the best performance. + + + Before calling this method, the SQLite core initializes an instance + of the sqlite3_index_info structure with information about the + query that it is currently trying to process. This information + derives mainly from the WHERE clause and ORDER BY or GROUP BY clauses + of the query, but also from any ON or USING clauses if the query is a + join. The information that the SQLite core provides to the xBestIndex + method is held in the part of the structure that is marked as "Inputs". + The "Outputs" section is initialized to zero. + + + The information in the sqlite3_index_info structure is ephemeral + and may be overwritten or deallocated as soon as the xBestIndex method + returns. If the xBestIndex method needs to remember any part of the + sqlite3_index_info structure, it should make a copy. Care must be + take to store the copy in a place where it will be deallocated, such + as in the idxStr field with needToFreeIdxStr set to 1. + + + Note that xBestIndex will always be called before xFilter, since + the idxNum and idxStr outputs from xBestIndex are required inputs to + xFilter. However, there is no guarantee that xFilter will be called + following a successful xBestIndex. + + + The xBestIndex method is required for every virtual table implementation. + + + The main thing that the SQLite core is trying to communicate to + the virtual table is the constraints that are available to limit + the number of rows that need to be searched. The aConstraint[] array + contains one entry for each constraint. There will be exactly + nConstraint entries in that array. + + + Each constraint will usually correspond to a term in the WHERE clause + or in a USING or ON clause that is of the form + + + column OP EXPR + + + Where "column" is a column in the virtual table, OP is an operator + like "=" or "<", and EXPR is an arbitrary expression. So, for example, + if the WHERE clause contained a term like this: + + + a = 5 + + + Then one of the constraints would be on the "a" column with + operator "=" and an expression of "5". Constraints need not have a + literal representation of the WHERE clause. The query optimizer might + make transformations to the + WHERE clause in order to extract as many constraints + as it can. So, for example, if the WHERE clause contained something + like this: + + + x BETWEEN 10 AND 100 AND 999>y + + + The query optimizer might translate this into three separate constraints: + + + x >= 10 + x <= 100 + y < 999 + + + For each such constraint, the aConstraint[].iColumn field indicates which + column appears on the left-hand side of the constraint. + The first column of the virtual table is column 0. + The rowid of the virtual table is column -1. + The aConstraint[].op field indicates which operator is used. + The SQLITE_INDEX_CONSTRAINT_* constants map integer constants + into operator values. + Columns occur in the order they were defined by the call to + sqlite3_declare_vtab() in the xCreate or xConnect method. + Hidden columns are counted when determining the column index. + + + If the xFindFunction() method for the virtual table is defined, and + if xFindFunction() sometimes returns SQLITE_INDEX_CONSTRAINT_FUNCTION or + larger, then the constraints might also be of the form: + + + FUNCTION( column, EXPR) + + + In this case the aConstraint[].op value is the same as the value + returned by xFindFunction() for FUNCTION. + + + The aConstraint[] array contains information about all constraints + that apply to the virtual table. But some of the constraints might + not be usable because of the way tables are ordered in a join. + The xBestIndex method must therefore only consider constraints + that have an aConstraint[].usable flag which is true. + + + In addition to WHERE clause constraints, the SQLite core also + tells the xBestIndex method about the ORDER BY clause. + (In an aggregate query, the SQLite core might put in GROUP BY clause + information in place of the ORDER BY clause information, but this fact + should not make any difference to the xBestIndex method.) + If all terms of the ORDER BY clause are columns in the virtual table, + then nOrderBy will be the number of terms in the ORDER BY clause + and the aOrderBy[] array will identify the column for each term + in the order by clause and whether or not that column is ASC or DESC. + + + In SQLite version 3.10.0 (2016-01-06) and later, + the colUsed field is available + to indicate which fields of the virtual table are actually used by the + statement being prepared. If the lowest bit of colUsed is set, that + means that the first column is used. The second lowest bit corresponds + to the second column. And so forth. If the most significant bit of + colUsed is set, that means that one or more columns other than the + first 63 columns are used. If column usage information is needed by the + xFilter method, then the required bits must be encoded into either + the idxNum or idxStr output fields. + + + For the LIKE, GLOB, REGEXP, and MATCH operators, the + aConstraint[].iColumn value is the virtual table column that + is the left operand of the operator. However, if these operators + are expressed as function calls instead of operators, then + the aConstraint[].iColumn value references the virtual table + column that is the second argument to that function: + + + LIKE(EXPR, column)]]> + GLOB(EXPR, column)]]> + REGEXP(EXPR, column)]]> + MATCH(EXPR, column)]]> + + + Hence, as far as the xBestIndex() method is concerned, the following + two forms are equivalent: + + + column LIKE EXPR]]> + LIKE(EXPR,column) + + + This special behavior of looking at the second argument of a function + only occurs for the LIKE, GLOB, REGEXP, and MATCH functions. For all + other functions, the aConstraint[].iColumn value references the first + argument of the function. + + + This special feature of LIKE, GLOB, REGEXP, and MATCH does not + apply to the xFindFunction() method, however. The + xFindFunction() method always keys off of the left operand of an + LIKE, GLOB, REGEXP, or MATCH operator but off of the first argument + to function-call equivalents of those operators. + + + Given all of the information above, the job of the xBestIndex + method it to figure out the best way to search the virtual table. + + + The xBestIndex method fills the idxNum and idxStr fields with + information that communicates an indexing strategy to the xFilter + method. The information in idxNum and idxStr is arbitrary as far + as the SQLite core is concerned. The SQLite core just copies the + information through to the xFilter method. Any desired meaning can + be assigned to idxNum and idxStr as long as xBestIndex and xFilter + agree on what that meaning is. + + + The idxStr value may be a string obtained from an SQLite + memory allocation function such as sqlite3_mprintf(). + If this is the case, then the needToFreeIdxStr flag must be set to + true so that the SQLite core will know to call sqlite3_free() on + that string when it has finished with it, and thus avoid a memory leak. + The idxStr value may also be a static constant string, in which case + the needToFreeIdxStr boolean should remain false. + + + If the virtual table will output rows in the order specified by + the ORDER BY clause, then the orderByConsumed flag may be set to + true. If the output is not automatically in the correct order + then orderByConsumed must be left in its default false setting. + This will indicate to the SQLite core that it will need to do a + separate sorting pass over the data after it comes out of the virtual table. + + + The estimatedCost field should be set to the estimated number + of disk access operations required to execute this query against + the virtual table. The SQLite core will often call xBestIndex + multiple times with different constraints, obtain multiple cost + estimates, then choose the query plan that gives the lowest estimate. + The SQLite core initializes estimatedCost to a very large value + prior to invoking xBestIndex, so if xBestIndex determines that the + current combination of parameters is undesirable, it can leave the + estimatedCost field unchanged to discourage its use. + + + If the current version of SQLite is 3.8.2 or greater, the estimatedRows + field may be set to an estimate of the number of rows returned by the + proposed query plan. If this value is not explicitly set, the default + estimate of 25 rows is used. + + + If the current version of SQLite is 3.9.0 or greater, the idxFlags field + may be set to SQLITE_INDEX_SCAN_UNIQUE to indicate that the virtual table + will return only zero or one rows given the input constraints. Additional + bits of the idxFlags field might be understood in later versions of SQLite. + + + The aConstraintUsage[] array contains one element for each of + the nConstraint constraints in the inputs section of the + sqlite3_index_info structure. + The aConstraintUsage[] array is used by xBestIndex to tell the + core how it is using the constraints. + + + The xBestIndex method may set aConstraintUsage[].argvIndex + entries to values greater than zero. + Exactly one entry should be set to 1, another to 2, another to 3, + and so forth up to as many or as few as the xBestIndex method wants. + The EXPR of the corresponding constraints will then be passed + in as the argv[] parameters to xFilter. + + + For example, if the aConstraint[3].argvIndex is set to 1, then + when xFilter is called, the argv[0] passed to xFilter will have + the EXPR value of the aConstraint[3] constraint. + + + By default, the SQLite core double checks all constraints on + each row of the virtual table that it receives. If such a check + is redundant, the xBestFilter method can suppress that double-check by + setting aConstraintUsage[].omit. + + + The xBestIndex method should return SQLITE_OK on success. If any + kind of fatal error occurs, an appropriate error code (ex: SQLITE_NOMEM) + should be returned instead. + + + If xBestIndex returns SQLITE_CONSTRAINT, that does not indicate an + error. Rather, SQLITE_CONSTRAINT indicates that the particular combination + of input parameters specified should not be used in the query plan. + The SQLITE_CONSTRAINT return is useful for table-valued functions that + have required parameters. If the aConstraint[].usable field is false + for one of the required parameter, then the xBestIndex method should + return SQLITE_CONSTRAINT. + + + The following example will better illustrate the use of SQLITE_CONSTRAINT + as a return value from xBestIndex: + + + SELECT * FROM realtab, tablevaluedfunc(realtab.x); + + + Assuming that the first hidden column of "tablevaluedfunc" is "param1", + the query above is semantically equivalent to this: + + + SELECT * FROM realtab, tablevaluedfunc + WHERE tablevaluedfunc.param1 = realtab.x; + + + The query planner must decide between many possible implementations + of this query, but two plans in particular are of note: + + ]]> + ]]>Scan all + rows of realtab and for each row, find rows in tablevaluedfunc where + param1 is equal to realtab.x + ]]>]]>Scan all rows of tablevalued func and for each row find rows + in realtab where x is equal to tablevaluedfunc.param1. + ]]>]]> + + The xBestIndex method will be invoked once for each of the potential + plans above. For plan 1, the aConstraint[].usable flag for for the + SQLITE_CONSTRAINT_EQ constraint on the param1 column will be true because + the right-hand side value for the "param1 = ?" constraint will be known, + since it is determined by the outer realtab loop. + But for plan 2, the aConstraint[].usable flag for "param1 = ?" will be false + because the right-hand side value is determined by an inner loop and is thus + an unknown quantity. Because param1 is a required input to the table-valued + functions, the xBestIndex method should return SQLITE_CONSTRAINT when presented + with plan 2, indicating that a required input is missing. This forces the + query planner to select plan 1. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_index_info structure. + + + A standard SQLite return code. + + + + + + int (*xDisconnect)(sqlite3_vtab *pVTab); + + + This method releases a connection to a virtual table. + Only the sqlite3_vtab object is destroyed. + The virtual table is not destroyed and any backing store + associated with the virtual table persists. + + This method undoes the work of xConnect. + + This method is a destructor for a connection to the virtual table. + Contrast this method with xDestroy. The xDestroy is a destructor + for the entire virtual table. + + + The xDisconnect method is required for every virtual table implementation, + though it is acceptable for the xDisconnect and xDestroy methods to be + the same function if that makes sense for the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xDestroy)(sqlite3_vtab *pVTab); + + + This method releases a connection to a virtual table, just like + the xDisconnect method, and it also destroys the underlying + table implementation. This method undoes the work of xCreate. + + + The xDisconnect method is called whenever a database connection + that uses a virtual table is closed. The xDestroy method is only + called when a DROP TABLE statement is executed against the virtual table. + + + The xDestroy method is required for every virtual table implementation, + though it is acceptable for the xDisconnect and xDestroy methods to be + the same function if that makes sense for the particular virtual table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xOpen)(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor); + + + The xOpen method creates a new cursor used for accessing (read and/or + writing) a virtual table. A successful invocation of this method + will allocate the memory for the sqlite3_vtab_cursor (or a subclass), + initialize the new object, and make *ppCursor point to the new object. + The successful call then returns SQLITE_OK. + + + For every successful call to this method, the SQLite core will + later invoke the xClose method to destroy + the allocated cursor. + + + The xOpen method need not initialize the pVtab field of the + sqlite3_vtab_cursor structure. The SQLite core will take care + of that chore automatically. + + + A virtual table implementation must be able to support an arbitrary + number of simultaneously open cursors. + + + When initially opened, the cursor is in an undefined state. + The SQLite core will invoke the xFilter method + on the cursor prior to any attempt to position or read from the cursor. + + + The xOpen method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab derived structure. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + int (*xClose)(sqlite3_vtab_cursor*); + + + The xClose method closes a cursor previously opened by + xOpen. + The SQLite core will always call xClose once for each cursor opened + using xOpen. + + + This method must release all resources allocated by the + corresponding xOpen call. The routine will not be called again even if it + returns an error. The SQLite core will not use the + sqlite3_vtab_cursor again after it has been closed. + + + The xClose method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + int (*xFilter)(sqlite3_vtab_cursor*, int idxNum, const char *idxStr, + int argc, sqlite3_value **argv); + + + This method begins a search of a virtual table. + The first argument is a cursor opened by xOpen. + The next two arguments define a particular search index previously + chosen by xBestIndex. The specific meanings of idxNum and idxStr + are unimportant as long as xFilter and xBestIndex agree on what + that meaning is. + + + The xBestIndex function may have requested the values of + certain expressions using the aConstraintUsage[].argvIndex values + of the sqlite3_index_info structure. + Those values are passed to xFilter using the argc and argv parameters. + + + If the virtual table contains one or more rows that match the + search criteria, then the cursor must be left point at the first row. + Subsequent calls to xEof must return false (zero). + If there are no rows match, then the cursor must be left in a state + that will cause the xEof to return true (non-zero). + The SQLite engine will use + the xColumn and xRowid methods to access that row content. + The xNext method will be used to advance to the next row. + + + This method must return SQLITE_OK if successful, or an sqlite + error code if an error occurs. + + + The xFilter method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Number used to help identify the selected index. + + + The native pointer to the UTF-8 encoded string containing the + string used to help identify the selected index. + + + The number of native pointers to sqlite3_value structures specified + in . + + + An array of native pointers to sqlite3_value structures containing + filtering criteria for the selected index. + + + A standard SQLite return code. + + + + + + int (*xNext)(sqlite3_vtab_cursor*); + + + The xNext method advances a virtual table cursor + to the next row of a result set initiated by xFilter. + If the cursor is already pointing at the last row when this + routine is called, then the cursor no longer points to valid + data and a subsequent call to the xEof method must return true (non-zero). + If the cursor is successfully advanced to another row of content, then + subsequent calls to xEof must return false (zero). + + + This method must return SQLITE_OK if successful, or an sqlite + error code if an error occurs. + + + The xNext method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + A standard SQLite return code. + + + + + + int (*xEof)(sqlite3_vtab_cursor*); + + + The xEof method must return false (zero) if the specified cursor + currently points to a valid row of data, or true (non-zero) otherwise. + This method is called by the SQL engine immediately after each + xFilter and xNext invocation. + + + The xEof method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Non-zero if no more rows are available; zero otherwise. + + + + + + int (*xColumn)(sqlite3_vtab_cursor*, sqlite3_context*, int N); + + + The SQLite core invokes this method in order to find the value for + the N-th column of the current row. N is zero-based so the first column + is numbered 0. + The xColumn method may return its result back to SQLite using one of the + following interface: + + + ]]> + ]]> sqlite3_result_blob() + ]]>]]> sqlite3_result_double() + ]]>]]> sqlite3_result_int() + ]]>]]> sqlite3_result_int64() + ]]>]]> sqlite3_result_null() + ]]>]]> sqlite3_result_text() + ]]>]]> sqlite3_result_text16() + ]]>]]> sqlite3_result_text16le() + ]]>]]> sqlite3_result_text16be() + ]]>]]> sqlite3_result_zeroblob() + ]]>]]> + + + If the xColumn method implementation calls none of the functions above, + then the value of the column defaults to an SQL NULL. + + + To raise an error, the xColumn method should use one of the result_text() + methods to set the error message text, then return an appropriate + error code. The xColumn method must return SQLITE_OK on success. + + + The xColumn method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_context structure to be used + for returning the specified column value to the SQLite core + library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + + int (*xRowid)(sqlite3_vtab_cursor *pCur, sqlite_int64 *pRowid); + + + A successful invocation of this method will cause *pRowid to be + filled with the rowid of row that the + virtual table cursor pCur is currently pointing at. + This method returns SQLITE_OK on success. + It returns an appropriate error code on failure. + + + The xRowid method is required for every virtual table implementation. + + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + + int (*xUpdate)( + sqlite3_vtab *pVTab, + int argc, + sqlite3_value **argv, + sqlite_int64 *pRowid + ); + + + All changes to a virtual table are made using the xUpdate method. + This one method can be used to insert, delete, or update. + + + The argc parameter specifies the number of entries in the argv array. + The value of argc will be 1 for a pure delete operation or N+2 for an insert + or replace or update where N is the number of columns in the table. + In the previous sentence, N includes any hidden columns. + + + Every argv entry will have a non-NULL value in C but may contain the + SQL value NULL. In other words, it is always true that + ]]>argv[i]!=0]]> for ]]>i]]> between 0 and ]]>argc-1]]>. + However, it might be the case that + ]]>sqlite3_value_type(argv[i])==SQLITE_NULL]]>. + + + The argv[0] parameter is the rowid of a row in the virtual table + to be deleted. If argv[0] is an SQL NULL, then no deletion occurs. + + + The argv[1] parameter is the rowid of a new row to be inserted + into the virtual table. If argv[1] is an SQL NULL, then the implementation + must choose a rowid for the newly inserted row. Subsequent argv[] + entries contain values of the columns of the virtual table, in the + order that the columns were declared. The number of columns will + match the table declaration that the xConnect or xCreate method made + using the sqlite3_declare_vtab() call. All hidden columns are included. + + + When doing an insert without a rowid (argc>1, argv[1] is an SQL NULL), + on a virtual table that uses ROWID (but not on a WITHOUT ROWID virtual table), + the implementation must set *pRowid to the rowid of the newly inserted row; + this will become the value returned by the sqlite3_last_insert_rowid() + function. Setting this value in all the other cases is a harmless no-op; + the SQLite engine ignores the *pRowid return value if argc==1 or + argv[1] is not an SQL NULL. + + + Each call to xUpdate will fall into one of cases shown below. + Not that references to ]]>argv[i]]]> mean the SQL value + held within the argv[i] object, not the argv[i] + object itself. + + + ]]> + ]]>]]>argc = 1 ]]> argv[0] ≠ NULL]]> + ]]>]]> + DELETE: The single row with rowid or PRIMARY KEY equal to argv[0] is deleted. + No insert occurs. + ]]>]]>]]>argc > 1 ]]> argv[0] = NULL]]> + ]]>]]> + INSERT: A new row is inserted with column values taken from + argv[2] and following. In a rowid virtual table, if argv[1] is an SQL NULL, + then a new unique rowid is generated automatically. The argv[1] will be NULL + for a WITHOUT ROWID virtual table, in which case the implementation should + take the PRIMARY KEY value from the appropriate column in argv[2] and following. + ]]>]]>]]>argc > 1 ]]> argv[0] ≠ NULL ]]> argv[0] = argv[1]]]> + ]]>]]> + UPDATE: + The row with rowid or PRIMARY KEY argv[0] is updated with new values + in argv[2] and following parameters. + ]]>]]>]]>argc > 1 ]]> argv[0] ≠ NULL ]]> argv[0] ≠ argv[1]]]> + ]]>]]> + UPDATE with rowid or PRIMARY KEY change: + The row with rowid or PRIMARY KEY argv[0] is updated with + the rowid or PRIMARY KEY in argv[1] + and new values in argv[2] and following parameters. This will occur + when an SQL statement updates a rowid, as in the statement: + + UPDATE table SET rowid=rowid+1 WHERE ...; + + ]]>]]> + + + The xUpdate method must return SQLITE_OK if and only if it is + successful. If a failure occurs, the xUpdate must return an appropriate + error code. On a failure, the pVTab->zErrMsg element may optionally + be replaced with error message text stored in memory allocated from SQLite + using functions such as sqlite3_mprintf() or sqlite3_malloc(). + + + If the xUpdate method violates some constraint of the virtual table + (including, but not limited to, attempting to store a value of the wrong + datatype, attempting to store a value that is too + large or too small, or attempting to change a read-only value) then the + xUpdate must fail with an appropriate error code. + + + If the xUpdate method is performing an UPDATE, then + sqlite3_value_nochange(X) can be used to discover which columns + of the virtual table were actually modified by the UPDATE + statement. The sqlite3_value_nochange(X) interface returns + true for columns that do not change. + On every UPDATE, SQLite will first invoke + xColumn separately for each unchanging column in the table to + obtain the value for that column. The xColumn method can + check to see if the column is unchanged at the SQL level + by invoking sqlite3_vtab_nochange(). If xColumn sees that + the column is not being modified, it should return without setting + a result using one of the sqlite3_result_xxxxx() + interfaces. Only in that case sqlite3_value_nochange() will be + true within the xUpdate method. If xColumn does + invoke one or more sqlite3_result_xxxxx() + interfaces, then SQLite understands that as a change in the value + of the column and the sqlite3_value_nochange() call for that + column within xUpdate will return false. + + + There might be one or more sqlite3_vtab_cursor objects open and in use + on the virtual table instance and perhaps even on the row of the virtual + table when the xUpdate method is invoked. The implementation of + xUpdate must be prepared for attempts to delete or modify rows of the table + out from other existing cursors. If the virtual table cannot accommodate + such changes, the xUpdate method must return an error code. + + + The xUpdate method is optional. + If the xUpdate pointer in the sqlite3_module for a virtual table + is a NULL pointer, then the virtual table is read-only. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of new or modified column values contained in + . + + + The array of native pointers to sqlite3_value structures containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + + int (*xBegin)(sqlite3_vtab *pVTab); + + + This method begins a transaction on a virtual table. + This is method is optional. The xBegin pointer of sqlite3_module + may be NULL. + + + This method is always followed by one call to either the + xCommit or xRollback method. Virtual table transactions do + not nest, so the xBegin method will not be invoked more than once + on a single virtual table + without an intervening call to either xCommit or xRollback. + Multiple calls to other methods can and likely will occur in between + the xBegin and the corresponding xCommit or xRollback. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xSync)(sqlite3_vtab *pVTab); + + + This method signals the start of a two-phase commit on a virtual + table. + This is method is optional. The xSync pointer of sqlite3_module + may be NULL. + + + This method is only invoked after call to the xBegin method and + prior to an xCommit or xRollback. In order to implement two-phase + commit, the xSync method on all virtual tables is invoked prior to + invoking the xCommit method on any virtual table. If any of the + xSync methods fail, the entire transaction is rolled back. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xCommit)(sqlite3_vtab *pVTab); + + + This method causes a virtual table transaction to commit. + This is method is optional. The xCommit pointer of sqlite3_module + may be NULL. + + + A call to this method always follows a prior call to xBegin and + xSync. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xRollback)(sqlite3_vtab *pVTab); + + + This method causes a virtual table transaction to rollback. + This is method is optional. The xRollback pointer of sqlite3_module + may be NULL. + + + A call to this method always follows a prior call to xBegin. + + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + + int (*xFindFunction)( + sqlite3_vtab *pVtab, + int nArg, + const char *zName, + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), + void **ppArg + ); + + + This method is called during sqlite3_prepare() to give the virtual + table implementation an opportunity to overload functions. + This method may be set to NULL in which case no overloading occurs. + + + When a function uses a column from a virtual table as its first + argument, this method is called to see if the virtual table would + like to overload the function. The first three parameters are inputs: + the virtual table, the number of arguments to the function, and the + name of the function. If no overloading is desired, this method + returns 0. To overload the function, this method writes the new + function implementation into *pxFunc and writes user data into *ppArg + and returns either 1 or a number between + SQLITE_INDEX_CONSTRAINT_FUNCTION and 255. + + + Historically, the return value from xFindFunction() was either zero + or one. Zero means that the function is not overloaded and one means that + it is overload. The ability to return values of + SQLITE_INDEX_CONSTRAINT_FUNCTION or greater was added in + version 3.25.0 (2018-09-15). If xFindFunction returns + SQLITE_INDEX_CONSTRAINT_FUNCTION or greater, than means that the function + takes two arguments and the function + can be used as a boolean in the WHERE clause of a query and that + the virtual table is able to exploit that function to speed up the query + result. When xFindFunction returns SQLITE_INDEX_CONSTRAINT_FUNCTION or + larger, the value returned becomes the sqlite3_index_info.aConstraint.op + value for one of the constraints passed into xBestIndex() and the second + argument becomes the value corresponding to that constraint that is passed + to xFilter(). This enables the + xBestIndex()/xFilter implementations to use the function to speed + its search. + + + The technique of having xFindFunction() return values of + SQLITE_INDEX_CONSTRAINT_FUNCTION was initially used in the implementation + of the Geopoly module. The xFindFunction() method of that module returns + SQLITE_INDEX_CONSTRAINT_FUNCTION for the geopoly_overlap() SQL function + and it returns + SQLITE_INDEX_CONSTRAINT_FUNCTION+1 for the geopoly_within() SQL function. + This permits search optimizations for queries such as: + + + SELECT * FROM geopolytab WHERE geopoly_overlap(_shape, $query_polygon); + + + Note that infix functions (LIKE, GLOB, REGEXP, and MATCH) reverse + the order of their arguments. So "like(A,B)" would normally work the same + as "B like A". + However, xFindFunction() always looks a the left-most argument, not + the first logical argument. + Hence, for the form "B like A", SQLite looks at the + left operand "B" and if that operand is a virtual table column + it invokes the xFindFunction() method on that virtual table. + But if the form "like(A,B)" is used instead, then SQLite checks + the A term to see if it is column of a virtual table and if so + it invokes the xFindFunction() method for the virtual table of + column A. + + + The function pointer returned by this routine must be valid for + the lifetime of the sqlite3_vtab object given in the first parameter. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + delegate responsible for implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + + int (*xRename)(sqlite3_vtab *pVtab, const char *zNew); + + + This method provides notification that the virtual table implementation + that the virtual table will be given a new name. + If this method returns SQLITE_OK then SQLite renames the table. + If this method returns an error code then the renaming is prevented. + + + The xRename method is optional. If omitted, then the virtual + table may not be renamed using the ALTER TABLE RENAME command. + + + The PRAGMA legacy_alter_table setting is enabled prior to invoking this + method, and the value for legacy_alter_table is restored after this + method finishes. This is necessary for the correct operation of virtual + tables that make use of shadow tables where the shadow tables must be + renamed to match the new virtual table name. If the legacy_alter_format is + off, then the xConnect method will be invoked for the virtual table every + time the xRename method tries to change the name of the shadow table. + + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the UTF-8 encoded string containing the new + name for the virtual table. + + + A standard SQLite return code. + + + + + + int (*xSavepoint)(sqlite3_vtab *pVtab, int); + int (*xRelease)(sqlite3_vtab *pVtab, int); + int (*xRollbackTo)(sqlite3_vtab *pVtab, int); + + + These methods provide the virtual table implementation an opportunity to + implement nested transactions. They are always optional and will only be + called in SQLite version 3.7.7 (2011-06-23) and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual table X + that it should save its current state as savepoint N. + A subsequent call + to xRollbackTo(X,R) means that the state of the virtual table should return + to what it was when xSavepoint(X,R) was last called. + The call + to xRollbackTo(X,R) will invalidate all savepoints with N>R; none of the + invalided savepoints will be rolled back or released without first + being reinitialized by a call to xSavepoint(). + A call to xRelease(X,M) invalidates all savepoints where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will ever + be called except in between calls to xBegin() and + either xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + + int (*xSavepoint)(sqlite3_vtab *pVtab, int); + int (*xRelease)(sqlite3_vtab *pVtab, int); + int (*xRollbackTo)(sqlite3_vtab *pVtab, int); + + + These methods provide the virtual table implementation an opportunity to + implement nested transactions. They are always optional and will only be + called in SQLite version 3.7.7 (2011-06-23) and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual table X + that it should save its current state as savepoint N. + A subsequent call + to xRollbackTo(X,R) means that the state of the virtual table should return + to what it was when xSavepoint(X,R) was last called. + The call + to xRollbackTo(X,R) will invalidate all savepoints with N>R; none of the + invalided savepoints will be rolled back or released without first + being reinitialized by a call to xSavepoint(). + A call to xRelease(X,M) invalidates all savepoints where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will ever + be called except in between calls to xBegin() and + either xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + + int (*xSavepoint)(sqlite3_vtab *pVtab, int); + int (*xRelease)(sqlite3_vtab *pVtab, int); + int (*xRollbackTo)(sqlite3_vtab *pVtab, int); + + + These methods provide the virtual table implementation an opportunity to + implement nested transactions. They are always optional and will only be + called in SQLite version 3.7.7 (2011-06-23) and later. + + + When xSavepoint(X,N) is invoked, that is a signal to the virtual table X + that it should save its current state as savepoint N. + A subsequent call + to xRollbackTo(X,R) means that the state of the virtual table should return + to what it was when xSavepoint(X,R) was last called. + The call + to xRollbackTo(X,R) will invalidate all savepoints with N>R; none of the + invalided savepoints will be rolled back or released without first + being reinitialized by a call to xSavepoint(). + A call to xRelease(X,M) invalidates all savepoints where N>=M. + + + None of the xSavepoint(), xRelease(), or xRollbackTo() methods will ever + be called except in between calls to xBegin() and + either xCommit() or xRollback(). + + + + The native pointer to the sqlite3_vtab derived structure. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + This class represents a context from the SQLite core library that can + be passed to the sqlite3_result_*() and associated functions. + + + + + This interface represents a native handle provided by the SQLite core + library. + + + + + The native handle value. + + + + + The native context handle. + + + + + Constructs an instance of this class using the specified native + context handle. + + + The native context handle to use. + + + + + Sets the context result to NULL. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to the specified + value. + + + The value to use. This value will be + converted to the UTF-8 encoding prior to being used. + + + + + Sets the context result to the specified + value containing an error message. + + + The value containing the error message text. + This value will be converted to the UTF-8 encoding prior to being + used. + + + + + Sets the context result to the specified + value. + + + The value to use. + + + + + Sets the context result to contain the error code SQLITE_TOOBIG. + + + + + Sets the context result to contain the error code SQLITE_NOMEM. + + + + + Sets the context result to the specified array + value. + + + The array value to use. + + + + + Sets the context result to a BLOB of zeros of the specified size. + + + The number of zero bytes to use for the BLOB context result. + + + + + Sets the context result to the specified . + + + The to use. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a value from the SQLite core library that can be + passed to the sqlite3_value_*() and associated functions. + + + + + The native value handle. + + + + + Constructs an instance of this class using the specified native + value handle. + + + The native value handle to use. + + + + + Invalidates the native value handle, thereby preventing further + access to it from this object instance. + + + + + Converts a native pointer to a native sqlite3_value structure into + a managed object instance. + + + The native pointer to a native sqlite3_value structure to convert. + + + The managed object instance or null upon + failure. + + + + + Converts a logical array of native pointers to native sqlite3_value + structures into a managed array of + object instances. + + + The number of elements in the logical array of native sqlite3_value + structures. + + + The native pointer to the logical array of native sqlite3_value + structures to convert. + + + The managed array of object instances or + null upon failure. + + + + + Gets and returns the type affinity associated with this value. + + + The type affinity associated with this value. + + + + + Gets and returns the number of bytes associated with this value, if + it refers to a UTF-8 encoded string. + + + The number of bytes associated with this value. The returned value + may be zero. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with + this value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. + + + + + Gets and returns the associated with this + value. + + + The associated with this value. The value is + converted from the UTF-8 encoding prior to being returned. + + + + + Gets and returns the array associated with this + value. + + + The array associated with this value. + + + + + Gets and returns an instance associated with + this value. + + + The associated with this value. If the type + affinity of the object is unknown or cannot be determined, a null + value will be returned. + + + + + Uses the native value handle to obtain and store the managed value + for this object instance, thus saving it for later use. The type + of the managed value is determined by the type affinity of the + native value. If the type affinity is not recognized by this + method, no work is done and false is returned. + + + Non-zero if the native value was persisted successfully. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + Returns non-zero if the native SQLite value has been successfully + persisted as a managed value within this object instance (i.e. the + property may then be read successfully). + + + + + If the managed value for this object instance is available (i.e. it + has been previously persisted via the ) method, + that value is returned; otherwise, an exception is thrown. The + returned value may be null. + + + + + These are the allowed values for the operators that are part of a + constraint term in the WHERE clause of a query that uses a virtual + table. + + + + + This value represents the equality operator. + + + + + This value represents the greater than operator. + + + + + This value represents the less than or equal to operator. + + + + + This value represents the less than operator. + + + + + This value represents the greater than or equal to operator. + + + + + This value represents the MATCH operator. + + + + + This value represents the LIKE operator. + + + + + This value represents the GLOB operator. + + + + + This value represents the REGEXP operator. + + + + + This value represents the inequality operator. + + + + + This value represents the IS NOT operator. + + + + + This value represents the IS NOT NULL operator. + + + + + This value represents the IS NULL operator. + + + + + This value represents the IS operator. + + + + + These are the allowed values for the index flags from the + method. + + + + + No special handling. This is the default. + + + + + This value indicates that the scan of the index will visit at + most one row. + + + + + This class represents the native sqlite3_index_constraint structure + from the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint structure. + + + The native sqlite3_index_constraint structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column on left-hand side of constraint. + + + Constraint operator (). + + + True if this constraint is usable. + + + Used internally - + should ignore. + + + + + Column on left-hand side of constraint. + + + + + Constraint operator (). + + + + + True if this constraint is usable. + + + + + Used internally - + should ignore. + + + + + This class represents the native sqlite3_index_orderby structure from + the SQLite core library. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_orderby structure. + + + The native sqlite3_index_orderby structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + Column number. + + + True for DESC. False for ASC. + + + + + Column number. + + + + + True for DESC. False for ASC. + + + + + This class represents the native sqlite3_index_constraint_usage + structure from the SQLite core library. + + + + + Constructs a default instance of this class. + + + + + Constructs an instance of this class using the specified native + sqlite3_index_constraint_usage structure. + + + The native sqlite3_index_constraint_usage structure to use. + + + + + Constructs an instance of this class using the specified field + values. + + + If greater than 0, constraint is part of argv to xFilter. + + + Do not code a test for this constraint. + + + + + If greater than 0, constraint is part of argv to xFilter. + + + + + Do not code a test for this constraint. + + + + + This class represents the various inputs provided by the SQLite core + library to the method. + + + + + Constructs an instance of this class. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + An array of object instances, + each containing information supplied by the SQLite core library. + + + + + This class represents the various outputs provided to the SQLite core + library by the method. + + + + + Constructs an instance of this class. + + + The number of instances + to pre-allocate space for. + + + + + Determines if the native estimatedRows field can be used, based on + the available version of the SQLite core library. + + + Non-zero if the property is supported + by the SQLite core library. + + + + + Determines if the native flags field can be used, based on the + available version of the SQLite core library. + + + Non-zero if the property is supported by + the SQLite core library. + + + + + Determines if the native flags field can be used, based on the + available version of the SQLite core library. + + + Non-zero if the property is supported by + the SQLite core library. + + + + + An array of object + instances, each containing information to be supplied to the SQLite + core library. + + + + + Number used to help identify the selected index. This value will + later be provided to the + method. + + + + + String used to help identify the selected index. This value will + later be provided to the + method. + + + + + Non-zero if the index string must be freed by the SQLite core + library. + + + + + True if output is already ordered. + + + + + Estimated cost of using this index. Using a null value here + indicates that a default estimated cost value should be used. + + + + + Estimated number of rows returned. Using a null value here + indicates that a default estimated rows value should be used. + This property has no effect if the SQLite core library is not at + least version 3.8.2. + + + + + The flags that should be used with this index. Using a null value + here indicates that a default flags value should be used. This + property has no effect if the SQLite core library is not at least + version 3.9.0. + + + + + + Indicates which columns of the virtual table may be required by the + current scan. Virtual table columns are numbered from zero in the + order in which they appear within the CREATE TABLE statement passed + to sqlite3_declare_vtab(). For the first 63 columns (columns 0-62), + the corresponding bit is set within the bit mask if the column may + be required by SQLite. If the table has at least 64 columns and + any column to the right of the first 63 is required, then bit 63 of + colUsed is also set. In other words, column iCol may be required + if the expression + + + (colUsed & ((sqlite3_uint64)1 << (iCol>=63 ? 63 : iCol))) + + + evaluates to non-zero. Using a null value here indicates that a + default flags value should be used. This property has no effect if + the SQLite core library is not at least version 3.10.0. + + + + + + This class represents the various inputs and outputs used with the + method. + + + + + Constructs an instance of this class. + + + The number of (and + ) instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + + + Attempts to determine the structure sizes needed to create and + populate a native + + structure. + + + The size of the native + + structure is stored here. + + + The size of the native + + structure is stored here. + + + The size of the native + + structure is stored here. + + + The size of the native + + structure is stored here. + + + + + Attempts to allocate and initialize a native + + structure. + + + The number of instances to + pre-allocate space for. + + + The number of instances to + pre-allocate space for. + + + The newly allocated native + structure + -OR- if it could not be fully allocated. + + + + + Frees all the memory associated with a native + + structure. + + + The native pointer to the native sqlite3_index_info structure to + free. + + + + + Converts a native pointer to a native sqlite3_index_info structure + into a new object instance. + + + The native pointer to the native sqlite3_index_info structure to + convert. + + + Non-zero to include fields from the outputs portion of the native + structure; otherwise, the "output" fields will not be read. + + + Upon success, this parameter will be modified to contain the newly + created object instance. + + + + + Populates the outputs of a pre-allocated native sqlite3_index_info + structure using an existing object + instance. + + + The existing object instance containing + the output data to use. + + + The native pointer to the pre-allocated native sqlite3_index_info + structure. + + + Non-zero to include fields from the inputs portion of the native + structure; otherwise, the "input" fields will not be written. + + + + + The object instance containing + the inputs to the + method. + + + + + The object instance containing + the outputs from the + method. + + + + + This class represents a managed virtual table implementation. It is + not sealed and should be used as the base class for any user-defined + virtual table classes implemented in managed code. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the module implementing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the database containing this virtual table. + + + + + The index within the array of strings provided to the + and + methods containing the + name of the virtual table. + + + + + Constructs an instance of this class. + + + The original array of strings provided to the + and + methods. + + + + + This method should normally be used by the + method in order to + perform index selection based on the constraints provided by the + SQLite core library. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + Non-zero upon success. + + + + + Attempts to record the renaming of the virtual table associated + with this object instance. + + + The new name for the virtual table. + + + Non-zero upon success. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The original array of strings provided to the + and + methods. + + + + + The name of the module implementing this virtual table. + + + + + The name of the database containing this virtual table. + + + + + The name of the virtual table. + + + + + The object instance containing all the + data for the inputs and outputs relating to the most recent index + selection. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This class represents a managed virtual table cursor implementation. + It is not sealed and should be used as the base class for any + user-defined virtual table cursor classes implemented in managed code. + + + + + This value represents an invalid integer row sequence number. + + + + + The field holds the integer row sequence number for the current row + pointed to by this cursor object instance. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + + + Constructs an instance of this class. + + + + + Attempts to persist the specified object + instances in order to make them available after the + method returns. + + + The array of object instances to be + persisted. + + + The number of object instances that were + successfully persisted. + + + + + This method should normally be used by the + method in order to + perform filtering of the result rows and/or to record the filtering + criteria provided by the SQLite core library. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + + + Determines the integer row sequence number for the current row. + + + The integer row sequence number for the current row -OR- zero if + it cannot be determined. + + + + + Adjusts the integer row sequence number so that it refers to the + next row. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being called + from the finalizer. + + + + + Finalizes this object instance. + + + + + The object instance associated + with this object instance. + + + + + Number used to help identify the selected index. This value will + be set via the method. + + + + + String used to help identify the selected index. This value will + be set via the method. + + + + + The values used to filter the rows returned via this cursor object + instance. This value will be set via the + method. + + + + + Returns the underlying SQLite native handle associated with this + object instance. + + + + + This interface represents a virtual table implementation written in + managed code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class contains static methods that are used to allocate, + manipulate, and free native memory provided by the SQLite core library. + + + + + Determines if the native sqlite3_msize() API can be used, based on + the available version of the SQLite core library. + + + Non-zero if the native sqlite3_msize() API is supported by the + SQLite core library. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer. If the TRACK_MEMORY_BYTES option + was enabled at compile-time, adjusts the number of bytes currently + allocated by this class. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc64() function and returns + the resulting native pointer. If the TRACK_MEMORY_BYTES option + was enabled at compile-time, adjusts the number of bytes currently + allocated by this class. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc() function and returns + the resulting native pointer without adjusting the number of + allocated bytes currently tracked by this class. This is useful + when dealing with blocks of memory that will be freed directly by + the SQLite core library. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Allocates at least the specified number of bytes of native memory + via the SQLite core library sqlite3_malloc64() function and returns + the resulting native pointer without adjusting the number of + allocated bytes currently tracked by this class. This is useful + when dealing with blocks of memory that will be freed directly by + the SQLite core library. + + + The number of bytes to allocate. + + + The native pointer that points to a block of memory of at least the + specified size -OR- if the memory could + not be allocated. + + + + + Gets and returns the actual size of the specified memory block + that was previously obtained from the , + , , or + methods or directly from the + SQLite core library. + + + The native pointer to the memory block previously obtained from + the , , + , or + methods or directly from the + SQLite core library. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Gets and returns the actual size of the specified memory block + that was previously obtained from the , + , , or + methods or directly from the + SQLite core library. + + + The native pointer to the memory block previously obtained from + the , , + , or + methods or directly from the + SQLite core library. + + + The actual size, in bytes, of the memory block specified via the + native pointer. + + + + + Frees a memory block previously obtained from the + or methods. If + the TRACK_MEMORY_BYTES option was enabled at compile-time, adjusts + the number of bytes currently allocated by this class. + + + The native pointer to the memory block previously obtained from the + or methods. + + + + + Frees a memory block previously obtained from the SQLite core + library without adjusting the number of allocated bytes currently + tracked by this class. This is useful when dealing with blocks of + memory that were not allocated using this class. + + + The native pointer to the memory block previously obtained from the + SQLite core library. + + + + + This class contains static methods that are used to deal with native + UTF-8 string pointers to be used with the SQLite core library. + + + + + This is the maximum possible length for the native UTF-8 encoded + strings used with the SQLite core library. + + + + + This is the object instance used to handle + conversions from/to UTF-8. + + + + + Converts the specified managed string into the UTF-8 encoding and + returns the array of bytes containing its representation in that + encoding. + + + The managed string to convert. + + + The array of bytes containing the representation of the managed + string in the UTF-8 encoding or null upon failure. + + + + + Converts the specified array of bytes representing a string in the + UTF-8 encoding and returns a managed string. + + + The array of bytes to convert. + + + The managed string or null upon failure. + + + + + Probes a native pointer to a string in the UTF-8 encoding for its + terminating NUL character, within the specified length limit. + + + The native NUL-terminated string pointer. + + + The maximum length of the native string, in bytes. + + + The length of the native string, in bytes -OR- zero if the length + could not be determined. + + + + + Converts the specified native NUL-terminated UTF-8 string pointer + into a managed string. + + + The native NUL-terminated UTF-8 string pointer. + + + The managed string or null upon failure. + + + + + Converts the specified native UTF-8 string pointer of the specified + length into a managed string. + + + The native UTF-8 string pointer. + + + The length of the native string, in bytes. + + + The managed string or null upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + Non-zero to obtain memory from the SQLite core library without + adjusting the number of allocated bytes currently being tracked + by the class. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + The length of the native string, in bytes. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts the specified managed string into a native NUL-terminated + UTF-8 string pointer using memory obtained from the SQLite core + library. + + + The managed string to convert. + + + Non-zero to obtain memory from the SQLite core library without + adjusting the number of allocated bytes currently being tracked + by the class. + + + The length of the native string, in bytes. + + + The native NUL-terminated UTF-8 string pointer or + upon failure. + + + + + Converts a logical array of native NUL-terminated UTF-8 string + pointers into an array of managed strings. + + + The number of elements in the logical array of native + NUL-terminated UTF-8 string pointers. + + + The native pointer to the logical array of native NUL-terminated + UTF-8 string pointers to convert. + + + The array of managed strings or null upon failure. + + + + + Converts an array of managed strings into an array of native + NUL-terminated UTF-8 string pointers. + + + The array of managed strings to convert. + + + Non-zero to obtain memory from the SQLite core library without + adjusting the number of allocated bytes currently being tracked + by the class. + + + The array of native NUL-terminated UTF-8 string pointers or null + upon failure. + + + + + This class contains static methods that are used to deal with native + pointers to memory blocks that logically contain arrays of bytes to be + used with the SQLite core library. + + + + + Converts a native pointer to a logical array of bytes of the + specified length into a managed byte array. + + + The native pointer to the logical array of bytes to convert. + + + The length, in bytes, of the logical array of bytes to convert. + + + The managed byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The native pointer to a logical byte array or null upon failure. + + + + + Converts a managed byte array into a native pointer to a logical + array of bytes. + + + The managed byte array to convert. + + + The length, in bytes, of the converted logical array of bytes. + + + The native pointer to a logical byte array or null upon failure. + + + + + This class contains static methods that are used to perform several + low-level data marshalling tasks between native and managed code. + + + + + Returns a new object instance based on the + specified object instance and an integer + offset. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location that the new + object instance should point to. + + + The new object instance. + + + + + Rounds up an integer size to the next multiple of the alignment. + + + The size, in bytes, to be rounded up. + + + The required alignment for the return value. + + + The size, in bytes, rounded up to the next multiple of the + alignment. This value may end up being the same as the original + size. + + + + + Determines the offset, in bytes, of the next structure member. + + + The offset, in bytes, of the current structure member. + + + The size, in bytes, of the current structure member. + + + The alignment, in bytes, of the next structure member. + + + The offset, in bytes, of the next structure member. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Reads a value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + to be read is located. + + + The value at the specified memory location. + + + + + Reads an value from the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be read is located. + + + The value at the specified memory location. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes an value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Writes a value to the specified memory + location. + + + The object instance representing the base + memory location. + + + The integer offset from the base memory location where the + value to be written is located. + + + The value to write. + + + + + Generates a hash code value for the object. + + + The object instance used to calculate the hash code. + + + Non-zero if different object instances with the same value should + generate different hash codes, where applicable. This parameter + has no effect on the .NET Compact Framework. + + + The hash code value -OR- zero if the object is null. + + + + + This class represents a managed virtual table module implementation. + It is not sealed and must be used as the base class for any + user-defined virtual table module classes implemented in managed code. + + + + + The default version of the native sqlite3_module structure in use. + + + + + This field is used to store the native sqlite3_module structure + associated with this object instance. + + + + + This field is used to store the destructor delegate to be passed to + the SQLite core library via the sqlite3_create_disposable_module() + function. + + + + + This field is used to store a pointer to the native sqlite3_module + structure returned by the sqlite3_create_disposable_module + function. + + + + + This field is used to store the virtual table instances associated + with this module. The native pointer to the sqlite3_vtab derived + structure is used to key into this collection. + + + + + This field is used to store the virtual table cursor instances + associated with this module. The native pointer to the + sqlite3_vtab_cursor derived structure is used to key into this + collection. + + + + + This field is used to store the virtual table function instances + associated with this module. The case-insensitive function name + and the number of arguments (with -1 meaning "any") are used to + construct the string that is used to key into this collection. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Calls the native SQLite core library in order to create a new + disposable module containing the implementation of a virtual table. + + + The native database connection pointer to use. + + + Non-zero upon success. + + + + + This method is called by the SQLite core library when the native + module associated with this object instance is being destroyed due + to its parent connection being closed. It may also be called by + the "vtshim" module if/when the sqlite3_dispose_module() function + is called. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + + + Creates and returns the native sqlite_module structure using the + configured (or default) + interface implementation. + + + The native sqlite_module structure using the configured (or + default) interface + implementation. + + + + + Creates and returns the native sqlite_module structure using the + specified interface + implementation. + + + The interface implementation to + use. + + + The native sqlite_module structure using the specified + interface implementation. + + + + + Creates a copy of the specified + object instance, + using default implementations for the contained delegates when + necessary. + + + The object + instance to copy. + + + The new object + instance. + + + + + Calls one of the virtual table initialization methods. + + + Non-zero to call the + method; otherwise, the + method will be called. + + + The native database connection handle. + + + The original native pointer value that was provided to the + sqlite3_create_module(), sqlite3_create_module_v2() or + sqlite3_create_disposable_module() functions. + + + The number of arguments from the CREATE VIRTUAL TABLE statement. + + + The array of string arguments from the CREATE VIRTUAL TABLE + statement. + + + Upon success, this parameter must be modified to point to the newly + created native sqlite3_vtab derived structure. + + + Upon failure, this parameter must be modified to point to the error + message, with the underlying memory having been obtained from the + sqlite3_malloc() function. + + + A standard SQLite return code. + + + + + Calls one of the virtual table finalization methods. + + + Non-zero to call the + method; otherwise, the + method will be + called. + + + The native pointer to the sqlite3_vtab derived structure. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + Non-zero if caught exceptions should be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + Non-zero if caught exceptions should be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + used to get the native pointer to the sqlite3_vtab derived + structure. + + + Non-zero if this error message should also be logged using the + class. + + + Non-zero if caught exceptions should be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance to be used. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + Non-zero if this error message should also be logged using the + class. + + + Non-zero if caught exceptions should be logged using the + class. + + + The error message. + + + Non-zero upon success. + + + + + Gets and returns the interface + implementation to be used when creating the native sqlite3_module + structure. Derived classes may override this method to supply an + alternate implementation for the + interface. + + + The interface implementation to + be used when populating the native sqlite3_module structure. If + the returned value is null, the private methods provided by the + class and relating to the + interface will be used to + create the necessary delegates. + + + + + Creates and returns the + interface implementation corresponding to the current + object instance. + + + The interface implementation + corresponding to the current object + instance. + + + + + Allocates a native sqlite3_vtab derived structure and returns a + native pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Zeros out the fields of a native sqlite3_vtab derived structure. + + + The native pointer to the native sqlite3_vtab derived structure to + zero. + + + + + Frees a native sqlite3_vtab structure using the provided native + pointer to it. + + + A native pointer to a native sqlite3_vtab derived structure. + + + + + Allocates a native sqlite3_vtab_cursor derived structure and + returns a native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Frees a native sqlite3_vtab_cursor structure using the provided + native pointer to it. + + + A native pointer to a native sqlite3_vtab_cursor derived structure. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The object instance to be used. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Reads and returns the native pointer to the sqlite3_vtab derived + structure based on the native pointer to the sqlite3_vtab_cursor + derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure + from which to read the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure -OR- + if it cannot be determined. + + + + + Looks up and returns the object + instance based on the native pointer to the sqlite3_vtab derived + structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The object instance or null if + the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab derived + structure and creates an association between it and the specified + object instance. + + + The object instance to be used + when creating the association. + + + The native pointer to a sqlite3_vtab derived structure or + if the method fails for any reason. + + + + + Looks up and returns the + object instance based on the native pointer to the + sqlite3_vtab_cursor derived structure. + + + The native pointer to the sqlite3_vtab derived structure. + + + The native pointer to the sqlite3_vtab_cursor derived structure. + + + The object instance or null + if the corresponding one cannot be found. + + + + + Allocates and returns a native pointer to a sqlite3_vtab_cursor + derived structure and creates an association between it and the + specified object instance. + + + The object instance to be + used when creating the association. + + + The native pointer to a sqlite3_vtab_cursor derived structure or + if the method fails for any reason. + + + + + Deterimines the key that should be used to identify and store the + object instance for the virtual table + (i.e. to be returned via the + method). + + + The number of arguments to the virtual table function. + + + The name of the virtual table function. + + + The object instance associated with + this virtual table function. + + + The string that should be used to identify and store the virtual + table function instance. This method cannot return null. If null + is returned from this method, the behavior is undefined. + + + + + Attempts to declare the schema for the virtual table using the + specified database connection. + + + The object instance to use when + declaring the schema of the virtual table. This parameter may not + be null. + + + The string containing the CREATE TABLE statement that completely + describes the schema for the virtual table. This parameter may not + be null. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + Calls the native SQLite core library in order to declare a virtual + table function in response to a call into the + + or virtual table + methods. + + + The object instance to use when + declaring the schema of the virtual table. + + + The number of arguments to the function being declared. + + + The name of the function being declared. + + + Upon success, the contents of this parameter are undefined. Upon + failure, it should contain an appropriate error message. + + + A standard SQLite return code. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Arranges for the specified error message to be placed into the + zErrMsg field of a sqlite3_vtab derived structure, freeing the + existing error message, if any. + + + The object instance used to + lookup the native pointer to the sqlite3_vtab derived structure. + + + The error message. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated cost. + + + The object instance to modify. + + + The estimated cost value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated cost. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified estimated rows. + + + The object instance to modify. + + + The estimated rows value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default estimated rows. + + + The object instance to modify. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the specified flags. + + + The object instance to modify. + + + The index flags value to use. Using a null value means that the + default value provided by the SQLite core library should be used. + + + Non-zero upon success. + + + + + Modifies the specified object instance + to contain the default index flags. + + + The object instance to modify. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated with + the virtual table. + + + The native user-data pointer associated with this module, as it was + provided to the SQLite core library when the native module instance + was created. + + + The module name, database name, virtual table name, and all other + arguments passed to the CREATE VIRTUAL TABLE statement. + + + Upon success, this parameter must be modified to contain the + object instance associated with + the virtual table. + + + Upon failure, this parameter must be modified to contain an error + message. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The object instance containing all the + data for the inputs and outputs relating to index selection. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + Upon success, this parameter must be modified to contain the + object instance associated + with the newly opened virtual table cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Number used to help identify the selected index. + + + String used to help identify the selected index. + + + The values corresponding to each column in the selected index. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Non-zero if no more rows are available; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to be used for + returning the specified column value to the SQLite core library. + + + The zero-based index corresponding to the column containing the + value to be returned. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the current row for the specified cursor. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The array of object instances containing + the new or modified column values, if any. + + + Upon success, this parameter must be modified to contain the unique + integer row identifier for the row that was inserted, if any. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The number of arguments to the function being sought. + + + The name of the function being sought. + + + Upon success, this parameter must be modified to contain the + object instance responsible for + implementing the specified function. + + + Upon success, this parameter must be modified to contain the + native user-data pointer associated with + . + + + Non-zero if the specified function was found; zero otherwise. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + The new name for the virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier under which the the current state of + the virtual table should be saved. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer used to indicate that any saved states with an + identifier greater than or equal to this should be deleted by the + virtual table. + + + A standard SQLite return code. + + + + + This method is called in response to the + method. + + + The object instance associated + with this virtual table. + + + This is an integer identifier used to specify a specific saved + state for the virtual table for it to restore itself back to, which + should also have the effect of deleting all saved states with an + integer identifier greater than this one. + + + A standard SQLite return code. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + the method, + the method, + the method, + and the method should be logged using the + class. + + + + + Returns or sets a boolean value indicating whether virtual table + errors should be logged using the class. + + + + + Returns or sets a boolean value indicating whether exceptions + caught in the + method, + method, and the + method should be logged using the + class. + + + + + Returns non-zero if the schema for the virtual table has been + declared. + + + + + Returns the name of the module as it was registered with the SQLite + core library. + + + + + This class implements the + interface by forwarding those method calls to the + object instance it contains. If the + contained object instance is null, all + the methods simply generate an + error. + + + + + This is the value that is always used for the "logErrors" + parameter to the various static error handling methods provided + by the class. + + + + + This is the value that is always used for the "logExceptions" + parameter to the various static error handling methods provided + by the class. + + + + + This is the error message text used when the contained + object instance is not available + for any reason. + + + + + The object instance used to provide + an implementation of the + interface. + + + + + Constructs an instance of this class. + + + The object instance used to provide + an implementation of the + interface. + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab derived structure. + + + The value of . + + + + + Sets the table error message to one that indicates the native + module implementation is not available. + + + The native pointer to the sqlite3_vtab_cursor derived + structure. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Disposes of this object instance. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is being + called from the finalizer. + + + + + Finalizes this object instance. + + + + + This class contains some virtual methods that may be useful for other + virtual table classes. It specifically does NOT implement any of the + interface methods. + + + + + This class implements a virtual table module that does nothing by + providing "empty" implementations for all of the + interface methods. The result + codes returned by these "empty" method implementations may be + controlled on a per-method basis by using and/or overriding the + , + , + , + , and + methods from within derived classes. + + + + + This field is used to store the + values to return, on a per-method basis, for all methods that are + part of the interface. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Determines the default value to be + returned by methods of the + interface that lack an overridden implementation in all classes + derived from the class. + + + The value that should be returned + by all interface methods unless + a more specific result code has been set for that interface method. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Converts a value into a boolean + return value for use with the + method. + + + The value to convert. + + + The value. + + + + + Determines the value that should be + returned by the specified + interface method if it lack an overridden implementation. If no + specific value is available (or set) + for the specified method, the value + returned by the method will be + returned instead. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + + + Sets the value that should be + returned by the specified + interface method if it lack an overridden implementation. + + + The name of the method. Currently, this method must be part of + the interface. + + + The value that should be returned + by the interface method. + + + Non-zero upon success. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + The CREATE TABLE statement used to declare the schema for the + virtual table. + + + + + Non-zero if different object instances with the same value should + generate different row identifiers, where applicable. This has no + effect on the .NET Compact Framework. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + Non-zero if different object instances with the same value should + generate different row identifiers, where applicable. This + parameter has no effect on the .NET Compact Framework. + + + + + Determines the SQL statement used to declare the virtual table. + This method should be overridden in derived classes if they require + a custom virtual table schema. + + + The SQL statement used to declare the virtual table -OR- null if it + cannot be determined. + + + + + Sets the table error message to one that indicates the virtual + table cursor is of the wrong type. + + + The object instance. + + + The that the virtual table cursor should be. + + + The value of . + + + + + Determines the string to return as the column value for the object + instance value. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a string representation for. + + + The string representation of the specified object instance or null + upon failure. + + + + + Constructs an unique row identifier from two + values. The first value + must contain the row sequence number for the current row and the + second value must contain the hash code of the key column value + for the current row. + + + The integer row sequence number for the current row. + + + The hash code of the key column value for the current row. + + + The unique row identifier or zero upon failure. + + + + + Determines the unique row identifier for the current row. + + + The object instance + associated with the previously opened virtual table cursor to be + used. + + + The object instance to return a unique row identifier for. + + + The unique row identifier or zero upon failure. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this cursor + was created. + + + + + This value will be non-zero if false has been returned from the + method. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Advances to the next row of the virtual table cursor using the + method of the + object instance. + + + Non-zero if the current row is valid; zero otherwise. If zero is + returned, no further rows are available. + + + + + Resets the virtual table cursor position, also invalidating the + current row, using the method of + the object instance. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if the virtual + table cursor has been closed. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + Returns non-zero if the end of the virtual table cursor has been + seen (i.e. no more rows are available, including the current one). + + + + + Returns non-zero if the virtual table cursor is open. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. The following short + example shows it being used to treat an array of strings as a table + data source: + + public static class Sample + { + public static void Main() + { + using (SQLiteConnection connection = new SQLiteConnection( + "Data Source=:memory:;")) + { + connection.Open(); + + connection.CreateModule(new SQLiteModuleEnumerable( + "sampleModule", new string[] { "one", "two", "three" })); + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = + "CREATE VIRTUAL TABLE t1 USING sampleModule;"; + + command.ExecuteNonQuery(); + } + + using (SQLiteCommand command = connection.CreateCommand()) + { + command.CommandText = "SELECT * FROM t1;"; + + using (SQLiteDataReader dataReader = command.ExecuteReader()) + { + while (dataReader.Read()) + Console.WriteLine(dataReader[0].ToString()); + } + } + + connection.Close(); + } + } + } + + + + + + The instance containing the backing data + for the virtual table. + + + + + Non-zero if different object instances with the same value should + generate different row identifiers, where applicable. This has no + effect on the .NET Compact Framework. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + Non-zero if different object instances with the same value should + generate different row identifiers, where applicable. This + parameter has no effect on the .NET Compact Framework. + + + + + Sets the table error message to one that indicates the virtual + table cursor has no current row. + + + The object instance. + + + The value of . + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This class represents a virtual table cursor to be used with the + class. It is not sealed and may + be used as the base class for any user-defined virtual table cursor + class that wraps an object instance. + + + + + The instance provided when this + cursor was created. + + + + + Constructs an instance of this class. + + + The object instance associated + with this object instance. + + + The instance to expose as a virtual + table cursor. + + + + + Closes the virtual table cursor. This method must not throw any + exceptions. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + Returns the value for the current row of the virtual table cursor + using the property of the + object instance. + + + + + This class implements a virtual table module that exposes an + object instance as a read-only virtual + table. It is not sealed and may be used as the base class for any + user-defined virtual table class that wraps an + object instance. + + + + + The instance containing the backing + data for the virtual table. + + + + + Constructs an instance of this class. + + + The name of the module. This parameter cannot be null. + + + The instance to expose as a virtual + table. This parameter cannot be null. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + See the method. + + + + + Throws an if this object + instance has been disposed. + + + + + Disposes of this object instance. + + + Non-zero if this method is being called from the + method. Zero if this method is + being called from the finalizer. + + + + + This enumerated type represents a type of conflict seen when apply + changes from a change set or patch set. + + + + + This value is seen when processing a DELETE or UPDATE change if a + row with the required PRIMARY KEY fields is present in the + database, but one or more other (non primary-key) fields modified + by the update do not contain the expected "before" values. + + + + + This value is seen when processing a DELETE or UPDATE change if a + row with the required PRIMARY KEY fields is not present in the + database. There is no conflicting row in this case. + + The results of invoking the + + method are undefined. + + + + + This value is seen when processing an INSERT change if the + operation would result in duplicate primary key values. + The conflicting row in this case is the database row with the + matching primary key. + + + + + If a non-foreign key constraint violation occurs while applying a + change (i.e. a UNIQUE, CHECK or NOT NULL constraint), the conflict + callback will see this value. + + There is no conflicting row in this case. The results of invoking + the + method are undefined. + + + + + If foreign key handling is enabled, and applying a changes leaves + the database in a state containing foreign key violations, this + value will be seen exactly once before the changes are committed. + If the conflict handler + , the changes, + including those that caused the foreign key constraint violation, + are committed. Or, if it returns + , the changes are + rolled back. + + No current or conflicting row information is provided. The only + method it is possible to call on the supplied + object is + . + + + + + This enumerated type represents the result of a user-defined conflict + resolution callback. + + + + + If a conflict callback returns this value no special action is + taken. The change that caused the conflict is not applied. The + application of changes continues with the next change. + + + + + This value may only be returned from a conflict callback if the + type of conflict was + or . If this is + not the case, any changes applied so far are rolled back and the + call to + + will raise a with an error code of + . + + If this value is returned for a + conflict, then the + conflicting row is either updated or deleted, depending on the type + of change. + + If this value is returned for a + conflict, then + the conflicting row is removed from the database and a second + attempt to apply the change is made. If this second attempt fails, + the original row is restored to the database before continuing. + + + + + If this value is returned, any changes applied so far are rolled + back and the call to + + will raise a with an error code of + . + + + + + This enumerated type represents possible flags that may be passed + to the appropriate overloads of various change set creation methods. + + + + + No special handling. + + + + + Invert the change set while iterating through it. + This is equivalent to inverting a change set using + before + applying it. It is an error to specify this flag + with a patch set. + + + + + This callback is invoked when a determination must be made about + whether changes to a specific table should be tracked -OR- applied. + It will not be called for tables that are already attached to a + . + + + The optional application-defined context data that was originally + passed to the or + + methods. This value may be null. + + + The name of the table. + + + Non-zero if changes to the table should be considered; otherwise, + zero. Throwing an exception from this callback will result in + undefined behavior. + + + + + This callback is invoked when there is a conflict while apply changes + to a database. + + + The optional application-defined context data that was originally + passed to the + + method. This value may be null. + + + The type of this conflict. + + + The object associated with + this conflict. This value may not be null; however, only properties + that are applicable to the conflict type will be available. Further + information on this is available within the descriptions of the + available values. + + + A value that indicates the + action to be taken in order to resolve the conflict. Throwing an + exception from this callback will result in undefined behavior. + + + + + This interface contains methods used to manipulate a set of changes for + a database. + + + + + This method "inverts" the set of changes within this instance. + Applying an inverted set of changes to a database reverses the + effects of applying the uninverted changes. Specifically: + ]]>]]> + Each DELETE change is changed to an INSERT, and + ]]>]]> + Each INSERT change is changed to a DELETE, and + ]]>]]> + For each UPDATE change, the old.* and new.* values are exchanged. + ]]>]]> + This method does not change the order in which changes appear + within the set of changes. It merely reverses the sense of each + individual change. + + + The new instance that represents + the resulting set of changes -OR- null if it is not available. + + + + + This method combines the specified set of changes with the ones + contained in this instance. + + + The changes to be combined with those in this instance. + + + The new instance that represents + the resulting set of changes -OR- null if it is not available. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional application-defined context data. This value may be + null. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional delegate + that can be used to filter the list of tables impacted by the set + of changes. + + + The optional application-defined context data. This value may be + null. + + + + + This interface contains methods used to manipulate multiple sets of + changes for a database. + + + + + Attempts to add a change set (or patch set) to this change group + instance. The underlying data must be contained entirely within + the byte array. + + + The raw byte data for the specified change set (or patch set). + + + + + Attempts to add a change set (or patch set) to this change group + instance. The underlying data will be read from the specified + . + + + The instance containing the raw change set + (or patch set) data to read. + + + + + Attempts to create and return, via , the + combined set of changes represented by this change group instance. + + + Upon success, this will contain the raw byte data for all the + changes in this change group instance. + + + + + Attempts to create and write, via , the + combined set of changes represented by this change group instance. + + + Upon success, the raw byte data for all the changes in this change + group instance will be written to this . + + + + + This interface contains properties and methods used to fetch metadata + about one change within a set of changes for a database. + + + + + Queries and returns the original value of a given column for this + change. This method may only be called when the + has a value of + or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The original value of a given column for this change. + + + + + Queries and returns the updated value of a given column for this + change. This method may only be called when the + has a value of + or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The updated value of a given column for this change. + + + + + Queries and returns the conflicting value of a given column for + this change. This method may only be called from within a + delegate when the conflict + type is or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The conflicting value of a given column for this change. + + + + + The name of the table the change was made to. + + + + + The number of columns impacted by this change. This value can be + used to determine the highest valid column index that may be used + with the , , + and methods of this interface. It + will be this value minus one. + + + + + This will contain the value + , + , or + , corresponding to + the overall type of change this item represents. + + + + + Non-zero if this change is considered to be indirect (i.e. as + though they were made via a trigger or foreign key action). + + + + + This array contains a for each column in + the table associated with this change. The element will be zero + if the column is not part of the primary key; otherwise, it will + be non-zero. + + + + + This method may only be called from within a + delegate when the conflict + type is . It + returns the total number of known foreign key violations in the + destination database. + + + + + This interface contains methods to query and manipulate the state of a + change tracking session for a database. + + + + + Determines if this session is currently tracking changes to its + associated database. + + + Non-zero if changes to the associated database are being trakced; + otherwise, zero. + + + + + Enables tracking of changes to the associated database. + + + + + Disables tracking of changes to the associated database. + + + + + Determines if this session is currently set to mark changes as + indirect (i.e. as though they were made via a trigger or foreign + key action). + + + Non-zero if changes to the associated database are being marked as + indirect; otherwise, zero. + + + + + Sets the indirect flag for this session. Subsequent changes will + be marked as indirect until this flag is changed again. + + + + + Clears the indirect flag for this session. Subsequent changes will + be marked as direct until this flag is changed again. + + + + + Determines if there are any tracked changes currently within the + data for this session. + + + Non-zero if there are no changes within the data for this session; + otherwise, zero. + + + + + This method attempts to determine the amount of memory used by the + session. + + + Number of bytes used by the session -OR- negative one if its value + cannot be obtained. + + + + + Upon success, causes changes to the specified table(s) to start + being tracked. Any tables impacted by calls to this method will + not cause the callback + to be invoked. + + + The name of the table to be tracked -OR- null to track all + applicable tables within this database. + + + + + This method is used to set the table filter for this instance. + + + The table filter callback -OR- null to clear any existing table + filter callback. + + + The optional application-defined context data. This value may be + null. + + + + + Attempts to create and return, via , the + combined set of changes represented by this session instance. + + + Upon success, this will contain the raw byte data for all the + changes in this session instance. + + + + + Attempts to create and write, via , the + combined set of changes represented by this session instance. + + + Upon success, the raw byte data for all the changes in this session + instance will be written to this . + + + + + Attempts to create and return, via , the + combined set of changes represented by this session instance as a + patch set. + + + Upon success, this will contain the raw byte data for all the + changes in this session instance. + + + + + Attempts to create and write, via , the + combined set of changes represented by this session instance as a + patch set. + + + Upon success, the raw byte data for all the changes in this session + instance will be written to this . + + + + + This method loads the differences between two tables [with the same + name, set of columns, and primary key definition] into this session + instance. + + + The name of the database containing the table with the original + data (i.e. it will need updating in order to be identical to the + one within the database associated with this session instance). + + + The name of the table. + + + + + This class contains some static helper methods for use within this + subsystem. + + + + + This method checks the byte array specified by the caller to make + sure it will be usable. + + + A byte array provided by the caller into one of the public methods + for the classes that belong to this subsystem. This value cannot + be null or represent an empty array; otherwise, an appropriate + exception will be thrown. + + + + + This class is used to hold the native connection handle associated with + a open until this subsystem is totally + done with it. This class is for internal use by this subsystem only. + + + + + The SQL statement used when creating the native statement handle. + There are no special requirements for this other than counting as + an "open statement handle". + + + + + The format of the error message used when reporting, during object + disposal, that the statement handle is still open (i.e. because + this situation is considered a fairly serious programming error). + + + + + The wrapped native connection handle associated with this lock. + + + + + The flags associated with the connection represented by the + value. + + + + + The native statement handle for this lock. The garbage collector + cannot cause this statement to be finalized; therefore, it will + serve to hold the associated native connection open until it is + freed manually using the method. + + + + + Constructs a new instance of this class using the specified wrapped + native connection handle and associated flags. + + + The wrapped native connection handle to be associated with this + lock. + + + The flags associated with the connection represented by the + value. + + + Non-zero if the method should be called prior + to returning from this constructor. + + + + + Queries and returns the wrapped native connection handle for this + instance. + + + The wrapped native connection handle for this instance -OR- null + if it is unavailable. + + + + + Queries and returns the flags associated with the connection for + this instance. + + + The value. There is no return + value reserved to indicate an error. + + + + + Queries and returns the native connection handle for this instance. + + + The native connection handle for this instance. If this value is + unavailable or invalid an exception will be thrown. + + + + + This method attempts to "lock" the associated native connection + handle by preparing a SQL statement that will not be finalized + until the method is called (i.e. and which + cannot be done by the garbage collector). If the statement is + already prepared, nothing is done. If the statement cannot be + prepared for any reason, an exception will be thrown. + + + + + This method attempts to "unlock" the associated native connection + handle by finalizing the previously prepared statement. If the + statement is already finalized, nothing is done. If the statement + cannot be finalized for any reason, an exception will be thrown. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + This class manages the native change set iterator. It is used as the + base class for the and + classes. It knows how to + advance the native iterator handle as well as finalize it. + + + + + The native change set (a.k.a. iterator) handle. + + + + + Non-zero if this instance owns the native iterator handle in the + field. In that case, this instance will + finalize the native iterator handle upon being disposed or + finalized. + + + + + Constructs a new instance of this class using the specified native + iterator handle. + + + The native iterator handle to use. + + + Non-zero if this instance is to take ownership of the native + iterator handle specified by . + + + + + Throws an exception if the native iterator handle is invalid. + + + + + Used to query the native iterator handle. This method is only used + by the class. + + + The native iterator handle -OR- if it + is not available. + + + + + Attempts to advance the native iterator handle to its next item. + + + Non-zero if the native iterator handle was advanced and contains + more data; otherwise, zero. If the underlying native API returns + an unexpected value then an exception will be thrown. + + + + + Attempts to create an instance of this class that is associated + with the specified native iterator handle. Ownership of the + native iterator handle is NOT transferred to the new instance of + this class. + + + The native iterator handle to use. + + + The new instance of this class. No return value is reserved to + indicate an error; however, if the native iterator handle is not + valid, any subsequent attempt to make use of it via the returned + instance of this class may throw exceptions. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + This class manages the native change set iterator for a set of changes + contained entirely in memory. + + + + + The native memory buffer allocated to contain the set of changes + associated with this instance. This will always be freed when this + instance is disposed or finalized. + + + + + Constructs an instance of this class using the specified native + memory buffer and native iterator handle. + + + The native memory buffer to use. + + + The native iterator handle to use. + + + Non-zero if this instance is to take ownership of the native + iterator handle specified by . + + + + + Attempts to create an instance of this class using the specified + raw byte data. + + + The raw byte data containing the set of changes for this native + iterator. + + + The new instance of this class -OR- null if it cannot be created. + + + + + Attempts to create an instance of this class using the specified + raw byte data. + + + The raw byte data containing the set of changes for this native + iterator. + + + The flags used to create the change set iterator. + + + The new instance of this class -OR- null if it cannot be created. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class manages the native change set iterator for a set of changes + backed by a instance. + + + + + The instance that is managing + the underlying used as the backing store for + the set of changes associated with this native change set iterator. + + + + + Constructs an instance of this class using the specified native + iterator handle and . + + + The instance to use. + + + The native iterator handle to use. + + + Non-zero if this instance is to take ownership of the native + iterator handle specified by . + + + + + Attempts to create an instance of this class using the specified + . + + + The where the raw byte data for the set of + changes may be read. + + + The flags associated with the parent connection. + + + The new instance of this class -OR- null if it cannot be created. + + + + + Attempts to create an instance of this class using the specified + . + + + The where the raw byte data for the set of + changes may be read. + + + The flags associated with the parent connection. + + + The flags used to create the change set iterator. + + + The new instance of this class -OR- null if it cannot be created. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class is used to act as a bridge between a + instance and the delegates used with the native streaming API. + + + + + The managed stream instance used to in order to service the native + delegates for both input and output. + + + + + The flags associated with the connection. + + + + + The delegate used to provide input to the native streaming API. + It will be null -OR- point to the method. + + + + + The delegate used to provide output to the native streaming API. + It will be null -OR- point to the method. + + + + + Constructs a new instance of this class using the specified managed + stream and connection flags. + + + The managed stream instance to be used in order to service the + native delegates for both input and output. + + + The flags associated with the parent connection. + + + + + Queries and returns the flags associated with the connection for + this instance. + + + The value. There is no return + value reserved to indicate an error. + + + + + Returns a delegate that wraps the method, + creating it first if necessary. + + + A delegate that refers to the method. + + + + + Returns a delegate that wraps the method, + creating it first if necessary. + + + A delegate that refers to the method. + + + + + This method attempts to read bytes from + the managed stream, writing them to the + buffer. + + + Optional extra context information. Currently, this will always + have a value of . + + + A preallocated native buffer to receive the requested input bytes. + It must be at least bytes in size. + + + Upon entry, the number of bytes to read. Upon exit, the number of + bytes actually read. This value may be zero upon exit. + + + The value upon success -OR- an + appropriate error code upon failure. + + + + + This method attempts to write bytes to + the managed stream, reading them from the + buffer. + + + Optional extra context information. Currently, this will always + have a value of . + + + A preallocated native buffer containing the requested output + bytes. It must be at least bytes in + size. + + + The number of bytes to write. + + + The value upon success -OR- an + appropriate error code upon failure. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + This class manages a collection of + instances. When used, it takes responsibility for creating, returning, + and disposing of its instances. + + + + + The managed collection of + instances, keyed by their associated + instance. + + + + + The flags associated with the connection. + + + + + Constructs a new instance of this class using the specified + connection flags. + + + The flags associated with the parent connection. + + + + + Makes sure the collection of + is created. + + + + + Makes sure the collection of + is disposed. + + + + + Attempts to return a instance + suitable for the specified . + + + The instance. If this value is null, a null + value will be returned. + + + A instance. Typically, these + are always freshly created; however, this method is designed to + return the existing instance + associated with the specified stream, should one exist. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + This class represents a group of change sets (or patch sets). + + + + + The instance associated + with this change group. + + + + + The flags associated with the connection. + + + + + The native handle for this change group. This will be deleted when + this instance is disposed or finalized. + + + + + Constructs a new instance of this class using the specified + connection flags. + + + The flags associated with the parent connection. + + + + + Throws an exception if the native change group handle is invalid. + + + + + Makes sure the native change group handle is valid, creating it if + necessary. + + + + + Makes sure the instance + is available, creating it if necessary. + + + + + Attempts to return a instance + suitable for the specified . + + + The instance. If this value is null, a null + value will be returned. + + + A instance. Typically, these + are always freshly created; however, this method is designed to + return the existing instance + associated with the specified stream, should one exist. + + + + + Attempts to add a change set (or patch set) to this change group + instance. The underlying data must be contained entirely within + the byte array. + + + The raw byte data for the specified change set (or patch set). + + + + + Attempts to add a change set (or patch set) to this change group + instance. The underlying data will be read from the specified + . + + + The instance containing the raw change set + (or patch set) data to read. + + + + + Attempts to create and return, via , the + combined set of changes represented by this change group instance. + + + Upon success, this will contain the raw byte data for all the + changes in this change group instance. + + + + + Attempts to create and write, via , the + combined set of changes represented by this change group instance. + + + Upon success, the raw byte data for all the changes in this change + group instance will be written to this . + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + This class represents the change tracking session associated with a + database. + + + + + The instance associated + with this session. + + + + + The name of the database (e.g. "main") for this session. + + + + + The native handle for this session. This will be deleted when + this instance is disposed or finalized. + + + + + The delegate used to provide table filtering to the native API. + It will be null -OR- point to the method. + + + + + The managed callback used to filter tables for this session. Set + via the method. + + + + + The optional application-defined context data that was passed to + the method. This value may be null. + + + + + Constructs a new instance of this class using the specified wrapped + native connection handle and associated flags. + + + The wrapped native connection handle to be associated with this + session. + + + The flags associated with the connection represented by the + value. + + + The name of the database (e.g. "main") for this session. + + + + + Throws an exception if the native session handle is invalid. + + + + + Makes sure the native session handle is valid, creating it if + necessary. + + + + + This method sets up the internal table filtering associated state + of this instance. + + + The table filter callback -OR- null to clear any existing table + filter callback. + + + The optional application-defined context data. This value may be + null. + + + The native + delegate -OR- null to clear any existing table filter. + + + + + Makes sure the instance + is available, creating it if necessary. + + + + + Attempts to return a instance + suitable for the specified . + + + The instance. If this value is null, a null + value will be returned. + + + A instance. Typically, these + are always freshly created; however, this method is designed to + return the existing instance + associated with the specified stream, should one exist. + + + + + This method is called when determining if a table needs to be + included in the tracked changes for the associated database. + + + Optional extra context information. Currently, this will always + have a value of . + + + The native pointer to the name of the table. + + + Non-zero if changes to the specified table should be considered; + otherwise, zero. + + + + + Determines if this session is currently tracking changes to its + associated database. + + + Non-zero if changes to the associated database are being trakced; + otherwise, zero. + + + + + Enables tracking of changes to the associated database. + + + + + Disables tracking of changes to the associated database. + + + + + Determines if this session is currently set to mark changes as + indirect (i.e. as though they were made via a trigger or foreign + key action). + + + Non-zero if changes to the associated database are being marked as + indirect; otherwise, zero. + + + + + Sets the indirect flag for this session. Subsequent changes will + be marked as indirect until this flag is changed again. + + + + + Clears the indirect flag for this session. Subsequent changes will + be marked as direct until this flag is changed again. + + + + + Determines if there are any tracked changes currently within the + data for this session. + + + Non-zero if there are no changes within the data for this session; + otherwise, zero. + + + + + This method attempts to determine the amount of memory used by the + session. + + + The number of bytes used by the session. + + + + + Upon success, causes changes to the specified table(s) to start + being tracked. Any tables impacted by calls to this method will + not cause the callback + to be invoked. + + + The name of the table to be tracked -OR- null to track all + applicable tables within this database. + + + + + This method is used to set the table filter for this instance. + + + The table filter callback -OR- null to clear any existing table + filter callback. + + + The optional application-defined context data. This value may be + null. + + + + + Attempts to create and return, via , the + set of changes represented by this session instance. + + + Upon success, this will contain the raw byte data for all the + changes in this session instance. + + + + + Attempts to create and write, via , the + set of changes represented by this session instance. + + + Upon success, the raw byte data for all the changes in this session + instance will be written to this . + + + + + Attempts to create and return, via , the + set of changes represented by this session instance as a patch set. + + + Upon success, this will contain the raw byte data for all the + changes in this session instance. + + + + + Attempts to create and write, via , the + set of changes represented by this session instance as a patch set. + + + Upon success, the raw byte data for all the changes in this session + instance will be written to this . + + + + + This method loads the differences between two tables [with the same + name, set of columns, and primary key definition] into this session + instance. + + + The name of the database containing the table with the original + data (i.e. it will need updating in order to be identical to the + one within the database associated with this session instance). + + + The name of the table. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class represents the abstract concept of a set of changes. It + acts as the base class for the + and classes. It derives from + the class, which is used to hold + the underlying native connection handle open until the instances of + this class are disposed or finalized. It also provides the ability + to construct wrapped native delegates of the + and + types. + + + + + Constructs an instance of this class using the specified wrapped + native connection handle. + + + The wrapped native connection handle to be associated with this + change set. + + + The flags associated with the connection represented by the + value. + + + + + Creates and returns a concrete implementation of the + interface. + + + The native iterator handle to use. + + + An instance of the + interface, which can be used to fetch metadata associated with + the current item in this set of changes. + + + + + Attempts to create a + native delegate + that invokes the specified + delegate. + + + The to invoke when the + native delegate + is called. If this value is null then null is returned. + + + The optional application-defined context data. This value may be + null. + + + The created + native delegate -OR- null if it cannot be created. + + + + + Attempts to create a + native delegate + that invokes the specified + delegate. + + + The to invoke when the + native delegate + is called. If this value is null then null is returned. + + + The optional application-defined context data. This value may be + null. + + + The created + native delegate -OR- null if it cannot be created. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class represents a set of changes contained entirely in memory. + + + + + The raw byte data for this set of changes. Since this data must + be marshalled to a native memory buffer before being used, there + must be enough memory available to store at least two times the + amount of data contained within it. + + + + + The flags used to create the change set iterator. + + + + + Constructs an instance of this class using the specified raw byte + data and wrapped native connection handle. + + + The raw byte data for the specified change set (or patch set). + + + The wrapped native connection handle to be associated with this + set of changes. + + + The flags associated with the connection represented by the + value. + + + + + Constructs an instance of this class using the specified raw byte + data and wrapped native connection handle. + + + The raw byte data for the specified change set (or patch set). + + + The wrapped native connection handle to be associated with this + set of changes. + + + The flags associated with the connection represented by the + value. + + + The flags used to create the change set iterator. + + + + + This method "inverts" the set of changes within this instance. + Applying an inverted set of changes to a database reverses the + effects of applying the uninverted changes. Specifically: + ]]>]]> + Each DELETE change is changed to an INSERT, and + ]]>]]> + Each INSERT change is changed to a DELETE, and + ]]>]]> + For each UPDATE change, the old.* and new.* values are exchanged. + ]]>]]> + This method does not change the order in which changes appear + within the set of changes. It merely reverses the sense of each + individual change. + + + The new instance that represents + the resulting set of changes. + + + + + This method combines the specified set of changes with the ones + contained in this instance. + + + The changes to be combined with those in this instance. + + + The new instance that represents + the resulting set of changes. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional application-defined context data. This value may be + null. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional delegate + that can be used to filter the list of tables impacted by the set + of changes. + + + The optional application-defined context data. This value may be + null. + + + + + Creates an capable of iterating over the + items within this set of changes. + + + The new + instance. + + + + + Creates an capable of iterating over the + items within this set of changes. + + + The new instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class represents a set of changes that are backed by a + instance. + + + + + The instance that is managing + the underlying input used as the backing + store for the set of changes associated with this instance. + + + + + The instance that is managing + the underlying output used as the backing + store for the set of changes generated by the + or methods. + + + + + The instance used as the backing store for + the set of changes associated with this instance. + + + + + The instance used as the backing store for + the set of changes generated by the or + methods. + + + + + The flags used to create the change set iterator. + + + + + Constructs an instance of this class using the specified streams + and wrapped native connection handle. + + + The where the raw byte data for the set of + changes may be read. + + + The where the raw byte data for resulting + sets of changes may be written. + + + The wrapped native connection handle to be associated with this + set of changes. + + + The flags associated with the connection represented by the + value. + + + + + Constructs an instance of this class using the specified streams + and wrapped native connection handle. + + + The where the raw byte data for the set of + changes may be read. + + + The where the raw byte data for resulting + sets of changes may be written. + + + The wrapped native connection handle to be associated with this + set of changes. + + + The flags associated with the connection represented by the + value. + + + The flags used to create the change set iterator. + + + + + Throws an exception if the input stream or its associated stream + adapter are invalid. + + + + + Throws an exception if the output stream or its associated stream + adapter are invalid. + + + + + This method "inverts" the set of changes within this instance. + Applying an inverted set of changes to a database reverses the + effects of applying the uninverted changes. Specifically: + ]]>]]> + Each DELETE change is changed to an INSERT, and + ]]>]]> + Each INSERT change is changed to a DELETE, and + ]]>]]> + For each UPDATE change, the old.* and new.* values are exchanged. + ]]>]]> + This method does not change the order in which changes appear + within the set of changes. It merely reverses the sense of each + individual change. + + + Since the resulting set of changes is written to the output stream, + this method always returns null. + + + + + This method combines the specified set of changes with the ones + contained in this instance. + + + The changes to be combined with those in this instance. + + + Since the resulting set of changes is written to the output stream, + this method always returns null. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional application-defined context data. This value may be + null. + + + + + Attempts to apply the set of changes in this instance to the + associated database. + + + The delegate that will need + to handle any conflicting changes that may arise. + + + The optional delegate + that can be used to filter the list of tables impacted by the set + of changes. + + + The optional application-defined context data. This value may be + null. + + + + + Creates an capable of iterating over the + items within this set of changes. + + + The new + instance. + + + + + Creates an capable of iterating over the + items within this set of changes. + + + The new instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class represents an that is capable of + enumerating over a set of changes. It serves as the base class for the + and + classes. It manages and + owns an instance of the class. + + + + + This managed change set iterator is managed and owned by this + class. It will be disposed when this class is disposed. + + + + + Constructs an instance of this class using the specified managed + change set iterator. + + + The managed iterator instance to use. + + + + + Throws an exception if the managed iterator instance is invalid. + + + + + Sets the managed iterator instance to a new value. + + + The new managed iterator instance to use. + + + + + Disposes of the managed iterator instance and sets its value to + null. + + + + + Disposes of the existing managed iterator instance and then sets it + to a new value. + + + The new managed iterator instance to use. + + + + + Attempts to advance to the next item in the set of changes. + + + Non-zero if more items are available; otherwise, zero. + + + + + Throws because not all the + derived classes are able to support reset functionality. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + Returns the current change within the set of changes, represented + by a instance. + + + + + Returns the current change within the set of changes, represented + by a instance. + + + + + This class represents an that is capable of + enumerating over a set of changes contained entirely in memory. + + + + + The raw byte data for this set of changes. Since this data must + be marshalled to a native memory buffer before being used, there + must be enough memory available to store at least two times the + amount of data contained within it. + + + + + The flags used to create the change set iterator. + + + + + Constructs an instance of this class using the specified raw byte + data. + + + The raw byte data containing the set of changes for this + enumerator. + + + + + Constructs an instance of this class using the specified raw byte + data. + + + The raw byte data containing the set of changes for this + enumerator. + + + The flags used to create the change set iterator. + + + + + Resets the enumerator to its initial position. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This class represents an that is capable of + enumerating over a set of changes backed by a + instance. + + + + + Constructs an instance of this class using the specified stream. + + + The where the raw byte data for the set of + changes may be read. + + + The flags associated with the parent connection. + + + + + Constructs an instance of this class using the specified stream. + + + The where the raw byte data for the set of + changes may be read. + + + The flags associated with the parent connection. + + + The flags used to create the change set iterator. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + This interface implements properties and methods used to fetch metadata + about one change within a set of changes for a database. + + + + + The instance to use. This + will NOT be owned by this class and will not be disposed upon this + class being disposed or finalized. + + + + + Constructs an instance of this class using the specified iterator + instance. + + + The managed iterator instance to use. + + + + + Throws an exception if the managed iterator instance is invalid. + + + + + Populates the underlying data for the , + , , and + properties, using the appropriate native + API. + + + + + Populates the underlying data for the + property using the appropriate + native API. + + + + + Populates the underlying data for the + property using the + appropriate native API. + + + + + Backing field for the property. This value + will be null if this field has not yet been populated via the + underlying native API. + + + + + Backing field for the property. This + value will be null if this field has not yet been populated via the + underlying native API. + + + + + Backing field for the property. This + value will be null if this field has not yet been populated via the + underlying native API. + + + + + Backing field for the property. This value + will be null if this field has not yet been populated via the + underlying native API. + + + + + Backing field for the property. + This value will be null if this field has not yet been populated + via the underlying native API. + + + + + Backing field for the + property. This value will be null if this field has not yet been + populated via the underlying native API. + + + + + Queries and returns the original value of a given column for this + change. This method may only be called when the + has a value of + or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The original value of a given column for this change. + + + + + Queries and returns the updated value of a given column for this + change. This method may only be called when the + has a value of + or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The updated value of a given column for this change. + + + + + Queries and returns the conflicting value of a given column for + this change. This method may only be called from within a + delegate when the conflict + type is or + . + + + The index for the column. This value must be between zero and one + less than the total number of columns for this table. + + + The conflicting value of a given column for this change. + + + + + Disposes of this object instance. + + + + + Non-zero if this object instance has been disposed. + + + + + Throws an exception if this object instance has been disposed. + + + + + Disposes or finalizes this object instance. + + + Non-zero if this object is being disposed; otherwise, this object + is being finalized. + + + + + Finalizes this object instance. + + + + + The name of the table the change was made to. + + + + + The number of columns impacted by this change. This value can be + used to determine the highest valid column index that may be used + with the , , + and methods of this interface. It + will be this value minus one. + + + + + This will contain the value + , + , or + , corresponding to + the overall type of change this item represents. + + + + + Non-zero if this change is considered to be indirect (i.e. as + though they were made via a trigger or foreign key action). + + + + + This array contains a for each column in + the table associated with this change. The element will be zero + if the column is not part of the primary key; otherwise, it will + be non-zero. + + + + + This method may only be called from within a + delegate when the conflict + type is . It + returns the total number of known foreign key violations in the + destination database. + + + + diff --git a/dll/WF-ChangeGUID.exe b/dll/WF-ChangeGUID.exe index fa63b82c590bab5a7a11231a3c0484c4622047bd..57843ec71d7d593454afd22a43ab9dca9793e300 100644 GIT binary patch delta 166 zcmZn&Xb70l!LrdJcEiLT8OC`NSB5kCOlD-PXIwJ55lA*{W@K`f5O`DHz;$zBj^pMp z>k|D%IF4)%k*Z+fJ@;tqdIlh10%D)ZH|4Ztt>tp{HibxeZA)K!FM+=~kr624W)u5lGJ5%*f;{A>h8tbLt$~UiY6c)+0^-!kH|4a=n&#b~-gokY-%hzRYrcs%oM8mYI9tUy z#yjVyq{gJAmZj$87dYo77RUIdmV;?$KgZz7it^e*y|y5uAYeI&tuRqhjB)1VQhCkE Yv*p7#^C|pdW!huASy1gg<3s~?0Pf#EkN^Mx diff --git a/dll/activation.config b/dll/activation.config index 599ec7d..b33887f 100644 --- a/dll/activation.config +++ b/dll/activation.config @@ -1 +1 @@ -BFEBFBFF000B06A2_7413EA0CEB72 \ No newline at end of file +BFEBFBFF000A0652_B025AA3FD303 \ No newline at end of file