From samuel.guimaraes at eldorado.org.br Wed Aug 12 09:20:17 2015 Content-Type: multipart/mixed; boundary="===============6967331268643998920==" MIME-Version: 1.0 From: Samuel Henrique De Oliveira Guimaraes To: kimchi-devel at ovirt.org Subject: Re: [Kimchi-devel] Fw: [Ginger-dev-list] [RFC] Inheriting Kimchi's Host tab Date: Wed, 12 Aug 2015 13:19:59 +0000 Message-ID: In-Reply-To: 55CB2BE7.7000404@linux.vnet.ibm.com --===============6967331268643998920== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi all, As for Bootstrap, it is just a CSS and HTML library that has some widgets (= with JS functionality) and components (plain html markup) with default styl= es ready to use. For the navigation bar I am styling the default navbar mar= kup to match the mockups. This is the default Bootstrap markup: http://getb= ootstrap.com/components/#navbar As you can see, it does support dropdown buttons that we could use for merg= ing two plugins in one tab. In the following link, the accepted answer poi= nts that multi-level tabs should be avoided: http://ux.stackexchange.com/qu= estions/21912/usability-of-multi-level-tabs-versus-dropdown-menu-for-naviga= tion. I wasn't able to find any other worthy discussion or study that evaluates d= rop-down buttons/links in tabbed navigation usability but another good poin= t in this link is that we should keep in mind low screen resolutions. Harsh= al proposed a mockup for the index page that features an off-canvas menu tr= iggered by the hamburger icon and I'm considering using it if the navigatio= n bar content doesn't fit the screen width (applying some sort of responsiv= e design technique, Bootstrap already has it by default for mobile navigati= on): http://www.jasny.net/bootstrap/examples/navmenu-push/ We also have to think about an use case scenario that the user only has acc= ess to these two merged tabs - in my opinion there's no point in showing ju= st one tab in a navbar in this case. I think Aline idea to extend the plugins inside the page makes more sense t= han using two options in one tab. I was actually going to ask if someone could guide me through the current t= ab implementation because in the new-ui mockups we see that all tabs appear= in a disabled state in the login page if the user is not logged. I underst= and that in the current ui the tabs are rendered after user login and after= the i18n translation strings are loaded so I was trying to run these funct= ions (getI18n and buildTabs) before login but then I realized that some tab= s should not be presented to users that don't have the right privileges to = access them. I'll definitely need some help on this because there are some features that= would be interesting to add to tab-ext.xml for the new-ui and should be co= nsidered before we start splitting Ginger plugin and moving Hosts tab funct= ionalities to Ginger. For instance, in the current tab-ext.xml we have the following markup: Host plugins/kimchi/host.html In the mockups each tab has a different color, I can't set this if I don't = add a class attribute to the list item that gets the from this XML.= I need a tag like <cssClass> for the new-ui. Another feature that we can s= ee in the mockups and that maybe we should keep in mind is the guests/templ= ates/storage/network items counter that appears right next to the tab title= . This can be done by JavaScript though (otherwise we would have to rewrite= and reload tabs-ext each time a new object is added in these pages). Thanks, Samuel From: Archana Singh [mailto:archus(a)linux.vnet.ibm.com] Sent: quarta-feira, 12 de agosto de 2015 08:20 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes(a)eldorado.org.= br> Cc: kimchi-devel(a)ovirt.org Subject: Re: Fw: [Ginger-dev-list] [RFC] Inheriting Kimchi's Host tab Please find my comment inline. From: Aline Manera <alinefm(a)linux.vnet.ibm.com><mailto:alinefm(a)l= inux.vnet.ibm.com> To: ginger-dev-list(a)nongnu.org<mailto:ginger-dev-list(a)nongnu.org> Date: 08/11/2015 08:12 PM Subject: [Ginger-dev-list] [RFC] Inheriting Kimchi's Host tab Sent by: ginger-dev-list-bounces+archanasingh=3Din.ibm.com(a)nongnu.= org<mailto:ginger-dev-list-bounces+archanasingh=3Din.ibm.com(a)nongnu.org> ________________________________ Hi all, As we have agreed on Kimchi mailing list, the Ginger community will be responsible for the Host tab (today part of Kimchi) in a way of 2 different plugins: ginger-basic and ginger. ginger-basic will provide host basic information, host statistics and debug reports support. And among the current Ginger features, it will also provide software updates and repositories management. For Kimchi perspective, we need to transform part of the Host tab into the ginger-basic plugin and add it as a Kimchi dependency. To move the discussion as soon as possible to Ginger community, my suggestion is to move the entire Host tab into ginger-basic plugin in the first moment. Once we do that, we can move software update and repositories management APIs to Ginger. Here is my proposal: 1) Create ginger-basic plugin which will launch the Host tab as it is today. It will be done on Kimchi community. 2) Move software update and repositories management *APIs* from ginger-basic to ginger. Only the API will be updated. The UI will keep the same. 3) Add ginger-basic as a Ginger dependency. In this step, Ginger standalone will launch 2 tabs: Host and Administration. All that can be done by the end of September. Once we have the new UI widgets done, Samuel will start working on merging those 2 tabs into one as we just need the update how UI is built. The idea is to release Ginger as one single Host tab in the December @Samuel: As I was looking into current UI implementation to understand how = to merge two plugins into one tab. But now it does not make sense to spend = time on understanding this in exiting UI, as the plan is to do this on new = UI. As I am not expert on bootstrap, is bootstrap already has some feature to m= erge two plugins into one tab? If not, then do you think it is better to consider this point while impleme= nting new UI, so that merging(two plugins into one tab) can be easier where= ver required. Or do you think still it make sense to spend some time to understand how ca= n this be done in exiting UI? I hope I make sense to you. Please let me know your input. Or spending some time in current UI implementation on how to merge will be = required? release - in addition to wok and Kimchi as a plugin. Let me know what you think about it. Regards, Aline Manera --===============6967331268643998920== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPgo8IS0tW2lm ICFtc29dPjxzdHlsZT52XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cm9cOioge2Jl aGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30Kd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZN TCk7fQouc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KPC9zdHlsZT48IVtlbmRp Zl0tLT48c3R5bGU+PCEtLQovKiBGb250IERlZmluaXRpb25zICovCkBmb250LWZhY2UKCXtmb250 LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsKCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7fQpA Zm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsKCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0 IDMgMiA0O30KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1h bCwgZGl2Lk1zb05vcm1hbAoJe21hcmdpbjowY207CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglm b250LXNpemU6MTIuMHB0OwoJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7Cglj b2xvcjpibGFjazt9CmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKCXttc28tc3R5bGUtcHJpb3Jp dHk6OTk7Cgljb2xvcjpibHVlOwoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CmE6dmlzaXRl ZCwgc3Bhbi5Nc29IeXBlcmxpbmtGb2xsb3dlZAoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNv bG9yOnB1cnBsZTsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQp0dAoJe21zby1zdHlsZS1w cmlvcml0eTo5OTsKCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7fQpzcGFuLkVtYWlsU3R5bGUx OAoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsOwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMt c2VyaWY7Cgljb2xvcjojMUY0OTdEO30Kc3Bhbi5FbWFpbFN0eWxlMTkKCXttc28tc3R5bGUtdHlw ZTpwZXJzb25hbC1jb21wb3NlOwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7Cglj b2xvcjp3aW5kb3d0ZXh0O30Kc3Bhbi5odG1sLXRhZwoJe21zby1zdHlsZS1uYW1lOmh0bWwtdGFn O30Kc3Bhbi50ZXh0Cgl7bXNvLXN0eWxlLW5hbWU6dGV4dDt9CnNwYW4uaHRtbC1hdHRyaWJ1dGUK CXttc28tc3R5bGUtbmFtZTpodG1sLWF0dHJpYnV0ZTt9CnNwYW4uYXBwbGUtY29udmVydGVkLXNw YWNlCgl7bXNvLXN0eWxlLW5hbWU6YXBwbGUtY29udmVydGVkLXNwYWNlO30Kc3Bhbi5odG1sLWF0 dHJpYnV0ZS1uYW1lCgl7bXNvLXN0eWxlLW5hbWU6aHRtbC1hdHRyaWJ1dGUtbmFtZTt9CnNwYW4u aHRtbC1hdHRyaWJ1dGUtdmFsdWUKCXttc28tc3R5bGUtbmFtZTpodG1sLWF0dHJpYnV0ZS12YWx1 ZTt9Ci5Nc29DaHBEZWZhdWx0Cgl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7Cglmb250LXNp emU6MTAuMHB0O30KQHBhZ2UgV29yZFNlY3Rpb24xCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7Cglt YXJnaW46NzAuODVwdCAzLjBjbSA3MC44NXB0IDMuMGNtO30KZGl2LldvcmRTZWN0aW9uMQoJe3Bh Z2U6V29yZFNlY3Rpb24xO30KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KPG86 c2hhcGVkZWZhdWx0cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4KPC94bWw+PCFbZW5k aWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0 Ij4KPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3ht bD48IVtlbmRpZl0tLT4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgbGFuZz0iUFQtQlIi IGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiPgo8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPgo8 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMx RjQ5N0Q7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkhpIGFsbCw8bzpwPjwvbzpwPjwvc3Bh bj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9u dC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7 Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8L286 cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5z LXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkFzIGZvciBC b290c3RyYXAsIGl0IGlzIGp1c3QgYSBDU1MgYW5kIEhUTUwgbGlicmFyeSB0aGF0IGhhcyBzb21l IHdpZGdldHMgKHdpdGggSlMgZnVuY3Rpb25hbGl0eSkgYW5kIGNvbXBvbmVudHMgKHBsYWluCiBo dG1sIG1hcmt1cCkgd2l0aCBkZWZhdWx0IHN0eWxlcyByZWFkeSB0byB1c2UuIEZvciB0aGUgbmF2 aWdhdGlvbiBiYXIgSSBhbSBzdHlsaW5nIHRoZSBkZWZhdWx0IG5hdmJhciBtYXJrdXAgdG8gbWF0 Y2ggdGhlIG1vY2t1cHMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgQm9vdHN0cmFwIG1hcmt1cDoKPGEg aHJlZj0iaHR0cDovL2dldGJvb3RzdHJhcC5jb20vY29tcG9uZW50cy8jbmF2YmFyIj5odHRwOi8v Z2V0Ym9vdHN0cmFwLmNvbS9jb21wb25lbnRzLyNuYXZiYXI8L2E+PG86cD48L286cD48L3NwYW4+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxl PSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1z ZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5BcyB5b3UgY2Fu IHNlZSwgaXQgZG9lcyBzdXBwb3J0IGRyb3Bkb3duIGJ1dHRvbnMgdGhhdCB3ZSBjb3VsZCB1c2Ug Zm9yIG1lcmdpbmcgdHdvIHBsdWdpbnMgaW4gb25lIHRhYi4gSW4gdGhlIGZvbGxvd2luZwogbGlu aywmbmJzcDsgdGhlIGFjY2VwdGVkIGFuc3dlciBwb2ludHMgdGhhdCBtdWx0aS1sZXZlbCB0YWJz IHNob3VsZCBiZSBhdm9pZGVkOiA8YSBocmVmPSJodHRwOi8vdXguc3RhY2tleGNoYW5nZS5jb20v cXVlc3Rpb25zLzIxOTEyL3VzYWJpbGl0eS1vZi1tdWx0aS1sZXZlbC10YWJzLXZlcnN1cy1kcm9w ZG93bi1tZW51LWZvci1uYXZpZ2F0aW9uIj4KaHR0cDovL3V4LnN0YWNrZXhjaGFuZ2UuY29tL3F1 ZXN0aW9ucy8yMTkxMi91c2FiaWxpdHktb2YtbXVsdGktbGV2ZWwtdGFicy12ZXJzdXMtZHJvcGRv d24tbWVudS1mb3ItbmF2aWdhdGlvbjwvYT4uPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7 bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkkgd2FzbiYjODIxNzt0IGFibGUgdG8gZmluZCBh bnkgb3RoZXIgd29ydGh5IGRpc2N1c3Npb24gb3Igc3R1ZHkgdGhhdCBldmFsdWF0ZXMgZHJvcC1k b3duIGJ1dHRvbnMvbGlua3MgaW4gdGFiYmVkIG5hdmlnYXRpb24KIHVzYWJpbGl0eSBidXQgYW5v dGhlciBnb29kIHBvaW50IGluIHRoaXMgbGluayBpcyB0aGF0IHdlIHNob3VsZCBrZWVwIGluIG1p bmQgbG93IHNjcmVlbiByZXNvbHV0aW9ucy4gSGFyc2hhbCBwcm9wb3NlZCBhIG1vY2t1cCBmb3Ig dGhlIGluZGV4IHBhZ2UgdGhhdCBmZWF0dXJlcyBhbiBvZmYtY2FudmFzIG1lbnUgdHJpZ2dlcmVk IGJ5IHRoZSBoYW1idXJnZXIgaWNvbiBhbmQgSSYjODIxNzttIGNvbnNpZGVyaW5nIHVzaW5nIGl0 IGlmIHRoZSBuYXZpZ2F0aW9uCiBiYXIgY29udGVudCBkb2VzbiYjODIxNzt0IGZpdCB0aGUgc2Ny ZWVuIHdpZHRoIChhcHBseWluZyBzb21lIHNvcnQgb2YgcmVzcG9uc2l2ZSBkZXNpZ24gdGVjaG5p cXVlLCBCb290c3RyYXAgYWxyZWFkeSBoYXMgaXQgYnkgZGVmYXVsdCBmb3IgbW9iaWxlIG5hdmln YXRpb24pOgo8YSBocmVmPSJodHRwOi8vd3d3Lmphc255Lm5ldC9ib290c3RyYXAvZXhhbXBsZXMv bmF2bWVudS1wdXNoLyI+aHR0cDovL3d3dy5qYXNueS5uZXQvYm9vdHN0cmFwL2V4YW1wbGVzL25h dm1lbnUtcHVzaC88L2E+PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6RU4tVVMiPldlIGFsc28gaGF2ZSB0byB0aGluayBhYm91dCBhbiB1c2UgY2FzZSBz Y2VuYXJpbyB0aGF0IHRoZSB1c2VyIG9ubHkgaGFzIGFjY2VzcyB0byB0aGVzZSB0d28gbWVyZ2Vk IHRhYnMgJiM4MjExOyBpbiBteSBvcGluaW9uCiB0aGVyZSYjODIxNztzIG5vIHBvaW50IGluIHNo b3dpbmcganVzdCBvbmUgdGFiIGluIGEgbmF2YmFyIGluIHRoaXMgY2FzZS48bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+SSB0aGluayBBbGlu ZSBpZGVhIHRvIGV4dGVuZCB0aGUgcGx1Z2lucyBpbnNpZGUgdGhlIHBhZ2UgbWFrZXMgbW9yZSBz ZW5zZSB0aGFuIHVzaW5nIHR3byBvcHRpb25zIGluIG9uZSB0YWIuCjxvOnA+PC9vOnA+PC9zcGFu PjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtj b2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpw Pjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMt c2VyaWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+SSB3YXMgYWN0 dWFsbHkgZ29pbmcgdG8gYXNrIGlmIHNvbWVvbmUgY291bGQgZ3VpZGUgbWUgdGhyb3VnaCB0aGUg Y3VycmVudCB0YWIgaW1wbGVtZW50YXRpb24gYmVjYXVzZSBpbiB0aGUgbmV3LXVpIG1vY2t1cHMK IHdlIHNlZSB0aGF0IGFsbCB0YWJzIGFwcGVhciBpbiBhIGRpc2FibGVkIHN0YXRlIGluIHRoZSBs b2dpbiBwYWdlIGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQuIEkgdW5kZXJzdGFuZCB0aGF0IGlu IHRoZSBjdXJyZW50IHVpIHRoZSB0YWJzIGFyZSByZW5kZXJlZCBhZnRlciB1c2VyIGxvZ2luIGFu ZCBhZnRlciB0aGUgaTE4biB0cmFuc2xhdGlvbiBzdHJpbmdzIGFyZSBsb2FkZWQgc28gSSB3YXMg dHJ5aW5nIHRvIHJ1biB0aGVzZSBmdW5jdGlvbnMKIChnZXRJMThuIGFuZCBidWlsZFRhYnMpIGJl Zm9yZSBsb2dpbiBidXQgdGhlbiBJIHJlYWxpemVkIHRoYXQgc29tZSB0YWJzIHNob3VsZCBub3Qg YmUgcHJlc2VudGVkIHRvIHVzZXJzIHRoYXQgZG9uJiM4MjE3O3QgaGF2ZSB0aGUgcmlnaHQgcHJp dmlsZWdlcyB0byBhY2Nlc3MgdGhlbS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250 LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RDttc28t ZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+SSYjODIxNztsbCBkZWZpbml0ZWx5IG5lZWQgc29tZSBo ZWxwIG9uIHRoaXMgYmVjYXVzZSB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyB0aGF0IHdvdWxkIGJl IGludGVyZXN0aW5nIHRvIGFkZCB0byB0YWItZXh0LnhtbAogZm9yIHRoZSBuZXctdWkgYW5kIHNo b3VsZCBiZSBjb25zaWRlcmVkIGJlZm9yZSB3ZSBzdGFydCBzcGxpdHRpbmcgR2luZ2VyIHBsdWdp biBhbmQgbW92aW5nIEhvc3RzIHRhYiBmdW5jdGlvbmFsaXRpZXMgdG8gR2luZ2VyLjxvOnA+PC9v OnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fu cy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO LVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1 b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+ Rm9yIGluc3RhbmNlLCBpbiB0aGUgY3VycmVudCB0YWItZXh0LnhtbCB3ZSBoYXZlIHRoZSBmb2xs b3dpbmcgbWFya3VwOjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+ PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1mYXJlYXN0LWxh bmd1YWdlOkVOLVVTIj48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L3A+CjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZh bWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+Jmx0O3RhYiZndDs8bzpwPjwvbzpwPjwvc3Bh bj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDozNS40cHQiPjxz cGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVv dDtDb3VyaWVyIE5ldyZxdW90OyI+Jmx0O2FjY2VzcyZuYnNwO3JvbGU9JnF1b3Q7YWRtaW4mcXVv dDsmbmJzcDttb2RlPSZxdW90O2FkbWluJnF1b3Q7LyZndDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+ CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDozNS40cHQiPjxzcGFuIGxh bmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtDb3Vy aWVyIE5ldyZxdW90OyI+Jmx0O2FjY2VzcyZuYnNwO3JvbGU9JnF1b3Q7dXNlciZxdW90OyZuYnNw O21vZGU9JnF1b3Q7bm9uZSZxdW90Oy8mZ3Q7PG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1pbmRlbnQ6MzUuNHB0Ij48c3BhbiBsYW5nPSJFTi1V UyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcm cXVvdDsiPiZsdDt0aXRsZSZndDtIb3N0Jmx0Oy90aXRsZSZndDs8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWluZGVudDozNS40cHQiPjxzcGFu IGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtD b3VyaWVyIE5ldyZxdW90OyI+Jmx0O3BhdGgmZ3Q7cGx1Z2lucy9raW1jaGkvaG9zdC5odG1sJmx0 Oy9wYXRoJmd0OzxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNw YW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O0NvdXJpZXIgTmV3JnF1b3Q7Ij4mbHQ7L3RhYiZndDs8bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzFG NDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+ PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2Nv bG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPkluIHRoZSBtb2NrdXBzIGVh Y2ggdGFiIGhhcyBhIGRpZmZlcmVudCBjb2xvciwgSSBjYW4mIzgyMTc7dCBzZXQgdGhpcyBpZiBJ IGRvbiYjODIxNzt0IGFkZCBhIGNsYXNzIGF0dHJpYnV0ZSB0byB0aGUgbGlzdCBpdGVtIHRoYXQK IGdldHMgdGhlICZsdDt0aXRsZSZndDsgZnJvbSB0aGlzIFhNTC4gSSBuZWVkIGEgdGFnIGxpa2Ug Jmx0O2Nzc0NsYXNzJmd0OyBmb3IgdGhlIG5ldy11aS4gQW5vdGhlciBmZWF0dXJlIHRoYXQgd2Ug Y2FuIHNlZSBpbiB0aGUgbW9ja3VwcyBhbmQgdGhhdCBtYXliZSB3ZSBzaG91bGQga2VlcCBpbiBt aW5kIGlzIHRoZSBndWVzdHMvdGVtcGxhdGVzL3N0b3JhZ2UvbmV0d29yayBpdGVtcyBjb3VudGVy IHRoYXQgYXBwZWFycyByaWdodCBuZXh0IHRvIHRoZSB0YWIgdGl0bGUuCiBUaGlzIGNhbiBiZSBk b25lIGJ5IEphdmFTY3JpcHQgdGhvdWdoIChvdGhlcndpc2Ugd2Ugd291bGQgaGF2ZSB0byByZXdy aXRlIGFuZCByZWxvYWQgdGFicy1leHQgZWFjaCB0aW1lIGEgbmV3IG9iamVjdCBpcyBhZGRlZCBp biB0aGVzZSBwYWdlcykuPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5N0Q7bXNvLWZhcmVhc3Qt bGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQt ZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEO21zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5UaGFua3MsPG86cD48L286cD48L3NwYW4+PC9wPgo8cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMS4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOiMxRjQ5 N0Q7bXNvLWZhcmVhc3QtbGFuZ3VhZ2U6RU4tVVMiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwv cD4KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNp emU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xv cjojMUY0OTdEO21zby1mYXJlYXN0LWxhbmd1YWdlOkVOLVVTIj5TYW11ZWw8bzpwPjwvbzpwPjwv c3Bhbj48L3A+CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i Zm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6IzFGNDk3RDttc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUyI+PG86cD4mbmJzcDs8 L286cD48L3NwYW4+PC9wPgo8ZGl2Pgo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9w OnNvbGlkICNFMUUxRTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwY20gMGNtIDBjbSI+CjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5 OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjp3aW5kb3d0ZXh0Ij5Gcm9tOjwv c3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 Q2FsaWJyaSZxdW90OyxzYW5zLXNlcmlmO2NvbG9yOndpbmRvd3RleHQiPiBBcmNoYW5hIFNpbmdo IFttYWlsdG86YXJjaHVzQGxpbnV4LnZuZXQuaWJtLmNvbV0KPGJyPgo8Yj5TZW50OjwvYj4gcXVh cnRhLWZlaXJhLCAxMiBkZSBhZ29zdG8gZGUgMjAxNSAwODoyMDxicj4KPGI+VG86PC9iPiBTYW11 ZWwgSGVucmlxdWUgRGUgT2xpdmVpcmEgR3VpbWFyYWVzICZsdDtzYW11ZWwuZ3VpbWFyYWVzQGVs ZG9yYWRvLm9yZy5iciZndDs8YnI+CjxiPkNjOjwvYj4ga2ltY2hpLWRldmVsQG92aXJ0Lm9yZzxi cj4KPGI+U3ViamVjdDo8L2I+IFJlOiBGdzogW0dpbmdlci1kZXYtbGlzdF0gW1JGQ10gSW5oZXJp dGluZyBLaW1jaGkncyBIb3N0IHRhYjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KPC9kaXY+CjwvZGl2 Pgo8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPlBsZWFzZSBmaW5kIG15IGNvbW1lbnQgaW5saW5l LiA8YnI+Cjxicj4KPGJyPgo8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CjxibG9ja3F1b3RlIHN0eWxl PSJtYXJnaW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPgo8cCBjbGFzcz0iTXNvTm9y bWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PGJyPgo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6Ny41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z ZXJpZjtjb2xvcjojNUY1RjVGIj5Gcm9tOiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs8L3Nw YW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6Ny41cHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZiI+QWxpbmUgTWFuZXJhCjwvc3Bhbj48YSBocmVm PSJtYWlsdG86YWxpbmVmbUBsaW51eC52bmV0LmlibS5jb20iPjxzcGFuIGxhbmc9IkVOLVVTIiBz dHlsZT0iZm9udC1zaXplOjcuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMt c2VyaWYiPiZsdDthbGluZWZtQGxpbnV4LnZuZXQuaWJtLmNvbSZndDs8L3NwYW4+PC9hPjxzcGFu IGxhbmc9IkVOLVVTIj4KPGJyPgo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250 LXNpemU6Ny41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjtjb2xv cjojNUY1RjVGIj5UbzogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7PC9zcGFuPjxhIGhyZWY9 Im1haWx0bzpnaW5nZXItZGV2LWxpc3RAbm9uZ251Lm9yZyI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0 eWxlPSJmb250LXNpemU6Ny41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1z ZXJpZiI+Z2luZ2VyLWRldi1saXN0QG5vbmdudS5vcmc8L3NwYW4+PC9hPjxzcGFuIGxhbmc9IkVO LVVTIj4KPGJyPgo8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6Ny41 cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojNUY1RjVG Ij5EYXRlOiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs8L3NwYW4+PHNwYW4gbGFuZz0iRU4t VVMiIHN0eWxlPSJmb250LXNpemU6Ny41cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7QXJpYWwmcXVvdDss c2Fucy1zZXJpZiI+MDgvMTEvMjAxNSAwODoxMiBQTTwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyI+ Cjxicj4KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjcuNXB0O2Zv bnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7Y29sb3I6IzVGNUY1RiI+U3Vi amVjdDogJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7PC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVT IiBzdHlsZT0iZm9udC1zaXplOjcuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNh bnMtc2VyaWYiPltHaW5nZXItZGV2LWxpc3RdIFtSRkNdIEluaGVyaXRpbmcgS2ltY2hpJ3MgSG9z dCB0YWI8L3NwYW4+PHNwYW4gbGFuZz0iRU4tVVMiPgo8YnI+Cjwvc3Bhbj48c3BhbiBsYW5nPSJF Ti1VUyIgc3R5bGU9ImZvbnQtc2l6ZTo3LjVwdDtmb250LWZhbWlseTomcXVvdDtBcmlhbCZxdW90 OyxzYW5zLXNlcmlmO2NvbG9yOiM1RjVGNUYiPlNlbnQgYnk6ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOzwvc3Bhbj48YSBocmVmPSJtYWlsdG86Z2luZ2VyLWRldi1saXN0LWJvdW5jZXMmIzQz O2FyY2hhbmFzaW5naD1pbi5pYm0uY29tQG5vbmdudS5vcmciPjxzcGFuIGxhbmc9IkVOLVVTIiBz dHlsZT0iZm9udC1zaXplOjcuNXB0O2ZvbnQtZmFtaWx5OiZxdW90O0FyaWFsJnF1b3Q7LHNhbnMt c2VyaWYiPmdpbmdlci1kZXYtbGlzdC1ib3VuY2VzJiM0MzthcmNoYW5hc2luZ2g9aW4uaWJtLmNv bUBub25nbnUub3JnPC9zcGFuPjwvYT4KPHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9z cGFuPjwvcD4KPGRpdiBjbGFzcz0iTXNvTm9ybWFsIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0idGV4 dC1hbGlnbjpjZW50ZXIiPgo8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIG5vc2hhZGU9IiIgc3R5 bGU9ImNvbG9yOiNBMEEwQTAiIGFsaWduPSJjZW50ZXIiPgo8L2Rpdj4KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxicj4KPGJyPgo8YnI+Cjwvc3Bhbj48dHQ+PHNwYW4g bGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0Ij5IaSBhbGwsPC9zcGFuPjwvdHQ+ PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij48YnI+Cjxicj4KPHR0PkFzIHdlIGhhdmUgYWdyZWVkIG9u IEtpbWNoaSBtYWlsaW5nIGxpc3QsIHRoZSBHaW5nZXIgY29tbXVuaXR5IHdpbGwgYmUgPC90dD48 YnI+Cjx0dD5yZXNwb25zaWJsZSBmb3IgdGhlIEhvc3QgdGFiICh0b2RheSBwYXJ0IG9mIEtpbWNo aSkgaW4gYSB3YXkgb2YgMiA8L3R0Pjxicj4KPHR0PmRpZmZlcmVudCBwbHVnaW5zOiBnaW5nZXIt YmFzaWMgYW5kIGdpbmdlci48L3R0Pjxicj4KPHR0Pmdpbmdlci1iYXNpYyB3aWxsIHByb3ZpZGUg aG9zdCBiYXNpYyBpbmZvcm1hdGlvbiwgaG9zdCBzdGF0aXN0aWNzIGFuZCA8L3R0Pjxicj4KPHR0 PmRlYnVnIHJlcG9ydHMgc3VwcG9ydC4gQW5kIGFtb25nIHRoZSBjdXJyZW50IEdpbmdlciBmZWF0 dXJlcywgaXQgd2lsbCA8L3R0Pjxicj4KPHR0PmFsc28gcHJvdmlkZSBzb2Z0d2FyZSB1cGRhdGVz IGFuZCByZXBvc2l0b3JpZXMgbWFuYWdlbWVudC48L3R0Pjxicj4KPGJyPgo8dHQ+Rm9yIEtpbWNo aSBwZXJzcGVjdGl2ZSwgd2UgbmVlZCB0byB0cmFuc2Zvcm0gcGFydCBvZiB0aGUgSG9zdCB0YWIg aW50byA8L3R0Pjxicj4KPHR0PnRoZSBnaW5nZXItYmFzaWMgcGx1Z2luIGFuZCBhZGQgaXQgYXMg YSBLaW1jaGkgZGVwZW5kZW5jeS48L3R0Pjxicj4KPHR0PlRvIG1vdmUgdGhlIGRpc2N1c3Npb24g YXMgc29vbiBhcyBwb3NzaWJsZSB0byBHaW5nZXIgY29tbXVuaXR5LCBteSA8L3R0Pjxicj4KPHR0 PnN1Z2dlc3Rpb24gaXMgdG8gbW92ZSB0aGUgZW50aXJlIEhvc3QgdGFiIGludG8gZ2luZ2VyLWJh c2ljIHBsdWdpbiBpbiA8L3R0Pjxicj4KPHR0PnRoZSBmaXJzdCBtb21lbnQuPC90dD48YnI+Cjx0 dD5PbmNlIHdlIGRvIHRoYXQsIHdlIGNhbiBtb3ZlIHNvZnR3YXJlIHVwZGF0ZSBhbmQgcmVwb3Np dG9yaWVzIG1hbmFnZW1lbnQgPC90dD4KPGJyPgo8dHQ+QVBJcyB0byBHaW5nZXIuPC90dD48YnI+ Cjxicj4KPHR0PkhlcmUgaXMgbXkgcHJvcG9zYWw6PC90dD48YnI+Cjxicj4KPHR0PjEpIENyZWF0 ZSBnaW5nZXItYmFzaWMgcGx1Z2luIHdoaWNoIHdpbGwgbGF1bmNoIHRoZSBIb3N0IHRhYiBhcyBp dCBpcyB0b2RheS48L3R0Pjxicj4KPHR0PiZuYnNwOyAmbmJzcDsgSXQgd2lsbCBiZSBkb25lIG9u IEtpbWNoaSBjb21tdW5pdHkuPC90dD48YnI+Cjxicj4KPHR0PjIpIE1vdmUgc29mdHdhcmUgdXBk YXRlIGFuZCByZXBvc2l0b3JpZXMgbWFuYWdlbWVudCAqQVBJcyogZnJvbSA8L3R0Pjxicj4KPHR0 Pmdpbmdlci1iYXNpYyB0byBnaW5nZXIuPC90dD48YnI+Cjx0dD4mbmJzcDsgJm5ic3A7IE9ubHkg dGhlIEFQSSB3aWxsIGJlIHVwZGF0ZWQuIFRoZSBVSSB3aWxsIGtlZXAgdGhlIHNhbWUuPC90dD48 YnI+Cjxicj4KPHR0PjMpIEFkZCBnaW5nZXItYmFzaWMgYXMgYSBHaW5nZXIgZGVwZW5kZW5jeS48 L3R0Pjxicj4KPHR0PiZuYnNwOyAmbmJzcDsgSW4gdGhpcyBzdGVwLCBHaW5nZXIgc3RhbmRhbG9u ZSB3aWxsIGxhdW5jaCAyIHRhYnM6IEhvc3QgYW5kIDwvdHQ+PGJyPgo8dHQ+QWRtaW5pc3RyYXRp b24uPC90dD48YnI+Cjxicj4KPHR0PkFsbCB0aGF0IGNhbiBiZSBkb25lIGJ5IHRoZSBlbmQgb2Yg U2VwdGVtYmVyLjwvdHQ+PGJyPgo8YnI+Cjx0dD5PbmNlIHdlIGhhdmUgdGhlIG5ldyBVSSB3aWRn ZXRzIGRvbmUsIFNhbXVlbCB3aWxsIHN0YXJ0IHdvcmtpbmcgb24gPC90dD48YnI+Cjx0dD5tZXJn aW5nIHRob3NlIDIgdGFicyBpbnRvIG9uZSBhcyB3ZSBqdXN0IG5lZWQgdGhlIHVwZGF0ZSBob3cg VUkgaXMgYnVpbHQuPC90dD48YnI+Cjx0dD5UaGUgaWRlYSBpcyB0byByZWxlYXNlIEdpbmdlciBh cyBvbmUgc2luZ2xlIEhvc3QgdGFiIGluIHRoZSBEZWNlbWJlciA8L3R0Pjwvc3Bhbj48c3BhbiBs YW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwIGNsYXNz PSJNc29Ob3JtYWwiPjx0dD48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4w cHQiPkBTYW11ZWw6IEFzIEkgd2FzIGxvb2tpbmcgaW50byBjdXJyZW50IFVJIGltcGxlbWVudGF0 aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRvIG1lcmdlIHR3byBwbHVnaW5zIGludG8gb25lIHRhYi4g QnV0IG5vdyBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHNwZW5kIHRpbWUgb24gdW5kZXJzdGFu ZGluZyB0aGlzIGluIGV4aXRpbmcKIFVJLCBhcyB0aGUgcGxhbiBpcyB0byBkbyB0aGlzIG9uIG5l dyBVSS48L3NwYW4+PC90dD48c3BhbiBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4w cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmllciBOZXcmcXVvdDsiPjxicj4KPHR0PkFzIEkgYW0g bm90IGV4cGVydCBvbiBib290c3RyYXAsIGlzIGJvb3RzdHJhcCBhbHJlYWR5IGhhcyBzb21lIGZl YXR1cmUgdG8gbWVyZ2UgdHdvIHBsdWdpbnMgaW50byBvbmUgdGFiPzwvdHQ+PGJyPgo8dHQ+SWYg bm90LCB0aGVuIGRvIHlvdSB0aGluayBpdCBpcyBiZXR0ZXIgdG8gY29uc2lkZXIgdGhpcyBwb2lu dCB3aGlsZSBpbXBsZW1lbnRpbmcgbmV3IFVJLCBzbyB0aGF0IG1lcmdpbmcodHdvIHBsdWdpbnMg aW50byBvbmUgdGFiKSBjYW4gYmUgZWFzaWVyIHdoZXJldmVyIHJlcXVpcmVkLgo8L3R0Pjxicj4K PHR0Pk9yIGRvIHlvdSB0aGluayBzdGlsbCBpdCBtYWtlIHNlbnNlIHRvIHNwZW5kIHNvbWUgdGlt ZSB0byB1bmRlcnN0YW5kIGhvdyBjYW4gdGhpcyBiZSBkb25lIGluIGV4aXRpbmcgVUk/PC90dD48 YnI+Cjx0dD5JIGhvcGUgSSBtYWtlIHNlbnNlIHRvIHlvdS4gUGxlYXNlIGxldCBtZSBrbm93IHlv dXIgaW5wdXQuPC90dD48YnI+Cjwvc3Bhbj48c3BhbiBsYW5nPSJFTi1VUyI+PGJyPgo8L3NwYW4+ PHR0PjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdCI+T3Igc3BlbmRp bmcgc29tZSB0aW1lIGluIGN1cnJlbnQgVUkgaW1wbGVtZW50YXRpb24gb24gaG93IHRvIG1lcmdl IHdpbGwgYmUgcmVxdWlyZWQ/PC9zcGFuPjwvdHQ+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJm b250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O0NvdXJpZXIgTmV3JnF1b3Q7Ij48YnI+ Cjxicj4KPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Cjxi bG9ja3F1b3RlIHN0eWxlPSJtYXJnaW4tdG9wOjUuMHB0O21hcmdpbi1ib3R0b206NS4wcHQiPgo8 cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMi4wcHQiPjx0dD48c3Bh biBsYW5nPSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQiPnJlbGVhc2UgLSBpbiBhZGRp dGlvbiB0byB3b2sgYW5kIEtpbWNoaSBhcyBhIHBsdWdpbi48L3NwYW4+PC90dD48c3BhbiBsYW5n PSJFTi1VUyIgc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7Q291cmll ciBOZXcmcXVvdDsiPjxicj4KPGJyPgo8dHQ+TGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmsgYWJv dXQgaXQuPC90dD48YnI+Cjxicj4KPC9zcGFuPjx0dD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEw LjBwdCI+UmVnYXJkcyw8L3NwYW4+PC90dD48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtm b250LWZhbWlseTomcXVvdDtDb3VyaWVyIE5ldyZxdW90OyI+PGJyPgo8dHQ+QWxpbmUgTWFuZXJh PC90dD48YnI+Cjxicj4KPC9zcGFuPjxvOnA+PC9vOnA+PC9wPgo8L2Jsb2NrcXVvdGU+CjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxvOnA+Jm5ic3A7PC9vOnA+PC9wPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0 bWw+Cg== --===============6967331268643998920==--