diff --git a/examples/nidaqmx_analog_input/NIDAQmxAnalogInput.seq b/examples/nidaqmx_analog_input/NIDAQmxAnalogInput.seq
index acc1e116b..c0b6c10dc 100644
--- a/examples/nidaqmx_analog_input/NIDAQmxAnalogInput.seq
+++ b/examples/nidaqmx_analog_input/NIDAQmxAnalogInput.seq
@@ -1668,8 +1668,8 @@
- E@=3DJC4100hYLECF=_K@0@mKCYo_1KN:<Ta239hF9[gHbEVFDfRINZfQ01CkaUMk5=k`[c;[42MMF9aiNliecVfMFCLXi_`f2H7c\G\X50M=Z4S4aT2QI>A^D:d1\PCI`L11RlV5bM5AIZTc9STI5Mkm\4QncG_5d=cG_FO2oS8VJS>^5d1H3>BQiNV5P41]17^Y3O<@?5_L;IIk`HT;ef25Q8<H:nWCA2B:L54^lbH2ekK>jf9lUH]I_7LR@gRAICc9bM<4kOPETN6hS\i6ie\iY\UeTYAfaS6fI=PZiDE6H:<mV;;o_=UYW=Y_IVff^jmoiPk9onP5L^3fkRKO4176h8nP5@^012Ko?aN3>L?Ni[KODaenRmILoUJLoDjDiA7V4ERU;YU[dEQNnFB6oiQb\>b:J=NA\Xf7OMaUTFkVnGTIVjFMRi@AaDZ8nVo^8dlLmFQ>jXWgP6P5oM7U=jhTAbJ^=dNH_o_kYQ[2bIFSo[;i\`nbNLTM[\6bM=Z4LHQOkR0f:=M7O:Y<LEBBXD@o=cOP]:i5kUcfc8n^G\Q;=]ahiSZBfO]0F_eef?O_[58k@JnA<:IajKNcfB7Te?GIZ<?WD^^j_OjI9k6hg9Y@j4bT_2C
- E@=3@J\4110h]L]Mg[cK3fBoj\Kifo1C[KY_3VgFm3_6n>DfdTDgjaSF_LdVUJaY::FII@T:GB9LaYOo80OP^053LBBVb1G?:50k4;P1c\^`03ffoj9S72=AOm;a2oh?Na\lC7TUOXcNfaSdfIbVCC_ao20aN9bmo_<R_S=>KV;lhbmh89SY[:2UflXcmGMlnngoE]\\ad_6_gW8X9GAXJSPJYin>C71=c74a79JN<`GPK]_\>2`h9IOC]VA5BU4AMW1Qc`j?lJ\aR4__>R4SI_`[_mmnM33ONg`3P[g4N5a[F;`mMZ\d]^M`Vbi@ab?_WeLo>F>EQgg0_[aig25k4G8k[DG[`GGJUS?c;V8O=@dni`7\S]OcncYBdkMZ7KGoS9InEE_WCO_IWnkmd<gUMI_Gfogm6meNf\P_k_lcTIjH^FlekefEhghOh`mC?MlcM_?MN\O_MdK>E=LJ9llf3Y;>hombAOPjH=l75YiRc`J4k9ZNLF8j3?;=854oh=Fo7Hk<n[_9jEZKaBlm:a9i[VEPk?S=_0=8Jh8EGcWVok`lG5=JCT5ThIRD_JdK3IoXN@X:Bk7<kKm`L=a`^egn1MLOW\fDfj7775;fQJTBOmoL6ah_9nieTlh:lni8NN?2_VgoS9`gZfbkO[QVCogBZI3oQhdDjde5IMNdLNLRO?Okl[Ol>8DO=CViJ6ZUekW`YWG_hVOJJ[MIUIPPCa=FCVMkhQkH^LhGA26DULO]\A:EEXG`lI^Oe^3OPj9@iGlo:TSo52g@@l9McAbXRd<7WQX^_F7cYL:Ce60Qj\`X>2U[Uh5VL9BNYE]UWCbNONmQUTQRWFLLdZ46WXlYl;c6:LUZ[bbZJ@j[`TZ@L^3foa=QLhb7e^I\b1Z?A?P`9CQme\c6Z]DPPiI=`RiZ1W[:H`eodA5Dhhm_i5onOL>=V3chahUQ2EBE@YS8_H]@mWB59X@HUF<`=1]_L81L[k9`2cO:Be]LQ_16DQN^R:]e6C@a?GAThLXYK_=4C=oUY6GVKKidKTlYFobHU=5kSi88j>RdWAdX`I2`eANYcC=h;o;_G1dMXcoRMgKW]Ua^Sk6VZ@O@YS\5OV0j;FaU\9C>TU\S3;dU1l5YgCXRFQYPCah4_9n5SS_<ZYERjZSb1onKokkoQaSgCgMlm[Go1[IOPfC_noRLh0YL4NmSSY7`<=35mf]SNJnTF=L;?L4QQJe0@VG1XQ]HfLKcCaMm02\H:L\bolL7^m4R_lmm>QnKgg70;<dA]jEdjn<Q[CCBWMmQZn18nJC`[fDGT^ddCY>F?ngk7C9oeXTBVblm=E:D@SR7VOOc>VK59I7a8HcGZOUJD\h?>;h^cmD]UV2U;8:AJn_EnBAh5l]_@n2n9L`FA0JQ4hFcaFUKUmdU2gKoi@lbA9V;n:49SP\TaB>\P0i^JOQV8Me9_FcX5Pk8:nEHMP4PfCCi?E=bl2^fR5P`>iS9\]^T3naNYc:79@R9:_HKcM1H990^<@>I`4VfO97GYF4JX\VHRS4H5j34f_?SUL`n@=b?IfL8PV4DS7bPEUK`>IOkiH>c:HX6>MgI[4K6[XUIVUDLmbfX3eW4[`L`=`]\UE:Q83fLF:k[S]P?n`R\5_lDn:Q2ZFbQB6c?G5lFi7W?GPi_[RMC@QF=lCC92[DhW<<`I6]XfWSE0:LDFRDBO^b_J[>hmd<`Z5PYGSR1S[6fFiRDUQ\De1PDY8lDC7HY:=dGZI>37N^BlBX@Rk8@LMXHi0U`R=l;gWBoEH:H:N_lm4KfjLlIGfhP]^Nd=Ej8WEaN\\SgS_HdeE^_Q6DH?Dg@H\Cn92HIaFbmBU5Pdc<RbZIk?`Ymg:I3f]E>^IXA:J?8LEDb??jS7meL@94LB=QKYYC>7TnE3CRa]I=ioD<FMM1FXN:]nU2650aKDCTBU^G\9EfW[]B[bJJZFYBCd2D:Q5]6bfBWEHCKZ:m;fSAP`?QB[j59kFiDK0^AKQaT42niBD3_\aH@B<Z]=AT;h<di7?R`PdK9aJ3F5[<^Xd?EGVaUP7:]V@PSRT2Q8ED2?K]3BeeYW:Fc9EZY[;F]EQk:KXbS1Z3Vh4<FnKRe05hGU9@o7T?T?EmQOlhXa1d5fjE>8aITSGC1DWh2j;VCKSLDIHmZg>_E6KSGcmjTD1\[]6kYV2HoJBH:XF=KRIbVba5R_j^IPSHLFK0T1\DG;@@J6a4IecAP\_cQ:5UJTfRgP@JBaLSkiMoLhUT5?dc^BO@3BI4TJ:?\4:hcemlGg[Zjk`dVdH`l@He::3I\N34WYl5X[R6DclIPj>knN4J]Wb^8Zn5J=n8A1@`l]aoLIX?GkKIdai=g_67QWQnFE6@o?:B=7XN4FDBZ`E<=^]0C<^kB]@V:@>Y4Th<V5L<C3]``D\9PTd=RPXH@93VhJ1BXeO?666<22Rbd:82<Hj[UI>5_P5;6d0Q1G:@24T<23AjNLU1P761R76NSlj0APNHBXT6;R@@8\0P]gmF2;HXn\:VKVULTZDKTEVfYUf98YgX2KIDNjfTR>iYQ`VU>>m:[>lEU2JUmoJJ30kJfB?e4L[985bKYJKOLlNeXJ792J_@m[MkGXjbE8dSB]FQQ@jOa^V65_3WN::]Q=e5_C?=701Sc8egWH4>H7=Ll4]ZIjk>@^iiU`^n^`FjOUThilcUcPBEMLEo^SY`iIP^LS=V@`af`eZReKRCPmI?;2WUM4HdWRCHMHC4dHQR?nnP`e3:R6OATk<PkgSOb>9cbYg1L_4a?[oJC;N>0lOH5Nh`7DDI?LLKd:^\VlD2R57leoD]_h4G@N`=3oLSGnn?miOBA61H8AFTBKPK3_c[HJeRd8G29bIE]dH<jR;O[M>AG_W:59<ik8M<`G5e4f[d<;28FM?6Tj\TPcTfA;:Z_LF5`XL[n[7eB`Y8Iaj6=B9h\o4fm>mZYSe>\;=nCaBgLQlH\h<hTBX1cPOf`Kd]@>;nAhhc1Hhg:nJ^]U]Z?DILFGND1\Mo]0Nk=^WPXKgQE7>L\m;5[:d2KWZak4@SV6^8akd5]<Si7h0e9hEia]hb3`o\;Dk[EUIA`T71cfkc7lfbN]BX2\mfO0IL_GT^5Q=^V0E><]JJ0efkF_XLnmBkL7Tj5R=n00:f@ekH\:LJgSh9@IH=7@ahGMe0D4SfEV8baF6VO`\Z\^?GdPQMRbGEGBRCc?L?BO?3QLB@X39Cn=@:4ZOS55DT5MlZRThmLK69n[6HRcXXY8X?Z`j\TW;XAZR6EWTaBHOWZ2LTO>[X:M>LW\Z[FRHWo7K]6Qg9_>DV1TOh`1<fnG35>PNMgbimW0=_aEZDSBAA2Wa8HUljZ3<>\83XO`ikeWD<TNO_P3dlZbEAWHRkmaYA6;LZKZ<4FBh9oWhNf_6=3YBSSX5JEce63RaFCPdVBT4>oZZcFD>4RSM^@SB\_X`n6>AMmEYGHdhYb29b]hAS9F1Hg7:>cBD`6L>mjTDae3FPHG@32hEQPL`9<C5=IO6<<I:0cob8?\MNDHADYH9P7lPC@ej:_`>YkJ:PXH[A1C]0fQLl_E3_1ZYf_DHRNBT5>^T2TF@DYlF6kni=Ga54COB^T7a8kmDP:4_DVceaPZX:icK\GV8iH9ga<<f``df`8TkGdVKGNbG\YXORkC2Kln7C76fYTB7l:<`O\ENf>[V^2hnEHeTaUP\KFaJ_0T;D>H5IjP68>bU5<CYFDm:Ic8g4Fl8geGD8V=nnL==fD_S<7Ih8^nOVAH15cB;f`475[H\V1WTOQ6O@Fd2T4e0n<d5E6@[]@T7FTjI\9nW82DkX<EEW?J[M21DkM6TBOOLWWJ7TXX:YiaPefJ0YIVPIK@3UgHGE51>8ha;aSX9RO\BalUPCR;f:Y?37jEe`R\4Z[I><AciI\A9QIY\nGKPGh`6AR<5EQ5]:K;==cU\:2OmM;naf[LeWQ\mGok@JIcelM[?IOk>JNcFN_cfL\j]i]a9F0_68Y6k_GL?PDQi6hgT?RSX<oTO:8Vcn1KV^0:QBi47adbil@C?Hj9amRHgijjG^Xk<RX=SY^UH:H3F5K1nca1CkJY[c^Yl>\F9mmbRm0\liT5Ab@1Oe4g?5aWg:7:\FBYhOaGWCQRk]C=]V;152\RIiR`Z1JoU1c]FfB52bAkShZEPFJLE\^e;OcjX1kihgnkKco^[mRCG;bGo7C_?>0>nT]WfA<2kXH1]RJ29nW^[N]XO4YOb3l4h[`kl1n3iCOLhF_`e]gm_ekf`g^oI78:J8ma=MjefFhIOBIMU4nf92YbHmWbP3NNfFDn]_KkcGH_12oI;NY\fmmAJV6_kcYGmY[Y\njhaGVmUinf922_ZFhe=mKN@O5oP3AGfdBUHYT`?GeHhFVchFKmjPQ;<VhIW;C\d;a6G\IlQFfF6cZTU\]fIX7FE4I6c\9d;Wmoe7_c\C?5fYW2e7<1]S;6U\`fA3jk81G^5\2S6=@2?=GljkU81CMW>NFOO[g\Okgjjk[81E>2k8d1jO:a@M9Ke_<HHg<<dV?l9E\@f=>3k6?15;UnQPbO``C_HH0g<JY`d_<HHg?<b5i<nQLPO`KPhH3g<\0K62lbf=>3k6U16?`Jg<EZmPbO``A_H\oTS2VnQP>I`GO4k]XMgJaK8jckGfe>KkcW]=mGNiZKA`OgNJ6k_[MB=@_df>MKiLSWgCcm5_Yle_5H\HFk>G[OeWQ\mWa]i[l?E[L]]iO[?U^iFNdC\\jk61ll[=kk61W6m3XP^k\Oi=<3Vg:^NmG;@BA8ed^27W]?=5U^eKoYGi@5nknM3Ml]N1Oo3?F^_WEg`@6eI^1G3dl_PjWld^JN=6Q__nMna7;mUhMijZODlkgZT[@RhY<c6?J>dXQUlmM:olW5oO<F2GQ9o>M>fk^RD39>GJ7V`]FD[F7bICVGLU`IdlJ>Q[<Yda^[K@6^6g>e_BRj=9c;baI<1g5\dmNAA`6BhOV6^WSHZPIXJiWHRBIROBi7IDHhARogA0H_DiQ<B?mAL514G@I]W@c^=2J^PnjoWa1K9hNlJ^9Nd:>0>MUAGWGX?:ilhE2Lh9WaSVSbIKd7bWl=@kM[0MiR?9B\Ii77VXJjY?VO;L4]m_1;l2>Uf[FPCLAEmM>G:XBg0WM9KKLB<;T0o4UHSBW?8T6:aF_7Li1Q_4KE[j@Th:n^Ye5l?P]<>FGZaLX7AGh49CXh8l[3dGo[^AaF7O>MiSJBLBfDO:@BmBXEgjGeI1?_DoHKNKmb_a9a?7Ma_60AD8fhZD8PCNB]hgAha:gDJiVSA]1R]l[?R8RKFfeLn_FoWgiG5O[KRKA9Gk5TXQ6>aT01fb`0I95P6J`XRmHPA@JCT2>C9AB4\8`84o8T3>e9@3Xj0QJ`b6FP2J38QIClU6=5Y1[2T^Pl@8XT51KB@URAoVSPO1:`1P8njX0O`P53QkddQm\:V0`0l=B`l2JVAPBg<02kBm<6Qj8=@j<2iUihLV`@LY0?APb74;4SYW:H1S8?n1@mkHFbS6Rf116fb<R=9lB6nEX1PJ2=l=<<\PM0AX70XT3DiHQ<QRK6dFT;abP6@I41Q0:HS?S9A@hTA`PJPHHic:RQ_jPXGeCYN[cB0V82d650^YT2[15h0X0FMPS;B3:R2_1HPG04R;``ZVB@E03RKH>g4V=H2BF04:3YH58<72D3@d`@WBKS63WLX3N=4n09c3MXS;L4DhHD99UP40@@4SAAS8KZQlf^fg_cOSXMllEMkQP3aV\j`B4UmNLDB0K?R5654AP\6PnAR]33KAI6<8b690>C1NeP_;2_B6Yd4QR4^SF?J_@C;SU^mbbESk@OG;]I^gSgkK<TF317_j67kmn]]jM`UW6dKSb8LNJO8@DdE4C1cR6=G]b8\DLJhKZ3SJc0Y=3eL@54g0id?UE2QGnA>1hI6HC<KH<DK`4nh9j6<1iSFj2W]ES7\5bW[=W>F:E?E:4?Df4i;YgI0A`N\[P56?O?:>H=JL\IDh@3Ti5XY`@6BnRV2NP<dl=DIPe;7f6DbeKC@BEK[=`?nf6hZV=jaXNlHaSA<B;S>BmKZD27K=b?dZP>cZB?bJlOV\cBh`iXRTV;Adi3[mKFaYPfbW_6nQJ4]=NhQAF4`WDAa@DAl60A8:88@T4=0TbFXaH69eI:HlI[DH\S4J<UFXWa69Y61AYR03m`lY7@4oGRd;8LCQC74Bei[4<bXc4b\>44l@3MF:dRa1nbiXYD^Ii4lHYKGek8XbD8\l;_bja3do5dh7;U]K;XhWb?U9ij\Z4=YoiUMC;V81:ZRXFNj\XlcS6h[><CUMUERJ5Ze8MoCJR@W\A=8PFQA3BSTh0HNBWS43<8Vg2>3S59oA6PO4QPGaj\C1Pj0X[GEJ<NJ:UQBP>L<J;i;P1b5B_VB82\QOg\X=ATb0I\=X\XEA?eYVL4Pj;;L8_HSlXn?Yfb5T>GINN55aJ<WV9I]c[K:AW]H[75m20L4ZggDn><gf66HQIJ6oT[K>m:CfFl=>9o;LmNSXPF^OVYScUJCJ?S5V8>lX7k`CNDhB;0K3Nh[=X_QFNh[U;Y\Wj]fRQJakTdic8:Bm_\_Pdm]U83E;C\:FoP\8L13ZTXZ`9J84F?g7f9>oc1MhkR:D5YmVj3eJH:Tc3ce>fc4fDDZX_a5jA]bKO<Cc\Mo7kO_=P7
+ E@=3HJL4100hYLEDF=_K@0@mKCYo_1KN2<dfASB`]CF^aUXa]Y\4WmD]203VfR;kS;KgdGgF285WU]RaSJgcjNlM7MFC4LiX=a48\7dW:L403mZ4BUAT82I>KQH8\T8QFE`DA2\LAVbMD5YRMT13fTiE^i\=n=V_FOYJiV\GlO^@L45ae3Lja0Q3T9L?@B@R]W0U\OlOD<?43_:I6J`I`TEfa218Q<;n4PA2RB<5Y4\dRIeeb?VFK]JWL=MNQiP_FDV=m<AT5d]mY1@I>Afc2Zof^]9h^Y8B_lT35:Cm`]9dX7bB;39QGliUWNMMG\=;7dgg[gK]?7?kbnISCPG<5^gafXo<mlh[<01Bk0OQ35n<NlKedOjV9anLSnogS^MST?J[2_ZOV`Bd_aVL8Q=na6]ii[?Y>SiC3UZJF3JQfAa<8NY3mG4kZi2Zi^R[7NGZa2NDBAmVG6RiGHbZI43RijS8;^JmjXSmBn:^?5nCNe@XP3G9RWIAoN;]HgD>Sj]R=nmMKAT7flimjI>a4Odg^8IcO2f4YAEeQEM;cYLE<@XX<P[mWjOUAbjVNccIClWIK1WMnePBIG;C_=mCdGZa:`dQRO_1<di5_WM4Oc^CSZK3JMWMokk[H@WMTSm=<Xj=U6oE0[
+ E@=3HJ;4110h]L]MDk_K3gBocK7LAg@bF0m7:L\7hO=LkDfTKD7hEA;>Hjh6e^j5j;K\OfEM@EBGmm`7i^C;MbhH6YYC0@12_;T><<9Q3icT_?LHbXW?1;d5cg]7loPlk6ac:NAD]S=kk7?ANV;IK>m43;37?W9gRnc;P?fkSK]bo;gR:T<V2X:FkcS=GNgcoiOoZfaahAoHhMNS5WN6JX>2_TUj@>L7`>LC1MWX=a1OJ^fl3h:35TWnYdI4H;DAHeM4o=2XfaXcR;Cl8i:CKWn0\of>Vggk[7M>GnF^9m:R3\GQ_kEIoJMZ4F2i@ab?TWdf9Y`coHMMg9:<TmPAeE;dh8o\9g_R;__<B6OGJ=@K_PYcaQ?7cKolOWBY@fj?3g_7ZCc[T[OW_oN?OlgX\I_j_cN\nn^=ok[\eH1goOi9?cdM7\ifo[\`o^``nPkO>jhkJONmhHojhYg[RJiCFhi7aCFafnkS6o0a4Ki;mBdWAQdgVBDhR\E70OGA[:9`ZK]?]agmeFQd?ZET>TiEkSCVI=[f5O6N\0KdB`A^mV>nfgP_[k7k4S?;Iac4iNdXS6bo1mQA4Tf?Igfk:7K]6HgK]KPna>cfBkkmZ33RdU`]jB_NIOShWL4oDlbn3lNOCL??R7GCmKaTDhekoi_En`9oJKe<e1`lBjmjXJ<^4_^_^>?7O?nEE_WTY:VYEc]3^eJm^cdC7;LcK_]Ei>b<^`9HR6YcO>l@Amg>PLXQ23c^]?FXRUZd<[n<SGjgCQ`mhTl;7NUbgaRQBkXNY4iX5iAJX6C`gdG[d3dB`Uj3DPMF7h71WBBLLRBTk9dZlFCYSi__fNBBT`C;A>jeP2CdONN52i5^eBEIEI=8EMHBBe^G^1ohD6>LRiJgM\MPYE8Wn`T9W@jf8iEfN:@L3<Ha_l0CCE<HOJjXBRll_NLRUo_^K7CQWihL<B1::YXdSaG<XFnCP94dQXb;^6V07F>ToP5m>4QI;?9JkF`g80:`G?AULFSY^XW;4XL^_D=GZV9VVODS^[=]dL]b=N;O[ib6]2aLATM7\AcX=JH<\1j8_?I9_VUO]5;PKjdi^o>Kn=FbmhAmF3EXh?dAPF?cWPU;NHFT9YBblF15fj0n]RK9>d;@lD9HXLGTZOAa;gEd6:MElAPOkOoMom`hnaYko^ne_;PeC\`kMYOoCalP3DR_^NADNSV6R1Nk4f?=Lo;VQ>7>fR@=2j8C:;D@3fk>^]YHE^PQ1fU>TFoNH>GnfRGNMNW`[okK`S56RJfM4Zmo^6E9ZYc>FNEO3PO=T9eK0:bgljYdR7WooKS9eTjd@bcImNVZ8UXa:AC_F_WCj]4\6ST<:ie_AbZFIL7UmlIne:BcTQ5T2U]O2goYWXRN5F8oeQTn`HXPD=2lV[h;IbcNNj1kU]lXlnX4ACO5aRA@TfHY77@P?L=_N@4^cJG;Wi2@3M5OQ:^@>2K9_9W:4Vn1LGaRN@WL9AFFVg1oYHdi`54XIa5G[\i>iPT4506XA7h2^c_T`3d[ARdFICaAS2RM:1KgT7B>MhXVaI<kA^@CX2aS^I:B>=W<U?l<DWU<Jd7^cKe2R]EdIBcBQZni_K1JPCEhV>VH]FBZ<5413k[U]MAFA`Ohma2g2NoU0@E;FI93Yi;RjnlScC;`glEaH^X@K[NY9Y1EUZc6V6\3?FKC0APU0^[aP:_GMI=eeWnJ<6e2]@;AXaAE<S[lhAb`XFjPP@dTXPYS=<568je\`W3?@gn9HDaM84^>SDl0<Ba6YNKCeYZ\CUU?WGnR4=m^aP[KTlFG\?VZ[MC:3PfflAagl\jZUG@ScZW:2K\FU9TQa<h;?iYb<RJI66IEg<WHgdkU:\KFIZG\BDU=9W>:\:W7nM3NIjXT;2YV[@dDaY3bhOQY^af<UVo:ZV^^@0d_M5ObRQ2PIHZ9bbbGm;4Z\KEfEYI=M];D@9j1kZ@2@FIkf9:\CYe5KnKANXH7R@eMc2M;Pl]PZG]@4h2Q7OY:=QFh@\Y6]E6X1bL6mjS76a`JS=H=XQReG6Djb7[c<h@S5UCX4`ABLQ4:ZZ7=JF9JejC5\[T:meE5_[:`Qm=DfI0EDQLRH6o]LAPRXlbTgXSbnW7ZTN?N]lH02JKm;Z4hn<A[89:C8lM5hC]Ab^\\WNK7JGS]XainLm:PWFF3EmC15\]YC\D;I6a<NiIhd2GMIG`A9\[]T00fP:UXIXSHk2jI>XFG>I521bbKDA`Xb]h>oAl>IolbRB7j=i9_H89<FR=U572U\LjNeno[nZk`YddH_`@H2e:3[IN394Ylj5[R56cl8Ij>?kN4[JWbB^Zn65=nT81@O`]a7oIX5?kKmIai==_6h7WQEnE6_@?:cB7XANFD:B`ES<^]D0<^dk]@RV@>QYTh9<5LT<3]l`D\89Td8=PXTH93>VJ1:BeO1?66P<2R]b:832Hj9[I>K5P5a;d0PQG:@@4TP<3AWjLUX1768176XNljd0PNDHXTR6R@b@\0;Pgm@F;H_X\:VVVUiLZD9KEV:fUfB9Yg0XKIWDjfXT>iXY`VCU>mZ:>liE2JOUoJ@J0kmJB?QeL[295b:KJKGOlN:eJ709J__@[MEkXjeb8dDS]FXQ@jLO^VA6_3GW::X]=eK5C?a=01lS8eigH4f>7=?L4]6ZjkD>^i9i`^Kn`FWjUTnhlcLUPBgELEKoSY^`IPG^S=4V`a<feZ=RKRHCmI2?2WgU4HIdRCgHHCM4HQ3RnnlPe38:6OYAk<>PgSlO>9\cYgW1_43a[odJ;N`>lO1HNhA`DDcILLmK:^9\lDX257]loDK]h4dGN`0=oLeSnno?iODB61BHAF4TKPPK_cf[Je=R8G22bIKEdHN<R;ZOM>eA_Wa:9<Ni8Ml<G51ef[3d;258M?Y6j\8TcT4f;:KZLFl5XL?[[7Te`YV8ajC6B9Kho4?f>mJZSeK>;=4naBggQl;Hh<9hBX<1POlfKd4]>;4nhh@cHhBgnJ[^U]CZDIeLGNPD\MKo0NCk^WJPKg5Q7>KLm;:5:df2WZna4@iS6^\8kdK5<SAih0behELi]h@b`ob\Dke[UILAT7<1fkaclfgb]BPX\mWf0IkLGTabQ=I^0ES>]J0Jef5k_X_LmBWk7T1nR=@n0:4fek;H:L=JShd9IH1=@aehMee04S5fV8LbF6GV`\kZ^?=GPQ8MbGUEBRlC?Ld?O?X3LBJ@39?C=@Q:ZO1S5DATMlHZThWmK6?9[6XHcXZX8XJ?`jY\W;4XZRE6WTDaHOZW2LWT>[bXM>YL\Ze[RH_W7Ka]Qg[9>D`VTOLh1<?fG3S5PN]Mbiim0=l_EZHDBA`AWaV8Ul:j3<[>837X`i=;XDI<NO8_3d:lbEYAHRokaYAA;LVZZ<e4Bh_9WhmN_6P=YBhSX5eJce@6RadFPddVT4_>ZZecD>X4SMT^SB;\X`an>A_MEYFGdh<Y29[bhABSF1MH7:l>BDa`L>^mTD]a3FFPG@03hEXQL`39C56=O6C<I:<0obc8\MeNHA:DH9APlPdCej;:`>nYJ:jPH[0AC]M0QL[lE3`_ZYKfDHgRBTS5^TY2F@:DlFN6nie=a5d4OBi^7a>8mDbP4_YDceXaZX>:cKE\V8fi9g3a<f<`df2`Tk=GVK7GbGZ\XONRC2oKn71C6fiYB72l<`YOEN3g[VP^hnVEeT9aP\EKaJP_T;3DH5^IP6S8bUS5CY5Fm:<I8ge4l8]gGDI8=nWn==5f_S1<Ihk8nOTVH1L5B;lf47:5H\`VWTHO6OE@d2QTe03nd51E@[T]T79FjI2\nW@8DkSXEE3WJ[`M1DWk6TGBOLiWJ7jTX:>YaPMeJ0VYVPFI@3mUHGaE1>N8a;8aX9gR\BoaUP8C;fZ:?3N7EeX`\4ZZI>d<ciKIA96QY\EnKPnG`68A<5XE5]F:;=l=U\`:OmRMnajfLehW\mOGk@fJceGl[?GIk>gJcF[NcfkLj];ia9@F_6:86kE_L?ePQi>6gT8?SX_<TOb:Vc0nKV@^:Q>B47Mabi4lC?>H9aXmHg^ijGZ^k<:R=S;YUHV:3F651nlc1CFkY[[cYl[>F9?mbR@m\l9i5A4b1O1eg?<5WgA::\dFYh\OGWHCRkD]=]bV15k2RI8i`ZV1oU\1]Fdf52TbkSJhEPVFLE[\e;\OjXn1ihogkK_c^[hmCG\;GoT7_?`>>n;TWfCA2k6X1]6R29Yn^[kNXOJ4ObO34h<[kl?13iWCLhkF`em]m_nef`kgoIR7:J?8a=NMef^FIO6BMUO4f9Z2bHImbPg3NfUFn]6_kcfG_1?2I;jN\fOmAJAV_kZcGmJYY\nnhaYGmU_if9P2_Z^Fe=6mN@aOoPD3GfDdUHYY`?=GHhIFchVFmjhP;<NVIW4;\dl;6GF\lQMFF6ZcTU[\fIAXFEf46cB\d;OWoeK7c\cC5fiY2ec71]2S6Ul\fA>3k8U1^5`\S6T=2?5=ljik81GCW>ENOO][\Omkjjjk81cE2k]81j2Oa@RMKeC_HH3g<d3Vl9kE@f3=3kS615i;nQLPO`T`_H`Hg<:J`dC_HH3g<bn5<nGQPO6`Ph`Hg<`\K6?2bf3=3kY616L?Jg5<ZmLPO`T`_HO\TSi2nQSPI`WG4kj]Mg<JK8LjkGmf>KLkW]o=GNJiKAW`gNaJk_W[B=K@dfg>KiHLWglCm5j_leA_H\EHk>ZGOehW\mLW]iO[?E7[]]7i[?kUiF]NC\>\k6_1l[>=k6i16mj3P^;kOi3=3V2g^NUm;@dB8eKd27[W?=I5^eOKYGdi5n?kM3_M]N71o3e?^_UWg`A@eIP^G3Od_P9jldf^N=X6__GnnaB7mUghijGZDlmiZTd[Rh3Yc66?>dXXUlGm:oIl5ocOF28G9oG>>fKkRDR3>GAJV`e]D[QFbIiCGL\UId6l>QS[Yd;a[KQ@^6Sge_XBj=\9;bfa<1Ag\dGmAAQ`BhYO6^XWHZfPXJIiHRfBRONB7IFDhA?RgAf0_D8i<BO?AL@54GF@]WL@^=f2^P^noWPaK9GhlJR^NdC:0>YMAGEWX?n:lh@ELhY9aShVbImK7b?W=@7k[0NMR?D9\IQi7VfXjYY?O;QL]m0_;lC2UfU[PCTLEmCMG:TXg0WW9KGKB<9;0o94HSIB?8aT:a[F7L`iQ_F4E[djTh?:^YQel?KP<>EFZajL7A>G49:Ch8:l3doG[^lAF7COMiVSBL]BDOT:Bm:BEg5jeIc1_DfOKN?Kb_Baa?G7a_@6AD=8hZRDPC4N]hTghaM:DJiiSAP]R]Jl?Rh8KF]fLnE_oW^gG5JOKRdK9GAkTXAQ>aPT1f<b0I19P6LJXR6mPA6@CTS2C9TA4\\8842oT3=>9@J3j06Q`bU6P2PJ8QdIlUc65YJ12Th^l@:8T561B@hUAoXVPOb1`1RPnj0XO`1P3QMkdQ;m:V<00l4=`lV2VATPg<P0kBSm6Q2j=@3j2i>UhLLV@L0Y?A<P74Q;SY2WH1RS?n41mk5HbSX6f1Q1fbX<=9Tl6nZE1P0J=lS=<\7P0AAX0X`TDihH<QFR6diF;a8b6@1I1Q20HSX?9An@TA8`JP6Hic8:Q_XjXG4eYNl[B0bV2d160^IY2[11h0@XFM8P;Bb3R2P_HP@G4R<;`Z4V@EP0RKcHg4SVH2EB04P:YHb5<7523@<d@W6BS6i3LXg3=4Pn9c73XSG;4D6hD999P4D0@44SASF8ZQml^f[gcOjSMl5lMkHQ3a;Vj`1BUm7NDB60?Ra554XA\6?PARP]3KfA6<L869S0C1]NP_@;_BZ6d4HQ4^US?JT_C;9S^mLbESTkOG;;I^HggkcKTF037_Aj7k_m]]Wj`UAWdK\S8LVNO8U@dE441caR=G\]8\WDJh:K3S\J0Y`=eLa@4gN0d?EU2QOGA>^1I64H<KcHDK1`nh>96<^1SF@jW]XE7\l5W[Y=>Fe:?EA:?D1fi;=YI0lAN\8[567??:f>=J;LID4h3T1iXYD`6B8nV2XN<d3lDIMP;7AfDbVeC@eBK[L=?n1fhZSVjaGXlHXaA<bBS>oBKZ@D7K\=?dXZ>c4Z?b_JOV<\Bhn`XRIT;A^d3[FmFahYfb;W6nfQ4]W=hQUA4`UWAa5@Al06A82:8@1T=0<TFXVa696e:HFl[DKHS43JUF9Xa6j961JAR0O3`lAY@4eoRdb;LC4Q74mBi[C4bX1cb\1>4l0@MFm:Ra?1biZXD^NI4lJHKGNe8Xeb8\2l_blj3dAodhB7U]bKXhlW?U^9j\AZ=Y>oUMBCV8b1ZRUXNjZ\lc1Sh[S>CU9MERAJZeG8oCHJ@WT\=8EPQAT3STPhHN9BS4c38V0g>3QS9oAAPOX4PGNa\CX1j0:XGEcJNJ9:QBCPL<RJi;`Pb5KBVB`8\Q]O\Xd=TbF0\=KXXE3AeYgV4P2j;Lk8HSjln?=Yb5STGIWN55Va<WRVI]JcK:iA]Ha[5m`2L4=ZgDcn<gQf6HVQJ6Io[K<>:3=MOc?D7>]<cWE<>1ACTDH^e9IIA3CmL=lB5YIeKFEci[_THLQ1GUf7iJ4:OBFPcHGH0SH;^5[a0Bo@FcUUKAd=DnhJlI<59N7N=Pd]`U:3E3@]:5kQ\DL13ZTXZ`9J84N?gN`9i2S3Kfb5EYOCj<DVaeGA9WDmZFc9CIHBYIc6F[]g9L5d=?\?nOGVTQP3
@@ -4557,6 +4557,9 @@
<_NAME_IN_ATTRIBUTE_ name='' classname='Obj'>
+
+
+
@@ -4587,6 +4590,9 @@
+
+
+
pin_name
@@ -4617,6 +4623,9 @@
+
+
+
sample_rate
@@ -4647,6 +4656,9 @@
+
+
+
number_of_samples
@@ -4677,6 +4689,9 @@
+
+
+
acquired_samples
@@ -4749,7 +4764,7 @@
true
- teststand_fixture.py
+ teststand_pin_map.py
1
@@ -5242,7 +5257,7 @@
true
- teststand_fixture.py
+ teststand_nidaqmx.py
1
@@ -5986,7 +6001,7 @@
true
- teststand_fixture.py
+ teststand_nidaqmx.py
1
diff --git a/examples/nidaqmx_analog_input/teststand_fixture.py b/examples/nidaqmx_analog_input/teststand_nidaqmx.py
similarity index 69%
rename from examples/nidaqmx_analog_input/teststand_fixture.py
rename to examples/nidaqmx_analog_input/teststand_nidaqmx.py
index 1bafe25cf..6caedaa65 100644
--- a/examples/nidaqmx_analog_input/teststand_fixture.py
+++ b/examples/nidaqmx_analog_input/teststand_nidaqmx.py
@@ -1,41 +1,17 @@
-"""Functions to set up and tear down sessions of NI-Scope devices in NI TestStand."""
+"""Functions to set up and tear down sessions of NI-DAQmx devices in NI TestStand."""
from typing import Any
import ni_measurementlink_service as nims
import nidaqmx
-from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+from _helpers import GrpcChannelPoolHelper, TestStandSupport
from _nidaqmx_helpers import create_task
-def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
- """Update registered pin map contents.
-
- Create and register a pin map if a pin map resource for the specified pin map id is not found.
-
- Args:
- pin_map_path:
- An absolute or relative path to the pin map file.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
- (Dynamically typed.)
- """
- teststand_support = TestStandSupport(sequence_context)
- pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
-
- with GrpcChannelPoolHelper() as grpc_channel_pool:
- pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
- pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
-
- teststand_support.set_active_pin_map_id(pin_map_id)
- return pin_map_id
-
-
def create_nidaqmx_tasks(sequence_context: Any) -> None:
"""Create and register all NI-DAQmx tasks.
Args:
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
with GrpcChannelPoolHelper() as grpc_channel_pool:
diff --git a/examples/nidaqmx_analog_input/teststand_pin_map.py b/examples/nidaqmx_analog_input/teststand_pin_map.py
new file mode 100644
index 000000000..223741401
--- /dev/null
+++ b/examples/nidaqmx_analog_input/teststand_pin_map.py
@@ -0,0 +1,25 @@
+"""TestStand code module for setting up pin maps with MeasurementLink."""
+from typing import Any
+
+from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+
+
+def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
+ """Update registered pin map contents.
+
+ Create and register a pin map if a pin map resource for the specified pin map id is not found.
+
+ Args:
+ pin_map_path: An absolute or relative path to the pin map file.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
+ teststand_support = TestStandSupport(sequence_context)
+ pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
+
+ with GrpcChannelPoolHelper() as grpc_channel_pool:
+ pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
+ pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
+
+ teststand_support.set_active_pin_map_id(pin_map_id)
+ return pin_map_id
diff --git a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
index 8005d3c88..e8ff773c1 100644
--- a/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
+++ b/examples/nidcpower_source_dc_voltage/NIDCPowerSourceDCVoltage.seq
@@ -1668,8 +1668,8 @@
- E@=3DJC4100hYLECF=_K@0@mKCYo_1KN:<Ta239hF9[gHbEVFDfRINZfQ01CkaUMk5=k`[c;[42MMF9aiNliecVfMFCLXi_`f2H7c\G\X50M=Z4S4aT2QI>A^D:d1\PCI`L11RlV5bM5AIZTc9STI5Mkg<bHlle[O=CL_KEgb?8RiVHS7QmPY@S4X^7I58A@kPaKcPWCOC1;DBf61lViY=]`28BC\B_mEf20ZJS@W@GDDRffLe\Ci;aKbN>i5P_4ScVVBTjIIfn0j8l<e6IcMbZHgCI;n8CRlR7<YcK0@cY[8aDHj=GGkNK;C?KC?b=]mMejoc1gGol1>hL6lf5fZ92?Ia@l1;QL024f^NSm2MhNlcFg_YR[l5kclo:einXehbR>98[4?GC:CX[3hm\UMob2aIMT0eJmgI@\;njRK9]fIl_8f=d]n4bQcRXDEl<o=@Yiik\3Md@?k1=0Joj>?Je`<RUd<JYmeOnOgB3G@Ub\FoGFgIQmQli8nGH=QjKD9i`2nf41XEKj;oDB8iZU`@XP^KWoAKEbOf:ViVAl=_I37KJSec7Ea\nJ5]NZj\OnJF;ASQemRIDbbdglb\U>H[O^bDHO?XMLaOoeVCf=a^CC`d8^TX2B
- E@=3@J\4110h]L]Mg[cK3fBoj\Kifo1C[KY_3VgFm3_6n>DfdTDgjaSF_LdVUJaY::FII@T:GB9LaYOo80OP^053LBBVb1G?:50k4;P1c\^`03ffoj9S72=AOm;a2oh?Na\lC7TUOXcNfaSdfIbVCC_ao20aN9bmo_<R_S=>KV;lhbmh89SY[:2UflXcmGIlnngoE]\\ad_6_gW8X9GAXJSPJYin>C71=c74a79JN<`GPK]_\>2`h9IOC]VA5BU4AMW1Qc`j?lJ\aR4__>R4SI_`[_mmnM33ONg`3P[g4N5aSF;ce]^eVffg6>cIRLhI]7CjE^W[jW`kZkGEWHk1=RR;gTe:O[H;k[bAd7UCaTVXgjlho3Af>?oIJdjMo>3=o;aTo\ZZnG9_cgcO7mjV^k>\:gkoOkSn1jkfm@MgLnb<Amg;\Nmj8klk3llhhnW>nn^GCW_fW_>ji]:Va>TNnNQdK5LolNX?M@\6jN2ddlIHh=MT1E^[o4Q7I54R=RlVg[S\KmOe9GM:Qeh9OnUhWTeC^ZM7SAGP1V=LZ4[i\cOmoH[RS6YBL2L\PAg][JQ<Eo?8;D9Mk3M]>N^6>HgJ]KP^a>cfBkkmZ33RdU`]jB_NIOShWL4oDlbn3lNOCL??R7GCmKaTDhekoi_En`9oJKe<e1`lBjmjXJ<^4_^_^>?7O?nEE_WTY:VYEc]3^eJm^cdC7;LcK_]Ei>b<^`9HR6YcO>l@Amg>PLXQbSb^=?FXRUZd<[n<SGjgCQ`mhTl;7NUbgaRQBkXNY4iX5iAJX6C`gdG[d3d>`Uj3DPMF7h71WBBLLR>Tk9dZlFCYSi__fNBBT`C;A>jeP2CdONN52i5^eBEIEI=8EMHBBe^G^1ohD6>LRiJgM\IPYE8Wn`T9W@jf8iEfN:@L3<Ha_l0CCE<HOJjXBRll_NLReo_^K7CQWihL<B1::YXdSaG<XFnCP94dQXb;^6V07F>TkPem>4QI;?9JkF`g80:`G?AULFSY^XW;4XL^_D=GZV9VVODS^[=]dL]b=N;O[ib6]2aLATM7\AcX=JH<\1j8_?I9_VUO]5;PKjdi^o>Kn=FbmhAmF3EXh?dAPF?cWPU;NHFT9YBblF15fj0n]RK9>d;@lD9HXLGTZOAa;gEd6:MElAPOkOoMom`hnaYko^ne_;PeC\`kMYOoCalP3DR_^NADNSV6R1Nk4f?=Lo;VQ>7>fR@=2j8C:;D@3fk>^=YHE^PQ1fU>TFoNH>GnfRGNMNW`[okK`S56RJfM4Zmo^6E9ZYc>FNEO3PO=T9eK0:bgljYdR7WooKS9eTjd@bcImNVZ8UXa:AC_F_WCj]4\6ST<:ie_AbZFIL7UmlIne:BcTQ5T2U]O2goYWXRN5F8oeQT^`HXPD=2LV[h;ibbNNj1kU]lXlnX4ACO5aRA@TfHY77@P?L=_N@4^cJG;Wi2@3M5OQ:^@>2K9_9W:4Vn1LGaRN@WL9AFFVg1oYHdi`54XIa5G[\i>iPT4506XA7h2^c_T`3d[ARdFICaAS2RM:1KgT7B>MhXVaI<kA^@CX2aS^I:B>=W<U?l<DWU<Jd7^cKe2R]EdIBcBQZni_K1JPCEhV>VH]FBZ<5413k[U]MAFA`Ohma2g2NoU0@E;FI93Yi;RjnlScC;`glEaH^X@K[NY9Y1EUZc6V6\3?FKC0APU0^[aP:_GMI=eeWnJ<6e2]@;AXaAE<S[lhAb`XFjPP@dTXNYS=<568je\`W3?@gn9HDaM84^>SDl0<Ba6YNKCeYZ\CUU?WGnR4=m^aN[KTlFG\?VZ[MC:3HfflAagl\jZUG@ScZW:2K\FU9TQa<h;?iYb<RJI66IEg<WHgdkU:\KFIZG\BDU=9W>:\:W7nM3NIjXT;2YV[@dDaY3bhOQY^af<UVo:ZV^^@0d_M5ObRQ2PIHZ9bbbGm;4Z\KEfEYI=M];D@9j1kZ@2@FIkf9:\CYe5KnKANXH7R@eMc2M;Pl]PZG]@4h2Q7OY:=QFh@\Y6]E6X1bL6mjS76a`JS=H=XQReG6Djb7[c<h@S5UCX4`ABLQ4:ZZ7=JF9JejC5\[T:meE5_[:`Qm=DfI0EDQLRH6o]LAPRXlbTgXSbnW7ZTN?N]lH02JKm;Z4hn<A[89:C8lM5hC]Ab^\\WNK7JGS]XainLm:PWFF3EmC15\]YC\D;I6a<NiIhd2GMIG`A9\[]T00fP:UXIXSHk2jI>XFG>I521bbKDA`Xb]h>oAl>IolbRB7j=i9_H89<FR=U572U\LjNhnkeeemHDJJ\GHX\;J51M<?QV2DneREAR3in6<M75M_Re=Ci3gEOQ2VO`4P8_hfhSO\dZ7m]n\hlV6gSlSC@PoZSe8WUaY3d0_;Z=9H:I6Gf2PVG`mf8CC87@DBlT62^h6QFFhZF64BJ46@Dh<T1=C]0_9J?073S@61ADIUT31<mVE<W?R@RBUJP`@;50X2Bh618KM^bf033T033D?NM@P`?0\dBA3A8AXF0]@KnP[5<EDfUICcBF^EZT=:cWKBKYTDKXD=<A:mkNB7LFDHC9b7nG57NFZ1]Ubo]8]0MN]YWJJ>eS42I?===3_n_?J=384=Go8e^0mdmBiTjRaf;F@8M4_gCZSGQ3cUUnF6J_R9WJV0PNaTJDk<RiWS6=>Rf9EmM:WgL4LHg5oH[aMbbOlnI6b`9KZ^Z]oAdeH\@YgaV8ChHTKjEVA]a^YN<;71CAbR\<jAYI\\Y<R\`1AOol`j1>53?d8MV_@kAN_W4nIdKc0gRYHEo`]U?HWN?0<?l2h:ZC\>^D]Ug4FNZl123fNoZ7fLRB[_HR6O>BaoomWl_8YS0Q\8;RB]@j=GIIe]J<AT[;1I<5ZJ\?Va5g?>7hXgcbU4V=lT>nV[28JKeQJ5QX4^WD3MfTBIBPKU57e>[FRd>_EeSHJhDa4hM9S9TUlOR=KWn]eAJ]W5VROh9ak`n5<LV6L9d<0`?fk]J8FW52OlL2i<L1kO=mGBf9e:\`^[_J:F>7o0_9mGc_`=KP@SW_^NU525JcQcEGhR8Da3gf4mJ?R6a2lLPKjL:TlfL8iHOKf:Mjeb\>Xb3>0kM@iNkaifYHDFNIKP\e^;bhg@V<g0Za7F]R=JKPMgdg>nYaMSb8MAV0o05XKjM5<5^V=albT\<868hhl^jHPRa0KcT4i[31chfOeGW>;``>>I;B:YafYW>jW_7D1>9_X14U9VXJ5E_PA2ZPb>n6eBLcN]SU4eSd<IDGD4D5WHMlFCU0DeARScb:h\?EC1>IBWead>7F>FeBea\oCS]jf@kE47ZHcB?TlP6_K[QC2@_N>ilNn0VdgZE>Z98hXCHa4bNUM16M74Q;DhldmcZ>V?_TG1J?NI:F8<aomhdPX5^AEe6BRYle4clf_gSb6D9LaD2h]ij8SAH@[`J@cb2G7ee@iZWl2A>`Ga95FDhJo7Xo>Zd3[jL<DQ4OILX9a;0T\SUDWY:Bh>WGNb:dHQ[S`[8:1L:F@>H[49RQ6_3QV<UT0oIITF^H_\X=:<42`N``YjM75HWEd]5O`<EX89FTP`^oN:QHgED5k:\CaYbA2GbD1;X5:N;?SoLhVhR`R_9lg3hU4n:I`2Gn:IjDHED]5i=2fcTklTK1H6k4HjK;HBM>;c]9;i[MFD?WaY1O]oS293kLd9S3N6He?:_QKEcBGLOc:jB6H@fR]h]HGB5;:<RE<`3K4Ibi29dR;nU<<TKBRnTdK[ZTT6oiOVVXKgaP6<lMTO_JC\0<RY5NkR352<FbcCB<_3?0XjQ`BJP;OJR::8eHFb3<;M\9FOC8T:MkD:Z;C=eb^0:AMSbSY_^Lc=SGbD5WDh@6j]PCDc@;\X1Nb\[`Z0W_Th5<HD4CafYghb`T95Ko571]SZJDHF2eE<7jViL_\8TQ@dFRo]`G[h3>862l:2F[UU6dVbFjU?NI>OHOk>JNcFNU[mXi]iJ[neWQ\mWa]i[e?IkO^Mf]LHTP[G3?43M8g^Wh``lW3kBT7ADM6b_IUCIPO=C8g5@?9R3<hilXNY7_<THNN<KMLm;eGM6_A6AUDB\c5Q;S2POniP9[mdEeIDnO7;T7Nia2nFN\L2XZIP?ZJKW\2cK0U5fb[dLn?[C>YAMXfVFic02OQA\6LHEk0oBd0f;`kR1hImAUl:@I;^:oFJUF?mDgPlLokm]OIgenn9;n5[Oh3g7@W7OWBCk9X1mYDPF9AQ4LOGeM_D_WR?I7QRlVEmN_0QlA9^lO[HjnfngGjkHokO\A35=_4hVU^jKm;\?Y9^B=RkTG1I<6nI`AQ_kJ;of[GmIi[g0]1\UG_FKUnX]ZcGmoI;NUdDFOolHn;NbMLkT`1GEo;j63N_8b_O`PQ[KRjb<NDHW4;\lT[Ila;nMd`56_c\C25fJLUS;9fn@6[[SMIBBMFK\8d;ZIRSI;fJ5_cojWSIfcY2kNd1jkS0f9A3BNfk8W1m4H0gRbfA3J6Q726nmNm4PQYcWZ___NEf_FmmmOm40IZ1mf4PmS?H8k>=J3g<\1K6j;CNTGZ8kY61mk30RLUO`T`_H`Hg<`\K67=HJ3g<\3K6iGRVO9``_1H`L`\K6`f=371ikY61mf30S<W]K86enT`_H`Hg<=fbaLQO`c@<hK;Rmmf>KT=]4\mm;NkW]^mcFgV[_]l=8aHk_j]MgIEYV5XJkiW]l^^CKnYn2OgNJ0g<fR\mWo;?JNcFN^cfL_eWZ[Eff[LeWebL[d?YfWFm3O0neW6m3NP3nGQ@G_M?lS61c3KG?`NUXHYTJ?j1SoC7V>RGj_]d[blRO_M^Qg>f_[0oQJWgg`CkhXXJ\hG;1Ujg`4MNjIg_6l3GG;oohYSNBallm3eZnFmebBeaLSDIS17WJfDBN9nUo^n2oC_;Q\;4O3WWk7mAZI17;2]ChHfZeJ;I\fY;^dB\J;NW@cEDj]HE]B8GSiKJgN9M6f4UIKhV02kFjYnXXBH9lF?3gDC<EC`d=4l<aIYa?]YS<9Zl8]AkXcPg:6L69WWX^8R2;YXfC<Xg6AQg@oOoChH=41ln]AG?J3U0Wn>8[8cdWGUnL2Z>Ll4HaNcI<f]SiWCVXSMeP?^a7:Tf<`L3cKdmDl7?Uj>FnPG5NSQBkHE`Yj>ZNQ^;UbDk0kCT]3]YV<50o<2<aTY7THb5hg;3^hl@GYRZE@mbL?5gdHJNW5`6W8[eho^38?;R459L4WN1Jg[egNX[3[_>lAAY>L9Z_H5YN]9:KZMj\cPGZco]??=ig[hH7YShgPS8:44leI:@9R?fLHKlH6UZ]nlAXHFAFUn7AdT=;FK^oZgocoK[2W_=Aj]T;2mBd8`7h`B0K>IP<04@S6]dA9N`8Q8YBk19T@8RFF4T29OB1V7TX7QM01@hI@3`QJ=4@H\nBkS2d5P1BDgN8?4B230Y8lb8ONC@?IPH0A@OMPD?HZ@1`>mj`5N5c60PN06hNI1c8`@k6b0M9IN3`QM68;M1l5Bl>6cX>XD78V@S2j5Ad;C<0cA7OX0nM8<iaN3K0@0Kil664BNSOe:0@R=6NA66f9@PX0d0dHb:LL\6@1aSJl[5h6I38X<0`;0<Al748MXb84H=@Y<lI\5@GNMD;RJd?DeY0Ac1J230g>d1e00LP8d;>V@59CQA1BG<@2[2A45hE8CX:H0A=a\KRAC<Q0YPRb5D<IR63P1QX<JXCS9a3FQ>daQVRjO4I;1da1URZ;LZ444@R2PX2XAXA9Te@FngkoKI_ea>NZN^m\`1H5CMhX9Bn1?ZYS0WAbR2RD8F3W@XajF1=AXS6<TS4i09PN?`gPUG9G3J26`2GbAW]jGY5<AGn^iZAjM_;W5<g^kKMC]B[X13GZm3mmNffKMhb:cJ]DAT>a?_4H8jZX2PIja6[DFTFC:]l]=1AN=PD`VJ>HX2k?Pj7:bQ`W[XWe0\38<V=I\:]2HOl74S6e0a;ZmCFf:3FnRcED67[hUWZPU7ZZKLUVD\PFX_FVE23Q7WUaWV=U><ZRLQB8LDd0hS94OC1D?6J9N:\\`US2k:iaJY8jY]eTVWO0KLeICMh3dn\dH86aYA7eY]eZZ3=d6WJLE7IPEWIe=_c4FYLEhdA\b5XoJQE;n[HFdKI7C3oK`RFK6l`B8RhhCXhP8XnP3841548PB6P6B[DKHS41JU<Qne:U\ARQ=B[VDHSOT307XA07Qhn2d8RBoajKU>9P@S2lYle3RId0IIf072nP8>;NUah=0ilGD:G5\RN_\=;5jTD@iTfQNGIfmQJ2oJl[SBFC]DLncWBE4mFZe6d_Ob>3YC4APEA@D_mOFNI8ALek79bT>:a8]EjYToY<]8C`FV4Z``X`1aB@L<?V9ARCQ4c:K71jA4o8X@_N2@;?hf9D0M0]D;:A]?]T5@Y1`>Vi=L5H`I25YCYJTF@F?fd@VbI9Pf6?dDZY8JdAcR`QM5>MT<aOnO7<DiRiB;\k?RRIHVCkC<FWi=5fXF\he2n@Q>2TEkZIo6kBK3\C@]3\oE]=7UY8knVi7O5=^_a6d;G^?DaLI=YY]ARAc7NRDMhAYZlK90=KQlem6G@;;lecBDFecfKNA=H>mJl3I59=NFgn`nf[B1:05f5E[`fiTPQ4EDe1H=4ZRWkf3TWlOP>Ela5hZDn]cQJC=UBXIIJdWiR@KZe]DHRbmfI;]VYoi>o?3K1h=6
+ E@=3HJL4100hYLEDF=_K@0@mKCYo_1KN2<dfASB`]CF^aUXa]Y\4WmD]203VfR;kS;KgdGgF285WU]RaSJgcjNlM7MFC4LiX=a48\7dW:L403mZ4BUAT82I>KQH8\T8QFE`DA2\LAVbMD5YRMT13fTiE^i<boIle7[=C_LeZbKM2QXhVTH;?4hTX]A[17:2T;Dh\^Co3kY9PA5QK23^C]l262h09La1?5^k3J0BQZ@@EeDRZTO=\cKd?XKjmGb1N\X<J[IS9OXJj22Qc=R\WEEn\IKCaHCAUNi97;EVjaJCX4>UU36B3oib::mkjjIJFOY^^C_gK;?Ngamc6b1^HOM^Rl@oHoiaG802US0o36;lHiif[]oe<FRliGlo^CMk69OeFDNDnIQUXNS=iA3JmW<KbcFOCL6bWF;DdY7d2\SSH4mB7[^9gAb5EgM5G;l^DR5mXURj<_=4b_aTDS965fd7ACLdkeA7kamDL>;lWi[PA07_B@>cR[mGK`_XMGdK4NmjkVR8?micjQcMS=oX^9@cW^5\93S[[2ZkFbBiZ=Q@AM0FkKdo:gUd<lVVcfi>bV3>kl[1UR_FW>JkW]_EREPX34oO2LYb;J>k9nWLWBEg6Tk>koggGTQ>kL6kJL@dKQ2_E0Z
+ E@=3HJ;4110h]L]MDk_K3gBocK7LAg@bF0m7:L\7hO=LkDfTKD7hEA;>Hjh6e^j5j;K\OfEM@EBGmm`7i^C;MbhH6YYC0@12_;T><<9Q3icT_?LHbXW?1;d5cg]7loPlk6ac:NAD]S=kk7?ANV;IK>m43;37?W9gRnc;P?fkSK]bo;gR:T<V2X:FkcS=GNWcoiOoZfaahAoHhMNS5WN6JX>2_TUj@>L7`>LC1MWX=a1OJ^fl3h:35TWnYdI4H;DAHeM4o=2XfaXcR;Cl8i:CKWn0\of>Vggk[7M>GnF^9m:R3\GVoKMZM\]^Be;QRLhIT7CjSKDH?i\^d^TUfVN`\8ZU=jTOYFKGYaGGJVS?c;V8O=@dni`7\S]OcncYBdkMZ7KGoS9InEE_WCO_IWnkmd<gUMI_Gfogm6meNf\P_k_lcTIjH^FlekefEhghOh`mC?MlcM_?MN\O_MdK>E=LJ9llf3Y;>hombAOPjH=l75YjRc`J4k9ZNLF:j3?;=854oh=Fo7Hk<n[`9jEZKbBlm:a9icVEPk?S=_0]8Jh8EGcWVok`oGM3jmAWY5hI5R_J6d3IjoN@2XBkS7kK[m3=JF<ke==`<oWIZkmMmN11fAbh=FYGi?_A6l>R@oni2ON?J_^7nW3;m9]h:blj_MlgOZhTiO]Jd6Ph8nmNEM=6RGGg?G7Wc3WohZgc7b5CZdifWQJ]gNIjb95^kigFEZWI=VHTN<3DAIWnhXnK6W>DX@1IeG7[TdBEaJEoV6;Mbk`HGnbN85?bfiha``mDM?2LXdLX=]39>Hj[deQjV9bM81`^:;LSDP9YA^aYUBTJOe[Y^DLGDg_YN9HY25WM<j193J__hRL2NGYZX\\VPT^\RYjGm;0o@LSWV>L=IKf^W`:47chbD48mikL:1KUXB>6<GhNP`YZ6A\]m@daNEN?^laOg[gS9d`LlI^9PQ5DDlJH;GV;OT9426JDI5U3c@0;WOb`RKn2`i<74G][HAk05ZHWXKb[a?DDc@5D^?G:VM[C4fC?ZoAEVLF^f;I?UU_LIMS1h:^b>]S8i1D=\UV0m_47\OTCbm_2U3`mJglOWe=V[OIlXXnQZgDWJ>8;7>I@bAU\[aBD9?i[P42mPOOA]9TJUM8ZT=<>;_B?8iHK:Jj5^g:X`_?_Oe^nholhdGMgogj5`BjfHkmd_PohNB`:AMg?Xa:acf30?JMKWY6oU<C736WaXB6M4a95:H8KMmWFdB<g`8`KB<W;o9?W;<Oa[I?_c_hOMl]a263=KJ>En?O3Zm4DIJ7_ZJ?@?nV4j2=5I=Kmd^J3CoO]aDTbm:jiI5<_cSeBD[H89jGgce9f2`FAbk6LJ@GiE;[^3=bn\6oUY\i@RZBBFj?KODDDaB_;TTo`b4o\DP@VQVNElI5iI;_mPdMFn5dodZ2Y?<Ra86XK\PD3XK`>VAgXRNG];dULQjX>2D_5G;X1]m44cBUCoY0[h9AXca>8;^[KPGO<JTlR2[Dh2=[FLEW`B0R0SPdSL]QIgfBQJ0EaJ[[YH6X1Ak^0=dK3Y17ldVc\62mg8?Y1HUA<Ui96cd67nXVcb96j3lG]JlQF:IJYI6YEO]l=Pl]9:4L7cE<;YSe2RZ0MEmb>X8[h?WlhQ:k?OJB8:Z5\Tm1L57aoNlAY5NhnZAhgDS8e?kdD0<ZEi6S3fK1;]bY8@:BGE>H5G[;\VTjco9]3j?18U_XH8Y:AeUNXI5H;M4@8J?B@D9A6R9SMJ^Fc1R7kO;4ZH1>2G47:NIP9h?3?=TYdeZfbBdW;oha6n>G`E6]N[U;7c]E>9@U@KokXh5KfmVE;X<aeC`U=Ff;4b6`VLYULdCiA]:<3\L:VcN\jmIbF=I;e;:fZBa6C7?U5c]3^QA?mD9b1DEc8JlZd1_i_@UDHkL6Co5UCGBGPJYGR_Ti@1C@\E6TiIe;UR]e=ZZKd\YVfURZTM50e8JQ[<TMTUjFdJKRo=CXd\N38JN>Q>LUNF]@;FB8LQX@?daU@[8lfDU3:S0dI>?SmaPSHhf=6<gV@A0JSZnmSECILXXABY8dHXQ9`R?5E3I6[4N=mYUREb_5jZUREUlhN6VZ\P`:`^;ASOQFX`5ANI<BdamicSLE?W5?N\:P==ANE2OlVXcE45;9N>_2YF48gFNF?]kS[AmFHLQOnU6@;[jQnY:PFf2df:IUSHYVl\NLQ[S>[H;XFE4f0P<K5B9DdA7\QMC\D[i;<RB1IIP]XhTDfLe7XnaWoN<i93kMLT9gT4:6aVbB3Q5b>m>?oo=eemEHJJ5\HXb\J5g1<?IQ2D]nREHA3iQn<MQ7M_MR=C@igEhO2VLO4P;8hfhhO\jd7m_]\hYl6g_SSC8@oZ=S8WLUY3@d_;3Z9HF:6G@fPV\Gmf48C8d7DB9l62>^6Q5FhZQF4BQJ6@>D<T31C]K09J`?734S615AIU0T1<imE<SWR@dRUJ\P@;05X2>B6168M^mb03Y30353?N4MP`0?\d4B3AD8XFK0@KHn[55<DfFUCcEB^EYZ=:9cKBjKTDJKD=4<:mGkB7ULDHRCb7En57eNZ1Y]boB]]07M]YVWJ>Xe42cI==`=_nc_J=b34=?G8e`^md4miTXjafU;@8QM_g:CSGPQcUoUF6[JR9fWV0WPaTUJk<>RWSC6>RBfEmBMWgQLLH1goHL[MbGblnaIb`V9Z^kZoAMdH\J@gaBVCh9HKj9EA][aYNR<71dCbRC\jA6Y\\CYR\0`AOOo`j3153]?8M;V@kgA_W_4Id\K0gjRHELo]U6?WN0?<?0lh:TZ\>e^]U1gFN?Z12=3NoQZfLdR[_XH6OT>ao_oWlB_YS80\8H;B]^@=GVIe]CJAT2[1Ia<ZJC\Vam5?>n7Xg<cU4SVlTO>V[R2JK8eJ5JQ4^5W3M9fBI8BKU15e>e[Rd[>EefSJh<D4hBMS9ITlOCRKWKneAKJW5HVOh\9k`An<LAVL9Sd0`=?k]RJFW05OlPLi<PLkOO=GBBfe:L\^[6_:FQ>o0b_mGKc`=hK@S;W^NaU25LJQceEhRe8a3=g4mSJR6`alLVPjLi:lf2LiH6Of:nMebS\XbS30kTMiN<kifFYDF6NKPM\^;Nbi@3Vg0<Z7FH]=JXKMg=d>nlYMSBbOA0Vo0:5Kj1M<5I^=a\lT\R<68>hl^6jPR0aKc1Ti[03chGfeGcW;`S`>IT;:Y]aYW^>W_U71>;9X1i49VFX5EX_A28Zb>1neB\LN]iS4eMS<I5DD4aDWHOMFC0UDe8AScRbh\U?C1F>BWLed>E7>FTeea_\CSn]f@Uk47FZcB9?lP;6K[dQ2@g_>iWln0]VgZ3EZ9^8XC<H4bINM1G674BQDhal5d3ZV?Y_G13JNIe:8<_amhhdX54^EeD6RY]l4cMl_g\S6DW9aD>2]i2jSA4H[`4Jcb527edeiZ?W2A<>Ga19FDFho7_X>Z`d[jcLDQ74ILbXa;I0\S5UWY4:h>UWNbm:HQ8[`[b81LU:@>ZH49hR6_H3V<IU0o6ITFF^_\3X:<@4`N\`Yj1M5HeWd]G5`<jE899FP`?^N:fQgE1Dk:D\aYdb2GEb1;1X:NC;SonLVh<RR_?9g39h4nF:`2OG:IUjHE;D5i@=fc^TlT`KH6AkHj2KHBcM;cR];iG[FDI?aYg1]o`S93Wkd90SN6mH?:X_KEDcGL\O:jaBH@Xf]hV]GB25:<eR<`F34Inb29Hd;nSU<T4KRn]TK[9ZT6>oOVJVKg8a6<7lTOF_C\S0RY75kRQ32<LFcCSB_30?Xj<QBJ2POJbR:8VeFb33;M2\FOBCT:>MD:bZC=le^0T:MSHbY_g^c=5SbDi5Dha@j]TPDcb@\Xg1b\\[Z0;WThc5HD44afmYhbi`95?K57k1SZEJHF=2E<N7Vi[L\8hT@dHFo]U`[hc386_2:2:FUUm6Vb>FU?VN>OGHk>gJcFYN[mNX]iJJnehW\mLW]iM[?IGk^MkfLHHT[G3343bMg^>W``9l3kiB7A7D6bF_UCHIO=2Cg53@9Rc3hi:lNY;7<TgHN<WKLmM;GMK6A6iADBL\5Qh;2PoOiPZ9mdmEIDGn7;aTNi`anF[NL2:XIPZ?JK[W2c0KU5<f[d_L?[SCYAZMfV>Fc0G2QAa\LH^E0omB0f<;kR>1Im9Al:F@;^O:FJeU?m]DPloLkmg]Igoen9_;5[^O3g47W79OBCbkX1JmDPBFAQG4OG7e_DI_R?aIQRilEm[N0Qdl9^Gl[HojfnUgjkoHkOd\35K=4hiV^jOK;\J?9^CBRkET1Ia<nIT`Q_Fk;oZfGmnI[gK01\EU_FiKnXJ]cG_mI;iNdDGFoloH;NWbLkLT1G?E;j`6N_l8_OX`Q[8KjbW<DHQW;\9l[I<l;nMM`5;6c\`C5fWJUS2;fnA@[[WSIBGBFKB\d;6ZRSBIfJk5coijSIlfY2gkd1^jS0bfA3GBfkY81mf40g<RfAV36QP76nWmm4XPYcJW__W_EfU_mmWmm4f0Z1Mm4PXm?Hn8>=`Jg<`\K6BjCNeTZ8jk61Nm30gRUO9``_<HHg<<\K16=H`Jg<`\K6eiRVbO``@_H`LL\K<6f=131ijk61Mm30SSW]2K6e9n`_<HHg3<fbGaQO<`@<fh;Romf>IK=];4mm7;kW[]mc]FV[k_l=L8HkN_]MVgEYAVXJNkW]Kl^C_KYnW2gN`Jg<8f\m_W;?gJcF[Ncf[LeWjZEfjfLemWbLM[?Y9fFmg30nie6mg3P3UnQ@kGM?hl61`cKGl?NU6XYT3Jj1oSC7cVRG[j]dl[lR[OM^mQ>fj_0ofQWg\gCk:hXJ>\G;91jgA`MN6jg_O63G2GoojhSNLBll@meZenleTbeaXLDI`S7WMJDBRNnUKon2To_;kQ;40OWWakmAfZ17@;]CVhfZ6e;I]\Y;]^B\2JNWl@EDkjHED]8G^SKJGg9M]64UVIhV`0kFZjnXDXH9Ul?3UgC<4E`da=l<6aYaK?YSB<ZlK8AkLXPga:L6Y9WXb^R2:;XfCCXg46QgO@OonCH=04lnD]G?@JU0oW>8R[cd5WUn`LZ>_L4H7acI]<]SYiCVhXMecP^ab7Tf\<L36cdmoD7?>U>FXnG58NQBfkE`>Y>ZXN^;LUDk^0CT`]]YcV503o2<9aY76Tb5=h;3n^l@:GRZDEmb3L5gfdJN1W`6BW[e?h^3c8;Ra49LI4N1mJ[eggX[Z3_>dlAYG>9Z6_5Y;N9:JKMj\\PGlZ_]c?=ijghHj7ShHgS81:4l6e:@H9?fVLKl1HUZ_]lAVXFA9Fn7MAT=5;K^Zogo_cK[i2_=nA]TP;mBRd`7<hB03KIPP<4@1S]dRAN`H88YNB19dT8R5F4TR2OBI17TQXQM`0@hDI3`6Q=4V@\n>BS2adP1EBgN384B`20Yo8b87OC@V?PHD0@OHMD?:H@1S`mjQ`N5Ac0PPN6h6N1cL8@k<60MV9N3H`M6B8M1alBlA>cXZ>D798@S^25ARdC<l0A7jO0n2M<i7a3KT00K?i6644NS]O:0H@=6TN66Bf@P@Xd06db:7L\60@aSOJ[51hI3Z8<02`0<oA7478XbA8H=:@<lKI5@7GMDX;JdU?eY40c1@J30Sgd1Pe0L2Pd;9>@5T9QAd1G<P@[2QA5h2ECX6:0A<=\KDRC<@QYP<R5DV<R6H31Q3XJX8C9ae3Q>\dQVNRO4RI1d`aURBZLZa44@0RPXZ2AX2ATeE@ng_kKIm_a>JNN^[m`11HCMJh9B0n?ZHY0WlAR2UR8F93@XnaF1T=XSC6TS>409GP?`XgUG593Ja2`2\GAW^]GYS5AG;niZ^AM_Y;5<kgkKTM]Bj[13:Gm3_mNfFfMhbbcJU]AT<>?_F48j:Z2P>Ia6U[FT4F:]kl=1GA=P\DVJ6>X23kPjb7bQY`[XmW0\B3<V6=\:@]HOQl4Sm60aJ;mC]F:3_FRcUE67>[UW8ZU7:ZKLYUD\UPX_YFE2X37WLUWVI=><HZLQRBLD0dhS19OC51?62JN:K\`U0Sk:\iJYN8Y]YeVW0OKL6eCM@hdnm\H8<6YAM7Y]JeZ3]=6W7JE78IEW=I=_AcFY5LhdKAb5?XJQbEn[eHdKQIC3fo`RfF6ld`8R^hCX8h8X8n380454H8B61PB[VDHS`4JUH<neI:\AHR=BI[DHWST3a0XAa0Qh`nd8TRoaVjU>h9@S?2Yl0eRI`dII0f728n8>7;UaSh0iElD:aG\RKN\=a;jTDDiT8fNGMImQPJoJZlSBdF]DoLcWUB4mJFe6[dOb`>YCd4PEDAD_7mFNbIAL>e79ib>:2a]E:jToCY]8<CFV:4``\X1a4BL<9?9ATRQ4bcK7^1A4RoX@7_2@S;hfe90M;0D;D:]?I]5@0Y`>NV=LF5`I12YCFYTFU@?fTdVb2IPfC6dDjZ8JDdcRH`M5G>T<GanOc7Di>RB;N\?RfRHVNCC<iFi=m5XF^\e24nQ>92Ek6Zo6DkK3T\@]k3oE3]7U[1>_9i:SOW6i2cVWPPYB;ZgJ[4\8RQn>OVYRYDj=Z[il5eB\n^0;\bSlH=5_89`iB<\PcaUGU2H0GYX[niB]TXVZ7O]NY<2T8??Vf`fh[B1:b1f5U2`FiZPQ4EDe1H=4YRWkl?TL\11=nkR:aDYmJVchZJXT`cne^;T9K\YD6<S;meKT:^JVWW7o4?RGhQ2
@@ -4557,6 +4557,9 @@
<_NAME_IN_ATTRIBUTE_ name='' classname='Obj'>
+
+
+
@@ -4587,6 +4590,9 @@
+
+
+
pin_names
@@ -4617,6 +4623,9 @@
+
+
+
voltage_level
@@ -4647,6 +4656,9 @@
+
+
+
voltage_level_range
@@ -4677,6 +4689,9 @@
+
+
+
current_limit
@@ -4707,6 +4722,9 @@
+
+
+
current_limit_range
@@ -4737,6 +4755,9 @@
+
+
+
source_delay
@@ -4767,6 +4788,9 @@
+
+
+
measurement_sites
@@ -4797,6 +4821,9 @@
+
+
+
measurement_pin_names
@@ -4827,6 +4854,9 @@
+
+
+
voltage_measurements
@@ -4857,6 +4887,9 @@
+
+
+
current_measurements
@@ -4887,6 +4920,9 @@
+
+
+
in_compliance
@@ -4959,7 +4995,7 @@
true
- teststand_fixture.py
+ teststand_pin_map.py
1
@@ -5452,7 +5488,7 @@
true
- teststand_fixture.py
+ teststand_nidcpower.py
1
@@ -6196,7 +6232,7 @@
true
- teststand_fixture.py
+ teststand_nidcpower.py
1
diff --git a/examples/nidcpower_source_dc_voltage/_nidcpower_helpers.py b/examples/nidcpower_source_dc_voltage/_nidcpower_helpers.py
index 98ea5a029..f5513ba8d 100644
--- a/examples/nidcpower_source_dc_voltage/_nidcpower_helpers.py
+++ b/examples/nidcpower_source_dc_voltage/_nidcpower_helpers.py
@@ -5,17 +5,17 @@
import grpc
import ni_measurementlink_service as nims
import nidcpower
-from _constants import USE_SIMULATION
def create_session(
session_info: nims.session_management.SessionInformation,
+ use_simulation: bool,
session_grpc_channel: Optional[grpc.Channel] = None,
initialization_behavior: nidcpower.SessionInitializationBehavior = nidcpower.SessionInitializationBehavior.AUTO,
) -> nidcpower.Session:
"""Create driver session based on reserved session and grpc channel."""
options: Dict[str, Any] = {}
- if USE_SIMULATION:
+ if use_simulation:
options["simulate"] = True
options["driver_setup"] = {"Model": "4141"}
diff --git a/examples/nidcpower_source_dc_voltage/teststand_fixture.py b/examples/nidcpower_source_dc_voltage/teststand_nidcpower.py
similarity index 71%
rename from examples/nidcpower_source_dc_voltage/teststand_fixture.py
rename to examples/nidcpower_source_dc_voltage/teststand_nidcpower.py
index 13bfb5fcb..24bf71ed2 100644
--- a/examples/nidcpower_source_dc_voltage/teststand_fixture.py
+++ b/examples/nidcpower_source_dc_voltage/teststand_nidcpower.py
@@ -3,39 +3,16 @@
import ni_measurementlink_service as nims
import nidcpower
-from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+from _constants import USE_SIMULATION
+from _helpers import GrpcChannelPoolHelper, TestStandSupport
from _nidcpower_helpers import create_session
-def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
- """Update registered pin map contents.
-
- Create and register a pin map if a pin map resource for the specified pin map id is not found.
-
- Args:
- pin_map_path:
- An absolute or relative path to the pin map file.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
- (Dynamically typed.)
- """
- teststand_support = TestStandSupport(sequence_context)
- pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
-
- with GrpcChannelPoolHelper() as grpc_channel_pool:
- pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
- pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
-
- teststand_support.set_active_pin_map_id(pin_map_id)
- return pin_map_id
-
-
def create_nidcpower_sessions(sequence_context: Any) -> None:
"""Create and register all NI-DCPower sessions.
Args:
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
with GrpcChannelPoolHelper() as grpc_channel_pool:
@@ -57,6 +34,7 @@ def create_nidcpower_sessions(sequence_context: Any) -> None:
# Leave session open
_ = create_session(
session_info,
+ USE_SIMULATION,
grpc_device_channel,
initialization_behavior=nidcpower.SessionInitializationBehavior.INITIALIZE_SERVER_SESSION,
)
@@ -80,6 +58,7 @@ def destroy_nidcpower_sessions() -> None:
for session_info in reservation.session_info:
session = create_session(
session_info,
+ USE_SIMULATION,
grpc_device_channel,
initialization_behavior=nidcpower.SessionInitializationBehavior.ATTACH_TO_SERVER_SESSION,
)
diff --git a/examples/nidcpower_source_dc_voltage/teststand_pin_map.py b/examples/nidcpower_source_dc_voltage/teststand_pin_map.py
new file mode 100644
index 000000000..223741401
--- /dev/null
+++ b/examples/nidcpower_source_dc_voltage/teststand_pin_map.py
@@ -0,0 +1,25 @@
+"""TestStand code module for setting up pin maps with MeasurementLink."""
+from typing import Any
+
+from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+
+
+def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
+ """Update registered pin map contents.
+
+ Create and register a pin map if a pin map resource for the specified pin map id is not found.
+
+ Args:
+ pin_map_path: An absolute or relative path to the pin map file.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
+ teststand_support = TestStandSupport(sequence_context)
+ pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
+
+ with GrpcChannelPoolHelper() as grpc_channel_pool:
+ pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
+ pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
+
+ teststand_support.set_active_pin_map_id(pin_map_id)
+ return pin_map_id
diff --git a/examples/nidigital_spi/NIDigitalSPI.seq b/examples/nidigital_spi/NIDigitalSPI.seq
index 43b974845..c3ba8c2e9 100644
--- a/examples/nidigital_spi/NIDigitalSPI.seq
+++ b/examples/nidigital_spi/NIDigitalSPI.seq
@@ -1668,8 +1668,8 @@
- E@=3DJC4100hYLECF=_K@0@mKCYo_1KN:<Ta239hF9[gHbEVFDfRINZfQ01CkaUMk5=k`[c;[42MMF9aiNliecVfMFCLXi_`f2H7c\G\X50M=Z4S4aT2QI>A^D:d1\PCI`L11RlV5bM5AIZTc9STI5Mkg<bHlle[O=CL_KEgb?8RiVHS7QmPY@S4X^7I58A@kPaKcPWCOC1;DBf61lViY=]`28BC\B_mEf20ZJS@W@GDDRffLe\Ci;aKbN>i5P_4ScVVBTjIIfn0j8l<e6IcMbZHgCI;n8CRlR7<YcK0@cY[8aDHj=GGkNK;C?KC?b=]mMejoc1gGol1>hL6lf5fZ92?Ia@l1;QL024f^NSm2MhNlcFg_YR[l5kclo:einXehbR>98[4?GC:CX[3hm\UMob2aIMT0eJmgI@\;njRK9]fIl_8f=d]n4bQcRXDEl<o=@Yiik\3Md@?k1=0Joj>?Je`<RUd<JYmeOnOgB3G@Ub\FoGFgIQmQli8nGH=QjKD9i`2nf41XEKj;oDB8iZU`@XP^KWoAKEbOf:ViVAl=_I37KJSec7Ea\nJ5]NZj\OnJF;ASQemRIDbbdglb\U>H[O^bDHO?XMLaOoeVCf=a^CC`d8^TX2B
- E@=3@J\4110h]L]Mg[cK3fBoj\Kifo1C[KY_3VgFm3_6n>DfdTDgjaSF_LdVUJaY::FII@T:GB9LaYOo80OP^053LBBVb1G?:50k4;P1c\^`03ffoj9S72=AOm;a2oh?Na\lC7TUOXcNfaSdfIbVCC_ao20aN9bmo_<R_S=>KV;lhbmh89SY[:2UflXcmGIlnngoE]\\ad_6_gW8X9GAXJSPJYin>C71=c74a79JN<`GPK]_\>2`h9IOC]VA5BU4AMW1Qc`j?lJ\aR4__>R4SI_`[_mmnM33ONg`3P[g4N5aSF;ce]^eVffg6>cIRLhI]7CjE^W[jW`kZkGEWHk1=RR;gTe:O[H;k[bAd7UCaTVXgjlho3Af>?oIJdjMo>3=o;aTo\ZZnG9_cgcO7mjV^k>\:gkoOkSn1jkfm@MgLnb<Amg;\Nmj8klk3llhhnW>nn^GCW_fW_>ji]:Va>TNnNQdK5LolNX?M@\6jN2ddlIHh=MT1E^[o4Q7I54R=RlVg[S\KmOe9GM:Qeh9OnUhWTeC^ZM7SAGP1V=LZ4[i\cOmoH[RS6YBL2L\PAg][JQ<Eo?8;D9Mk3M]>N^6>HgJ]KP^a>cfBkkmZ33RdU`]jB_NIOShWL4oDlbn3lNOCL??R7GCmKaTDhekoi_En`9oJKe<e1`lBjmjXJ<^4_^_^>?7O?nEE_WTY:VYEc]3^eJm^cdC7;LcK_]Ei>b<^`9HR6YcO>l@Amg>PLXQbSb^=?FXRUZd<[n<SGjgCQ`mhTl;7NUbgaRQBkXNY4iX5iAJX6C`gdG[d3d>`Uj3DPMF7h71WBBLLR>Tk9dZlFCYSi__fNBBT`C;A>jeP2CdONN52i5^eBEIEI=8EMHBBe^G^1ohD6>LRiJgM\IPYE8Wn`T9W@jf8iEfN:@L3<Ha_l0CCE<HOJjXBRll_NLReo_^K7CQWihL<B1::YXdSaG<XFnCP94dQXb;^6V07F>TkPem>4QI;?9JkF`g80:`G?AULFSY^XW;4XL^_D=GZV9VVODS^[=]dL]b=N;O[ib6]2aLATM7\AcX=JH<\1j8_?I9_VUO]5;PKjdi^o>Kn=FbmhAmF3EXh?dAPF?cWPU;NHFT9YBblF15fj0n]RK9>d;@lD9HXLGTZOAa;gEd6:MElAPOkOoMom`hnaYko^ne_;PeC\`kMYOoCalP3DR_^NADNSV6R1Nk4f?=Lo;VQ>7>fR@=2j8C:;D@3fk>^=YHE^PQ1fU>TFoNH>GnfRGNMNW`[okK`S56RJfM4Zmo^6E9ZYc>FNEO3PO=T9eK0:bgljYdR7WooKS9eTjd@bcImNVZ8UXa:AC_F_WCj]4\6ST<:ie_AbZFIL7UmlIne:BcTQ5T2U]O2goYWXRN5F8oeQT^`HXPD=2LV[h;ibbNNj1kU]lXlnX4ACO5aRA@TfHY77@P?L=_N@4^cJG;Wi2@3M5OQ:^@>2K9_9W:4Vn1LGaRN@WL9AFFVg1oYHdi`54XIa5G[\i>iPT4506XA7h2^c_T`3d[ARdFICaAS2RM:1KgT7B>MhXVaI<kA^@CX2aS^I:B>=W<U?l<DWU<Jd7^cKe2R]EdIBcBQZni_K1JPCEhV>VH]FBZ<5413k[U]MAFA`Ohma2g2NoU0@E;FI93Yi;RjnlScC;`glEaH^X@K[NY9Y1EUZc6V6\3?FKC0APU0^[aP:_GMI=eeWnJ<6e2]@;AXaAE<S[lhAb`XFjPP@dTXNYS=<568je\`W3?@gn9HDaM84^>SDl0<Ba6YNKCeYZ\CUU?WGnR4=m^aN[KTlFG\?VZ[MC:3HfflAagl\jZUG@ScZW:2K\FU9TQa<h;?iYb<RJI66IEg<WHgdkU:\KFIZG\BDU=9W>:\:W7nM3NIjXT;2YV[@dDaY3bhOQY^af<UVo:ZV^^@0d_M5ObRQ2PIHZ9bbbGm;4Z\KEfEYI=M];D@9j1kZ@2@FIkf9:\CYe5KnKANXH7R@eMc2M;Pl]PZG]@4h2Q7OY:=QFh@\Y6]E6X1bL6mjS76a`JS=H=XQReG6Djb7[c<h@S5UCX4`ABLQ4:ZZ7=JF9JejC5\[T:meE5_[:`Qm=DfI0EDQLRH6o]LAPRXlbTgXSbnW7ZTN?N]lH02JKm;Z4hn<A[89:C8lM5hC]Ab^\\WNK7JGS]XainLm:PWFF3EmC15\]YC\D;I6a<NiIhd2GMIG`A9\[]T00fP:UXIXSHk2jI>XFG>I521bbKDA`Xb]h>oAl>IolbRB7j=i9_H89<FR=U572U\LjNhnkeeemHDJJ\GHX\;J51M<?QV2DneREAR3in6<M75M_Re=Ci3gEOQ2VO`4P8_hfhSO\dZ7m]n\hlV6gSlSC@PoZSe8WUaY3d0_;Z=9H:I6Gf2PVG`mf8CC87@DBlT62^h6QFFhZF64BJ46@Dh<T1=C]0_9J?073S@61ADIUT31<mVE<W?R@RBUJP`@;50X2Bh618KM^bf033T033D?NM@P`?0\dBA3A8AXF0]@KnP[5<EDfUICcBF^EZT=:cWKBKYTDKXD=<A:mkNB7LFDHC9b7nG57NFZ1]Ubo]8]0MN]YWJJ>eS42I?===3_n_?J=384=Go8e^0mdmBiTjRaf;F@8M4_gCZSGQ3cUUnF6J_R9WJV0PNaTJDk<RiWS6=>Rf9EmM:WgL4LHg5oH[aMbbOlnI6b`9KZ^Z]oAdeH\@YgaV8ChHTKjEVA]a^YN<;71CAbR\<jAYI\\Y<R\`1AOol`j1>53?d8MV_@kAN_W4nIdKc0gRYHEo`]U?HWN?0<?l2h:ZC\>^D]Ug4FNZl123fNoZ7fLRB[_HR6O>BaoomWl_8YS0Q\8;RB]@j=GIIe]J<AT[;1I<5ZJ\?Va5g?>7hXgcbU4V=lT>nV[28JKeQJ5QX4^WD3MfTBIBPKU57e>[FRd>_EeSHJhDa4hM9S9TUlOR=KWn]eAJ]W5VROh9ak`n5<LV6L9d<0`?fk]J8FW52OlL2i<L1kO=mGBf9e:\`^[_J:F>7o0_9mGc_`=KP@SW_^NU525JcQcEGhR8Da3gf4mJ?R6a2lLPKjL:TlfL8iHOKf:Mjeb\>Xb3>0kM@iNkaifYHDFNIKP\e^;bhg@V<g0Za7F]R=JKPMgdg>nYaMSb8MAV0o05XKjM5<5^V=albT\<868hhl^jHPRa0KcT4i[31chfOeGW>;``>>I;B:YafYW>jW_7D1>9_X14U9VXJ5E_PA2ZPb>n6eBLcN]SU4eSd<IDGD4D5WHMlFCU0DeARScb:h\?EC1>IBWead>7F>FeBea\oCS]jf@kE47ZHcB?TlP6_K[QC2@_N>ilNn0VdgZE>Z98hXCHa4bNUM16M74Q;DhldmcZ>V?_TG1J?NI:F8<aomhdPX5^AEe6BRYle4clf_gSb6D9LaD2h]ij8SAH@[`J@cb2G7ee@iZWl2A>`Ga95FDhJo7Xo>Zd3[jL<DQ4OILX9a;0T\SUDWY:Bh>WGNb:dHQ[S`[8:1L:F@>H[49RQ6_3QV<UT0oIITF^H_\X=:<42`N``YjM75HWEd]5O`<EX89FTP`^oN:QHgED5k:\CaYbA2GbD1;X5:N;?SoLhVhR`R_9lg3hU4n:I`2Gn:IjDHED]5i=2fcTklTK1H6k4HjK;HBM>;c]9;i[MFD?WaY1O]oS293kLd9S3N6He?:_QKEcBGLOc:jB6H@fR]h]HGB5;:<RE<`3K4Ibi29dR;nU<<TKBRnTdK[ZTT6oiOVVXKgaP6<lMTO_JC\0<RY5NkR352<FbcCB<_3?0XjQ`BJP;OJR::8eHFb3<;M\9FOC8T:MkD:Z;C=eb^0:AMSbSY_^Lc=SGbD5WDh@6j]PCDc@;\X1Nb\[`Z0W_Th5<HD4CafYghb`T95Ko571]SZJDHF2eE<7jViL_\8TQ@dFRo]`G[h3>862l:2F[UU6dVbFjU?NI>OHOk>JNcFNU[mXi]iJ[neWQ\mWa]i[e?IkO^Mf]LHTP[G3?43M8g^Wh``lW3kBT7ADM6b_IUCIPO=C8g5@?9R3<hilXNY7_<THNN<KMLm;eGM6_A6AUDB\c5Q;S2POniP9[mdEeIDnO7;T7Nia2nFN\L2XZIP?ZJKW\2cK0U5fb[dLn?[C>YAMXfVFic02OQA\6LHEk0oBd0f;`kR1hImAUl:@I;^:oFJUF?mDgPlLokm]OIgenn9;n5[Oh3g7@W7OWBCk9X1mYDPF9AQ4LOGeM_D_WR?I7QRlVEmN_0QlA9^lO[HjnfngGjkHokO\A35=_4hVU^jKm;\?Y9^B=RkTG1I<6nI`AQ_kJ;of[GmIi[g0]1\UG_FKUnX]ZcGmoI;NUdDFOolHn;NbMLkT`1GEo;j63N_8b_O`PQ[KRjb<NDHW4;\lT[Ila;nMd`56_c\C25fJLUS;9fn@6[[SMIBBMFK\8d;ZIRSI;fJ5_cojWSIfcY2kNd1jkS0f9A3BNfk8W1m4H0gRbfA3J6Q726nmNm4PQYcWZ___NEf_FmmmOm40IZ1mf4PmS?H8k>=J3g<\1K6j;CNTGZ8kY61mk30RLUO`T`_H`Hg<`\K67=HJ3g<\3K6iGRVO9``_1H`L`\K6`f=371ikY61mf30S<W]K86enT`_H`Hg<=fbaLQO`c@<hK;Rmmf>KT=]4\mm;NkW]^mcFgV[_]l=8aHk_j]MgIEYV5XJkiW]l^^CKnYn2OgNJ0g<fR\mWo;?JNcFN^cfL_eWZ[Eff[LeWebL[d?YfWFm3O0neW6m3NP3nGQ@G_M?lS61c3KG?`NUXHYTJ?j1SoC7V>RGj_]d[blRO_M^Qg>f_[0oQJWgg`CkhXXJ\hG;1Ujg`4MNjIg_6l3GG;oohYSNBallm3eZnFmebBeaLSDIS17WJfDBN9nUo^n2oC_;Q\;4O3WWk7mAZI17;2]ChHfZeJ;I\fY;^dB\J;NW@cEDj]HE]B8GSiKJgN9M6f4UIKhV02kFjYnXXBH9lF?3gDC<EC`d=4l<aIYa?]YS<9Zl8]AkXcPg:6L69WWX^8R2;YXfC<Xg6AQg@oOoChH=41ln]AG?J3U0Wn>8[8cdWGUnL2Z>Ll4HaNcI<f]SiWCVXSMeP?^a7:Tf<`L3cKdmDl7?Uj>FnPG5NSQBkHE`Yj>ZNQ^;UbDk0kCT]3]YV<50o<2<aTY7THb5hg;3^hl@GYRZE@mbL?5gdHJNW5`6W8[eho^38?;R459L4WN1Jg[egNX[3[_>lAAY>L9Z_H5YN]9:KZMj\cPGZco]??=ig[hH7YShgPS8:44leI:@9R?fLHKlH6UZ]nlAXHFAFUn7AdT=;FK^oZgocoK[2W_=Aj]T;2mBd8`7h`B0K>IP<04@S6]dA9N`8Q8YBk19T@8RFF4T29OB1V7TX7QM01@hI@3`QJ=4@H\nBkS2d5P1BDgN8?4B230Y8lb8ONC@?IPH0A@OMPD?HZ@1`>mj`5N5c60PN06hNI1c8`@k6b0M9IN3`QM68;M1l5Bl>6cX>XD78V@S2j5Ad;C<0cA7OX0nM8<iaN3K0@0Kil664BNSOe:0@R=6NA66f9@PX0d0dHb:LL\6@1aSJl[5h6I38X<0`;0<Al748MXb84H=@Y<lI\5@GNMD;RJd?DeY0Ac1J230g>d1e00LP8d;>V@59CQA1BG<@2[2A45hE8CX:H0A=a\KRAC<Q0YPRb5D<IR63P1QX<JXCS9a3FQ>daQVRjO4I;1da1URZ;LZ444@R2PX2XAXA9Te@FngkoKI_ea>NZN^m\`1H5CMhX9Bn1?ZYS0WAbR2RD8F3W@XajF1=AXS6<TS4i09PN?`gPUG9G3J26`2GbAW]jGY5<AGn^iZAjM_;W5<g^kKMC]B[X13GZm3mmNffKMhb:cJ]DAT>a?_4H8jZX2PIja6[DFTFC:]l]=1AN=PD`VJ>HX2k?Pj7:bQ`W[XWe0\38<V=I\:]2HOl74S6e0a;ZmCFf:3FnRcED67[hUWZPU7ZZKLUVD\PFX_FVE23Q7WUaWV=U><ZRLQB8LDd0hS94OC1D?6J9N:\\`US2k:iaJY8jY]eTVWO0KLeICMh3dn\dH86aYA7eY]eZZ3=d6WJLE7IPEWIe=_c4FYLEhdA\b5XoJQE;n[HFdKI7C3oK`RFK6l`B8RhhCXhP8XnP3841548PB6P6B[DKHS41JU<Qne:U\ARQ=B[VDHSOT307XA07Qhn2d8RBoajKU>9P@S2lYle3RId0IIf072nP8>;NUah=0ilGD:G5\RN_\=;5jTD@iTfQNGIfmQJ2oJl[SBFC]DLncWBE4mFZe6d_Ob>3YC4APEA@D_mOFNI8ALek79bT>:a8]EjYToY<]8C`FV4Z``X`1aB@L<?V9ARCQ4c:K71jA4o8X@_N2@;?hf9D0M0]D;:A]?]T5@Y1`>Vi=L5H`I25YCYJTF@F?fd@VbI9Pf6?dDZY8JdAcR`QM5>MT<aOnO7<DiRiB;\k?RRIHVCkC<FWi=5fXF\he2n@Q>2TEkZIo6kBK3\C@]3\oE]=7UY8knVi7O5=^_a6d;G^?DaLI=YY]ARAc7NRDMhAYZlK90=KQlem6G@;;lecBDFecfKNA=H>mJl3I59=NFgn`nf[B1:05f5E[`fiTPQ4EDe1H=4ZRWkf3TWlOP>Ela5hZDn]cQJC=UBXIIJdWiR@KZe]DHRbmfI;]VYoi>o?3K1h=6
+ E@=3HJL4100hYLEDF=_K@0@mKCYo_1KN2<dfASB`]CF^aUXa]Y\4WmD]203VfR;kS;KgdGgF285WU]RaSJgcjNlM7MFC4LiX=a48\7dW:L403mZ4BUAT82I>KQH8\T8QFE`DA2\LAVbMD5YRMT13fTiE^i<boIle7[=C_LeZbKM2QXhVTH;?4hTX]A[17:2T;Dh\^Co3kY9PA5QK23^C]l262h09La1?5^k3J0BQZ@@EeDRZTO=\cKd?XKjmGb1N\X<J[IS9OXJj22Qc=R\WEEn\IKCaHCAUNi97;EVjaJCX4>UU36B3oib::mkjjIJFOY^^C_gK;?Ngamc6b1^HOM^Rl@oHoiaG802US0o36;lHiif[]oe<FRliGlo^CMk69OeFDNDnIQUXNS=iA3JmW<KbcFOCL6bWF;DdY7d2\SSH4mB7[^9gAb5EgM5G;l^DR5mXURj<_=4b_aTDS965fd7ACLdkeA7kamDL>;lWi[PA07_B@>cR[mGK`_XMGdK4NmjkVR8?micjQcMS=oX^9@cW^5\93S[[2ZkFbBiZ=Q@AM0FkKdo:gUd<lVVcfi>bV3>kl[1UR_FW>JkW]_EREPX34oO2LYb;J>k9nWLWBEg6Tk>koggGTQ>kL6kJL@dKQ2_E0Z
+ E@=3HJ;4110h]L]MDk_K3gBocK7LAg@bF0m7:L\7hO=LkDfTKD7hEA;>Hjh6e^j5j;K\OfEM@EBGmm`7i^C;MbhH6YYC0@12_;T><<9Q3icT_?LHbXW?1;d5cg]7loPlk6ac:NAD]S=kk7?ANV;IK>m43;37?W9gRnc;P?fkSK]bo;gR:T<V2X:FkcS=GNWcoiOoZfaahAoHhMNS5WN6JX>2_TUj@>L7`>LC1MWX=a1OJ^fl3h:35TWnYdI4H;DAHeM4o=2XfaXcR;Cl8i:CKWn0\of>Vggk[7M>GnF^9m:R3\GVoKMZM\]^Be;QRLhIT7CjSKDH?i\^d^TUfVN`\8ZU=jTOYFKGYaGGJVS?c;V8O=@dni`7\S]OcncYBdkMZ7KGoS9InEE_WCO_IWnkmd<gUMI_Gfogm6meNf\P_k_lcTIjH^FlekefEhghOh`mC?MlcM_?MN\O_MdK>E=LJ9llf3Y;>hombAOPjH=l75YjRc`J4k9ZNLF:j3?;=854oh=Fo7Hk<n[`9jEZKbBlm:a9icVEPk?S=_0]8Jh8EGcWVok`oGM3jmAWY5hI5R_J6d3IjoN@2XBkS7kK[m3=JF<ke==`<oWIZkmMmN11fAbh=FYGi?_A6l>R@oni2ON?J_^7nW3;m9]h:blj_MlgOZhTiO]Jd6Ph8nmNEM=6RGGg?G7Wc3WohZgc7b5CZdifWQJ]gNIjb95^kigFEZWI=VHTN<3DAIWnhXnK6W>DX@1IeG7[TdBEaJEoV6;Mbk`HGnbN85?bfiha``mDM?2LXdLX=]39>Hj[deQjV9bM81`^:;LSDP9YA^aYUBTJOe[Y^DLGDg_YN9HY25WM<j193J__hRL2NGYZX\\VPT^\RYjGm;0o@LSWV>L=IKf^W`:47chbD48mikL:1KUXB>6<GhNP`YZ6A\]m@daNEN?^laOg[gS9d`LlI^9PQ5DDlJH;GV;OT9426JDI5U3c@0;WOb`RKn2`i<74G][HAk05ZHWXKb[a?DDc@5D^?G:VM[C4fC?ZoAEVLF^f;I?UU_LIMS1h:^b>]S8i1D=\UV0m_47\OTCbm_2U3`mJglOWe=V[OIlXXnQZgDWJ>8;7>I@bAU\[aBD9?i[P42mPOOA]9TJUM8ZT=<>;_B?8iHK:Jj5^g:X`_?_Oe^nholhdGMgogj5`BjfHkmd_PohNB`:AMg?Xa:acf30?JMKWY6oU<C736WaXB6M4a95:H8KMmWFdB<g`8`KB<W;o9?W;<Oa[I?_c_hOMl]a263=KJ>En?O3Zm4DIJ7_ZJ?@?nV4j2=5I=Kmd^J3CoO]aDTbm:jiI5<_cSeBD[H89jGgce9f2`FAbk6LJ@GiE;[^3=bn\6oUY\i@RZBBFj?KODDDaB_;TTo`b4o\DP@VQVNElI5iI;_mPdMFn5dodZ2Y?<Ra86XK\PD3XK`>VAgXRNG];dULQjX>2D_5G;X1]m44cBUCoY0[h9AXca>8;^[KPGO<JTlR2[Dh2=[FLEW`B0R0SPdSL]QIgfBQJ0EaJ[[YH6X1Ak^0=dK3Y17ldVc\62mg8?Y1HUA<Ui96cd67nXVcb96j3lG]JlQF:IJYI6YEO]l=Pl]9:4L7cE<;YSe2RZ0MEmb>X8[h?WlhQ:k?OJB8:Z5\Tm1L57aoNlAY5NhnZAhgDS8e?kdD0<ZEi6S3fK1;]bY8@:BGE>H5G[;\VTjco9]3j?18U_XH8Y:AeUNXI5H;M4@8J?B@D9A6R9SMJ^Fc1R7kO;4ZH1>2G47:NIP9h?3?=TYdeZfbBdW;oha6n>G`E6]N[U;7c]E>9@U@KokXh5KfmVE;X<aeC`U=Ff;4b6`VLYULdCiA]:<3\L:VcN\jmIbF=I;e;:fZBa6C7?U5c]3^QA?mD9b1DEc8JlZd1_i_@UDHkL6Co5UCGBGPJYGR_Ti@1C@\E6TiIe;UR]e=ZZKd\YVfURZTM50e8JQ[<TMTUjFdJKRo=CXd\N38JN>Q>LUNF]@;FB8LQX@?daU@[8lfDU3:S0dI>?SmaPSHhf=6<gV@A0JSZnmSECILXXABY8dHXQ9`R?5E3I6[4N=mYUREb_5jZUREUlhN6VZ\P`:`^;ASOQFX`5ANI<BdamicSLE?W5?N\:P==ANE2OlVXcE45;9N>_2YF48gFNF?]kS[AmFHLQOnU6@;[jQnY:PFf2df:IUSHYVl\NLQ[S>[H;XFE4f0P<K5B9DdA7\QMC\D[i;<RB1IIP]XhTDfLe7XnaWoN<i93kMLT9gT4:6aVbB3Q5b>m>?oo=eemEHJJ5\HXb\J5g1<?IQ2D]nREHA3iQn<MQ7M_MR=C@igEhO2VLO4P;8hfhhO\jd7m_]\hYl6g_SSC8@oZ=S8WLUY3@d_;3Z9HF:6G@fPV\Gmf48C8d7DB9l62>^6Q5FhZQF4BQJ6@>D<T31C]K09J`?734S615AIU0T1<imE<SWR@dRUJ\P@;05X2>B6168M^mb03Y30353?N4MP`0?\d4B3AD8XFK0@KHn[55<DfFUCcEB^EYZ=:9cKBjKTDJKD=4<:mGkB7ULDHRCb7En57eNZ1Y]boB]]07M]YVWJ>Xe42cI==`=_nc_J=b34=?G8e`^md4miTXjafU;@8QM_g:CSGPQcUoUF6[JR9fWV0WPaTUJk<>RWSC6>RBfEmBMWgQLLH1goHL[MbGblnaIb`V9Z^kZoAMdH\J@gaBVCh9HKj9EA][aYNR<71dCbRC\jA6Y\\CYR\0`AOOo`j3153]?8M;V@kgA_W_4Id\K0gjRHELo]U6?WN0?<?0lh:TZ\>e^]U1gFN?Z12=3NoQZfLdR[_XH6OT>ao_oWlB_YS80\8H;B]^@=GVIe]CJAT2[1Ia<ZJC\Vam5?>n7Xg<cU4SVlTO>V[R2JK8eJ5JQ4^5W3M9fBI8BKU15e>e[Rd[>EefSJh<D4hBMS9ITlOCRKWKneAKJW5HVOh\9k`An<LAVL9Sd0`=?k]RJFW05OlPLi<PLkOO=GBBfe:L\^[6_:FQ>o0b_mGKc`=hK@S;W^NaU25LJQceEhRe8a3=g4mSJR6`alLVPjLi:lf2LiH6Of:nMebS\XbS30kTMiN<kifFYDF6NKPM\^;Nbi@3Vg0<Z7FH]=JXKMg=d>nlYMSBbOA0Vo0:5Kj1M<5I^=a\lT\R<68>hl^6jPR0aKc1Ti[03chGfeGcW;`S`>IT;:Y]aYW^>W_U71>;9X1i49VFX5EX_A28Zb>1neB\LN]iS4eMS<I5DD4aDWHOMFC0UDe8AScRbh\U?C1F>BWLed>E7>FTeea_\CSn]f@Uk47FZcB9?lP;6K[dQ2@g_>iWln0]VgZ3EZ9^8XC<H4bINM1G674BQDhal5d3ZV?Y_G13JNIe:8<_amhhdX54^EeD6RY]l4cMl_g\S6DW9aD>2]i2jSA4H[`4Jcb527edeiZ?W2A<>Ga19FDFho7_X>Z`d[jcLDQ74ILbXa;I0\S5UWY4:h>UWNbm:HQ8[`[b81LU:@>ZH49hR6_H3V<IU0o6ITFF^_\3X:<@4`N\`Yj1M5HeWd]G5`<jE899FP`?^N:fQgE1Dk:D\aYdb2GEb1;1X:NC;SonLVh<RR_?9g39h4nF:`2OG:IUjHE;D5i@=fc^TlT`KH6AkHj2KHBcM;cR];iG[FDI?aYg1]o`S93Wkd90SN6mH?:X_KEDcGL\O:jaBH@Xf]hV]GB25:<eR<`F34Inb29Hd;nSU<T4KRn]TK[9ZT6>oOVJVKg8a6<7lTOF_C\S0RY75kRQ32<LFcCSB_30?Xj<QBJ2POJbR:8VeFb33;M2\FOBCT:>MD:bZC=le^0T:MSHbY_g^c=5SbDi5Dha@j]TPDcb@\Xg1b\\[Z0;WThc5HD44afmYhbi`95?K57k1SZEJHF=2E<N7Vi[L\8hT@dHFo]U`[hc386_2:2:FUUm6Vb>FU?VN>OGHk>gJcFYN[mNX]iJJnehW\mLW]iM[?IGk^MkfLHHT[G3343bMg^>W``9l3kiB7A7D6bF_UCHIO=2Cg53@9Rc3hi:lNY;7<TgHN<WKLmM;GMK6A6iADBL\5Qh;2PoOiPZ9mdmEIDGn7;aTNi`anF[NL2:XIPZ?JK[W2c0KU5<f[d_L?[SCYAZMfV>Fc0G2QAa\LH^E0omB0f<;kR>1Im9Al:F@;^O:FJeU?m]DPloLkmg]Igoen9_;5[^O3g47W79OBCbkX1JmDPBFAQG4OG7e_DI_R?aIQRilEm[N0Qdl9^Gl[HojfnUgjkoHkOd\35K=4hiV^jOK;\J?9^CBRkET1Ia<nIT`Q_Fk;oZfGmnI[gK01\EU_FiKnXJ]cG_mI;iNdDGFoloH;NWbLkLT1G?E;j`6N_l8_OX`Q[8KjbW<DHQW;\9l[I<l;nMM`5;6c\`C5fWJUS2;fnA@[[WSIBGBFKB\d;6ZRSBIfJk5coijSIlfY2gkd1^jS0bfA3GBfkY81mf40g<RfAV36QP76nWmm4XPYcJW__W_EfU_mmWmm4f0Z1Mm4PXm?Hn8>=`Jg<`\K6BjCNeTZ8jk61Nm30gRUO9``_<HHg<<\K16=H`Jg<`\K6eiRVbO``@_H`LL\K<6f=131ijk61Mm30SSW]2K6e9n`_<HHg3<fbGaQO<`@<fh;Romf>IK=];4mm7;kW[]mc]FV[k_l=L8HkN_]MVgEYAVXJNkW]Kl^C_KYnW2gN`Jg<8f\m_W;?gJcF[Ncf[LeWjZEfjfLemWbLM[?Y9fFmg30nie6mg3P3UnQ@kGM?hl61`cKGl?NU6XYT3Jj1oSC7cVRG[j]dl[lR[OM^mQ>fj_0ofQWg\gCk:hXJ>\G;91jgA`MN6jg_O63G2GoojhSNLBll@meZenleTbeaXLDI`S7WMJDBRNnUKon2To_;kQ;40OWWakmAfZ17@;]CVhfZ6e;I]\Y;]^B\2JNWl@EDkjHED]8G^SKJGg9M]64UVIhV`0kFZjnXDXH9Ul?3UgC<4E`da=l<6aYaK?YSB<ZlK8AkLXPga:L6Y9WXb^R2:;XfCCXg46QgO@OonCH=04lnD]G?@JU0oW>8R[cd5WUn`LZ>_L4H7acI]<]SYiCVhXMecP^ab7Tf\<L36cdmoD7?>U>FXnG58NQBfkE`>Y>ZXN^;LUDk^0CT`]]YcV503o2<9aY76Tb5=h;3n^l@:GRZDEmb3L5gfdJN1W`6BW[e?h^3c8;Ra49LI4N1mJ[eggX[Z3_>dlAYG>9Z6_5Y;N9:JKMj\\PGlZ_]c?=ijghHj7ShHgS81:4l6e:@H9?fVLKl1HUZ_]lAVXFA9Fn7MAT=5;K^Zogo_cK[i2_=nA]TP;mBRd`7<hB03KIPP<4@1S]dRAN`H88YNB19dT8R5F4TR2OBI17TQXQM`0@hDI3`6Q=4V@\n>BS2adP1EBgN384B`20Yo8b87OC@V?PHD0@OHMD?:H@1S`mjQ`N5Ac0PPN6h6N1cL8@k<60MV9N3H`M6B8M1alBlA>cXZ>D798@S^25ARdC<l0A7jO0n2M<i7a3KT00K?i6644NS]O:0H@=6TN66Bf@P@Xd06db:7L\60@aSOJ[51hI3Z8<02`0<oA7478XbA8H=:@<lKI5@7GMDX;JdU?eY40c1@J30Sgd1Pe0L2Pd;9>@5T9QAd1G<P@[2QA5h2ECX6:0A<=\KDRC<@QYP<R5DV<R6H31Q3XJX8C9ae3Q>\dQVNRO4RI1d`aURBZLZa44@0RPXZ2AX2ATeE@ng_kKIm_a>JNN^[m`11HCMJh9B0n?ZHY0WlAR2UR8F93@XnaF1T=XSC6TS>409GP?`XgUG593Ja2`2\GAW^]GYS5AG;niZ^AM_Y;5<kgkKTM]Bj[13:Gm3_mNfFfMhbbcJU]AT<>?_F48j:Z2P>Ia6U[FT4F:]kl=1GA=P\DVJ6>X23kPjb7bQY`[XmW0\B3<V6=\:@]HOQl4Sm60aJ;mC]F:3_FRcUE67>[UW8ZU7:ZKLYUD\UPX_YFE2X37WLUWVI=><HZLQRBLD0dhS19OC51?62JN:K\`U0Sk:\iJYN8Y]YeVW0OKL6eCM@hdnm\H8<6YAM7Y]JeZ3]=6W7JE78IEW=I=_AcFY5LhdKAb5?XJQbEn[eHdKQIC3fo`RfF6ld`8R^hCX8h8X8n380454H8B61PB[VDHS`4JUH<neI:\AHR=BI[DHWST3a0XAa0Qh`nd8TRoaVjU>h9@S?2Yl0eRI`dII0f728n8>7;UaSh0iElD:aG\RKN\=a;jTDDiT8fNGMImQPJoJZlSBdF]DoLcWUB4mJFe6[dOb`>YCd4PEDAD_7mFNbIAL>e79ib>:2a]E:jToCY]8<CFV:4``\X1a4BL<9?9ATRQ4bcK7^1A4RoX@7_2@S;hfe90M;0D;D:]?I]5@0Y`>NV=LF5`I12YCFYTFU@?fTdVb2IPfC6dDjZ8JDdcRH`M5G>T<GanOc7Di>RB;N\?RfRHVNCC<iFi=m5XF^\e24nQ>92Ek6Zo6DkK3T\@]k3oE3]7U[1>_9i:SOW6i2cVWPPYB;ZgJ[4\8RQn>OVYRYDj=Z[il5eB\n^0;\bSlH=5_89`iB<\PcaUGU2H0GYX[niB]TXVZ7O]NY<2T8??Vf`fh[B1:b1f5U2`FiZPQ4EDe1H=4YRWkl?TL\11=nkR:aDYmJVchZJXT`cne^;T9K\YD6<S;meKT:^JVWW7o4?RGhQ2
@@ -4554,6 +4554,9 @@
<_NAME_IN_ATTRIBUTE_ name='' classname='Obj'>
+
+
+
@@ -4584,6 +4587,9 @@
+
+
+
pin_names
@@ -4614,6 +4620,9 @@
+
+
+
specification_file_path
@@ -4644,6 +4653,9 @@
+
+
+
levels_file_path
@@ -4674,6 +4686,9 @@
+
+
+
timing_file_path
@@ -4704,6 +4719,9 @@
+
+
+
pattern_file_path
@@ -4734,6 +4752,9 @@
+
+
+
passing_sites
@@ -4764,6 +4785,9 @@
+
+
+
failing_sites
@@ -4836,7 +4860,7 @@
true
- teststand_fixture.py
+ teststand_pin_map.py
1
@@ -5329,7 +5353,7 @@
true
- teststand_fixture.py
+ teststand_nidigital.py
1
@@ -5774,7 +5798,7 @@
true
- teststand_fixture.py
+ teststand_nidigital.py
1
@@ -6267,7 +6291,7 @@
true
- teststand_fixture.py
+ teststand_nidigital.py
1
@@ -6856,7 +6880,7 @@
true
- teststand_fixture.py
+ teststand_nidigital.py
1
@@ -7648,7 +7672,7 @@
true
- teststand_fixture.py
+ teststand_nidigital.py
1
diff --git a/examples/nidigital_spi/teststand_fixture.py b/examples/nidigital_spi/teststand_nidigital.py
similarity index 78%
rename from examples/nidigital_spi/teststand_fixture.py
rename to examples/nidigital_spi/teststand_nidigital.py
index b91630c6c..0e206abb6 100644
--- a/examples/nidigital_spi/teststand_fixture.py
+++ b/examples/nidigital_spi/teststand_nidigital.py
@@ -3,42 +3,18 @@
import ni_measurementlink_service as nims
import nidigital
-from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+from _helpers import GrpcChannelPoolHelper, TestStandSupport
from _nidigital_helpers import create_session
from ni_measurementlink_service.session_management import (
INSTRUMENT_TYPE_NI_DIGITAL_PATTERN,
)
-def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
- """Update registered pin map contents.
-
- Create and register a pin map if a pin map resource for the specified pin map id is not found.
-
- Args:
- pin_map_path:
- An absolute or relative path to the pin map file.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
- (Dynamically typed.)
- """
- teststand_support = TestStandSupport(sequence_context)
- pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
-
- with GrpcChannelPoolHelper() as grpc_channel_pool:
- pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
- pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
-
- teststand_support.set_active_pin_map_id(pin_map_id)
- return pin_map_id
-
-
def create_nidigital_sessions(sequence_context: Any) -> None:
"""Create and register all NI-Digital sessions.
Args:
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
teststand_support = TestStandSupport(sequence_context)
@@ -62,10 +38,8 @@ def load_nidigital_pin_map(pin_map_path: str, sequence_context: Any) -> None:
"""Load the pin map into the registered NI-Digital sessions.
Args:
- pin_map_path:
- An absolute or relative path to the pin map file.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ pin_map_path: An absolute or relative path to the pin map file.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
teststand_support = TestStandSupport(sequence_context)
@@ -93,14 +67,10 @@ def load_nidigital_specifications_levels_and_timing(
"""Load specifications, levels, and timing files into NI-Digital sessions.
Args:
- specifications_file_paths:
- Absolute or relative paths to the specifications files.
- levels_file_paths:
- Absolute or relative paths to the levels files.
- timing_file_paths:
- Absolute or relative paths to the timing files.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ specifications_file_paths: Absolute or relative paths to the specifications files.
+ levels_file_paths: Absolute or relative paths to the levels files.
+ timing_file_paths: Absolute or relative paths to the timing files.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
teststand_support = TestStandSupport(sequence_context)
@@ -132,10 +102,8 @@ def load_nidigital_patterns(
"""Load specifications, levels, and timing files into NI-Digital sessions.
Args:
- pattern_file_paths:
- Absolute or relative paths to the pattern files.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ pattern_file_paths: Absolute or relative paths to the pattern files.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
teststand_support = TestStandSupport(sequence_context)
diff --git a/examples/nidigital_spi/teststand_pin_map.py b/examples/nidigital_spi/teststand_pin_map.py
new file mode 100644
index 000000000..223741401
--- /dev/null
+++ b/examples/nidigital_spi/teststand_pin_map.py
@@ -0,0 +1,25 @@
+"""TestStand code module for setting up pin maps with MeasurementLink."""
+from typing import Any
+
+from _helpers import GrpcChannelPoolHelper, PinMapClient, TestStandSupport
+
+
+def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
+ """Update registered pin map contents.
+
+ Create and register a pin map if a pin map resource for the specified pin map id is not found.
+
+ Args:
+ pin_map_path: An absolute or relative path to the pin map file.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
+ teststand_support = TestStandSupport(sequence_context)
+ pin_map_abs_path = teststand_support.resolve_file_path(pin_map_path)
+
+ with GrpcChannelPoolHelper() as grpc_channel_pool:
+ pin_map_client = PinMapClient(grpc_channel=grpc_channel_pool.pin_map_channel)
+ pin_map_id = pin_map_client.update_pin_map(pin_map_abs_path)
+
+ teststand_support.set_active_pin_map_id(pin_map_id)
+ return pin_map_id
diff --git a/examples/output_voltage_measurement/teststand_nidcpower.py b/examples/output_voltage_measurement/teststand_nidcpower.py
index c21f5d99c..24bf71ed2 100644
--- a/examples/output_voltage_measurement/teststand_nidcpower.py
+++ b/examples/output_voltage_measurement/teststand_nidcpower.py
@@ -9,7 +9,12 @@
def create_nidcpower_sessions(sequence_context: Any) -> None:
- """Create and register all NI-DCPower sessions."""
+ """Create and register all NI-DCPower sessions.
+
+ Args:
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
+ (Dynamically typed.)
+ """
with GrpcChannelPoolHelper() as grpc_channel_pool:
session_management_client = nims.session_management.Client(
grpc_channel=grpc_channel_pool.session_management_channel
diff --git a/examples/output_voltage_measurement/teststand_nivisa_dmm.py b/examples/output_voltage_measurement/teststand_nivisa_dmm.py
index 8e958ce84..439788ca7 100644
--- a/examples/output_voltage_measurement/teststand_nivisa_dmm.py
+++ b/examples/output_voltage_measurement/teststand_nivisa_dmm.py
@@ -11,8 +11,7 @@ def create_nivisa_dmm_sessions(sequence_context: Any) -> None:
"""Create and register all NI-VISA DMM sessions.
Args:
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
with GrpcChannelPoolHelper() as grpc_channel_pool:
diff --git a/examples/output_voltage_measurement/teststand_pin_map.py b/examples/output_voltage_measurement/teststand_pin_map.py
index 21f230e7e..223741401 100644
--- a/examples/output_voltage_measurement/teststand_pin_map.py
+++ b/examples/output_voltage_measurement/teststand_pin_map.py
@@ -10,10 +10,8 @@ def update_pin_map(pin_map_path: str, sequence_context: Any) -> str:
Create and register a pin map if a pin map resource for the specified pin map id is not found.
Args:
- pin_map_path:
- An absolute or relative path to the pin map file.
- sequence_context:
- The SequenceContext COM object from the TestStand sequence execution.
+ pin_map_path: An absolute or relative path to the pin map file.
+ sequence_context: The SequenceContext COM object from the TestStand sequence execution.
(Dynamically typed.)
"""
teststand_support = TestStandSupport(sequence_context)