From gabor.farkas at doctusoft.com Tue Nov 13 15:25:58 2012 Content-Type: multipart/mixed; boundary="===============6042168951650507641==" MIME-Version: 1.0 From: =?utf-8?q?G=C3=A1bor_Farkas_=3Cgabor=2Efarkas_at_doctusoft=2Ecom=3E?= To: jbpm-dev at lists.jboss.org Subject: Re: [jbpm-dev] Fwd: Re: [jbpm-users] local history for the jbpm web editor Date: Tue, 13 Nov 2012 21:25:55 +0100 Message-ID: In-Reply-To: 50A27509.5010509@redhat.com --===============6042168951650507641== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi, It looks all fine, thanks for mentioning me! It's also great to see what a good feature you've made from the initial scratch! 2012.11.13. 18:27, "Tihomir Surdilovic" ezt =C3=ADr= ta: > > http://surdilovic.wordpress.com/2012/11/13/local-history-support-in-jbpm-= designer/ > Please review and let me know if you have any concerns. The code is in > jBPM Designer master branch now. > > Thanks again and hope to hear more from you soon ;) > > On 11/13/12 3:09 AM, G=C3=A1bor Farkas wrote: > > Hi Tihomir, > good to hear that! > Well, maybe just that I'm a java ee developer at Doctusoft Ltd, and a link > to my blog at http://farkasgabor.blogspot.hu/ (which I don't update > frequently, thought). > > We've had busy days las weeks here, but if you think it'd be good, I can > work more on the issues the code had. > Thanks > Gabor > > > On Mon, Nov 12, 2012 at 5:54 PM, Tihomir Surdilovic wrote: > >> Hi Gabor, finally found some time to work on this. Should be done in >> the next day or so and will post a video here first for review and comme= nts >> before making it public (committing). >> >> I'd like for you to send me some text about yourself that I can put on >> the blog when writing about this new feature - just anything you would w= ant >> readers to know about you. If you could send me that this week I'd really >> appreciate it. >> >> Thanks. >> >> On 10/25/12 4:55 PM, G=C3=A1bor Farkas wrote: >> >> Hi, >> So, I cleaned it up a bit and put some comments. >> I guess it's not nice to attach files on a public mailing list, so I >> uploaded a package here: >> https://docs.google.com/open?id=3D0B3W14YRqXKCZc0RVSjlPWklka2s >> >> If you unzip the folder somewhere, the editor.html can be loaded >> statically from the file. I have this folder so that I can test some >> changes faster, without actually starting the editor. >> To install it in the actual editor, you have to put the localhistory.js >> on the web root (next to editor.html), and add this fragment to the >> editor.html (right after div class=3D'processdata' for example, in the = body >> element) >> >>
> style=3D'position:fixed;top:0px;left:0px;z-index:10000; width: 20px; hei= ght: >> 20px'> >>
>>
> style=3D'position:fixed;top:32px;left:0px;z-index:10000;width:800px;heig= ht:512px;overflow:auto;visibility:hidden'> >>
>> >>
>> >> >> This will put that transparent white box on the top left corner of the >> editor frame. This 'solution' will be replaced by properly registering >> localhistory as a plugin of course :) >> >> There are some TODO-s and questions in the localhistory.js . >> >> Feedback is welcome :) I'll go on cleaning this up so that this can >> integrate nicely to the editor. >> >> cheers, >> Gabor >> >> On Thu, Oct 25, 2012 at 9:20 PM, G=C3=A1bor Farkas > > wrote: >> >>> Hi, >>> Thanks for the ping, yes, I'd still like to contribute, it's just that >>> the company had some other priorities these weeks, but i'll find some t= ime >>> to clean things up a bit. >>> There are some questions still: >>> >>> - *accessing*: I didn't yet scan the source to check how to put an >>> icon in the toolbar to display the local history panel. I guess the = best >>> approach will be to make this localhistory thing a plugin, so I can = start >>> by taking the servicerepo plugin as an example. For the prototype, I >>> modified the editor.html and added a transparent div, and the panel = shows >>> up by clicking on that. >>> - *when to create an entry*: currently I check the json source of >>> the model every 10 seconds, and if it's changed, I create an entry. = Maybe >>> this should be extended by somehow grouping these entries. For examp= le, if >>> the user keeps editing actively for two minutes, I keep only one ent= ry, >>> updating that entry every 10 seconds. But if the editing period is l= onger >>> than two minutes for example, I keep one entry for each two minutes = block. >>> If the user edits for 30 seconds, then waits two minutes, then edits= again, >>> two entries will be created again. Something like this might be usef= ul to >>> keep the history reasonably small, but still quite useful and real-t= ime. >>> - *when entries expire*: entries don't yet expire, so the local >>> storage can get full after some time. You can delete all entries at = once. I >>> think we should add the possibility to delete entries individually, = and to >>> configure that after a specific time, entries are autmatically delet= ed. Or >>> maybe, for entries older than one hour, we keep entries only in 5 mi= nutes >>> granularity, after two hours, every 1 hours, and one entry for each = day >>> older than 24 hours. Or maybe this is unnecessary for our scope ... >>> >>> What do you think the best way would be to share the prototype with you? >>> Well, maybe just emailing the files will be enough for now. >>> I'll try to clean up the source tonight and send you an initial >>> version, so that you can take a look and try. >>> >>> Thanks >>> Gabor >>> >>> On Thu, Oct 25, 2012 at 3:01 PM, Tihomir Surdilovic >> > wrote: >>> >>>> Hi Gabor, are you still wanting to contribute your work? Just >>>> checking in case you are waiting on anything from me in order to start. >>>> >>>> Thanks. >>>> >>>> On 10/3/12 11:32 AM, Tihomir Surdilovic wrote: >>>> >>>> Forwarding to jbpm-dev list as users list is not being monitored. >>>> >>>> >>>> -------- Original Message -------- Subject: Re: [jbpm-users] local >>>> history for the jbpm web editor Date: Wed, 03 Oct 2012 11:23:34 -0400= From: >>>> Tihomir Surdilovic To= : G=C3=A1bor >>>> Farkas = CC: >>>> jbpm-users(a)lists.jboss.org >>>> >>>> Hi Gabor - that looks impressive and useful for the community. I'd be >>>> happy to work with you to incorporate this functionality into the Desi= gner >>>> codebase and promote you as community contributor for jBPM. Let's chat= on >>>> IRC (#jbpm or #jbpmdev on irc.freenode.net). >>>> >>>> Tihomir >>>> >>>> On 10/3/12 10:42 AM, G=C3=A1bor Farkas wrote: >>>> >>>> Hello, >>>> We've created a prototype for a local history functionality for the >>>> jbpm-designer, we needed it for multiple reasons. It stores data in the >>>> browser localStorage, so it also serves a bit like 'undo after save'. = It >>>> checks the json representation of the process every minute and if it >>>> differs, it creates a new local history entry, including a thumbnailed >>>> screenshot. It's available after browser restart too, so if you >>>> accidentally close the browser, you can still restore your work. >>>> Here's a small screenshot. >>>> https://docs.google.com/open?id=3D0Bxw7L2kmpno8RkJUY3Zjd0I4Mlk >>>> >>>> Needs quite much elaboration, but it's already functional and useful >>>> for our needs. >>>> If you find it interesting, we'd be happy to share it with the >>>> community. >>>> >>>> regards, >>>> Gabor Farkas >>>> >>>> >>>> _______________________________________________ >>>> jbpm-users mailing listjbpm-users(a)lists.jboss.orghttps://lists.jboss= .org/mailman/listinfo/jbpm-users >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>> >> >> > > --===============6042168951650507641== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PHA+SGksPGJyPgpJdCBsb29rcyBhbGwgZmluZSwgdGhhbmtzIGZvciBtZW50aW9uaW5nIG1lITxi cj4KSXQmIzM5O3MgYWxzbyBncmVhdCB0byBzZWUgd2hhdCBhIGdvb2QgZmVhdHVyZSB5b3UmIzM5 O3ZlIG1hZGUgZnJvbSB0aGUgaW5pdGlhbCBzY3JhdGNoITwvcD4KPGRpdiBjbGFzcz0iZ21haWxf cXVvdGUiPjIwMTIuMTEuMTMuIDE4OjI3LCAmcXVvdDtUaWhvbWlyIFN1cmRpbG92aWMmcXVvdDsg Jmx0OzxhIGhyZWY9Im1haWx0bzp0c3VyZGlsb0ByZWRoYXQuY29tIj50c3VyZGlsb0ByZWRoYXQu Y29tPC9hPiZndDsgZXp0IO1ydGE6PGJyIHR5cGU9ImF0dHJpYnV0aW9uIj48YmxvY2txdW90ZSBj bGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDox cHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij4KCiAgCiAgICAKICAKICA8ZGl2IGJnY29s b3I9IiNGRkZGRkYiIHRleHQ9IiMwMDAwMDAiPgogICAgPGRpdj48YSBocmVmPSJodHRwOi8vc3Vy ZGlsb3ZpYy53b3JkcHJlc3MuY29tLzIwMTIvMTEvMTMvbG9jYWwtaGlzdG9yeS1zdXBwb3J0LWlu LWpicG0tZGVzaWduZXIvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3N1cmRpbG92aWMud29yZHBy ZXNzLmNvbS8yMDEyLzExLzEzL2xvY2FsLWhpc3Rvcnktc3VwcG9ydC1pbi1qYnBtLWRlc2lnbmVy LzwvYT48YnI+CiAgICAgIFBsZWFzZSByZXZpZXcgYW5kIGxldCBtZSBrbm93IGlmIHlvdSBoYXZl IGFueSBjb25jZXJucy4gVGhlIGNvZGUKICAgICAgaXMgaW4gakJQTSBEZXNpZ25lciBtYXN0ZXIg YnJhbmNoIG5vdy48YnI+CiAgICAgIDxicj4KICAgICAgVGhhbmtzIGFnYWluIGFuZCBob3BlIHRv IGhlYXIgbW9yZSBmcm9tIHlvdSBzb29uIDspIDxicj4KICAgICAgPGJyPgogICAgICBPbiAxMS8x My8xMiAzOjA5IEFNLCBH4WJvciBGYXJrYXMgd3JvdGU6PGJyPgogICAgPC9kaXY+CiAgICA8Ymxv Y2txdW90ZSB0eXBlPSJjaXRlIj5IaSBUaWhvbWlyLAogICAgICA8ZGl2Pmdvb2QgdG8gaGVhciB0 aGF0ITwvZGl2PgogICAgICA8ZGl2PldlbGwsIG1heWJlIGp1c3QgdGhhdCBJJiMzOTttIGEgamF2 YSBlZSBkZXZlbG9wZXIgYXQgRG9jdHVzb2Z0CiAgICAgICAgTHRkLCBhbmQgYSBsaW5rIHRvIG15 IGJsb2cgYXSgPGEgaHJlZj0iaHR0cDovL2Zhcmthc2dhYm9yLmJsb2dzcG90Lmh1LyIgdGFyZ2V0 PSJfYmxhbmsiPmh0dHA6Ly9mYXJrYXNnYWJvci5ibG9nc3BvdC5odS88L2E+oCh3aGljaAogICAg ICAgIEkgZG9uJiMzOTt0IHVwZGF0ZSBmcmVxdWVudGx5LCB0aG91Z2h0KS48L2Rpdj4KICAgICAg PGRpdj48YnI+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2PldlJiMzOTt2ZSBoYWQgYnVzeSBkYXlz IGxhcyB3ZWVrcyBoZXJlLCBidXQgaWYgeW91IHRoaW5rIGl0JiMzOTtkIGJlCiAgICAgICAgZ29v ZCwgSSBjYW4gd29yayBtb3JlIG9uIHRoZSBpc3N1ZXMgdGhlIGNvZGUgaGFkLjwvZGl2PgogICAg ICA8ZGl2PlRoYW5rczwvZGl2PgogICAgICA8ZGl2PkdhYm9yPC9kaXY+CiAgICAgIDxkaXYgY2xh c3M9ImdtYWlsX2V4dHJhIj48YnI+CiAgICAgICAgPGJyPgogICAgICAgIDxkaXYgY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiBNb24sIE5vdiAxMiwgMjAxMiBhdCA1OjU0IFBNLAogICAgICAgICAgVGlo b21pciBTdXJkaWxvdmljIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOnRzdXJk aWxvQHJlZGhhdC5jb20iIHRhcmdldD0iX2JsYW5rIj50c3VyZGlsb0ByZWRoYXQuY29tPC9hPiZn dDs8L3NwYW4+IHdyb3RlOjxicj4KICAgICAgICAgIDxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9x dW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNvbGlk O3BhZGRpbmctbGVmdDoxZXgiPgogICAgICAgICAgICA8ZGl2IGJnY29sb3I9IiNGRkZGRkYiIHRl eHQ9IiMwMDAwMDAiPgogICAgICAgICAgICAgIDxkaXY+SGkgR2Fib3IsIGZpbmFsbHkgZm91bmQg c29tZSB0aW1lIHRvIHdvcmsgb24gdGhpcy4KICAgICAgICAgICAgICAgIFNob3VsZCBiZSBkb25l IGluIHRoZSBuZXh0IGRheSBvciBzbyBhbmQgd2lsbCBwb3N0IGEKICAgICAgICAgICAgICAgIHZp ZGVvIGhlcmUgZmlyc3QgZm9yIHJldmlldyBhbmQgY29tbWVudHMgYmVmb3JlIG1ha2luZwogICAg ICAgICAgICAgICAgaXQgcHVibGljIChjb21taXR0aW5nKS48YnI+CiAgICAgICAgICAgICAgICA8 YnI+CiAgICAgICAgICAgICAgICBJJiMzOTtkIGxpa2UgZm9yIHlvdSB0byBzZW5kIG1lIHNvbWUg dGV4dCBhYm91dCB5b3Vyc2VsZgogICAgICAgICAgICAgICAgdGhhdCBJIGNhbiBwdXQgb24gdGhl IGJsb2cgd2hlbiB3cml0aW5nIGFib3V0IHRoaXMgbmV3CiAgICAgICAgICAgICAgICBmZWF0dXJl IC0ganVzdCBhbnl0aGluZyB5b3Ugd291bGQgd2FudCByZWFkZXJzIHRvIGtub3cKICAgICAgICAg ICAgICAgIGFib3V0IHlvdS4gSWYgeW91IGNvdWxkIHNlbmQgbWUgdGhhdCB0aGlzIHdlZWsgSSYj Mzk7ZAogICAgICAgICAgICAgICAgcmVhbGx5IGFwcHJlY2lhdGUgaXQuPGJyPgogICAgICAgICAg ICAgICAgPGJyPgogICAgICAgICAgICAgICAgVGhhbmtzLgogICAgICAgICAgICAgICAgPGRpdj4K ICAgICAgICAgICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAgICAgICAgICAgT24gMTAvMjUv MTIgNDo1NSBQTSwgR+Fib3IgRmFya2FzIHdyb3RlOjxicj4KICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGJsb2Nr cXVvdGUgdHlwZT0iY2l0ZSI+SGksCiAgICAgICAgICAgICAgICAgICAgPGRpdj5TbywgSSBjbGVh bmVkIGl0IHVwIGEgYml0IGFuZCBwdXQgc29tZQogICAgICAgICAgICAgICAgICAgICAgY29tbWVu dHMuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5JIGd1ZXNzIGl0JiMzOTtzIG5vdCBu aWNlIHRvIGF0dGFjaCBmaWxlcyBvbiBhCiAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgbWFp bGluZyBsaXN0LCBzbyBJIHVwbG9hZGVkIGEgcGFja2FnZSBoZXJlOjwvZGl2PgogICAgICAgICAg ICAgICAgICAgIDxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vb3Blbj9pZD0w QjNXMTRZUnFYS0NaYzBSVlNqbFBXa2xrYTJzIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9kb2Nz Lmdvb2dsZS5jb20vb3Blbj9pZD0wQjNXMTRZUnFYS0NaYzBSVlNqbFBXa2xrYTJzPC9hPjwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDxkaXY+PGJyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDxkaXY+SWYgeW91IHVuemlwIHRoZSBmb2xkZXIgc29tZXdo ZXJlLCB0aGUKICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sIGNhbiBiZSBsb2FkZWQg c3RhdGljYWxseSBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgZmlsZS4gSSBoYXZlIHRo aXMgZm9sZGVyIHNvIHRoYXQgSSBjYW4gdGVzdCBzb21lCiAgICAgICAgICAgICAgICAgICAgICBj aGFuZ2VzIGZhc3Rlciwgd2l0aG91dCBhY3R1YWxseSBzdGFydGluZyB0aGUKICAgICAgICAgICAg ICAgICAgICAgIGVkaXRvci48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlRvIGluc3Rh bGwgaXQgaW4gdGhlIGFjdHVhbCBlZGl0b3IsIHlvdSBoYXZlIHRvCiAgICAgICAgICAgICAgICAg ICAgICBwdXQgdGhlIGxvY2FsaGlzdG9yeS5qcyBvbiB0aGUgd2ViIHJvb3QgKG5leHQgdG8KICAg ICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sKSwgYW5kIGFkZCB0aGlzIGZyYWdtZW50IHRv IHRoZQogICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmh0bWwgKHJpZ2h0IGFmdGVyIKBkaXYg Y2xhc3M9JiMzOTtwcm9jZXNzZGF0YSYjMzk7CiAgICAgICAgICAgICAgICAgICAgICBmb3IgZXhh bXBsZSwgaW4gdGhlIGJvZHkgZWxlbWVudCk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2 PgogICAgICAgICAgICAgICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAgICAgICAgICAgICA8 L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXY+oCCgICZsdDtkaXYgaWQ9JiMzOTtsc0Rp diYjMzk7IHRpdGxlPSYjMzk7TG9jYWxIaXN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgIGZv ciB0ZWggTHVMeiYjMzk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSYjMzk7cG9zaXRp b246Zml4ZWQ7dG9wOjBweDtsZWZ0OjBweDt6LWluZGV4OjEwMDAwOwogICAgICAgICAgICAgICAg ICAgICAgICB3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4JiMzOTsmZ3Q7PC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgICA8ZGl2PqAgoCAmbHQ7L2RpdiZndDs8L2Rpdj4KICAgICAgICAgICAgICAg ICAgICAgIDxkaXY+oCCgICZsdDtkaXYgaWQ9JiMzOTtsaENvbnRhaW5lckRpdiYjMzk7CnN0eWxl PSYjMzk7cG9zaXRpb246Zml4ZWQ7dG9wOjMycHg7bGVmdDowcHg7ei1pbmRleDoxMDAwMDt3aWR0 aDo4MDBweDtoZWlnaHQ6NTEycHg7b3ZlcmZsb3c6YXV0bzt2aXNpYmlsaXR5OmhpZGRlbiYjMzk7 Jmd0OzwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgPGRpdj6gIKAgoCAmbHQ7ZGl2IGlkPSYj Mzk7Z3JpZERpdiYjMzk7LyZndDs8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxkaXY+oCCg IKAgJmx0O3NwYW4gaWQ9JiMzOTtsaENsZWFyQnV0dG9uJiMzOTsvJmd0OzwvZGl2PgogICAgICAg ICAgICAgICAgICAgICAgPGRpdj6gIKAgJmx0Oy9kaXYmZ3Q7PC9kaXY+CiAgICAgICAgICAgICAg ICAgICAgICA8ZGl2PqAgoCAmbHQ7c2NyaXB0CiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0m cXVvdDsvZGVzaWduZXIvbG9jYWxoaXN0b3J5LmpzJnF1b3Q7CiAgICAgICAgICAgICAgICAgICAg ICAgIHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OzwvZGl2PgogICAgICAgICAg ICAgICAgICAgICAgPGRpdj6gIKAgJmx0Oy9zY3JpcHQmZ3Q7PC9kaXY+CiAgICAgICAgICAgICAg ICAgICAgICA8ZGl2PiA8YnI+CiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgIFRoaXMgd2lsbCBwdXQgdGhhdCB0cmFuc3BhcmVudCB3aGl0ZSBib3ggb24g dGhlCiAgICAgICAgICAgICAgICAgICAgICB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGVkaXRvciBm cmFtZS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgJiMzOTtzb2x1dGlvbiYjMzk7IHdpbGwg YmUgcmVwbGFjZWQgYnkgcHJvcGVybHkKICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyaW5n IGxvY2FsaGlzdG9yeSBhcyBhIHBsdWdpbiBvZiBjb3Vyc2UgOik8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICA8ZGl2PiBUaGVyZSBhcmUgc29tZSBUT0RPLXMgYW5kIHF1ZXN0aW9ucyBpbiB0aGUK ICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaGlzdG9yeS5qcyAuPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgPGRpdj5GZWVkYmFjayBpcyB3ZWxjb21lIDopIEkmIzM5O2xsIGdvIG9uIGNsZWFu aW5nIHRoaXMKICAgICAgICAgICAgICAgICAgICAgIHVwIHNvIHRoYXQgdGhpcyBjYW4gaW50ZWdy YXRlIG5pY2VseSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci48L2Rpdj4KICAg ICAgICAgICAgICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICA8ZGl2PmNoZWVycyw8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8 ZGl2PkdhYm9yPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gVGh1LCBPY3QgMjUsIDIwMTIg YXQKICAgICAgICAgICAgICAgICAgICAgICAgOToyMCBQTSwgR+Fib3IgRmFya2FzIDxzcGFuIGRp cj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmdhYm9yLmZhcmthc0Bkb2N0dXNvZnQuY29tIiB0 YXJnZXQ9Il9ibGFuayI+Z2Fib3IuZmFya2FzQGRvY3R1c29mdC5jb208L2E+Jmd0Ozwvc3Bhbj4K ICAgICAgICAgICAgICAgICAgICAgICAgd3JvdGU6PGJyPgogICAgICAgICAgICAgICAgICAgICAg ICA8YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhl eDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4Ij5IaSwKICAgICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2PlRoYW5rcyBmb3IgdGhlIHBpbmcsIHllcywgSSYjMzk7 ZCBzdGlsbCBsaWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBjb250cmlidXRlLCBp dCYjMzk7cyBqdXN0IHRoYXQgdGhlIGNvbXBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhhZCBzb21lIG90aGVyIHByaW9yaXRpZXMgdGhlc2Ugd2Vla3MsIGJ1dAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgaSYjMzk7bGwgZmluZCBzb21lIHRpbWUgdG8gY2xlYW4gdGhpbmdzIHVw IGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdC48L2Rpdj4KICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2PlRoZXJlIGFyZSBzb21lIHF1ZXN0aW9ucyBzdGlsbDo8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGk+YWNjZXNzaW5nPC9pPjog SSBkaWRuJiMzOTt0IHlldCBzY2FuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IHNvdXJjZSB0byBjaGVjayBob3cgdG8gcHV0IGFuIGljb24KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbiB0aGUgdG9vbGJhciB0byBkaXNwbGF5IHRoZSBsb2NhbAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgcGFuZWwuIEkgZ3Vlc3MgdGhlIGJlc3QgYXBw cm9hY2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHRvIG1ha2UgdGhp cyBsb2NhbGhpc3RvcnkgdGhpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHBs dWdpbiwgc28gSSBjYW4gc3RhcnQgYnkgdGFraW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZpY2VyZXBvIHBsdWdpbiBhcyBhbiBleGFtcGxlLiBGb3IKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdG90eXBlLCBJIG1vZGlmaWVkIHRoZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sIGFuZCBhZGRlZCBhIHRyYW5z cGFyZW50IGRpdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHBhbmVs IHNob3dzIHVwIGJ5IGNsaWNraW5nIG9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhhdC48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGk+d2hlbiB0byBj cmVhdGUgYW4gZW50cnk8L2k+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl bnRseSBJIGNoZWNrIHRoZSBqc29uIHNvdXJjZSBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtb2RlbCBldmVyeSAxMCBzZWNvbmRzLCBhbmQgaWYgaXQmIzM5O3MKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLCBJIGNyZWF0ZSBhbiBlbnRyeS4gTWF5 YmUgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBleHRlbmRl ZCBieSBzb21laG93IGdyb3VwaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl c2UgZW50cmllcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2VlcHMgZWRpdGluZyBhY3RpdmVseSBmb3IgdHdvIG1pbnV0ZXMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBrZWVwIG9ubHkgb25lIGVudHJ5LCB1cGRhdGlu ZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgZXZlcnkgMTAgc2Vj b25kcy4gQnV0IGlmIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRpbmcg cGVyaW9kIGlzIGxvbmdlciB0aGFuIHR3bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1pbnV0ZXMgZm9yIGV4YW1wbGUsIEkga2VlcCBvbmUgZW50cnkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgZWFjaCB0d28gbWludXRlcyBibG9jay4gSWYgdGhlIHVzZXIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0cyBmb3IgMzAgc2Vjb25kcywgdGhlbiB3 YWl0cyB0d28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzLCB0aGVuIGVk aXRzIGFnYWluLCB0d28gZW50cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp bGwgYmUgY3JlYXRlZCBhZ2Fpbi4gU29tZXRoaW5nIGxpa2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCB0byBrZWVwIHRoZSBoaXN0b3J5CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uYWJseSBzbWFsbCwgYnV0IHN0aWxsIHF1 aXRlIHVzZWZ1bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZWFsLXRpbWUu PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpPndoZW4gZW50cmllcyBl eHBpcmU8L2k+OiBlbnRyaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uJiMz OTt0IHlldCBleHBpcmUsIHNvIHRoZSBsb2NhbCBzdG9yYWdlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FuIGdldCBmdWxsIGFmdGVyIHNvbWUgdGltZS4gWW91IGNhbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbGwgZW50cmllcyBhdCBvbmNlLiBJIHRo aW5rIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGFkZCB0aGUgcG9z c2liaWxpdHkgdG8gZGVsZXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmll cyBpbmRpdmlkdWFsbHksIGFuZCB0byBjb25maWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aGF0IGFmdGVyIGEgc3BlY2lmaWMgdGltZSwgZW50cmllcyBhcmUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdXRtYXRpY2FsbHkgZGVsZXRlZC4gT3IgbWF5YmUsIGZv cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMgb2xkZXIgdGhhbiBvbmUg aG91ciwgd2Uga2VlcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJpZXMgb25s eSBpbiA1IG1pbnV0ZXMgZ3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWZ0ZXIgdHdvIGhvdXJzLCBldmVyeSAxIGhvdXJzLCBhbmQgb25lCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW50cnkgZm9yIGVhY2ggZGF5IG9sZGVyIHRoYW4gMjQgaG91cnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3IgbWF5YmUgdGhpcyBpcyB1bm5lY2Vz c2FyeSBmb3Igb3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUgLi4uPC9s aT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2PldoYXQgZG8geW91IHRoaW5rIHRoZSBiZXN0IHdheSB3b3VsZCBiZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzaGFyZSB0aGUgcHJvdG90eXBlIHdpdGggeW91 PyBXZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXliZSBqdXN0IGVtYWlsaW5n IHRoZSBmaWxlcyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVub3VnaCBm b3Igbm93LjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAg ICAgICAgICAgICAgICAgIDxkaXY+SSYjMzk7bGwgdHJ5IHRvIGNsZWFuIHVwIHRoZSBzb3VyY2Ug dG9uaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbmQgeW91IGFuIGluaXRp YWwgdmVyc2lvbiwgc28gdGhhdCB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiB0 YWtlIGEgbG9vayBhbmQgdHJ5LjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+ PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg ICAgICAgIDxkaXY+VGhhbmtzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5H YWJvcjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pjxi cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnbWFpbF9xdW90 ZSI+T24gVGh1LCBPY3QgMjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEy IGF0IDM6MDEgUE0sIFRpaG9taXIgU3VyZGlsb3ZpYyA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhy ZWY9Im1haWx0bzp0c3VyZGlsb0ByZWRoYXQuY29tIiB0YXJnZXQ9Il9ibGFuayI+dHN1cmRpbG9A cmVkaGF0LmNvbTwvYT4mZ3Q7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd3JvdGU6PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJsb2NrcXVv dGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxkaXYgYmdjb2xvcj0iI0ZGRkZGRiIgdGV4dD0iIzAwMDAwMCI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5IaSBHYWJvciwgYXJlIHlv dSBzdGlsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudGluZyB0 byBjb250cmlidXRlIHlvdXIgd29yaz8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEp1c3QgY2hlY2tpbmcgaW4gY2FzZSB5b3UgYXJlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3YWl0aW5nIG9uIGFueXRoaW5nIGZyb20gbWUgaW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIHN0YXJ0LiA8YnI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUaGFua3MuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPbiAxMC8zLzEyIDExOjMyIEFNLCBUaWhvbWlyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3VyZGlsb3ZpYyB3cm90ZTo8YnI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcndhcmRpbmcgdG8g amJwbS1kZXYgbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFzIHVzZXJzIGxpc3QgaXMgbm90IGJlaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbW9uaXRvcmVkLjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tLS0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIg Y2VsbHNwYWNpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRoIGFsaWduPSJSSUdIVCIgbm93cmFwIHZhbGlnbj0iQkFTRUxJTkUiPlN1Ympl Y3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHRkPlJlOiBbamJwbS11c2Vyc10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbG9jYWwgaGlzdG9yeSBmb3IKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGpicG0gd2ViCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcjwvdGQ+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYWxpZ249 IlJJR0hUIiBub3dyYXAgdmFsaWduPSJCQVNFTElORSI+RGF0ZToKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+V2VkLCAwMyBPY3QgMjAxMgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMToy MzozNCAtMDQwMDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGggYWxpZ249IlJJR0hUIiBub3dyYXAgdmFsaWduPSJCQVNFTElORSI+RnJvbToK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+ VGlob21pcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdXJkaWxvdmljIDxhIGhyZWY9Im1haWx0bzp0c3VyZGlsb0ByZWRoYXQuY29tIiB0YXJn ZXQ9Il9ibGFuayI+Jmx0O3RzdXJkaWxvQHJlZGhhdC5jb20mZ3Q7PC9hPjwvdGQ+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYWxpZ249IlJJR0hU IiBub3dyYXAgdmFsaWduPSJCQVNFTElORSI+VG86CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkfhYm9yIEZhcmthcyA8YSBocmVmPSJtYWls dG86Z2Fib3IuZmFya2FzQGRvY3R1c29mdC5jb20iIHRhcmdldD0iX2JsYW5rIj4mbHQ7Z2Fib3Iu ZmFya2FzQGRvY3R1c29mdC5jb20mZ3Q7PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYWxpZ249IlJJR0hUIiBub3dyYXAgdmFsaWdu PSJCQVNFTElORSI+Q0M6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRkPjxhIGhyZWY9Im1haWx0bzpqYnBtLXVzZXJzQGxpc3RzLmpib3NzLm9y ZyIgdGFyZ2V0PSJfYmxhbmsiPmpicG0tdXNlcnNAbGlzdHMuamJvc3Mub3JnPC9hPjwvdGQ+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PkhpIEdhYm9yIC0gdGhhdCBsb29rcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXByZXNzaXZl IGFuZCB1c2VmdWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIHRoZSBjb21tdW5pdHkuIEkmIzM5O2QKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmUgaGFwcHkgdG8gd29yayB3aXRoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSB0byBpbmNvcnBvcmF0ZSB0aGlz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u YWxpdHkgaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRGVzaWduZXIgY29kZWJhc2UgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByb21vdGUgeW91IGFzIGNvbW11bml0eQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmlidXRvciBmb3IgakJQTS4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV0JiMzOTtz IGNoYXQgb24gSVJDICgjamJwbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvciAjamJwbWRldiBvbiA8YSBocmVmPSJodHRwOi8vaXJjLmZyZWVub2RlLm5l dCIgdGFyZ2V0PSJfYmxhbmsiPmlyYy5mcmVlbm9kZS5uZXQ8L2E+KS4gPGJyPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpaG9taXI8YnI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gMTAvMy8xMiAxMDo0MiBBTSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR+Fib3IgRmFya2Fz IHdyb3RlOjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJs b2NrcXVvdGUgdHlwZT0iY2l0ZSI+SGVsbG8sCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2PldlJiMzOTt2ZSBjcmVhdGVkIGEKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b3R5cGUgZm9yIGEgbG9j YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0 b3J5IGZ1bmN0aW9uYWxpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3IgdGhlIGpicG0tZGVzaWduZXIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2UgbmVlZGVkIGl0IGZvcgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHJlYXNvbnMuIEl0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVz IGRhdGEgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJvd3NlciBsb2NhbFN0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc28gaXQgYWxzbyBzZXJ2ZXMgYQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCBsaWtlICYjMzk7dW5kbyBhZnRl cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmUm IzM5Oy4gSXQgY2hlY2tzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGpzb24gcmVwcmVzZW50YXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJvY2VzcyBldmVyeQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZSBhbmQgaWYgaXQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJz LCBpdCBjcmVhdGVzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuZXcgbG9jYWwgaGlzdG9yeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudHJ5LCBpbmNsdWRpbmcgYQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbGVkCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdC4gSXQmIzM5O3MK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFi bGUgYWZ0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicm93c2VyIHJlc3RhcnQgdG9vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNvIGlmIHlvdSBhY2NpZGVudGFsbHkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZSB0aGUgYnJvd3NlciwgeW91CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIHN0aWxs IHJlc3RvcmUgeW91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdvcmsuPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxkaXY+SGVyZSYjMzk7cyBhIHNtYWxsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuc2hvdC48L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSJodHRwczov L2RvY3MuZ29vZ2xlLmNvbS9vcGVuP2lkPTBCeHc3TDJrbXBubzhSa0pVWTNaamQwSTRNbGsiIHRh cmdldD0iX2JsYW5rIj5odHRwczovL2RvY3MuZ29vZ2xlLmNvbS9vcGVuP2lkPTBCeHc3TDJrbXBu bzhSa0pVWTNaamQwSTRNbGs8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXY+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdj5OZWVkcyBxdWl0ZSBtdWNoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhYm9yYXRpb24sIGJ1dCBpdCYjMzk7 cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVh ZHkgZnVuY3Rpb25hbCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VmdWwgZm9yIG91ciBuZWVkcy48L2Rpdj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5JZiB5b3UgZmluZCBpdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZXN0aW5nLCB3 ZSYjMzk7ZCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhhcHB5IHRvIHNoYXJlIGl0IHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGUgY29tbXVuaXR5LjwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+cmVnYXJkcyw8L2Rpdj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5HYWJvciBGYXJr YXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zmll bGRzZXQ+PC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJlPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmpicG0tdXNlcnMgbWFpbGluZyBsaXN0CjxhIGhyZWY9Im1haWx0bzpqYnBtLXVzZXJzQGxpc3Rz Lmpib3NzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmpicG0tdXNlcnNAbGlzdHMuamJvc3Mub3JnPC9h Pgo8YSBocmVmPSJodHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2picG0t dXNlcnMiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLmpib3NzLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2picG0tdXNlcnM8L2E+CjwvcHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAg ICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgICAgPC9k aXY+CiAgICAgICAgPGJyPgogICAgICA8L2Rpdj4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxicj4K ICA8L2Rpdj4KCjwvYmxvY2txdW90ZT48L2Rpdj4K --===============6042168951650507641==--