From do-not-reply at jboss.com Sat Jan 29 10:59:02 2011 Content-Type: multipart/mixed; boundary="===============1072565547026409657==" MIME-Version: 1.0 From: henk de boer To: jboss-user at lists.jboss.org Subject: [jboss-user] [JBoss Tools] - JSF 2.0 and other issues in Visual Editor Date: Sat, 29 Jan 2011 10:59:02 -0500 Message-ID: <2-584074-3-8848-1296316631760.jivesbs.jivemailuser@http://community.jboss.org> --===============1072565547026409657== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable henk de boer [http://community.jboss.org/people/henk53] created the discuss= ion "JSF 2.0 and other issues in Visual Editor" To view the discussion, visit: http://community.jboss.org/message/584074#58= 4074 -------------------------------------------------------------- When using JSF 2.0 & Facelets, a few problem occur in the JBoss Tools Visua= l Editor. I'm using 3.2 CR1. *EL methods with parameters* When I call a method via EL with parameters (which thus results in a value)= an error is flagged: http://community.jboss.org/servlet/JiveServlet/showImage/2-584074-11266/el= _parameters.png http://community.jboss.org/servlet/JiveServlet/downloadIma= ge/2-584074-11266/450-54/el_parameters.png = Because a method is involved, the editor seems to think it's a method expre= ssion, but this is clearly not the case. Even with the =3D=3D operator no m= ethod expression is involved here. The =3D=3D operator should even make it = more clear the component to which this EL expression is bound will receive = a value. Needless to say, the code runs perfectly well on JBoss AS 6. *Annotated managed beans* When I annotate a JSF managed bean instead of declaring it in faces-config.= xml, the editor does not seem to have any knowledge of the bean. Neither na= vigate into and auto-completion work. E.g. if I have the following bean: import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import javax.faces.event.ActionEvent; =C2=A0 @ManagedBean @ViewScoped public class MyBean { =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0public String getFoo= () { return "foo"; } =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0public void setFoo(S= tring foo) {} =C2=A0 } =C2=A0 And a simple Facelet using this bean: =C2=A0 =C2=A0 = =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2= =A0 = =C2=A0 Then I can't do anything in the editor with "myBean". Here too, the code ru= ns fine on JBoss AS 6. *Implicit EL Objects* The editor does not seem to have full knowledge about the EL implicit objec= ts. When trying to auto-complete an EL expression bound to a component, e.g= . certain EL implicit objects pop up, but = others not. Available are: * applicationScope * component * cc * cookie * facesContext * flash * header * headerValues * initParam * param * paramValues * requestScope * resource * sessionScope * view * viewScope Missing are thus: * application * request * session Then for some of those implicit EL objects it makes sense to be able to nav= igate into them and have auto-completion. This is exactly what the default = Eclipse 3.6.1 "HTML Editor" allows. E.g. navigating into +view+ would bring= me to UIViewRoot and navigating into +component+ would bring me to UICompo= nent. For auto-completion this is even more convenient. Finally, for some reason implicit objects are only available in the editor = when I bind an expression to a component's attribute. If I directly start a= #{} expression on a Facelet and try to auto complete, then no implicit obj= ects show up at all. *Duplicate tag suggestions* When I try to auto complete tags, the editor shows me a lot of duplicate su= ggestions: http://community.jboss.org/servlet/JiveServlet/showImage/2-584074-11267/du= plicate_tag_suggestions.png http://community.jboss.org/servlet/JiveServlet= /downloadImage/2-584074-11267/425-475/duplicate_tag_suggestions.png = As can be seen, basically every suggestion appears twice. When I first rest= arted Eclipse after the initial installation of JBoss Tools Visual Editor (= Richfaces), I even saw the same ones appearing 3 times. This is not the end= of the world, but it does look a little awkward. I hope this feedback will be valuable to you ;) -------------------------------------------------------------- Reply to this message by going to Community [http://community.jboss.org/message/584074#584074] Start a new discussion in JBoss Tools at Community [http://community.jboss.org/choose-container!input.jspa?contentType=3D1&con= tainerType=3D14&container=3D2128] --===============1072565547026409657== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv L0VOIj4KPGh0bWw+Cjxib2R5IGxpbms9IiMzNTU0OTEiIGFsaW5rPSIjNDI2MmExIiB2bGluaz0i IzM1NTQ5MSIgc3R5bGU9ImJhY2tncm91bmQ6ICNlMmUyZTI7IG1hcmdpbjogMDsgcGFkZGluZzog MjBweDsiPgoKPGRpdj4KCTx0YWJsZSBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiIg Ym9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICNkYWRh ZGE7IG1hcmdpbi1ib3R0b206IDMwcHg7IHdpZHRoOiAxMDAlOyAtbW96LWJvcmRlci1yYWRpdXM6 IDZweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7Ij4KCQk8dGJvZHk+CgkJCTx0cj4KCgkJ CQk8dGQ+CgoJCQkJCTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2lu Zz0iMCIgYmdjb2xvcj0iI0ZGRkZGRiIgc3R5bGU9ImJvcmRlcjogc29saWQgMnB4ICNjY2M7IGJh Y2tncm91bmQ6ICNkYWRhZGE7IHdpZHRoOiAxMDAlOyAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsg LXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7Ij4KCQkJCQkJPHRib2R5PgoJCQkJCQkJPHRyPgoJ CQkJCQkJCTx0ZCBiZ2NvbG9yPSIjMDAwMDAwIiB2YWxpZ249Im1pZGRsZSIgaGVpZ2h0PSI1OHB4 IiBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDIwcHg7IC1t b3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiAzcHg7IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdo dDogM3B4OyAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7IC13ZWJraXQtYm9y ZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OyI+CgkJCQkJCQkJCTxoMSBzdHlsZT0iY29sb3I6ICMz MzMzMzM7IGZvbnQ6IGJvbGQgMjJweCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBtYXJn aW46IDA7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Ij4KCQkJCQkJCQkJPCEtLSBUbyBoYXZl IGEgaGVhZGVyIGltYWdlL2xvZ28gcmVwbGFjZSB0aGUgbmFtZSBiZWxvdyB3aXRoIHlvdXIgaW1n IHRhZyAtLT4KCQkJCQkJCQkJPCEtLSBFbWFpbCBjbGllbnRzIHdpbGwgcmVuZGVyIHRoZSBpbWFn ZXMgd2hlbiB0aGUgbWVzc2FnZSBpcyByZWFkIHNvIGFueSBpbWFnZSAtLT4KCQkJCQkJCQkJPCEt LSBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIG9uIGEgcHVibGljIHNlcnZlciwgc28gdGhhdCBhbGwg cmVjaXBpZW50cyBjYW4gbG9hZCB0aGUgaW1hZ2UuIC0tPgoJCQkJCQkJCQk8YSBocmVmPSJodHRw Oi8vY29tbXVuaXR5Lmpib3NzLm9yZy9pbmRleC5qc3BhIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9u OiBub25lOyBjb2xvcjogI0UxRTFFMSI+SkJvc3MgQ29tbXVuaXR5PC9hPjwvaDE+CgkJCQkJCQkJ PC90ZD4KCgkJCQkJCQk8L3RyPgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx0ZCBiZ2NvbG9yPSIjRkZG RkZGIiBzdHlsZT0iZm9udDogbm9ybWFsIDEycHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsgY29sb3I6IzMzMzMzMzsgcGFkZGluZzogMjBweDsgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0 b21sZWZ0OiA0cHg7IC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNHB4OyAtd2Via2l0 LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1s ZWZ0LXJhZGl1czogNXB4OyI+PGgzIHN0eWxlPSJtYXJnaW46IDEwcHggMCA1cHg7IGZvbnQtc2l6 ZTogMTdweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPgogICAgSlNGIDIuMCBhbmQgb3RoZXIgaXNz dWVzIGluIFZpc3VhbCBFZGl0b3IKPC9oMz4KPHNwYW4gc3R5bGU9Im1hcmdpbi1ib3R0b206IDEw cHg7Ij4KICAgIGNyZWF0ZWQgYnkgPGEgaHJlZj0iaHR0cDovL2NvbW11bml0eS5qYm9zcy5vcmcv cGVvcGxlL2hlbms1MyI+aGVuayBkZSBib2VyPC9hPiBpbiA8aT5KQm9zcyBUb29sczwvaT4gLSA8 YSBocmVmPSJodHRwOi8vY29tbXVuaXR5Lmpib3NzLm9yZy9tZXNzYWdlLzU4NDA3NCM1ODQwNzQi PlZpZXcgdGhlIGZ1bGwgZGlzY3Vzc2lvbjwvYT4KPC9zcGFuPgo8aHIgc3R5bGU9Im1hcmdpbjog MjBweCAwOyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNkYWRhZGE7IGhlaWdodDog MXB4OyI+Cgo8ZGl2IGNsYXNzPSJqaXZlLXJlbmRlcmVkLWNvbnRlbnQiPjxwPldoZW4gdXNpbmcg SlNGIDIuMCAmYW1wOyBGYWNlbGV0cywgYSBmZXcgcHJvYmxlbSBvY2N1ciBpbiB0aGUgSkJvc3Mg VG9vbHMgVmlzdWFsIEVkaXRvci4gSSdtIHVzaW5nIDMuMiBDUjEuPC9wPjxwIHN0eWxlPSJtaW4t aGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsiPjxzdHJvbmc+RUwgbWV0aG9kcyB3aXRoIHBhcmFt ZXRlcnM8L3N0cm9uZz48L3NwYW4+PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdo dDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+V2hlbiBJIGNhbGwgYSBtZXRob2Qg dmlhIEVMIHdpdGggcGFyYW1ldGVycyAod2hpY2ggdGh1cyByZXN1bHRzIGluIGEgdmFsdWUpIGFu IGVycm9yIGlzIGZsYWdnZWQ6PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDog OHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+PGEgaHJlZj0iaHR0cDovL2NvbW11bml0 eS5qYm9zcy5vcmcvc2VydmxldC9KaXZlU2VydmxldC9zaG93SW1hZ2UvMi01ODQwNzQtMTEyNjYv ZWxfcGFyYW1ldGVycy5wbmciPjxzcGFuPiBodHRwOi8vY29tbXVuaXR5Lmpib3NzLm9yZy9zZXJ2 bGV0L0ppdmVTZXJ2bGV0L2Rvd25sb2FkSW1hZ2UvMi01ODQwNzQtMTEyNjYvNDUwLTU0L2VsX3Bh cmFtZXRlcnMucG5nIDwvc3Bhbj48L2E+PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhl aWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+QmVjYXVzZSBhIG1ldGhvZCBp cyBpbnZvbHZlZCwgdGhlIGVkaXRvciBzZWVtcyB0byB0aGluayBpdCdzIGEgbWV0aG9kIGV4cHJl c3Npb24sIGJ1dCB0aGlzIGlzIGNsZWFybHkgbm90IHRoZSBjYXNlLiBFdmVuIHdpdGggdGhlID09 IG9wZXJhdG9yIG5vIG1ldGhvZCBleHByZXNzaW9uIGlzIGludm9sdmVkIGhlcmUuIFRoZSA9PSBv cGVyYXRvciBzaG91bGQgZXZlbiBtYWtlIGl0IG1vcmUgY2xlYXIgdGhlIGNvbXBvbmVudCB0byB3 aGljaCB0aGlzIEVMIGV4cHJlc3Npb24gaXMgYm91bmQgd2lsbCByZWNlaXZlIGEgdmFsdWUuPC9w PjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4m IzE2MDs8L3A+PHA+TmVlZGxlc3MgdG8gc2F5LCB0aGUgY29kZSBydW5zIHBlcmZlY3RseSB3ZWxs IG9uIEpCb3NzIEFTIDYuPC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0 OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHAgc3R5bGU9Im1pbi1oZWlnaHQ6IDhwdDsgaGVp Z2h0OiA4cHQ7IHBhZGRpbmc6IDBweDsiPiYjMTYwOzwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMnB0OyI+PHN0cm9uZz5Bbm5vdGF0ZWQgbWFuYWdlZCBiZWFuczwvc3Ryb25nPjwvc3Bh bj48L3A+PHAgc3R5bGU9Im1pbi1oZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4cHQ7IHBhZGRpbmc6IDBw eDsiPiYjMTYwOzwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+V2hlbiBJIGFu bm90YXRlIGEgSlNGIG1hbmFnZWQgYmVhbiBpbnN0ZWFkIG9mIGRlY2xhcmluZyBpdCBpbiBmYWNl cy1jb25maWcueG1sLCB0aGUgZWRpdG9yIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBhbnkga25vd2xl ZGdlIG9mIHRoZSBiZWFuLiBOZWl0aGVyIG5hdmlnYXRlIGludG8gYW5kIGF1dG8tY29tcGxldGlv biB3b3JrLiBFLmcuIGlmIEkgaGF2ZSB0aGUgZm9sbG93aW5nIGJlYW46PC9zcGFuPjwvcD48cCBz dHlsZT0ibWluLWhlaWdodDogOHB0OyBoZWlnaHQ6IDhwdDsgcGFkZGluZzogMHB4OyI+JiMxNjA7 PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7 Ij4mIzE2MDs8L3A+PHByZSBjbGFzcz0iaml2ZS1wcmUiPjxjb2RlIGNsYXNzPSJqaXZlLWNvZGUg aml2ZS1qYXZhIj48Zm9udCBjb2xvcj0ibmF2eSI+PGI+aW1wb3J0PC9iPjwvZm9udD4gamF2YXgu YW5ub3RhdGlvbi5Qb3N0Q29uc3RydWN0Owo8Zm9udCBjb2xvcj0ibmF2eSI+PGI+aW1wb3J0PC9i PjwvZm9udD4gamF2YXguZmFjZXMuYmVhbi5NYW5hZ2VkQmVhbjsKPGZvbnQgY29sb3I9Im5hdnki PjxiPmltcG9ydDwvYj48L2ZvbnQ+IGphdmF4LmZhY2VzLmJlYW4uVmlld1Njb3BlZDsKPGZvbnQg Y29sb3I9Im5hdnkiPjxiPmltcG9ydDwvYj48L2ZvbnQ+IGphdmF4LmZhY2VzLmV2ZW50LkFjdGlv bkV2ZW50OwomIzE2MDsKQE1hbmFnZWRCZWFuCkBWaWV3U2NvcGVkCjxmb250IGNvbG9yPSJuYXZ5 Ij48Yj5wdWJsaWM8L2I+PC9mb250PiA8Zm9udCBjb2xvcj0ibmF2eSI+PGI+Y2xhc3M8L2I+PC9m b250PiBNeUJlYW4gPGZvbnQgY29sb3I9Im5hdnkiPns8L2ZvbnQ+CiYjMTYwOwomIzE2MDsmIzE2 MDsmIzE2MDsmIzE2MDsgJiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7PGZvbnQgY29sb3I9 Im5hdnkiPjxiPnB1YmxpYzwvYj48L2ZvbnQ+IFN0cmluZyBnZXRGb28oKSA8Zm9udCBjb2xvcj0i bmF2eSI+ezwvZm9udD4gPGZvbnQgY29sb3I9Im5hdnkiPjxiPnJldHVybjwvYj48L2ZvbnQ+IDxm b250IGNvbG9yPSJyZWQiPiJmb28iPC9mb250PjsgPGZvbnQgY29sb3I9Im5hdnkiPn08L2ZvbnQ+ CiYjMTYwOyYjMTYwOyYjMTYwOyYjMTYwOyAmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDs8 Zm9udCBjb2xvcj0ibmF2eSI+PGI+cHVibGljPC9iPjwvZm9udD4gPGZvbnQgY29sb3I9Im5hdnki PjxiPnZvaWQ8L2I+PC9mb250PiBzZXRGb28oU3RyaW5nIGZvbykgPGZvbnQgY29sb3I9Im5hdnki Pns8L2ZvbnQ+PGZvbnQgY29sb3I9Im5hdnkiPn08L2ZvbnQ+CiYjMTYwOwo8Zm9udCBjb2xvcj0i bmF2eSI+fTwvZm9udD4KJiMxNjA7CjwvY29kZT48L3ByZT48cCBzdHlsZT0ibWluLWhlaWdodDog OHB0OyBoZWlnaHQ6IDhwdDsgcGFkZGluZzogMHB4OyI+JiMxNjA7PC9wPjxwPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDEwcHQ7Ij5BbmQgYSBzaW1wbGUgRmFjZWxldCB1c2luZyB0aGlzIGJlYW46 PC9zcGFuPjwvcD48cCBzdHlsZT0ibWluLWhlaWdodDogOHB0OyBoZWlnaHQ6IDhwdDsgcGFkZGlu ZzogMHB4OyI+JiMxNjA7PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0 OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHByZSBjbGFzcz0iaml2ZS1wcmUiPjxjb2RlIGNs YXNzPSJqaXZlLWNvZGUgaml2ZS14bWwiPjxzcGFuIGNsYXNzPSJqaXZlLXhtbC10YWciPjxzcGFu PiZsdDtodG1sIHhtbG5zPSI8L3NwYW4+PGEgY2xhc3M9ImppdmUtbGluay1leHRlcm5hbC1zbWFs bCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWw8L2E+PHNwYW4+IgomIzE2MDsgeG1sbnM6aD0iPC9z cGFuPjxhIGNsYXNzPSJqaXZlLWxpbmstZXh0ZXJuYWwtc21hbGwiIGhyZWY9Imh0dHA6Ly9qYXZh LnN1bi5jb20vanNmL2h0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL2pz Zi9odG1sPC9hPjxzcGFuPiIKJiMxNjA7IHhtbG5zOmY9Ijwvc3Bhbj48YSBjbGFzcz0iaml2ZS1s aW5rLWV4dGVybmFsLXNtYWxsIiBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2pzZi9jb3JlIiB0 YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS9qc2YvY29yZTwvYT48c3Bhbj4iJmd0 Ozwvc3Bhbj48L3NwYW4+CgomIzE2MDsgPHNwYW4gY2xhc3M9ImppdmUteG1sLXRhZyI+Jmx0O2g6 Ym9keSZndDs8L3NwYW4+JiMxNjA7IAomIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsmIzE2MDsgPHNw YW4gY2xhc3M9ImppdmUteG1sLXRhZyI+Jmx0O2g6b3V0cHV0VGV4dCB2YWx1ZT0iI3tteUJlYW4u Zm9vfSIgLyZndDs8L3NwYW4+JiMxNjA7IAomIzE2MDsgPHNwYW4gY2xhc3M9ImppdmUteG1sLXRh ZyI+Jmx0Oy9oOmJvZHkmZ3Q7PC9zcGFuPgo8c3BhbiBjbGFzcz0iaml2ZS14bWwtdGFnIj4mbHQ7 L2h0bWwmZ3Q7PC9zcGFuPgoKPC9jb2RlPjwvcHJlPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7 IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTogMTBwdDsiPlRoZW4gSSBjYW4ndCBkbyBhbnl0aGluZyBpbiB0aGUgZWRpdG9yIHdp dGggIm15QmVhbiIuIEhlcmUgdG9vLCB0aGUgY29kZSBydW5zIGZpbmUgb24gSkJvc3MgQVMgNi48 L3NwYW4+PC9wPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5n OiAwcHg7Ij4mIzE2MDs8L3A+PHA+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsiPjxzdHJv bmc+SW1wbGljaXQgRUwgT2JqZWN0czwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgc3R5bGU9Im1pbi1o ZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4cHQ7IHBhZGRpbmc6IDBweDsiPiYjMTYwOzwvcD48cD48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+VGhlIGVkaXRvciBkb2VzIG5vdCBzZWVtIHRvIGhh dmUgZnVsbCBrbm93bGVkZ2UgYWJvdXQgdGhlIEVMIGltcGxpY2l0IG9iamVjdHMuIFdoZW4gdHJ5 aW5nIHRvIGF1dG8tY29tcGxldGUgYW4gRUwgZXhwcmVzc2lvbiBib3VuZCB0byBhIGNvbXBvbmVu dCwgZS5nLiAmbHQ7aDpvdXRwdXRUZXh0IHZhbHVlPSIjey4uLn0iLyZndDsgY2VydGFpbiBFTCBp bXBsaWNpdCBvYmplY3RzIHBvcCB1cCwgYnV0IG90aGVycyBub3QuPC9zcGFuPjwvcD48cCBzdHls ZT0ibWluLWhlaWdodDogOHB0OyBoZWlnaHQ6IDhwdDsgcGFkZGluZzogMHB4OyI+JiMxNjA7PC9w PjxwPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij5BdmFpbGFibGUgYXJlOjwvc3Bhbj48 L3A+PHAgc3R5bGU9Im1pbi1oZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4cHQ7IHBhZGRpbmc6IDBweDsi PiYjMTYwOzwvcD48dWw+PGxpPmFwcGxpY2F0aW9uU2NvcGU8L2xpPjxsaT5jb21wb25lbnQ8L2xp PjxsaT5jYzwvbGk+PGxpPmNvb2tpZTwvbGk+PGxpPmZhY2VzQ29udGV4dDwvbGk+PGxpPmZsYXNo PC9saT48bGk+aGVhZGVyPC9saT48bGk+aGVhZGVyVmFsdWVzPC9saT48bGk+aW5pdFBhcmFtPC9s aT48bGk+cGFyYW08L2xpPjxsaT5wYXJhbVZhbHVlczwvbGk+PGxpPnJlcXVlc3RTY29wZTwvbGk+ PGxpPnJlc291cmNlPC9saT48bGk+c2Vzc2lvblNjb3BlPC9saT48bGk+dmlldzwvbGk+PGxpPnZp ZXdTY29wZTwvbGk+PC91bD48cCBzdHlsZT0ibWluLWhlaWdodDogOHB0OyBoZWlnaHQ6IDhwdDsg cGFkZGluZzogMHB4OyI+JiMxNjA7PC9wPjxwPk1pc3NpbmcgYXJlIHRodXM6PC9wPjxwIHN0eWxl PSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+ PHVsPjxsaT5hcHBsaWNhdGlvbjwvbGk+PGxpPnJlcXVlc3Q8L2xpPjxsaT5zZXNzaW9uPC9saT48 L3VsPjxwIHN0eWxlPSJtaW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7 Ij4mIzE2MDs8L3A+PHA+VGhlbiBmb3Igc29tZSBvZiB0aG9zZSBpbXBsaWNpdCBFTCBvYmplY3Rz IGl0IG1ha2VzIHNlbnNlIHRvIGJlIGFibGUgdG8gbmF2aWdhdGUgaW50byB0aGVtIGFuZCBoYXZl IGF1dG8tY29tcGxldGlvbi4gVGhpcyBpcyBleGFjdGx5IHdoYXQgdGhlIGRlZmF1bHQgRWNsaXBz ZSAzLjYuMSAiSFRNTCBFZGl0b3IiIGFsbG93cy4gRS5nLiBuYXZpZ2F0aW5nIGludG8gPGVtPnZp ZXc8L2VtPiB3b3VsZCBicmluZyBtZSB0byBVSVZpZXdSb290IGFuZCBuYXZpZ2F0aW5nIGludG8g PGVtPmNvbXBvbmVudDwvZW0+IHdvdWxkIGJyaW5nIG1lIHRvIFVJQ29tcG9uZW50LiBGb3IgYXV0 by1jb21wbGV0aW9uIHRoaXMgaXMgZXZlbiBtb3JlIGNvbnZlbmllbnQuPC9wPjxwIHN0eWxlPSJt aW4taGVpZ2h0OiA4cHQ7IGhlaWdodDogOHB0OyBwYWRkaW5nOiAwcHg7Ij4mIzE2MDs8L3A+PHA+ RmluYWxseSwgZm9yIHNvbWUgcmVhc29uIGltcGxpY2l0IG9iamVjdHMgYXJlIG9ubHkgYXZhaWxh YmxlIGluIHRoZSBlZGl0b3Igd2hlbiBJIGJpbmQgYW4gZXhwcmVzc2lvbiB0byBhIGNvbXBvbmVu dCdzIGF0dHJpYnV0ZS4gSWYgSSBkaXJlY3RseSBzdGFydCBhICN7fSBleHByZXNzaW9uIG9uIGEg RmFjZWxldCBhbmQgdHJ5IHRvIGF1dG8gY29tcGxldGUsIHRoZW4gbm8gaW1wbGljaXQgb2JqZWN0 cyBzaG93IHVwIGF0IGFsbC48L3A+PHAgc3R5bGU9Im1pbi1oZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4 cHQ7IHBhZGRpbmc6IDBweDsiPiYjMTYwOzwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx MnB0OyI+PHN0cm9uZz5EdXBsaWNhdGUgdGFnIHN1Z2dlc3Rpb25zPC9zdHJvbmc+PC9zcGFuPjwv cD48cCBzdHlsZT0ibWluLWhlaWdodDogOHB0OyBoZWlnaHQ6IDhwdDsgcGFkZGluZzogMHB4OyI+ JiMxNjA7PC9wPjxwPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij5XaGVuIEkgdHJ5IHRv IGF1dG8gY29tcGxldGUgdGFncywgdGhlIGVkaXRvciBzaG93cyBtZSBhIGxvdCBvZiBkdXBsaWNh dGUgc3VnZ2VzdGlvbnM6PC9zcGFuPjwvcD48cCBzdHlsZT0ibWluLWhlaWdodDogOHB0OyBoZWln aHQ6IDhwdDsgcGFkZGluZzogMHB4OyI+JiMxNjA7PC9wPjxwPjxhIGhyZWY9Imh0dHA6Ly9jb21t dW5pdHkuamJvc3Mub3JnL3NlcnZsZXQvSml2ZVNlcnZsZXQvc2hvd0ltYWdlLzItNTg0MDc0LTEx MjY3L2R1cGxpY2F0ZV90YWdfc3VnZ2VzdGlvbnMucG5nIj48c3Bhbj4gaHR0cDovL2NvbW11bml0 eS5qYm9zcy5vcmcvc2VydmxldC9KaXZlU2VydmxldC9kb3dubG9hZEltYWdlLzItNTg0MDc0LTEx MjY3LzQyNS00NzUvZHVwbGljYXRlX3RhZ19zdWdnZXN0aW9ucy5wbmcgPC9zcGFuPjwvYT48L3A+ PHAgc3R5bGU9Im1pbi1oZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4cHQ7IHBhZGRpbmc6IDBweDsiPiYj MTYwOzwvcD48cD48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+QXMgY2FuIGJlIHNlZW4s IGJhc2ljYWxseSBldmVyeSBzdWdnZXN0aW9uIGFwcGVhcnMgdHdpY2UuIFdoZW4gSSBmaXJzdCBy ZXN0YXJ0ZWQgRWNsaXBzZSBhZnRlciB0aGUgaW5pdGlhbCBpbnN0YWxsYXRpb24gb2YgSkJvc3Mg VG9vbHMgVmlzdWFsIEVkaXRvciAoUmljaGZhY2VzKSwgSSBldmVuIHNhdyB0aGUgc2FtZSBvbmVz IGFwcGVhcmluZyAzIHRpbWVzLiBUaGlzIGlzIG5vdCB0aGUgZW5kIG9mIHRoZSB3b3JsZCwgYnV0 IGl0IGRvZXMgbG9vayBhIGxpdHRsZSBhd2t3YXJkLjwvc3Bhbj48L3A+PHAgc3R5bGU9Im1pbi1o ZWlnaHQ6IDhwdDsgaGVpZ2h0OiA4cHQ7IHBhZGRpbmc6IDBweDsiPiYjMTYwOzwvcD48cD48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+SSBob3BlIHRoaXMgZmVlZGJhY2sgd2lsbCBiZSB2 YWx1YWJsZSB0byB5b3UgPHNwYW4+IDspIDwvc3Bhbj48YnIvPjwvc3Bhbj48L3A+PC9kaXY+Cgo8 ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0OyBwYWRkaW5nOiAxMHB4OyBtYXJn aW4tdG9wOiAyMHB4OyI+CiAgICA8cCBzdHlsZT0ibWFyZ2luOiAwOyI+UmVwbHkgdG8gdGhpcyBt ZXNzYWdlIGJ5IDxhIGhyZWY9Imh0dHA6Ly9jb21tdW5pdHkuamJvc3Mub3JnL21lc3NhZ2UvNTg0 MDc0IzU4NDA3NCI+Z29pbmcgdG8gQ29tbXVuaXR5PC9hPjwvcD4KCTxwIHN0eWxlPSJtYXJnaW46 IDA7Ij5TdGFydCBhIG5ldyBkaXNjdXNzaW9uIGluIEpCb3NzIFRvb2xzIGF0IDxhIGhyZWY9Imh0 dHA6Ly9jb21tdW5pdHkuamJvc3Mub3JnL2Nob29zZS1jb250YWluZXIhaW5wdXQuanNwYT9jb250 ZW50VHlwZT0xJmNvbnRhaW5lclR5cGU9MTQmY29udGFpbmVyPTIxMjgiPkNvbW11bml0eTwvYT48 L3A+CjwvZGl2PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAg ICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CgoKICAgICAgICAgICAg ICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+ Cgo8L2Rpdj4KCjwvYm9keT4KPC9odG1sPg== --===============1072565547026409657==--