Proble with callbacks

This is the usual case...
I am trying to create a client - server application, where the server will be able to perform call backs using methods of an exposed object at the client.
I saw the tutorial and what I did was this:
I created a "register" method at the remote object of the server that has a parameter that is a handle to the client remote object. I store all the handles in a Vector with IDs and stuff so I can Look them up and use them. The look up works fine.
The client remote object DOES NOT extend UnicastRemoteObject. Is that the correct approach?
The problem I'm having is that once the client registers, the server can perform a callback from within the same method (the method that the client uses to register). If the server attempts to perform a callback at a later time I get a NullPointerException ...
I triple checked my code in case I tamper with the handle values. That doesnt seem to happen though.
I read in an older post concerning the same matter that I should extend UnicastRemoteObject at the client. Is that true? Right now its pretty much the same with the tutorial.
Is it possible for the Garbage Collector to erase my handles?
Cheers
John

OK I ve changed the code to make it a bit less messy. Still I get the same errors.
So now I have a Remote interface at the server that accepts calls from the client :
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Vector;
public interface ClientRMICommandHandlerInterface extends Remote{
public User clientGetUserData(String sUserName) throws RemoteException;
public User clientRegisterNewUser(String sUID) throws RemoteException;
Vector clientConnectToServer(ClientReceiverInterface cri,User user) throws RemoteException;
boolean clientDisconnectFromServer(User user) throws RemoteException;
boolean clientSendMessage(User user,String sMessage,String sUIDdestination, int iMessageMethod) throws RemoteException;
boolean clientSetUserData(ClientReceiverInterface cri,User user) throws RemoteException;
boolean clientSetState(ClientReceiverInterface cri,User user) throws RemoteException;
boolean clientSetDefaultState (ClientReceiverInterface cri,User user) throws RemoteException;
User clientAddFriend(ClientReceiverInterface cri,User user,String sUID) throws RemoteException;
boolean clientRemoveFriend(ClientReceiverInterface cri,User user,String sUID) throws RemoteException;
The method clientRegisterNewUser(String sUID) does not accept the client reference to the client remote object ... Most of the other methods have an argument named ClientReceiverInterface cri. This is the interface of the remote object at the client.
Before I get to that I have to say that the RMI calls from the client to the server (to the interface above) work perfectly.
I will include the part of the code I use to implement this interface:
public class LocalClientManager extends UnicastRemoteObject implements ErrorListener,ClientRMICommandHandlerInterface{ ...
public Vector clientConnectToServer(ClientReceiverInterface cri,User user) throws RemoteException{ ...}
} // end class
This is how I instansiate the class:
try {
localClientManager = new LocalClientManager();
catch (RemoteException re) {...
And this is how I bind it...
try {
Naming.rebind("rmi://" + SERVER_IP + ":" + RMI_REGISTRY_PORT + "/LocalClientManagerService", localClientManager);
catch (MalformedURLException mue) {...}
On the client side I have the ClientReceiverInterface. This looks like:
import java.rmi.RemoteException;
import java.util.Vector;
public interface ClientReceiverInterface extends java.rmi.Remote{
public void setFriendData(User uFriend) throws RemoteException;
public void setFriendList(Vector vNewFriendList) throws RemoteException;
public void setMessage(String sMessage,String sUIDorigin, int iMessageMethod) throws RemoteException;
and the Implementation class is :
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
import java.util.Vector;
public class ClientReceiver extends UnicastRemoteObject implements ClientReceiverInterface{ ...
all the method implementations follow...
}// end class
This is how I instansiate the object
try{
clientReceiver = new ClientReceiver();
}catch(RemoteException re){...}
I do call super() on the class above ( I saw just now that I dont on the server side Remote object but I guess thats ok since java calls it anyway...)
The way in which I store the references at the server is a bit complicated to post here since it involves a number of classes (4 actually) and references pasted from one to the other using "events". By the way could that be the problem? I mean I 'm 100% sure that I dont reset the reference value to null and I have a System.out.println before any changes happen to it so I know exactly when and why a change it. But could the problem be that I pass it around the server classes as an argument?
As I said in an older post the funny thing is that if I use the reference immediately after I get it (in one of the methodes of the ClientRMICommandHandlerInterface it works great. Once I store it and try to reuse it I get the exception.
I hope that know you can tell me where I 'm wrong.
In any case I really appresiate your help .
Cheers
John
PS: Sorry about the long listing and the funny names for the classes and the interfaces

Similar Messages

  • HT201263 I am not able to restore neither from iTunes nor from iCloud. The proble with iTunes is it says that the backup is corrupted or incompatible. And I am not able to connect to iCloud for restoring. I have IOS 7.0.4 when I have taken the backup.

    I am not able to restore neither from iTunes nor from iCloud. The proble with iTunes is it says that the backup is corrupted or incompatible. And I am not able to connect to iCloud for restoring. I have IOS 7.0.4 when I have taken the backup.
    iCloud does not connect and it says Request Timed out.
    Not Sure how to restore my iPad.
    Please help!!
    Thanks

    my problem is with I cloud not iTunes what's up with apple haven't they got the brains to sort out this prob, that they have to let the "community " know instead of helping to fix the problem without having to go through all the hassle of signing in writing a small blog & then leaving it until someone bored with time to write their blog to at some point fix the prob or not ! oh nearly forgot my prob like
    HRESULT:0X80070570 no clear explanation as to what this means or why in plain English for the not techno phoebes

  • Need XSDs, API Java Docs and Java (with callback hooks) extension sample

    Would someone(Sue Harper?) please give us an ETA on when the info we developers need to develop extensions to SqlDeveloper will be made avaialble by Oracle?
    We have been waiting over a year to:
    1. Get the XSD files the poster refers to - the list of XSDs is on the page cited but all of the links take you to a generic download page and the XSDs are nowhere to be found. These must exist somewhere so it is very frustrating that no one on the development team will provide them.
    2. Get the API Javadocs so we can understand the java classes available and how to use them. As with #1, these must be available to the development team so why won't Oracle release them to us?
    3. Get a working example of a Jave extension. The lone example provided is not useful since it is really just an XML extension written in Java.l A useful Java extension would show how to create the hooks to cause SqlDeveloper to perform callbacks to the Java extension code when certain user actions take place. Same here as with #1 and #2. It's hard to beleive that someone on the dev team doesn't have the code for a simple Java extension with callbacks.
    JDeveloper has 'hook' elements in its example extension.xml files but there is no documentation for SqlDeveloper to show the equivalent.
    Please either provide the above requested items, provide an ETA on when Oracle will provide the items or at least be gracious enough to tell us Oracle won't provide the items.
    I'm sure there are many like myself that would love to start working with extensions but can't because Oracle won't share information and data that almost assuredly already exists.
    Waiting patiently. . .

    Hi,
    I'm sorry are feeling so aggrieved by the apparent lack of response from the SQL Developer team. There is a lot of information on the Oracle Wiki, where it has been available for well over a year. The detail and examples were initially created and published in 2008, while the xsds were added earlier this year. The recent OTN migration (in July) broke the links to the xsds, which I was unaware of and am glad you brought that to my attention.
    I see from your note that you have found the Oracle Wiki and the examples, so your complaint is really that the examples are not sufficient. Oracle is not hiding the detail, and we have every intention of adding more. This is just like any other feature request in the product. We are prioritizing the work that must be done and right now the team is focusing on those features most requested by the broadest audience. We do plan to add more and it was on our feature list for the next release. Like all features features proposed for future releases, we can't guarantee they will be included and we don't provide dates. The advantage of this particluar "feature" is that it is not dependent on a release date and can be updated after the next production release.
    We already have a number of customer teams writing Java extensions to the product very successfully.</p>
    <p> I will update the wiki withthe XSD link, but until that is done here they are:<br>
    Dialogs<br>
    Displays<br>
    Editors<br>
    Navigators<br>
    Query<br>
    Snippets</p>
    <p>Regards<br>
    Sue Harper<br>
    </p>

  • Any proble with magnet iPad

    any proble with magnet iPad

    If it was thought that there might be a problem then they wouldn't be included in the iPad - is there a particular issue that you are concerned about ?

  • Creating client stubs for web services with callback operations

    Hi,
    I have created a simple web service in Workshop to simulate an asynchronous communication.
    When I test it within workshop everything is fine but how do I generate the necessary
    stubs to create a java client that will support the callback operation ? The only
    doucmentation I have found suggests using <clientgen> with the "generateAsyncMethods"
    attribute but <clientgen> does not support that attrbiute until version 8.1, I'm
    using 7.0. Has anybody run into the same problem ?
    thanks in advance,
    Mike

    This example doesn't use any callback operation though. Is there any sample that
    shows how to implement a client for a web service with a callback operation ?
    Mike.
    "Raj Alagumalai" <[email protected]> wrote:
    Hello Mike,
    Please refer to the attached sample on writing a Java client for a
    conversational web service.
    Regards
    Raj Alagumalai
    WebLogic Workshop Support
    "Mike" <[email protected]> wrote in message
    news:[email protected]...
    Hi,
    I have created a simple web service in Workshop to simulate anasynchronous communication.
    When I test it within workshop everything is fine but how do I generatethe necessary
    stubs to create a java client that will support the callback operation?
    The only
    doucmentation I have found suggests using <clientgen> with the"generateAsyncMethods"
    attribute but <clientgen> does not support that attrbiute until version8.1, I'm
    using 7.0. Has anybody run into the same problem ?
    thanks in advance,
    Mikebegin 666 register2.zip
    M4$L#! H``````.M&-"T````````````````'````:6UA9V5S+U!+`P0*````
    M``#K1C0M````````````````# ```&IA=F%?8VQI96YT+U!+`P0*``````#K
    M1C0M````````````````% ```&IA=F%?8VQI96YT+V-L87-S97,O4$L#! H`
    M`````.M&-"T````````````````+````:G-P7V-L:65N="]02P,$"@``````
    MZT8T+0````````````````@```!M87IE9V5N+U!+`P0*``````#I1%\M````
    M````````````"0```')E9VES=&5R+U!+`P04````" !F:S<MKE+WC%,!```9
    M`P``$@```')E9VES=&5R+V)U:6QD+GAM;(5304[#,!"\(_4/B\4U\0>22JA"
    MX@`"]<(1.?:V=7'L:.T458B_8R=.2TM%;UGO[,YXQJDZ<EN4`:QHL6:$:^T#
    M4B&-1AL8*%R)WH2:"6,8-,*CTE2SDLUG-[,;@"K.=TAA#VAWFIQMXUC-8L'X
    M! F"UC@Q#'L4=FB5KYET;:<-'K&W10&+\1"66<QBT +2".]!V^ @;' LT4/4
    M$_4[VD-1S/_R30R9("D680-:Q=:PMQP6I4,V'Q$9@P;392!]QQOS3,B _X^;
    M9+\B>6?+K: K(W=?T:[R[>G]\>7YX9M[I!T2-[KAG]BD2DO,6D^653S-'R_6
    M?D0O8,SG5&T&;,5.2/ D<X:3)FVEZ17&/$XM+]/ `14!X6SYU#I82+BZX.L9
    MS[T-R]X&G>*Q+G</+X"/\?U^$"KZ%7!(O>FU45<S-RCLE&:5IR_Y<D87#1W_
    MAEC]`%!+`P04````" !F:S<M.$,VJ88```#^````%0```')E9VES=&5R+T-O
    M;G1A8W0N:F%V86V.00K#, P$[P;_0<?VX@_DV"?D!8H1J5K'%K):FH3\/8&F
    MAX+WN+,#*QB?.!*(EL\<E$:N1MJ!=][):T@<(2:L%6XE&T8#GB311-DJ//"-
    M@4OH21D3+S@D\F[U#HZ<<F_*>81J2F1="T6VN0FJH5&3+"S-7NXE_XPC?Y/S
    M_^4*Z^;=]N4[4$L#!!0````(`&9K-RWB.$D(@ ```+P````4````<F5G:7-T
    M97(O4&5R<V]N+FIA=F%USCT.PC ,AN$]4N[@$99<(",70.H)W,@*IDD<.>&W
    MZMU;! ,,?.NC3WHKA@DC056Y/YQ2Y-9)/5AC3;V,B0.$A*W!D;1)`<XU4:;2
    M&YSQBH[%#:2,B9\X)K)FM@:V?;Y#5RX1"F;R/W"0TC%T.,D_N8E._I7Q9>^(
    MW1[FQ9IE!5!+`P04````" `W2U\MK.Q^UNL&``"6$@``% ```')E9VES=&5R
    M+W)E861M92YH=&ULK5AA;]LV$/T\`_X/1+:B&Y!82;IA0.H:R(H`W=!A09LM
    M^U"@H"4Z8D.1*DG9\8;]][T[2K*<*.NP]4/D6"2/[]X=[QX]+V-E%M/)O%2R
    MH,^HHU'XYXVZT2$J_])H9>/L@US+,W&MEJ_=C<[%M?.WH70UO1%OE5_K7(DT
    M55QZ=[<5%W>RJHV"Q:PS.0]Q:Y2(VUJ].(CJ+F9Y" <8*$\.\3BEQS-Z?(M'
    MC3^C\5@:E]]^;%R$K3^GDR]6SL:CE:RTV9Z)WY0OI)6'XMQK:0[%*V76*NH<
    M;X*TX2@HKU?/L:J2_D;;(Z-6\4P<UW=X]Q=M+/X4;##H/]29./GN^,ES00.G
    M]P:>M0/UH3#ZWM@IC^QP?GIX#\V)JGA&8S!B0/H1\W1$/)V)\+&17O&$><8#
    MQ&36A6OIBBV'[V3QF2(&VR=L\73QHXW>%4T>M;-X?4JO:SRN2AW +\T6A:J<
    M#='+J((HW49$)W*O\%5(\1,PB#QMLG(>;WH8&\ ("<9L.OG1BEIZ!*XQTA\*
    M'4?M:@OW9![%1L<2QG)GU\H'2?BD&9H4TA;=JDI:7<,N)5#NJMHU&&-DQ' 0
    M35 %3(M8JJ&)IR'MMY) **XPV#J"^>'^Y&ZL9B9_.G_3<E @\-M=$(AWY6%Y
    M'N,B+;E1H!;?@-29V3RK$\DCP10@78H0X9HTSJKD@ZQK@WPG"@!*1B'S7(4Q
    MB+'TKKDIZ?UT,AQ@T#/!/B8'.%9V*V[T6MD>_G0R%CV&M9;:R"728>5=E7#L
    M:+Q2(8K?M-H(EUC^94UC^%[+&R5 $*C(;[6]F4YH>+Y<L&N<EO-LN<"IL+<)
    M($X@(T0@X:(D1@98CD*M<KT"TQ2"E08@Y$B4VL*XX(PQ1G$^"[=JG<V-)+[(
    MOJ/@,D0>.A1;UTPGT@0GK$*6T @"AJ*2T[;MKGD7(Y\\?TC(CH&!LZ+U-9V^
    MMTU=.Q\15$\N4_&#SRD?D!%26%FA;%[8M?;.5MCP8#'/9'M2!Z]W!Q6'ROE"
    M>3H$OB'J^V-[R)NOP(;;$)2J`< E7/>-.FN3L#%I:Z/YR#/6Z]?O7_WR\P4'
    M1>WV%&N)^DON=H:"BK3M#Q?GO" #6X9RZ/OC8]3T3:F\Z@>),()SL%3R0!3:
    M(T+.;^E,;DJ=<\;NSM E3C+RLYI.-)U0G >$M)A1462D'6*@E<0&D':@$'4$
    MU(O+\ZM7,S&8`$N%,DAVCR!S<;E^_99K2"XMCC!1154#B,8\R@*?ZVRI[0SX
    ME$025?(6+#1><4Y,)P.WPCZ0,>1TWO\9>C]C%#N2-H$7H]@_%+<GST[>'S_[
    M#)"S+D^0=B]QV) .H<U!<J5O>_@N"/BRT::8W54FI?G]&3BER*>0>UW'=)RH
    M9N,DIQS9KXL/JB%.>W"F*\>S^=)SM]S;X][749#L2)[J+N%,AGCH$AW'V7YD
    MS(-?HS8Z]I6E[S =^,[$)CQ]I,<\VEQ+%51O%\)@.E%WM:>"7W"^[II=T57;
    MSJ0NU'\G9*0?/>;])SL4][$6%:KP0U9F:)14N2NJ+:'KS5S.J3/!8P/1UU;Q
    MU#,*A2IO`MG;>!VIINUUAJ$4^?\L]#G@'R/A@1ZXWXSN=>=AY_K]Z,WERS[(
    MU'BH];BVLX_RQ8J,MD!M15-T2]H&J]IV_%A/'6_(X'#7L(CPL1W/]\2=5Q\;
    M5(N 6NEB^4_.M4Q0K@Z[*?"--51&R@L^U5E9:/VKUIK4Q&?+@4UX+ ?N"S"B
    M,C6T1]5=ZSG8#9HKP$Z\M=*NCC0O;;Z73QLGJ&I!'B,*7Y?01TSR!I+M&_Y/
    M4K,/NPK1BB N$6FA*&24_YT9:(S94L:,/D/Y&"ND1%)Y#\S(H$31UVMM"X))
    MB%]KV]QEOUI]=X@,HR2*Z'-F2_RPH,$U"CH#]:%O*O#7/HWL-5I?+E%ZJ1=2
    MIU#0<[email protected]=<1WM8%1RVV6PJ+0%BLH5E*^))(+%O6^@>/XE2UU;I [&-0E>
    MO6DL1VRTI';:[6I/GI',\>D>1J(W-%6;$:R,DB9CV]2=1X49-PM69;GSU-:)
    M1:JR?!N O"R]6KTX^')/7^ZI2KG \B2=Y=*M57=7<?SS`=3 SP/YH'87O?9:
    MV=Y]*,U](F#6:@A:"ZF*Y*\*$4IE<(_/J>"=35L12C-VN7#&MZ>O6K>SU"I#
    MMFDWS ;])O2C7(@SWU+.-Z[!]FW2)<M/6LM/WK6+WW6FWPU-]Z-L^MVHZ:2-
    M!AM=X<9)1X7V8?')DY<+OC4GG</L[76K\>5@<6]Y4O@/%-+04C)R08I#(*@-
    M[MFJ$K:IEB@G9*.&%(&T9CN@A%PE79$2;R8N)&K7;B&?+FK/:Y?WY41"P*]6
    M$*/8&\5O.NDJF(-QGM4[E+E6.6;=KQA9^VO4WU!+`P04````" !T9E<MGYQ.
    MU\X.``#G2@``' ```')E9VES=&5R+U)E9VES=&5R0VQI96YT+FIA=F'M'&MS
    MVS;R>V;R'U!]:&A7IFSW;2>Y\2.]N.,VGMB]SMW-38:B((DQ1; $:5G7R7^_
    MW05 `22H1^M+D[MBVD0B@<7N8M\+)8_BVVC"6<$GB2QY<?SXT>-'R2P71<G>
    M1G=1F(CPM!J/><%'KWDTHAF-]Q=97I779<&C6>>45R_N8YZ7B<@:+XM9$K[F
    M,U'RKAE5F:3A>51RPFTP8'DA[A<L3B,IN611P5DJ8G@_8DG&RBEG<SY,Q22)
    MP[=S&>+L!.;EBM*P!NZ;!:@H/ESQ0HKLS<4L3X^W67$MHESAN;O[^!';91=J
    M*:*E9BC$692-Z&$LLCMX'B'A;$KL,Z2%!.!<9$]*EBS!G(FLC.*2C:(R8K(L
    MJKBL"MYG0QY'E43JGP!+DC2MX"7 S28$!U^),1N*<LJN7YU<L9&(JQG/RD&:
    M`/I12BCAF[W75V>,9[$8`4OSJ(AF'";(/I."(,TY&W' $78!?&9LG@#(<96F
    M"_9+%:7).(%U&:P"*B7.QJV)5GUD0YZ*.5$WJ'DKBDDH<IY511+.Y_-0,>NX
    M\_W]X?[^87B__T4H@>6AS<;PNHR*\F5#%+<!@"Q.LHK7,);G^31_?C--)$OP
    M"!F_CT!"B+$1B@>3O+A+8B0U`=8"U5&)Y$LCEV8"P5*"/.$9L!_%=[A@/_/A
    M)8H8NX9YO B?#O+G.-?L?<TYZ]V<GK-KVKAG1+Y>][,H;N54Y/7Q*HJ:<(@&
    MC604QUQZ<&1W2=10MK&H,E0S`O/SB].]BQ^_`_D9#EPM"-]&1<C8#5+__<EK
    M-DZ 1["A&)91DBE*)4]Y7$LG;MW['M2=7>&&/98FV2T#E7#8^D2R&RY+]K>$
    MS]FK.WP('ZY0K1F[&->0;")@VZF0R%ZT$B"D?9KRT^M+/#7\Z ""^4<$9UJ6
    M^=%@0(L0P-'7^_L'`TELEP-BR\!8S1;Y<VD8#A*>5\,43D;IO9EY1KQ__.A7
    M%"X&8["K_E;G<[Y4,'T$8O@6^"6)K;P@NB(V`W8Z[Y4RPJH:&&#,21M1&9O,
    M&59Z18],78]%.:@(Z#TQ*:N!P!:EB$6Z)W,>@X+'#;[email protected]_1,&EY! ,%IH"!
    MY9B*$5BI:BAK8&-1-!&!@P7=+$A6I1%6FFTSA8361E]6.>JV5 9-P#FRES<W
    M5VBI6%+62Z<1\LK"N.:28LQ3"^9S!.5@,% ?/)Z!S=X04/K\C&5@`H]]D]$I
    MF+GN//7G4(B4@S69O3FSK!!9,1#;9VP<I5)Y/YRM+)&B["?PC4FY,'RF8\B+
    M) .6P&ZS'/XN!;M>`"ZS4,!AHXV?<'B<H-.NX=Q%:87J#6O,["0+V4D*C(1W
    M"?@:KM<@P%ETB\POFB9-`4/K2%*9HR^S* *!D&"/>"T!!?\%MD4B05[03#5X
    M#J3<X7P@"+&F0"/84>]^U7-A0.P!=D2CY_ 7!RX&0UA=`%7P=M]Z91A/)%XK
    M@R2R'\#HM[B.PPV$@)81T G[@>EP7P7XJ!46!35G=W8<N/,IV,> ?>)!8V<Y
    MRR(8Q_)00SKQ- MZ;_RCMW.\?BT\/F![<)@@022UFZXZA%63K5=]KO>:BAE7
    ME@.,5Y*-!<K7R:90OE@%Y713*%]J"FPHFZ[]2F,P![_[V^GX>A64C>GX1M-A
    M0]ET[;>PEM\G&\UWI=<W*>B]R,#\D=Z!)0;%RZK9D!='+?!EL7 ?-,0<AU%L
    M4K@0%&IT"5%$T 2%PU+T"\!@`B$41+"2PY> P#07O7._0AX13UE@Y2O E9VU
    M&/)[13?8[CVIHAB/W:QCBLWPN%'XMAWHIA%I8.-#P'?J5Z!;8/(F]-)1,K(
    M;7 BA,)&B+K?Z@#&C%T4:9WT4+32D^C2')?0TZXK9#_4/J74\0WF/5&*Q[UH
    M08[<Q$DJ7QDVYPW<!\DXL"3D&1B\]4>+:S[Q>^:=]FP/`!Q>!P.I6Y/!.-ZU
    M'W'P1!OOY1,%*V2,JZ+ J-_AGV9SG_789WZHGM'+E8#%4R'@KR@3>')*P@1)
    M:^@5K@:!VPK526KB2@G:@'IAR1E&% G)$$1"D9=(-'.R7"<JR')77IZ#N'SZ
    MZ?+[4["9FXG/_XST9,(K/K]+;)9G%QSL0*98P-EL(C:M[^T3`PUO'9&/[HWY
    M^\[V>^\L45WK) M>5D56HZ8!(PGJDR^H'U<9(80Q`$$%@3;%'W@$WA#W8]<Z
    M)5.YK8[^ZYDU5-*(1';4?G2YIQ6 J]3U3H#G(,B7:KX&'C2+*@:]N!VDX\G$
    M[!,5GF\9UZHW(&0L#B' P:":0R*P+E1I+3P#MJY?ACOV[=T@!0EVX&MO^? ?
    M2>X"LJ31U;>-R<M$QGL>D/JO3>3$2O\B4VY<2LJZLU4+`KTN]Q]A_MN/$)F7
    M(_-^A*0[:.1 *]9A6-X.4WSB2-!?BJV@8["\!72LKSWHR>=U@(1<[1" ]N'_
    M@)46"O1-`,4NA<BQ1%=P+(0$%81PJ2JL46!OA7ZPF2J_\=%.OP:)%@3S:)-I
    MH^C$(L5Y.@3716O -KL3MSC7S>K&DX-4]05>5,FZ,KQ20Z*O/D]R9-'X&&
    M6(FY>9UT)_C+3TX@L=2=NZA(HF'*J4XR%>G(E$*4P0::J"9B%YUT[&&#LV('
    MHST6$EU&$NO.KHBM6*0-],TBY]*!\/KJK+VZF_"++"D3\'?_YB.+^$HNNR>U
    M0^[C1]0FLQT>OU0JX'H7!=JJX!GO<T)5WRR%H METFSC]4'UHE-<A%,=Z%W+
    M4.!G:H\YBF:.%<D1F3U#2(@E4\@^(#6^O[\WF;$#G=)LBP((%N?10M:MB[HO
    M@D$/3=#%XWH)<<?'%E5QQ)+7LB>S+'71'$M^-A>6$_;,-3!8=.I8'O0.]O?9
    M"5.>$[W;R1U@P^G3"?YY@$-_V-/_'SC6:'/,3K?"[! P.[4P.ZTQ.SW%/P]Q
    MZ ][^O_#E9AMH"L;H>B#\Q#X=BHGBBED!U3#<5L8L5-&I0+W'$P1B!,)/*.Z
    M/"B#ZB ZQLG4Y8VY=G*BBW,4?3#\S4*MMG)*=<94A "1=W4&WNC]$,41'U-O
    MQW2DKL\O^W6;TVEU@2K$D(IA25DW$)JZ6/"\X%)UT,!G$A+41" ]:J#J,<Z0
    MXP%#RB8;FIU6:E N.YR.3C+GRP7%SE6.R!$35>LL*+$E`<1-`,:."M1%3MEP
    MF\\8G=&)#;D#N\H2<* LB@N!C6$\"T^2934M;(*U@U52XX"5JH.(6H]V<QQ5
    M*39[`/R0-]Q;E"U6%6<:[email protected]^U(5#)&(5Q#,18==.(-D@'VM,OR65U;5<_1
    MGUL%_3-A=V=)O+NF,EO9G%)C(SCSU!DN,L "=L+@!%EL]=I(:I54VEVEJ>ZP
    M-5MN+=#6`?;]_;=UY8E&YPF,EZ<_%?1^9Q/S+ZC$OI 4Q[I2Z0;A[XNB`'4&
    MP<4^L&)E*Q)?4UJU$&H8T[_RTIB>[MYEES NNW46IS'^;W?V&IF^:>90L-K-
    MCL& 2O4D6'5<CM82X@F*:$K515T&TP:S9:2[;(DU>.9^DR!A\=2JBZRO6L58
    MH#DX:K_ X3O)%6TC,_Q/<RV^.OGL?2^F&3L7Z$\](8_OX>EV&[8TW8Q==@U$
    MH(EO.DGM+$(P"8P,OE*@OKG;$F%4N& RP:>=T"GRXY.%2JO .,!6I/LMPWG$
    MWJ*;(#RT)\ &+(I')_0RF7%"$*1U5,6J+$?(SD65CK"6#F9_(L2(\4Q4DRFB
    M,:G ]V4E[T9:^::,H[G[NZB8G"(TL.C88<_BM!J!N1/H)E"#C2<;8JL9-^^$
    MJ_TG:#^:)1:@6]>7:?KLXHI%HQ$$`))]1I0/D#J<#,3A715T+ET%Q]WEBIVF
    M%5W.Z7QQH9,@<H;JX-6%$; 6D $5$TH^T*O1\8"W'H)=4C?0@.=''GN_!(Z7
    M3H#M8"+BMB?7K!TE!:=<:U%#!]Z_JHJVCW>!V[!&@E/[1,5D36 OQ1S3L;Y#
    M0B=<0YJ)7>I6$E"C`]$G$%2@(FAW@[&SB:,AINYWHTR,`%XJ@'@;Q6 .IR_2
    M.T[1*7S!JP,JGMG^2&\\0:^AI7;7.FJ-=6QAKN*!`T]*=:.A6_4:\L+V*/)Y
    M`JI'(5]TJ^]6@964DN(J5^5#=BTZH1LO85L"K0]93#:!6(]89NIVGS%772 '
    M_A?N94N6B;DVS>=4_^PPLHU(#:9;<5Q %R$N138)`!RZSYN$BG,[82G4K8U@
    MITL\5HZ>7]0ZG8\;) )2;A"Y$:(/YF<NL'K&FP;@B;1Z(?I"SW#AEMHP!VH'
    MY2YT79CH"'+<N9TOL,EFA[;6QM*Z_1F1;()+FQ8"0U#G'F^WWJOL=1HI_98@
    MV72OD%(?^$/J1 IV=_9%'2T6`PH\.V$/P5[=;BW\K6L(9GB"(S-T9!C6IQ;D
    M?5L?NN1%K3WS7O7JZ.KA\'3V<! W@@;KVY<6S%A!CR^NXQ2AF\IP36FGGN'8
    M\#($C@Z:_$^'X 9N/8 H6#W<(EA=<5O)#/_3W)MAUN/A#,&D80C>ASCGRV0G
    MK/</EH9SRS-\GW(Y^4/ETFZ>Y=L)U$J1_GS+_&O#JW1F/)RT-MH$:T2VV^E\
    MUZB1L[PJL+0D5:3JJ8RJ^+8[S=CTUPZ-JGXGO+4-$;MNBI4OU9BMY H<D;06
    M=AJA]^S&+-H";_;]45@#EY /SU5]\1!ZW;X4:L9_2Z]13_Y4[:U5NXG('Z?2
    M@$30Z()]E!H-^']X2OWEEO'GRKOF9CR<*D^V<M$/*(IM-^*&F;;+62^+.'Q7
    M<]J[?-C1Z@?MG[[:TC]M^-,',QY.J+WV^4_G]/'%G18A'W?<:1'RX>GUUP^A
    MU^\I[K08^6?<^3'&G>X!?KQQITO'AZ?4WVP9=Z[\;: 9#Z?*DZU<]'N,.VV7
    M\_\3=W[0_NG;+439^U-5,QY.?'DVNE8]6RVZ?=.\Y\4LR>@*XRKC'CM=7OL?
    MW=!W!M5-"J1FZY;55K\LP[%">#HU#,>*=3B,4BUYM:%"J<4^`MIW_)NC0^IP
    M;*E2.-90N%ZUEK2O5"L<6Z@6C@Y"W_D>;J,-^K<4*J-/EVUL&G^.$7G C_
    M@0?SJR*\,1GH?YSAG__"RS-R^>..)23WGT0Q"N+>:E3O'$ZI>2']9.2X_5N[
    MXQH_^.\_4$L#!!0````(`&9K-RUF6MH]#$ !`->*`0`;````<F5G:7-T97(O
    M4F5G:7-T97)097)S;VXN:F%RY/T%3&!=EC6 X@Z%.T7A[N[N[N[N[EZXN[M;
    M0>'N[N[N[@Z%O*KJ_N>?[OFZ>OZ9Y"4O#T((R3DWP+YK[[776?M>60E@$"B
    M7Q\-RL14`/_I`_+GEY20(A^5F+0PC>Q_+*OYIV4@/[]L[$W^L +F[RML;(VL
    MG>S-M/*NG]:"?]/*UU<7/ZP&N<O5AM9&]@8&ADJNMD:.?QA*]&VVIJ8VEH
    M9/^G2Z#_Q27^ZZ[:?]J%^A>[7.EI:>G_L ?S7^YQI67\PS[</^YSL-&S_<.?
    M1_GO-QO86#O__&OU',ULK/]P)<;_QRO]^W_]KSO3Q4C?TL;$S. /RV#_\S)S
    ME_]\Q7^^UU'^>:FMO8VKV=]O(60`B)^?_YV[3\#&VE'/P)':P%+/P:%"<5-A
    MS1"9"V^9L+6R2LL[%,)2PT(/#1.AOGY*.5RYFK=:HEP(!U8"ZIBRM2D=12*8
    MI^N:;S.C@UWZ%'AB"<-O)2J*FVT7=]_5&M$Y-49$YR(Z/OTV\W(C_?7V,IXG
    M1Q\FN^"*<X)D.ER,3D&?.J29]"#.CT6!UG:C3V.'IAA".MUUM8\#49ONNO+I
    M47(LQ&>S3^FZEOB@P'NCJQX9]8H/:E&.L<IT*PBH_6(>>U A)K/=P,=,PZBU
    MQARE/4U#+5,Q)U'SLO*KX'HMEXA?R[XU[:IJN7+*L8)U_STUXN?/S<,KQR=0
    MTU%JC3MC+ O)F2MY[9K$-\=7<B<?T+'^\>51*C VTTR<B"[1ANU*,S@$(J8P
    M,Y(_%IE.P&./%7ZXL)R.RY*T$&9.G>I]<8+F4RFX^')7!LA#D4F#Z=S\F>UM
    MY0:G>$\JBK+:>;SR.RB.(8<)<D'8O'#%GJ9=8>#QL7E_K<0&AAM+)!)KZ@`T
    MNJB![%A,2D;*+KKL%%+[QO[ ^:IT) &<FOVC??<<C62A'1)ND1UF+Q1RU,S0
    M<!\H#83AP>NP!#=Q<]8NF*@QJ,R;5(SG&LF2M '_UPUSJ_DR:]9$X?%Z9A:6
    MBBM=8-Q".V@),&[I7:<,I9A09G^".[Q&<Y3,-(OD]0K=<$</_P`**.'=`Q<0
    MJ(NQZ4\V[*/[)V4:-1WJ-!KW,VFUUAJCUD:[email protected]*BRQG
    M:4BD>+;LQJK7NZ."DX>D[L],%$<B0%;TE+[>M'<"N9.![TV7'*J3RS,=0Y:^
    MVKDR>X^YG/HY6\@5%_Z9WL<2>L= 9(XO&0D'T*VFH]$7_./1Y_RCCV:M>T<2
    M9_PVU3 WT0!0<Z2T8F[GG)7QIKB%L')1^!QV@D/?37\0X1M^=09YKKH#":P;
    M9M 1/&U*B,XRHIE (.N3+Y<[P5B9=C5G$N<2.7'#-ZB>4T]X85AAN/[YO47P
    M! 5?F=()7WP]QXLMBQVAL$/BA I_MWK./>$%:T5EI_2>]+ZQX#UJ2##>/;VI
    MBE5&;VTE.%7J`B]QLY?!<;DNQ00XIQW2$82W"!(;VM<2Z0C&MY)X2JHV.*OD
    M[M),I]\B-^$[F5!A(_0SN*@I1V#GE =N>"#/- >)!+.X4O3UFI=F7+ONPH7)
    M+KVX,08/!]FZ2=)]K;49>BTU#T-=\-0<CE,Q67[P&X#WULK'D)%/E]%'J,95
    MB,PS`931&[:S(X>#);E#F8]4P2NL@-<0!_V:P.8A>*SWQOTT)/?:]K7B )
    MW*X[]*)76R<1VY-P\]G2H<I+2OXKK,IU`/0S\N,51_G$,T\TRSNPK 0XQ.@5
    MM?0J, ``/P0`P/_-$O^<@['_D"7,]9SUQE6T;%:9D;VT`3Z"H7GJG--&G&LI
    MRY5<)&9SCZ;TM=;T>H.Z<PQ7C(EC,866G?Q?']<EQ,.P1T=NKN$!Q9!OKJYN
    MLGHERAH[-U?\O9[:X,D"S$?T^N5U4^7H&/ -Y>J"V)(U&7J+NV!@7GKS>[>W
    M'VUO$!("Z&2V6H%=IR\[JSB[,94Y0^8T`S:266]F;+L-#D#YI0,S//@Q*XG"
    M.=.@W-I9,H8?[1#;'1Q(82>S>Q7]%,&>%-&C5:ENHR4J%?P4WB?\/_5%.UA8
    M^AM\_X3N`\9C@@CLUZW[='YM2^LK8\.SVJ5[5?-Q<P2!#5MIY3>;4698T>^I
    MEX/DC -CX',["QFQ6+IMYPYP:734+8;<C;$MS[I+-LY:3W>O[E'1'A#X4<4&
    M7GB8)=XT5G>E7)XHX]7^F3F\N6O^JQJ))X0/EQ9Z/(P'5T""+?:*Q\OCE:)8
    M+[\`<"PS-+XF;@""A,)0*ZGG#P):+<X#1 )V$XD#R'T]8I#P/A54P;9Z%SYL
    M`#8)[K;9P/#1%3@)1#I%$TO&,)!A0J8T!Y@#@*-2P(">;U@M"O[.9D<?Y'%!
    M&X:YA)<K]=I3-)Z:O+3D!K>W<%!]S+/A.GEV+]@1-D(,$^98US;3AL4UD0_C
    M-G(_"A6ZB4:))<.)Z*S[TX+W.4PG+XA<48X6`6SD$.^@QNK"'#(.=2LWK6!B
    M*(N>T[_)A=A9$;J=O S-Y^($6'^^>W]ZTK.,C0+J7<]+(</Y2,NU,P8BP/&;
    MQB")87#I)]> SG9@:-"+K="D9F))39*--9FUEB JBDG:;2!-)E(@>YC9C-D%
    MH_N&8IWP5=8%N2?U/7;8-HS/*E36.L@=\BP%#/!&RJGUKE7JD:<!J.>B#<E2
    MS<T0*H*L+,U+5C%+:]57F.D"2*7/NAAHO@F+B7<*!Z4J\$?L_H=,K*51)^GU
    M?7,Q`FRJRV'?^<T%7!P6@XV>RU@[SH^CFH_0O)41'^^T"\6N2/.I'-:4[Z53
    MV%%R%X40))^*,C<=5ZY@5FRG)R;?=W*%7?8BM!$*W!OT-D_9.96&$#.3M[14
    M6V,IYBK5S_CSG\6_.3Q0%TC)A5(Y#DW#17]H-E@80B2$7>W ONHD<)V_(F8X
    MM.F6T?_0!\,!):@#\D9U#.>,HWG]NL(7T#<_'%.N9I=)R;86E%O<U%6VA8T2
    M*!VJ2(2E>BD>1I/$JF#;)B'_0B8%0^2$0"+IT)A5MZO(E1/:'E:V#I[N
    M:RD[PX'%B=U\+T7D>IH>G"^2G[BW8/I)Q"I3+>YPXDS;[-QG=X.:Q7P`ID)5
    MA>$J'0&54BMCAV17*3=W83A@A01I?):2/AZRQ<)6T[VLZ/'*U:?\'F./&R/2
    M, C7@X<7-Z@_\LU\@_JIL;!>*$_<_#+K,<^QWI!!MD5F/3Q!7#HQKA+\$=\Q
    ML53\>*(=<P867/.0?"PF^>,#X%?F*7M;9J7]2;N_P?_GS///_ 3_7V<>@9\\
    MU^!O)"53^50%207^HX+7.93O2P=H(KFYJQ$@KE*.>JBNG#81+V ]>@]0^+!U
    M2RO=3GZ%U[+RC[D.BWN!R>V,+&_98T!RI=<I!\YB'T49$^9PWHA2*_N+L74/
    MDX,)&^.+L_?[Q[?@(7X4Z];I\$7!N] C%P,`DK4ZSYE(S S$ZQ8L?.G]/$Q_
    M:_SBU( GNQ"6'LF@5%))X92(,'2DW)9JS&+"" :>7L(>PI,@-!(A4\I2AE Z
    M-__0[KX$7;&05CM42(1#0LFKN[8`:$3JF^9DPK9AZ;;]`><VJNV:`!?"-HIM
    M+H3+\"=>WFW=JN+:4HNJVO)\!]JIZ=D-EY3A!BT:99*#-E&U)$E1I>'D!Y
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
    M(5'LC_/;8AK"/-]-UL>#ZV^J8<GQ?.+(,8\S;>P4D@V%R]-149VYR&@.^8
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
    M%&S7'GK*O;&[email protected]^E\=DOAU2/W'F3A.A+H&>3QE*ET^)8]F/X!^"MYP M5
    MR>X#`P#(_%$3)/OO)H^_"81Z-JO,\&]M`,^?P'U,SQD3SXW5E%LOTHJ$IG/[
    M6UA[@V#]^8;KQB7QF>)J#L&>+UL)B(2BC(KY7O& XDCW=EL)-G=CS7&QSRZ[
    M`37'`OQ$(]DH4P"3U!)I*?!1!R52[(>9:CUAQO@;9SFX3W#>((JS^<30;Y"]
    M60/0,B>@!Y&H];I[5:6$D%^3^_Q"C3GU^$CW5(?,OA3LJ]>[email protected];7M2WI+
    MSCSY1^<R<OK &8#*JVT9Z 'K.XW9'&AB^>'Y'&Z3[ PN8:YN$1X!'&1W3Z;V
    M">:LGGOYS)PZ;X^V0B>C.^HX:W_&]2_N;AZG'4L53U:7-$%-DQOMI7ULO)31
    M:V),(CF YQXA]9UE#7+HP6 ]#,*/TI(^?VM_:T\0^J@B`R\L]A-O'JN#0 T7
    MZB(:M_&LEFP^1JI:%XY(@<I@5[4\[]:1,5DH:G=.O^I7W3-3&>1^:W4I*C"*
    M)4*,2 ZDD\;.2\$`=D,;'WV#T!3)L@TMU:YA@PZ L@T%">]701WP]+D,8P6P
    M3_)TK0556:S'B2(T)EV=,E?\-!-;G>8@>0!_5 HHV$/=Z(@5SKTR\Z%4H.$^
    MFQK7MG_@+M1Y=0W9G3-6D>TBBU^9JOU"A-E[J.M)D4979M'7*10/O8^YKN&3
    MO?*]'<J[>NVK&1W)0+WF;=W+YQ7G=!CMP!>F+HX$$"D0I(HX;#37E,M'#C!"
    M"=+WQI4"^ -4:+=SYM&=(82<_=9S'FX?3/:"XJZY15)B<9).8].\T*YOX+I.
    M`Y![+KS]S!;AM/O.1S/XX<].\VO&ZOQ"94JGXXGH_F2#%7(3$D7R3VX^0FD<
    M`78-30JH_.>\R)T8GU,)35+FTK[L$Y<F]T8NXPMW+%^0!&Y&;%8)P3?$X^R(
    M3Q(H&(BJS9]%Y[%;K7QF-#^]N J\\ Z3Q6E3^ 1RS@NK<H2;BNH3YB@5NB-:
    MLN@G;"G7G4WQ.-N%R^E2MJ7+,=5]S<E.U"&K;*&^1W(MS/1:0N6.'/Q")=10
    M;)#H0S8S'&^VUU@`QND/ILETXR%P+9O/DP?V'4*>"[KZT@DGJ\PT=&+TCOC;
    MZA:*N8X0<^YT"-%"JR?2#-7?E,+/T1^:+.:&$(EAU\R?7G42UAE](&G8M*65
    MFE_T@:1 @>N O"WJPIP(=>Z@S3\A()J0$%02]RO5[5VE!V?MW)3W2"@BIQ')
    M)UK*1E:S+Y+(-'@799C,A 5\& M97BD0B:4>>',7'2MQ%73Q"<TO3 #%P(J[
    MV_BOQW)L*L:Y="SC<&%6$+H(K^+4.QB+97'4.N4[?7!\.+?+,Q";]K>D^>'F
    MT1H8.P?U7Q5-R9Z:"I[GQQX0AY^;!ER<9"5DE1USL;.I6GB!-<N `:=NH^W)
    M3/EIVZUVAJY^??<RTXHMB6MI/?$G]:)2DTJXT/R$7QBG4%A@T>L/X654)O_"
    M4!7DV _8V S%L+?_X?,K&T%P:=NQ_*0R@ A_HC(T_\UL] ^BX;$"L@K\1R3E
    M6!4UT"D"BB!^R6@]L*N@GZDAJ+]]("A02;<1AJZMBS$#0]-.;)\F\71&&H<P
    M3T%8F2)W28&O*#)/P4C9JURIXR1<S3=#@1J-[S_&/=;?7A:_MYJ\OYYV$QCF
    M0+FL'?67X[\(WK72^<9;JW/O"\-*A[N.PR(4U\I%\K'$,DCRO[+V8>D1]THB
    M$Q-("@M%A,JNJT;/(@ZD9ALAZB$Z]88KX#,FS:7VI;1-].GJBU<12C;9P=DA
    M'!))WMQ]#0A'I+YN3B9JZY9N.Q:&W(BS%>I91=R(O:H,>11LH_GB0[LTNSS'
    MM+0\/\V&?G1D=HGZI0YB"/(HS2R0L9P%.566_A]40ZL*N[^KAI[_I!I*,J,C
    MVVX9_H-JZ-8C3U!#EZMFKAC+`<M5A+Y@&,Z<%Q\JM2TZQ"@Q*'#(7Q@;PZR.
    M60<S@Y>MX29UP,3614^8@9,Q]XVN7[X7J 934:H>#G+H*O$>RA;T3D^(U[J\
    MC.P<:[email protected]'XFXF*K0P%034@.(^6DD#H9$>;C&0['Z)2_V8AB]U)(D
    M]:Z+J\Q9FJ<<6X%2@@[D[('+HM:HWP&[/R?_2$/L>ID(+$7D,_4`=8X"K=6>
    M8VBS&!:V(J!31Y(B0'EGC&>X/NU:#8Q.^W<E%F&CN%EB&*6HP=V:O$"RK5YL
    M6H4BQAK^CQ"VY1W\JZ!Y=4TV=+70;PA5#&R^H7.E-!IX#@5!MGW#:"ZRV;0]
    MXK4CR[&7V'W+2 ^U62'EGSU]J0'[R8Q7G,I3@7C6'+F_]5$J+8(@4X76G39,
    MR1D1XAFBM^#M"'SB[F'ZI-WG1.SH>6QNZU&%2^,Z%>3\B7WJN!L0^V[+H.$.
    M,EXFU7-@ST$SG]W+?=FSMLBSC_%8>%A@%9J\9@Z=23HBXHIIKWPZQ3J-7$G<
    MCM60W*G_LZ<?EJ2U^Q71ZH3$_/T6!=@M4[Q-BN?H'H<FFBS];P%1[QDGQ#LH
    M'4;.]\@7^;H=G&<KR=?K@T*-#+:)%B6\XE7T,='1W3/:R];*R0DVV6J*.56V
    M"F\N=\/OP,3T7<CT>T[XY3$S4T*5N91\>/Z[J5R>H:;L_Y$0-<:)5MB$:HZ[
    MF,CQQI,L"HX4J(H+L$$M!%F:CB%4.^L6N8R/K@4]=@?FBU*,317%K*REV2"6
    MFN1C95&,XJVGHKYD"MSZ1JK6J%A-J3'BZ*ZU+:3Z9J&$(5SH`29^R+L/IPI+
    M(S^ISYR))W4L/=6.$WX?*]9.E=!.#==.E6E?J9;OM XCE1.J33NF=O2WW"/4
    M!I7&0H-7!>P63YGIA'97-MKO7,6Y*401[4R]>!64P48G/2W\E&:.Z0NM(1?.
    M=?>P*2%C416=50H\[4G1^'D',1GFG.5*!&AA)J(%8[KWKBZRB9>SUA-5[?$L
    M.B0YQ'@Y_'3H"8&1/:_?,$.ET"WDK3;[email protected] 3GF'^PZI2[1H&(*<Z2
    MOY:@.?VL9:DZ;!!^M1SJ<$M;_K>$B(0*B=,[^DM"/*%?%E(N<["R0U$>USM'
    M]'7:DLD+=]PBVMNBKVC8:LIO70?$-UX+/IQ.U9%O:^6_`U''V<9'-$:K$6W(
    M84895K*/86\G\(C6W#.8_YI]+IO-NS-X)&ZJ.+4DD)\EG.,)QF:EP"KHB7/]
    MUN<0^B/T$&%3B#/;=9JS[>U6509A<VN=U5\*E,'5&BS=I-HHUWXX\RT`\4Z=
    MK!\V89N8O'1V439_4X+J_8O3$]A)K8AM>.4AL] .7/</R/P4_,=CG/VFSJTF
    M7)<U7%&[31G_VV/2R*B;D<$E=O^O9-@N18$*K&>2C5)ZWQFHTOA3&=:S/H^W
    M(].Z0(XQ`CZCT!N3YIJ01?KD6WKR-M]R"+WAL77X<G,.B+WR9<_+D$X?X_ V
    M_I80-],;/>%ZUA?<#.]4QKJ8PL<"!7MF?:3$&TB@!/EMJSD#,,G1G"DV-<Z\
    M?M+AHE@J+D$QGP%.!'4*E(.JV=;1UM6#PL=MCZ^:-LO8(S^*M]-WOET;3>6B
    M='LGY\LW2Q;29XH7Y<O72Q:29XHGY>H%.W(%..SD]0H[!%CC!REB8V^-&;
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
    M[%DJ*@Q;V;$J9?_1"\Q\3 ZT++ZB11O^]>CA,2_ _A&IK$CB'">4! -">5
    MX%P):C6=0+0Q@EK%=>A>-@C1QE*^RA))H> I"+//;QN&Q6<)$1- `(!PH#^5
    M,9;_63!_U;/(."V+55KDH$O@YT^71HCJ\];)3E(8E#]T<2TMZ_1:DPH9-#(I
    M,<2B+,0_?A!RP$)'R%XE?GMTVW"86M:GR]3UDRKD#$@,B/*X8EY*`R=J6N 2
    MI]]S_0+Y.<:D?+__9 =E85,7UKJT>Q0IPV3YN8O,W5'15(.\^\)BO*VDY.";
    MK#"Y`KT1$%LODT39D%'VMZ0][BBP4UMW*#,]2P`Q%%5]N#46#7MMH6T:\@YB
    M=\96UR"))+P&F^M"IFJP&\_['?O$PZ=K;X8Y?N]$+:ID=#J[&G+SC>4BE[)O
    M0,;ZW-KAXYO>JKL-CW[F/E\GA6F_U0](M1S:"7!C[$\=6[*G2F-2OU_%Z6H-
    M6PH4.84Y:0T.%1SO%=D,U9JC3^D4\T;4!4:M^Y0W`4.,MT<K26[A1X2+4N6>
    M""M($8M'G]M+2I)\@H0YFQ(9/=-<LE^?N>>[R!FPC H>).C,I@G-$03D]]2U
    M9.TY;<=U[6M*:3_RL!.ATY1_2J4>?P`0R74ZV#SBL[9(#/ 1/R=M:/KAXV<B
    M12OS3*+T^@[T*_!.V]7I"3\#3PG\)Q3_E8%:Q.AG?*V,_AYJ>2,'6QMK!Z._
    M(==+854:20Y9J[B1;'>H4!,*-2&\JPYT@ ,_$)Z6'%(4@&F:I'A_"BYU8NYX
    M#C,2M^?3D 0NX[0^(]V+X8X(QJ.9R%SNO=[#<JWQI+K)=Z^)Z.SLCB\A:I0C
    M1SV"X,B:";1D2,P(_0FJQ49 2K%$^:)"L:C'$0%J& Y3AIH]1I JA)I&1Z,.
    MCUE:>Q8-^R=L+L')%$6CM'5Z'&[CU';E.^CJ]>KS;5^%@D0'JF!<4O%*B''I
    M`A;.N":FZO547[T+4_8G@+DL$.F_-1 A?/2+/5M+7 >DO49[MJU==)987+9$
    MZ>V74N6Q3F6?II5JN%6$AE7<FJ"L4S+<E?MX;8Q\MJTN)1&4FQH--!:86V?W
    M;[-0R<#N- B)0BQVE&A0.G#X*LY'\X)\]V6 =BM9N^+LTB&8ST**]L6\;AX]
    MB1ZJ<KOE*Q],Z!D8,,'JL@4H) R#Y+.4^3BUGG:W%*5H4^$6D#!&RUM[O![L
    M4%6]U@5ZBUF;Y01M7G*(3[2>,-?YH5EXNA?URXC/C]4.S8J;;V:'D1D/>:;F
    M^YI^:$Y4%JH>B@7GBI2+I#?!E7C$BZFUX43KVU+R0$4:HO6?K=O&<WO0M9*I
    M8VCN0/H@`$439@7)'F97(2HB%FQ/T,]PB!@-PV+!EE9)(ST*R?(@ILC#9Q1?
    M@(%\3CB./W^M@5=RT0V9ZA9^5=GA`K+Q0C0+.Y0F'. *#8G6ML[![''L364E
    MT'X#VOYJ=,;P-3H:(2SP],X&1QYG6A5\GRZ5'\?DM>866<1V(W^9&+/ZPY#]
    M'FQ;ENH-=@0O:%8GUS),:A)^5R2#*P"9G9]4%7I!^@C,5*:+OKF%G_A;G%8C
    M7:33BSCX3+[.30OF\<6PHPPQU-<;CH(M!#4Q,YQ,&8;0M,E1J3"-N1/F7(.[
    MSUU/-+]N_I"4U,K\GQD/#_1/68_BOW_S_\ITB4J7-K.T\&]C!6^?BKV75JP=
    M5B/EDK[YO_$:0(!8"GCREMC+L]R+GNER4!6>?$RP6==62($)FJ.PN5RV>[@T
    M:(P?'( Q;COW,078=^GR,TV-#05@?IYAS>O`U&8JP*4!<YL<''=PFDF/WT
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
    MZS;0`>.>_1C^!_5V1

  • Count digital events on a Counter with pci-6602 with callback on CVI

    Hi,
    I'm using a PCI-6602 card with CVI 8.5 and I need to trig on event.
    On every pulse I received, I need to do some actions like increasing a counter, send a message on Rs232 etc.. I don't want to do any loop checking that the counter value has changed. I would like to use a callback to execute this code only on the edge or counter value event.
    My problem is that I don't know which function can do this. Is there any way to get an event on a pci-6602? 
     Thanks 
    James 
    Solved!
    Go to Solution.

    Hello.
    It's completely possible to create a callback that will allow you to do what you want when a edge will occur on an external signal you define.
    To do this, you can for exemple create a counting edges task that will use one of the 6602 counters,and the set your external signal to be the source of your sample clock.You'll then be able to register a callback with the function DAQmxRegisterSignalEvent, and your callback will be called each time an edge will occur on your specified sample clock source.
    Here's 2 links that explain the events in DAQmx and how to handle them in CVI. The example ReadDigChan-ChangeDetectionEvent.pr that ships with DAQmx examples (Hardware Input and Output<<DAQmx<<Digital measurements) can be very useful to understand how to do. This example creates a signal event callback to detect change detection for digital inputs.
    Regards.

  • Queue with callback function not dequeuing

    Hi,
    I would like to ask you for help or for a hint regarding our problem with the queue:
    A trigger is enqueuing to a queue. This works fine, but the callback function is never called. The queue already worked for a while, but since i changed something at the procedure called by the callback it does not work anymore.
    I already have tried the following:
    -Stopping and restarting
    -Dropping and recreating (with the scheduler having no jobs anymore)
    -Dropping, restarting the database and recreating
    None of these worked. Where do I fail, when considering that the queue with the same scripts worked already? I post the script for creating the queue and adding the subscriber:
    CREATE OR REPLACE TYPE pat_history_queue_payload_type AS OBJECT
    ( TSTAMP VARCHAR2(22 CHAR),
    TYP VARCHAR2(10 CHAR),
    DELTA_MENGE NUMBER,
    ORIGIN VARCHAR2(1 CHAR),
    TEXT VARCHAR2(1000 CHAR),
    QL_TSTAMP VARCHAR2(22 CHAR)
    BEGIN
    DBMS_AQADM.CREATE_QUEUE_TABLE (
    queue_table => 'pat_history_queue_table',
    queue_payload_type => 'pat_history_queue_payload_type',
    multiple_consumers => TRUE
    END;
    BEGIN
    DBMS_AQADM.CREATE_QUEUE (
    queue_name => 'pat_history_queue',
    queue_table => 'pat_history_queue_table',
    max_retries => 10
    DBMS_AQADM.START_QUEUE (
    queue_name => 'pat_history_queue'
    END;
    BEGIN
    DBMS_AQADM.ADD_SUBSCRIBER (
    queue_name => 'pat_history_queue',
    subscriber => SYS.AQ$_AGENT(
    'pat_history_queue_subscriber',
    NULL,
    NULL )
    DBMS_AQ.REGISTER (
    SYS.AQ$_REG_INFO_LIST(
    SYS.AQ$_REG_INFO(
    'pat_history_queue:pat_history_queue_subscriber',
    DBMS_AQ.NAMESPACE_AQ,
    'plsql://PAT.HISTORY_QUEUE_DISTRIBUTION.CALLBACK',
    HEXTORAW('FF')
    1
    END;
    The function CALLBACK which is called by the queue, is never called, I checked that with log messages. Also the package that contains the function is compiled ok.
    Thanks.
    Roland

    Hi,
    Does the subscription show up correct in sys.reg$ ?
    Regards,
    Harry
    http://dbaharrison.blogspot.com/

  • Memory leak with callback function

    Hi,
    I am fairly new to LabWindows and the ninetv library, i have mostly been working with LabVIEW.
    I am trying to create a basic (no GUI) c++ client that sets up subscriptions to several network variables publishing DAQ data from a PXI.
    The data for each variable is sent in a cluster and contains various datatypes along with a large int16 2D array for the data acquired(average array size is 100k in total, and the average time between data sent is 10ms). I have on average 10 of these DAQ variables.
    I am passing the same callback function as an arguement to all of these subscriptions(CNVCreateSubcription).
    It reads all the correct data, but i have one problem which is that i am experiencing a memory leak in the callback function that i pass to the CNVCreateSubscription.
    I have reduced the code one by one line and found the function that actually causes the memory leak, which is a CNVGetStructFields(). At this point in the program the data has still not been passed to the clients variables.
    This is a simplified version of the callback function, where i just unpack the cluster and get the data (only showing from one field in the cluster in the example, also not showing the decleration).
    The function is passed into to the subscribe function, like so:
    static void CNVCALLBACK SubscriberCallback(void * handle, CNVData data, void * callbackData);
    CNVCreateSubscriber (url.c_str(), SubscriberCallback, NULL, 0, CNVWaitForever, 0 , &subscriber);
    static void CNVCALLBACK SubscriberCallback(void * handle, CNVData data, void * callbackData)
    int16_t daqValue[100000];
    long unsigned int nDims;
    long unsigned int daqDims[2];
    CNVData fields[1];
    CNVDataType type;
    unsigned short int numFields;
    CNVGetDataType(data, &type, &nDims);
    CNVGetNumberOfStructFields (data, &numFields);
    CNVGetStructFields (data, fields, numFields); // <-------HERE IS THE PROBLEM, i can comment out the code after this point and it still causes a memory leak.
    CNVGetDataType(fields[0], &type, &nDims);
    CNVGetArrayDataDimensions(fields[0], nDims, acqDims);
    CNVGetArrayDataValue(fields[0], type, daqValue, daqDims[0]*daqDims[1]);
    CNVDisposeData(data);
    At the average settings i use all my systems memory (4GB) within one hour. 
    My question is, have any else experienced this and what could the problem/solution to this be?
    Thanks.
    Solved!
    Go to Solution.

    Of course.....if it is something i hate more than mistakes, it is obvious mistakes.
    Thank you for pointing it out, now everything works

  • Using JCO with callback

    Hi,
    I'm not sure if there may be a better forum for my problem as I'm not using JCO on an application server (but I couldn't find a better one).
    I'm currently trying to call some function modules that use callbacks. in order to have a easy understandable example I tried to call the function "STFC_CONNECTION_BACK". Well, as soon as I request a callback the program terminates with some kind of error (the error itself doesn't help me).
    Has anybode here ever tried to implement necessary RFC-Callbacks using JCO? I'm curious that i couldn't find any documentation about callbacks regarding JCO while LIBRFC or .NET-Connector seem to cover that topic.
    Any helpful answer will be rewarded,
    thanks in advance,
    Michael

    Hi,
    After getting the value list from the r/3 you need to addthe value list into an arraylist and then set the arraylist in the application scope.
    Now use the html:options collection tag :
    eg
    <html:select property="selectedItem">     <html:options collection="customers" value="id" label="name" /></html:select>
    Where customers is the bean name.
    This is will solve the problem
    Thanks
    Ritu

  • How : Invoke asynchronous BPM process with callback within loop?

    Hi All,
    I'm currently using the 11g suite to create 2 BPM processes (Validate and Review). Process Validate is asynchronous and has a callback facility. I intend to invoke Validate from Review as a subprocess. My question would be, is it possible to invoke an asynchronous process with a call back? Can this be done in a loop?
    JDev : 111.1.1.4
    Thanks,
    PP.

    Sai,
    Which IDE are you using to build the client? (In fact it doesn't matter)
    Just put the jar files path into the classpath as John told. In order to find which jar files you need in this process, you can use eclipse java - jar class finder (which works with NWDS as well). Give it the class name(in this case commons.bla.bla...) and your jar files' folder, it will show you which jar file you need to put into the classpath.
    Just a little googling may help you with the class finder

  • Service MBean with callback Method?

    Hi,
    I have an application written for JBoss AppServer. There is a ManagedBean that extends a JBoss specific class org.jboss.system.ServiceMBean. This class provides a callback Method "startService()" wich is called by JMX.
    I now want to migrate to WebLogic 10. My question is (as I am not deep into MBeans) is there something similar in WebLogic? Is there an interface provided to achieve a service-like behavior like I mentioned? How can this be done?!
    Thanks in advance.
    Cheers

    Callback functions are more performant. Event listeners allow for a higher degree of decoupling in some cases, because you often don't need to know where the thing is you're listening to and the thing dispatching the event doesn't need to know or care who, if anyone, is listening. And as soon as you need for more than one thing to listen, callbacks get more complex (see AS3 Signals).
    With either callbacks or event listeners, keep in mind you are handing a reference to the listening object to the dispatching object. Make sure to clean everything up when the listening object is no longer in use, or you can wind up with memory leaks.

  • Async webservice with Callback

    Hi Experts,
    How to call a Asynchronous Microsoft webservice(Used callback mechanism) from XI?
    First I have to call the Microsoft webservice, it will return acknowledgement about the status. Again I have to invoke the webservice then it(microsoft) will return the response.
    How to do the above steps using XI? Please share your suggestions
    Regards
    Sara

    Hi Sara,
    Major thing is if ur  webservice accepts some data and gives some response, then both input and output should get imported into XI as seperate message types (Under Messages Tab) as shown in step 1 of ur referred weblog
    /people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi
    So there u must have 2 messages: 1 for request and 1 for response. This depends upon ur wsdl structure. Once u get these messages, u could proceed with ur message mapping
    Steps are,
    1.import the wsdl file in Integration Repository in Integration Objects->external definitions.
    2.then create message types using the imported WSDL request and response.
    3.Other things are as usual.
    using SAP XI we can easily connect to webservices pls chk the links
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/00c36ef6-dab9-2910-6ca9-a96b820de582
    /people/yomeshp.sharma/blog/2006/05/31/integrating-jdedwards-system-with-xi-using-iway-adapter-part--iii
    /people/anton.wenzelhuemer/blog/2006/03/05/integrating-php-and-abap-using-webservices
    /people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap
    http://help.sap.com/saphelp_nwpi71/helpdata/en/11/e8179b247e4720882512a04041491d/frameset.htm
    Regards,
    Vinod.

  • BaCopyFileProgress with callback not working with D11.5?

    I did a project last year using D10 & Buddy API 3.76 with baCopyFileProgress (callback handler enabled) and everything worked. I’ve done other projects since using D11.5, Buddy API 3.76 and baCopyFile (no callback) and everything worked. Now I’m updating last year’s project with the callback and it locks up (the callback is never called) both with D11.5 + Buddy API 3.76 and D11.5 + Buddy API 4.05 (demo). It locks up even if I just recompile last year's project with D11.5. I’m in the process of ordering the upgrade to Buddy API but the demo xtra isn’t working, I have my doubts registering is gonna fix it. Anyone else having trouble (or not) with D11.5 + Buddy API + baCopyFileProgress?

    the help files still won’t open on XP and I’d bet the system copy animation and progress callbacks are related.
    The help files don't open because I think the Director development team changed some mechanism internally and neglected to tell anyone. I don't think this is related at all to the callback function not being called or the copying not working when it's enabled.
    FWIW: in order to open the Help file, I place the xtra and its help file in the same directory (\Adobe Director 11\Configuration\Xtras\Scripting\Buddy API\) and add a Director file to the same folder with the following code in it:
    on prepareMovie
      tPath = _player.activeWindow.filename
      tDelim = the itemDelimiter
      the itemDelimiter = the last char of the moviePath
      delete the last item of tPath
      tPath = tPath & the itemDelimiter
      the itemDelimiter = tDelim
      OK = baOpenFile(tPath & "Buddy API Help.chm", "maximised")
      --  put "exists:", baFileExists(tPath & "Buddy API Help.chm"), RETURN, tPath & "Buddy API Help.chm"
      _player.activeWindow.forget()
    end
    This file has a single sprite channel, is 1x1 pixels with no titlebar visible. I save it as "Buddy API Help" and I now have an entry under Xtras -> Buddy API -> Buddy API Help

  • Handle sequence of actions with callbacks

    I am programming a measurement sequence involving readings from a DVM (Keithley 2002) and activating switches on the 2002 and on another instrument.
    The readings are for temperature (potentiometric across a reference and a probe, so it involves several voltage readings and switch activations), as well as voltage across several channels. They use the same instrument in the same mode (DCV).
    There is a specific measurment sequence I need to keep (voltage1, voltage 2, temperature, voltage 3, ...).
    The DVM is set up with an integration time of about 1 s, so there is some idle time from triggering to reading ready, where processing or user events could be handled, but I need to be able to return to the point in the main sequence (or the temperature measurement sequence) from where I came.
    So presently I have the reading routine just call the (hierachy) of subroutines for temperature and voltage, and when reading voltage, circle in a loop checking the STB, because I do not really know how to handle it by using a CallBack (how to "get back" to the correct place in the sequence).
    In other situations I have used a global status variable and a switch statement in the main routine, and have the function getting the reading, change the status variable and then post a deferred call to the main sequence routine before it returns, but here it would require several levels and a LOT of states.
    I have looked for a "standard" LabWindows way of doing this, but not really found anything.
    Any help is appreciated, e.g. pointers to examples
    Thanks

    Hello HDJ,
    I don't know how your code (especially your main function) currently looks like, but there are a few useful things you do/use.
    Using a state machine like approach would indeed be a good start, but of course you would like to maintain a responsive User Interface (eg. stop/abort buttons).
    What you could do is the following:
    - Implement your state machine in a separate thread (for example by using the functions Anders has shown).
    - Make your "state machine thread/loop” driven by thread safe queues (http://zone.ni.com/reference/en-XX/help/370051Y-01/cvi/programmerref/threadsafequeue/)
      This allows you to:
      1) receive queue elements from the UI (callbacks)
      2) receive queue elements from the state machine itself
      3) receive queue elements from any other parallel thread (including other acquisition related callbacks).
    - Provide the necessary states in this state machine to handle both User Interaction (eg. stop/abort ) as well as the continuation from step 1 to step 2 and so on.
    This includes but is not limited to an abort state, init state, DoStepX state, Waiting for response state(s)…
    To be able to give you some more precise information I would like to ask you if you can give more information concerning the following things?
    - Are you currently working on a fixed order and functionality sequence (always step A first, then step B , then step C, etc..) ?
    Or is the order of the different steps (and if they should be executed or not) in your sequence dependent  on the result of each (or multiple) step(s)?
    - Do you have multiple versions of the sequence that use the same steps (in a different order) or do you only have 1 possible sequence?
    - How does a current (working) implementation of your sequencer look like?
      (this can be shown in pseudo code) This can give a better idea of what could be improved and which limitations are imposed upon it.
    Kind Regards,
    Thierry C - Applications Engineering Specialist Northern European Region - National Instruments
    CLD, CTA
    If someone helped you, let them know. Mark as solved and/or give a kudo.

  • Queue with callback function - strange behaviour when using max_retries

    Hi,
    I hope someone can tell me what is wrong or can explain the following strange behaviour to me.
    I am using one queue with a registered callback function. To test the behavoiur in case of an error I tested different settings, with or without explicit exception queue and with or without parameter max_retries.
    Database Version is 11.2.0.2.   Enterprise Edition
    I enqueue 10 messages in a loop.
    I define no exception queue and do not set max_retries
    ==> all messages stay in the queuetable with q_name = AQ$_... (implicit exception queue) and retry_count = 5
    I define no exception queue and set max_retries = 4
    ==> 1 message stays in the queuetable with q_name = AQ$_... (implicit exception queue) and retry_count = 4
           9 messages stay in the queuetable with q_name = nomal queue name and retry_count = 0
    I define an exception queue and set max_retries = 4
    ==> 1 message is transfered to the Exception Queuetable with retry_count = 4
           9 messages stay in the normal Queuetable and retry_count = 0
    I define an exception queue and do not set max_retries
    ==> all 10 messages are transferred to the Exception Queuetable with retry_count = 5
    I have no explanation for the behaviour in case 2 and case 3.
    To create the queue and the callback I use this code (reduced to minimum):
    begin
       DBMS_AQADM.CREATE_QUEUE_TABLE(Queue_table        => 'TESTUSER.TEST_TABELLE'
                                   , Queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'
                                   , sort_list          => 'enq_time'
                                   , multiple_consumers => FALSE
       DBMS_AQADM.CREATE_QUEUE( queue_name  => 'TESTUSER.TEST_QUEUE'
                              , queue_table => 'TESTUSER.TEST_TABELLE'
    --                          , max_retries => 4                     uncomment this line to set max_retries
    -- uncomment the following Block to use an explicit Exception Queue
    /*   DBMS_AQADM.CREATE_QUEUE_TABLE(Queue_table        => 'TESTUSER.TEST_TABELLE_EXC'
                                   , Queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'
                                   , sort_list          => 'enq_time'
                                   , multiple_consumers => FALSE
       DBMS_AQADM.CREATE_QUEUE( queue_name  => 'TESTUSER.TEST_QUEUE_EXC'
                              , queue_table => 'TESTUSER.TEST_TABELLE_EXC'
                              , queue_type  => dbms_aqadm.EXCEPTION_QUEUE);
       DBMS_AQADM.START_QUEUE('TESTUSER.TEST_QUEUE');
    end;
    create or replace procedure test_procedure
      (context  RAW
      ,reginfo  sys.AQ$_reg_info
      ,descr    sys.AQ$_descriptor
      ,payload  VARCHAR2
      ,payloadl NUMBER
      ) authid definer
      IS
      -- für Queue
      dequeue_options   DBMS_AQ.dequeue_options_t;
      message_prop      DBMS_AQ.message_properties_t;
      message_hdl       raw(16);
      message           sys.aq$_jms_text_message;
      l_daten           VARCHAR2(32767);
      ex_hugo          EXCEPTION;
      BEGIN
        dequeue_options.msgid         := descr.msg_id;
        dequeue_options.consumer_name := descr.consumer_name;
        dbms_aq.dequeue(descr.queue_name, dequeue_options, message_prop, message, message_hdl);
        -- to provoke an error
        RAISE ex_hugo;
        -- regurlar coding
        commit;
    exception
      when others then
           rollback;
           RAISE;
    end;
    DECLARE
       reginfo1    sys.aq$_reg_info;
       reginfolist sys.aq$_reg_info_list;
    BEGIN
       reginfo1 := sys.aq$_reg_info('TESTUSER.TEST_QUEUE', DBMS_AQ.NAMESPACE_AQ, 'plsql://TESTUSER.TEST_PROCEDURE?PR=0',HEXTORAW('FF'));
       reginfolist := sys.aq$_reg_info_list(reginfo1);
       sys.dbms_aq.register(reginfolist, 1);
       commit;
    END;
    to enqueue my messages i use:
    DECLARE
      message            sys.aq$_jms_text_message;
      enqueue_options    dbms_aq.enqueue_options_t;
      message_properties dbms_aq.message_properties_t;
      msgid              raw(16);
      v_daten            clob;
    BEGIN
       message := sys.aq$_jms_text_message.construct;
       for i in 1..10
       loop
          v_daten := '{ dummy_text }';
          message.set_text(v_daten);
    -- uncomment the following line to use an explicit Exception Queue     
    --      message_properties.exception_queue := 'TESTUSER.TEST_QUEUE_EXC'; 
          dbms_aq.enqueue(queue_name         => 'TESTUSER.TEST_QUEUE',
                          enqueue_options    => enqueue_options,
                          message_properties => message_properties,
                          payload            => message,
                          msgid              => msgid);
          message.clear_properties();
       end loop;
       commit;
    END;

    Hi Chris,
    I tried to reproduce your complaint, but was unable to. I didnt use auditting however, just a series of "select user from dual" with proxy authentication. You might want to see if you can put together a small complete testcase for this and open a sr with support.
    Cheers
    Greg

Maybe you are looking for