From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Nicolai_H=c3=a4hnle?= Subject: Re: [PATCH 5/5] drm/amd/sched: signal and free remaining fences in amd_sched_entity_fini Date: Mon, 9 Oct 2017 14:58:02 +0200 Message-ID: <1a79e19c-a654-f5c7-84d9-ce4cce76243f@amd.com> References: <20170928145530.12844-1-nhaehnle@gmail.com> <20170928145530.12844-5-nhaehnle@gmail.com> <3032bef3-4829-8cae-199a-11353b38c49a@gmail.com> <11f21e54-16b8-68e4-c63e-d791ef8bbffa@gmail.com> <7e338e23-540c-4e2e-982f-f0eb623c75b1@amd.com> <760c1434-0739-81ff-82c3-a5210c5575d3@amd.com> <9619ebd2-f218-7568-3b24-0a9d2b008a6a@amd.com> <2f113fd3-ab4a-58b8-31d8-dc0a23751513@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2f113fd3-ab4a-58b8-31d8-dc0a23751513-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , "Liu, Monk" , =?UTF-8?Q?Nicolai_H=c3=a4hnle?= , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Olsak, Marek" Cc: "Li, Bingley" T24gMDkuMTAuMjAxNyAxNDozMywgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBBbSAwOS4xMC4y MDE3IHVtIDEzOjI3IHNjaHJpZWIgTmljb2xhaSBIw6RobmxlOgo+PiBPbiAwOS4xMC4yMDE3IDEz OjEyLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Cj4+Pj4+IE5pY29sYWksIGhvdyBoYXJk IHdvdWxkIGl0IGJlIHRvIGhhbmRsZSBFTk9ERVYgYXMgZmFpbHVyZSBmb3IgYWxsIAo+Pj4+PiBj dXJyZW50bHkgZXhpc3RpbmcgY29udGV4dHM/Cj4+Pj4KPj4+PiBJbXBvc3NpYmxlPyAiQWxsIGN1 cnJlbnRseSBleGlzdGluZyBjb250ZXh0cyIgaXMgbm90IGEgd2VsbC1kZWZpbmVkIAo+Pj4+IGNv bmNlcHQgd2hlbiBtdWx0aXBsZSBkcml2ZXJzIGNvLWV4aXN0IGluIHRoZSBzYW1lIHByb2Nlc3Mu Cj4+Pgo+Pj4gT2ssIGxldCBtZSByZWZpbmUgdGhlIHF1ZXN0aW9uOiBJIGFzc3VtZSB0aGVyZSBh cmUgcmVzb3VyY2VzICJzaGFyZWQiIAo+Pj4gYmV0d2VlbiBjb250ZXh0cyBsaWtlIGJpbmFyeSBz aGFkZXIgY29kZSBmb3IgZXhhbXBsZSB3aGljaCBuZWVkcyB0byAKPj4+IGJlIHJldXBsb2FkZWQg d2hlbiBWUkFNIGlzIGxvc3QuCj4+Pgo+Pj4gSG93IGhhcmQgd291bGQgaXQgYmUgdG8gaGFuZGxl IHRoYXQgY29ycmVjdGx5Pwo+Pgo+PiBPa2F5LCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UgOikKPj4K Pj4gV2l0aCB0aGUgY3VycmVudCBpbnRlcmZhY2UgaXQncyBzdGlsbCBwcmV0dHkgZGlmZmljdWx0 LCBidXQgaWYgd2UgCj4+IGNvdWxkIGdldCBhIG5ldyBwZXItZGV2aWNlIHF1ZXJ5IGlvY3RsIHdo aWNoIHJldHVybnMgYSAiVlJBTSBsb3NzIAo+PiBjb3VudGVyIiwgaXQgd291bGQgYmUgcmVhc29u YWJseSBzdHJhaWdodC1mb3J3YXJkLgo+IAo+IFRoZSBwcm9ibGVtIHdpdGggdGhlIFZSQU0gbG9z dCBjb3VudGVyIGlzIHRoYXQgdGhpcyBpc24ndCBzYXZlIGVpdGhlci4gCj4gRS5nLiB5b3UgY291 bGQgaGF2ZSBhbiBhcHBsaWNhdGlvbiB3aGljaCB1cGxvYWRzIHNoYWRlcnMsIGEgR1BVIHJlc2V0 IAo+IGhhcHBlbnMgYW5kIFZSQU0gaXMgbG9zdCBhbmQgdGhlbiB0aGUgYXBwbGljYXRpb24gY3Jl YXRlcyBhIG5ldyBjb250ZXh0IAo+IGFuZCBtYWtlcyBzdWJtaXNzaW9uIHdpdGggYnJva2VuIHNo YWRlciBiaW5hcmllcy4KCkhtbS4gSGVyZSdzIGhvdyBJIGltYWdpbmVkIHdlJ2QgYmUgdXNpbmcg YSBWUkFNIGxvc3QgY291bnRlcjoKCmludCBzaV9zaGFkZXJfYmluYXJ5X3VwbG9hZCguLi4pCnsK ICAgIC4uLgogICAgc2hhZGVyLT5ib192cmFtX2xvc3RfY291bnRlciA9IHNzY3JlZW4tPnZyYW1f bG9zdF9jb3VudGVyOwogICAgc2hhZGVyLT5ibyA9IHBpcGVfYnVmZmVyX2NyZWF0ZSguLi4pOwog ICAgcHRyID0gc3NjcmVlbi0+Yi53cy0+YnVmZmVyX21hcChzaGFkZXItPmJvLT5idWYsIC4uLik7 CiAgICAuLi4gY29waWVzIC4uLgogICAgc3NjcmVlbi0+Yi53cy0+YnVmZmVyX3VubWFwKHNoYWRl ci0+Ym8tPmJ1Zik7Cn0KCmludCBzaV9zaGFkZXJfc2VsZWN0KC4uLikKewogICAgLi4uCiAgICBy ID0gc2lfc2hhZGVyX3NlbGVjdF93aXRoX2tleShjdHgtPnNzY3JlZW4sIHN0YXRlLCAuLi4pOwog ICAgaWYgKHIpIHJldHVybiByOwoKICAgIGlmIChzdGF0ZS0+Y3VycmVudC0+Ym9fdnJhbV9sb3N0 X2NvdW50ZXIgIT0KICAgICAgICBjdHgtPnNzY3JlZW4tPnZyYW1fbG9zdF9jb3VudGVyKSB7CiAg ICAgICAuLi4gcmUtdXBsb2FkIHNlcXVlbmNlIC4uLgogICAgfQp9CgooTm90IHNob3duOiBsb2dp YyB0aGF0IGNvbXBhcmVzIGN0eC0+dnJhbV9sb3N0X2NvdW50ZXIgd2l0aCAKc3NjcmVlbi0+dnJh bV9sb3N0X2NvdW50ZXIgYW5kIGZvcmNlcyBhIHJlLXZhbGlkYXRpb24gb2YgYWxsIHN0YXRlIApp bmNsdWRpbmcgc2hhZGVycy4pCgpUaGF0IHNob3VsZCBjb3ZlciB0aGlzIHNjZW5hcmlvLCBzaG91 bGRuJ3QgaXQ/CgpPaC4uLiBJIHNlZSBvbmUgcHJvYmxlbS4gQnV0IGl0IHNob3VsZCBiZSBlYXN5 IHRvIGZpeDogd2hlbiBjcmVhdGluZyBhIApuZXcgYW1kZ3B1IGNvbnRleHQsIE1lc2EgbmVlZHMg dG8gcXVlcnkgdGhlIHZyYW0gbG9zdCBjb3VudGVyLiBTbyB0aGVuIAp0aGUgc2VxdWVuY2Ugb2Yg ZXZlbnRzIHdvdWxkIGJlIGVpdGhlcjoKCi0gVlJBTSBsb3N0IGNvdW50ZXIgc3RhcnRzIGF0IDAK LSBNZXNhIHVwbG9hZHMgYSBzaGFkZXIgYmluYXJ5Ci0gVW5yZWxhdGVkIEdQVSByZXNldCBoYXBw ZW5zLCBrZXJuZWwgaW5jcmVtZW50cyBWUkFNIGxvc3QgY291bnRlciB0byAxCi0gTWVzYSBjcmVh dGVzIGEgbmV3IGFtZGdwdSBjb250ZXh0LCBxdWVyaWVzIHRoZSBWUkFNIGxvc3QgY291bnRlciAt LT4gMQotIHNpX3NjcmVlbjo6dnJhbV9sb3N0X2NvdW50ZXIgaXMgdXBkYXRlZCB0byAxCi0gRHJh dyBoYXBwZW5zIG9uIHRoZSBuZXcgY29udGV4dCAtLT4gc2lfc2hhZGVyX3NlbGVjdCB3aWxsIGNh dGNoIHRoZSAKVlJBTSBsb3NzCgpPcjoKCi0gVlJBTSBsb3N0IGNvdW50ZXIgc3RhcnRzIGF0IDAK LSBNZXNhIHVwbG9hZHMgYSBzaGFkZXIgYmluYXJ5Ci0gTWVzYSBjcmVhdGVzIGEgbmV3IGFtZGdw dSBjb250ZXh0LCBWUkFNIGxvc3QgY291bnRlciBzdGlsbCAwCi0gVW5yZWxhdGVkIEdQVSByZXNl dCBoYXBwZW5zLCBrZXJuZWwgaW5jcmVtZW50cyBWUkFNIGxvc3QgY291bnRlciB0byAxCi0gRHJh dyBoYXBwZW5zIG9uIHRoZSBuZXcgY29udGV4dCBhbmQgcHJvY2VlZHMgbm9ybWFsbHkKLi4uCi0g TWVzYSBmbHVzaGVzIHRoZSBDUywgYW5kIHRoZSBrZXJuZWwgd2lsbCByZXR1cm4gYW4gZXJyb3Ig Y29kZSBiZWNhdXNlIAp0aGUgZGV2aWNlIFZSQU0gbG9zdCBjb3VudGVyIGlzIGRpZmZlcmVudCBm cm9tIHRoZSBhbWRncHUgY29udGV4dCBWUkFNIApsb3N0IGNvdW50ZXIKCgo+IFNvIEkgd291bGQg c3RpbGwgdm90ZSBmb3IgYSBzZXBhcmF0ZSBJT0NUTCB0byByZXNldCB0aGUgVlJBTSBsb3N0IHN0 YXRlIAo+IHdoaWNoIGlzIGNhbGxlZCAqYmVmb3JlIiB1c2VyIHNwYWNlIHN0YXJ0cyB0byByZXVw bG9hZCAKPiBzaGFkZXIvZGVzY3JpcHRvcnMgZXRjLi4uCgpUaGUgcXVlc3Rpb24gaXM6IGlzIHRo YXQgc2VwYXJhdGUgSU9DVEwgcGVyLWNvbnRleHQgb3IgcGVyLWZkPyBJZiBpdCdzIApwZXItZmQs IHRoZW4gaXQncyBub3QgY29tcGF0aWJsZSB3aXRoIG11bHRpcGxlIGRyaXZlcnMuIElmIGl0J3Mg CnBlci1jb250ZXh0LCB0aGVuIEkgZG9uJ3Qgc2VlIGhvdyBpdCBoZWxwcy4gUGVyaGFwcyB5b3Ug Y291bGQgZXhwbGFpbj8KCgogPiBUaGlzIHdheSB5b3UgYWxzbyBjYXRjaCB0aGUgY2FzZSB3aGVu IGFub3RoZXIgcmVzZXQgaGFwcGVucyB3aGlsZSB5b3UKID4gcmUtdXBsb2FkIHRoaW5ncy4KCk15 IGFzc3VtcHRpb24gd291bGQgYmUgdGhhdCB0aGUgcmUtdXBsb2FkIGhhcHBlbnMgKmFmdGVyKiB0 aGUgbmV3IGFtZGdwdSAKY29udGV4dCBpcyBjcmVhdGVkLiBUaGVuIHRoZSByZXBlYXQgcmVzZXQg c2hvdWxkIGJlIGNhdWdodCBieSB0aGUga2VybmVsIAp3aGVuIHdlIHRyeSB0byBzdWJtaXQgYSBD UyBvbiB0aGUgbmV3IGNvbnRleHQgKHRoaXMgaXMgYXNzdW1pbmcgdGhhdCB0aGUgCmtlcm5lbCBj b250ZXh0J3MgdnJhbSBsb3N0IGNvdW50ZXIgaXMgaW5pdGlhbGl6ZWQgcHJvcGVybHkgd2hlbiB0 aGUgCmNvbnRleHQgaXMgY3JlYXRlZCk6CgotIE1lc2EgcHJlcGFyZXMgdXBsb2FkLCBzZXRzIHNo YWRlci0+Ym9fdnJhbV9sb3N0X2NvdW50ZXIgdG8gMAotIE1lc2EgdXBsb2FkcyBhIHNoYWRlciBi aW5hcnkKLSBXaGlsZSBkb2luZyB0aGlzLCBhIEdQVSByZXNldCBoYXBwZW5zWzBdLCBrZXJuZWwg aW5jcmVtZW50cyBkZXZpY2UgClZSQU0gbG9zdCBjb3VudGVyIHRvIDEKLSBEcmF3IGhhcHBlbnMg d2l0aCB0aGUgbmV3IHNoYWRlciwgTWVzYSBwcm9jZWVkcyBub3JtYWxseQouLi4KLSBPbiBmbHVz aCAvIENTIHN1Ym1pdCwgdGhlIGtlcm5lbCBkZXRlY3RzIHRoZSBWUkFNIGxvc3Qgc3RhdGUgYW5k IApyZXR1cm5zIGFuIGVycm9yIHRvIE1lc2EKClswXSBPdXQgb2YgY3VyaW9zaXR5OiBXaGF0IGhh cHBlbnMgb24gdGhlIENQVSBzaWRlIGlmIHRoZSBQQ0kgLyBmdWxsIApBU0lDIHJlc2V0IG1ldGhv ZCBpcyB1c2VkPyBJcyB0aGVyZSBhIHRpbWUgd2luZG93IHdoZXJlIHdlIGNvdWxkIGdldCBhIFNF R1Y/CgoKW3NuaXBdCj4+IEJUVywgSSBzdGlsbCBkb24ndCBsaWtlIEVOT0RFVi4gSXQgc2VlbXMg bW9yZSBsaWtlIHRoZSBraW5kIG9mIGVycm9yIAo+PiBjb2RlIHlvdSdkIHJldHVybiB3aXRoIGhv dC1wbHVnZ2FibGUgR1BVcyB3aGVyZSB0aGUgZGV2aWNlIGNhbiAKPj4gcGh5c2ljYWxseSBkaXNh cHBlYXIuLi4KPiAKPiBZZWFoLCBFQ0FOQ0VMRUQgc291bmRzIGxpa2UgYSBiZXR0ZXIgYWx0ZXJu YXRpdmUuIEJ1dCBJIHRoaW5rIHdlIHNob3VsZCAKPiBzdGlsbCBzb21laG93IG5vdGUgdGhlIGZh dGFsaXR5IG9mIGxvb3NpbmcgVlJBTSB0byB1c2Vyc3BhY2UuCj4gCj4gSG93IGFib3V0IEVOT0RB VEEgb3IgRUJBREZEPwoKQWNjb3JkaW5nIHRvIHRoZSBtYW5wYWdlLCBFQkFERkQgaXMgIkZpbGUg ZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUuIi4gClNvdW5kcyBmaXR0aW5nIDopCgpDaGVlcnMsCk5p Y29sYWkKCgo+IAo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+IAo+Pgo+PiBDaGVlcnMsCj4+IE5p Y29sYWkKPj4KPj4KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4gQ2hyaXN0aWFuLgo+Pj4KPj4+IEFtIDA5 LjEwLjIwMTcgdW0gMTM6MDQgc2NocmllYiBOaWNvbGFpIEjDpGhubGU6Cj4+Pj4gT24gMDkuMTAu MjAxNyAxMjo1OSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4+Pj4gTmljb2xhaSwgaG93IGhh cmQgd291bGQgaXQgYmUgdG8gaGFuZGxlIEVOT0RFViBhcyBmYWlsdXJlIGZvciBhbGwgCj4+Pj4+ IGN1cnJlbnRseSBleGlzdGluZyBjb250ZXh0cz8KPj4+Pgo+Pj4+IEltcG9zc2libGU/ICJBbGwg Y3VycmVudGx5IGV4aXN0aW5nIGNvbnRleHRzIiBpcyBub3QgYSB3ZWxsLWRlZmluZWQgCj4+Pj4g Y29uY2VwdCB3aGVuIG11bHRpcGxlIGRyaXZlcnMgY28tZXhpc3QgaW4gdGhlIHNhbWUgcHJvY2Vz cy4KPj4+Pgo+Pj4+IEFuZCB3aGF0IHdvdWxkIGJlIHRoZSBwdXJwb3NlIG9mIHRoaXM/IElmIGl0 J3MgdG8gc3VwcG9ydCBWUkFNIGxvc3MsIAo+Pj4+IGhhdmluZyBhIHBlci1jb250ZXh0IFZSQU0g bG9zcyBjb3VudGVyIHdvdWxkIGVuYWJsZSBlYWNoIGNvbnRleHQgdG8gCj4+Pj4gc2lnbmFsIEVD QU5DRUxFRCBzZXBhcmF0ZWx5Lgo+Pj4+Cj4+Pj4gQ2hlZXJzLAo+Pj4+IE5pY29sYWkKPj4+Pgo+ Pj4+Cj4+Pj4+Cj4+Pj4+IE1vbmssIHdvdWxkIGl0IGJlIG9rIHdpdGggeW91IHdoZW4gd2UgcmV0 dXJuIEVOT0RFViBvbmx5IGZvciAKPj4+Pj4gZXhpc3RpbmcgY29udGV4dCB3aGVuIFZSQU0gaXMg bG9zdCBhbmQvb3Igd2UgaGF2ZSBhIHN0cmljdCBtb2RlIEdQVSAKPj4+Pj4gcmVzZXQ/IEUuZy4g bmV3bHkgY3JlYXRlZCBjb250ZXh0cyB3b3VsZCBjb250aW51ZSB3b3JrIGFzIHRoZXkgc2hvdWxk Lgo+Pj4+Pgo+Pj4+PiBSZWdhcmRzLAo+Pj4+PiBDaHJpc3RpYW4uCj4+Pj4+Cj4+Pj4+IEFtIDA5 LjEwLjIwMTcgdW0gMTI6NDkgc2NocmllYiBOaWNvbGFpIEjDpGhubGU6Cj4+Pj4+PiBIaSBNb25r LAo+Pj4+Pj4KPj4+Pj4+IFllcywgeW91J3JlIHJpZ2h0LCB3ZSdyZSBvbmx5IHVzaW5nIEVDQU5D RUxFRCBpbnRlcm5hbGx5LiBCdXQgYXMgYSAKPj4+Pj4+IGNvbnNlcXVlbmNlLCBNZXNhIHdvdWxk IGFscmVhZHkgaGFuZGxlIGEga2VybmVsIGVycm9yIG9mIEVDQU5DRUxFRCAKPj4+Pj4+IG9uIGNv bnRleHQgbG9zcyBjb3JyZWN0bHkgOikKPj4+Pj4+Cj4+Pj4+PiBDaGVlcnMsCj4+Pj4+PiBOaWNv bGFpCj4+Pj4+Pgo+Pj4+Pj4gT24gMDkuMTAuMjAxNyAxMjozNSwgTGl1LCBNb25rIHdyb3RlOgo+ Pj4+Pj4+IEhpIENocmlzdGlhbgo+Pj4+Pj4+Cj4+Pj4+Pj4gWW91IHJlamVjdCBzb21lIG9mIG15 IHBhdGNoZXMgdGhhdCByZXR1cm5zIC1FTk9ERVYsIHdpdGggdGhlIAo+Pj4+Pj4+IGNhdXNlIHRo YXQgTUVTQSBkb2Vzbid0IGRvIHRoZSBoYW5kbGluZyBvbiAtRU5PREVWCj4+Pj4+Pj4KPj4+Pj4+ PiBCdXQgaWYgTmljb2xhaSBjYW4gY29uZmlybSB0aGF0IE1FU0EgZG8gaGF2ZSBhIGhhbmRsaW5n IG9uIAo+Pj4+Pj4+IC1FQ0FOQ0VMRUQsIHRoZW4gd2UgbmVlZCB0byBvdmVyYWxsIGFsaWduIG91 ciBlcnJvciBjb2RlLCBvbiAKPj4+Pj4+PiBkZXRhaWwgYmVsb3cgSU9DVEwgY2FuIHJldHVybiBl cnJvciBjb2RlOgo+Pj4+Pj4+Cj4+Pj4+Pj4gQW1kZ3B1X2NzX2lvY3RsCj4+Pj4+Pj4gQW1kZ3B1 X2NzX3dhaXRfaW9jdGwKPj4+Pj4+PiBBbWRncHVfY3Nfd2FpdF9mZW5jZXNfaW9jdGwKPj4+Pj4+ PiBBbWRncHVfaW5mb19pb2N0bAo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBNeSBwYXRjaGVzIGlz Ogo+Pj4+Pj4+IHJldHVybiAtRU5PREVWIG9uIGNzX2lvY3RsIGlmIHRoZSBjb250ZXh0IGlzIGRl dGVjdGVkIGd1aWx0eSwKPj4+Pj4+PiBhbHNvIHJldHVybiAtRU5PREVWIG9uIGNzX3dhaXR8Y3Nf d2FpdF9mZW5jZXMgaWYgdGhlIGZlbmNlIGlzIAo+Pj4+Pj4+IHNpZ25hbGVkIGJ1dCB3aXRoIGVy cm9yIC1FVElNRSwKPj4+Pj4+PiBhbHNvIHJldHVybiAtRU5PREVWIG9uIGluZm9faW9jdGwgc28g VU1EIGNhbiBxdWVyeSBpZiBncHUgcmVzZXQgCj4+Pj4+Pj4gaGFwcGVuZWQgYWZ0ZXIgdGhlIHBy b2Nlc3MgY3JlYXRlZCAoYmVjYXVzZSBmb3Igc3RyaWN0IG1vZGUgd2UgCj4+Pj4+Pj4gYmxvY2sg cHJvY2VzcyBpbnN0ZWFkIG9mIGNvbnRleHQpCj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IGFjY29y ZGluZyB0byBOaWNvbGFpOgo+Pj4+Pj4+Cj4+Pj4+Pj4gYW1kZ3B1X2NzX2lvY3RsICpjYW4qIHJl dHVybiAtRUNBTkNFTEVELCBidXQgdG8gYmUgZnJhbmtseSAKPj4+Pj4+PiBzcGVha2luZywga2Vy bmVsIHBhcnQgZG9lc24ndCBoYXZlIGFueSBwbGFjZSB3aXRoICItRUNBTkNFTEVEIiBzbyAKPj4+ Pj4+PiB0aGlzIHNvbHV0aW9uIG9uIE1FU0Egc2lkZSBkb2Vzbid0IGFsaWduIHdpdGggKmN1cnJl bnQqIGFtZGdwdSAKPj4+Pj4+PiBkcml2ZXIsCj4+Pj4+Pj4gd2hpY2ggb25seSByZXR1cm4gMCBv biBzdWNjZXNzIG9yIC1FSU5WQUxJRCBvbiBvdGhlciBlcnJvciBidXQgCj4+Pj4+Pj4gZGVmaW5p dGVseSBubyAiLUVDQU5DRUxFRCIgZXJyb3IgY29kZSwKPj4+Pj4+Pgo+Pj4+Pj4+IHNvIGlmIHdl IHRhbGtpbmcgYWJvdXQgY29tbXVuaXR5IHJ1bGVzIHdlIHNob3VsZG4ndCBsZXQgTUVTQSAKPj4+ Pj4+PiBoYW5kbGUgLUVDQU5DRUxFRCAswqAgd2Ugc2hvdWxkIGhhdmUgYSB1bmlmaWVkIGVycm9y IGNvZGUKPj4+Pj4+Pgo+Pj4+Pj4+ICsgTWFyZWsKPj4+Pj4+Pgo+Pj4+Pj4+IEJSIE1vbmsKPj4+ Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+Pgo+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4+Pj4+Pj4gRnJvbTogSGFlaG5sZSwgTmljb2xhaQo+Pj4+Pj4+IFNlbnQ6IDIwMTfl ubQxMOaciDnml6UgMTg6MTQKPj4+Pj4+PiBUbzogS29lbmlnLCBDaHJpc3RpYW4gPENocmlzdGlh bi5Lb2VuaWdAYW1kLmNvbT47IExpdSwgTW9uayAKPj4+Pj4+PiA8TW9uay5MaXVAYW1kLmNvbT47 IE5pY29sYWkgSMOkaG5sZSA8bmhhZWhubGVAZ21haWwuY29tPjsgCj4+Pj4+Pj4gYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIDUvNV0gZHJt L2FtZC9zY2hlZDogc2lnbmFsIGFuZCBmcmVlIHJlbWFpbmluZyAKPj4+Pj4+PiBmZW5jZXMgaW4g YW1kX3NjaGVkX2VudGl0eV9maW5pCj4+Pj4+Pj4KPj4+Pj4+PiBPbiAwOS4xMC4yMDE3IDEwOjAy LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+Pj4gRm9yIGdwdSByZXNldCBwYXRjaGVz IChhbHJlYWR5IHN1Ym1pdHRlZCB0byBwdWIpIEkgd291bGQgbWFrZSAKPj4+Pj4+Pj4+IGtlcm5l bAo+Pj4+Pj4+Pj4gcmV0dXJuIC1FTk9ERVYgaWYgdGhlIHdhaXRpbmcgZmVuY2UgKGluIGNzX3dh aXQgb3Igd2FpdF9mZW5jZXMgCj4+Pj4+Pj4+PiBJT0NUTCkKPj4+Pj4+Pj4+IGZvdW5kZWQgYXMg ZXJyb3IsIHRoYXQgd2F5IFVNRCB3b3VsZCBydW4gaW50byByb2J1c3QgZXh0ZW5zaW9uIAo+Pj4+ Pj4+Pj4gcGF0aAo+Pj4+Pj4+Pj4gYW5kIGNvbnNpZGVyaW5nIHRoZSBHUFUgaGFuZyBvY2N1cnJl ZCwKPj4+Pj4+Pj4gV2VsbCB0aGF0IGlzIG9ubHkgY2xvc2VkIHNvdXJjZSBiZWhhdmlvciB3aGlj aCBpcyBjb21wbGV0ZWx5Cj4+Pj4+Pj4+IGlycmVsZXZhbnQgZm9yIHVwc3RyZWFtIGRldmVsb3Bt ZW50Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBBcyBmYXIgYXMgSSBrbm93IHdlIGhhdmVuJ3QgcHVzaGVk IHRoZSBjaGFuZ2UgdG8gcmV0dXJuIC1FTk9ERVYgCj4+Pj4+Pj4+IHVwc3RyZWFtLgo+Pj4+Pj4+ Cj4+Pj4+Pj4gRldJVywgcmFkZW9uc2kgY3VycmVudGx5IGV4cGVjdHMgLUVDQU5DRUxFRCBvbiBD UyBzdWJtaXNzaW9ucyBhbmQgCj4+Pj4+Pj4gdHJlYXRzIHRob3NlIGFzIGNvbnRleHQgbG9zdC4g UGVyaGFwcyB3ZSBjb3VsZCB1c2UgdGhlIHNhbWUgZXJyb3IgCj4+Pj4+Pj4gb24gZmVuY2VzPwo+ Pj4+Pj4+IFRoYXQgbWFrZXMgbW9yZSBzZW5zZSB0byBtZSB0aGFuIC1FTk9ERVYuCj4+Pj4+Pj4K Pj4+Pj4+PiBDaGVlcnMsCj4+Pj4+Pj4gTmljb2xhaQo+Pj4+Pj4+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+ IFJlZ2FyZHMsCj4+Pj4+Pj4+IENocmlzdGlhbi4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gQW0gMDkuMTAu MjAxNyB1bSAwODo0MiBzY2hyaWViIExpdSwgTW9uazoKPj4+Pj4+Pj4+IENocmlzdGlhbgo+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+PiBJdCB3b3VsZCBiZSByZWFsbHkgbmljZSB0byBoYXZlIGFuIGVycm9y IGNvZGUgc2V0IG9uCj4+Pj4+Pj4+Pj4gc19mZW5jZS0+ZmluaXNoZWQgYmVmb3JlIGl0IGlzIHNp Z25hbGVkLCB1c2UgCj4+Pj4+Pj4+Pj4gZG1hX2ZlbmNlX3NldF9lcnJvcigpCj4+Pj4+Pj4+Pj4g Zm9yIHRoaXMuCj4+Pj4+Pj4+PiBGb3IgZ3B1IHJlc2V0IHBhdGNoZXMgKGFscmVhZHkgc3VibWl0 dGVkIHRvIHB1YikgSSB3b3VsZCBtYWtlIAo+Pj4+Pj4+Pj4ga2VybmVsCj4+Pj4+Pj4+PiByZXR1 cm4gLUVOT0RFViBpZiB0aGUgd2FpdGluZyBmZW5jZSAoaW4gY3Nfd2FpdCBvciB3YWl0X2ZlbmNl cyAKPj4+Pj4+Pj4+IElPQ1RMKQo+Pj4+Pj4+Pj4gZm91bmRlZCBhcyBlcnJvciwgdGhhdCB3YXkg VU1EIHdvdWxkIHJ1biBpbnRvIHJvYnVzdCBleHRlbnNpb24gCj4+Pj4+Pj4+PiBwYXRoCj4+Pj4+ Pj4+PiBhbmQgY29uc2lkZXJpbmcgdGhlIEdQVSBoYW5nIG9jY3VycmVkLAo+Pj4+Pj4+Pj4KPj4+ Pj4+Pj4+IERvbid0IGtub3cgaWYgdGhpcyBpcyBleHBlY3RlZCBmb3IgdGhlIGNhc2Ugb2Ygbm9y bWFsIHByb2Nlc3MgCj4+Pj4+Pj4+PiBiZWluZwo+Pj4+Pj4+Pj4ga2lsbGVkIG9yIGNyYXNoZWQg bGlrZSBOaWNvbGFpIGhpdCAuLi4gc2luY2UgdGhlcmUgaXMgbm8gZ3B1IAo+Pj4+Pj4+Pj4gaGFu ZyBoaXQKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gQlIgTW9uawo+Pj4+Pj4+Pj4KPj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4+Pj4+Pj4+PiBGcm9tOiBhbWQtZ2Z4IFttYWlsdG86YW1kLWdmeC1ib3VuY2VzQGxp c3RzLmZyZWVkZXNrdG9wLm9yZ10gT24KPj4+Pj4+Pj4+IEJlaGFsZiBPZiBDaHJpc3RpYW4gSz9u aWcKPj4+Pj4+Pj4+IFNlbnQ6IDIwMTflubQ55pyIMjjml6UgMjM6MDEKPj4+Pj4+Pj4+IFRvOiBO aWNvbGFpIEjDpGhubGUgPG5oYWVobmxlQGdtYWlsLmNvbT47Cj4+Pj4+Pj4+PiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+Pj4gQ2M6IEhhZWhubGUsIE5pY29sYWkgPE5pY29s YWkuSGFlaG5sZUBhbWQuY29tPgo+Pj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSCA1LzVdIGRy bS9hbWQvc2NoZWQ6IHNpZ25hbCBhbmQgZnJlZSByZW1haW5pbmcKPj4+Pj4+Pj4+IGZlbmNlcyBp biBhbWRfc2NoZWRfZW50aXR5X2ZpbmkKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBBbSAyOC4wOS4yMDE3 IHVtIDE2OjU1IHNjaHJpZWIgTmljb2xhaSBIw6RobmxlOgo+Pj4+Pj4+Pj4+IEZyb206IE5pY29s YWkgSMOkaG5sZSA8bmljb2xhaS5oYWVobmxlQGFtZC5jb20+Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ PiBIaWdobHkgY29uY3VycmVudCBQaWdsaXQgcnVucyBjYW4gdHJpZ2dlciBhIHJhY2UgY29uZGl0 aW9uIAo+Pj4+Pj4+Pj4+IHdoZXJlIGEKPj4+Pj4+Pj4+PiBwZW5kaW5nIFNETUEgam9iIG9uIGEg YnVmZmVyIG9iamVjdCBpcyBuZXZlciBleGVjdXRlZCBiZWNhdXNlIHRoZQo+Pj4+Pj4+Pj4+IGNv cnJlc3BvbmRpbmcgcHJvY2VzcyBpcyBraWxsZWQgKHBlcmhhcHMgZHVlIHRvIGEgY3Jhc2gpLiAK Pj4+Pj4+Pj4+PiBTaW5jZSB0aGUKPj4+Pj4+Pj4+PiBqb2IncyBmZW5jZXMgd2VyZSBuZXZlciBz aWduYWxlZCwgdGhlIGJ1ZmZlciBvYmplY3Qgd2FzIAo+Pj4+Pj4+Pj4+IGVmZmVjdGl2ZWx5Cj4+ Pj4+Pj4+Pj4gbGVha2VkLiBXb3JzZSwgdGhlIGJ1ZmZlciB3YXMgc3R1Y2sgd2hlcmV2ZXIgaXQg aGFwcGVuZWQgdG8gYmUgYXQKPj4+Pj4+Pj4+PiB0aGUgdGltZSwgcG9zc2libHkgaW4gVlJBTS4K Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+IFRoZSBzeW1wdG9tIHdhcyB1c2VyIHNwYWNlIHByb2Nlc3Nl cyBzdHVjayBpbiBpbnRlcnJ1cHRpYmxlIHdhaXRzCj4+Pj4+Pj4+Pj4gd2l0aCBrZXJuZWwgc3Rh Y2tzIGxpa2U6Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmJj NWU2NzIyPl0gZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDExMi8weDI1MAo+Pj4+Pj4+Pj4+IMKg wqDCoMKgwqDCoCBbPGZmZmZmZmZmYmM1ZTYzOTk+XSBkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KzB4 MzkvMHhmMAo+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoCBbPGZmZmZmZmZmYmM1ZTgyZDI+XQo+Pj4+ Pj4+Pj4+IHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KzB4MWMyLzB4MzAwCj4+ Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZmZmZjMDNjZTU2Zj5dIAo+Pj4+Pj4+Pj4+IHR0 bV9ib19jbGVhbnVwX3JlZnNfYW5kX3VubG9jaysweGZmLzB4MWEwCj4+Pj4+Pj4+Pj4gW3R0bV0K Pj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwM2NmMWVhPl0gdHRtX21lbV9ldmlj dF9maXJzdCsweGJhLzB4MWEwIFt0dG1dCj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZm ZmZjMDNjZjYxMT5dIHR0bV9ib19tZW1fc3BhY2UrMHgzNDEvMHg0YzAgW3R0bV0KPj4+Pj4+Pj4+ PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwM2NmYzU0Pl0gdHRtX2JvX3ZhbGlkYXRlKzB4ZDQv MHgxNTAgW3R0bV0KPj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwM2NmZmJkPl0g dHRtX2JvX2luaXRfcmVzZXJ2ZWQrMHgyZWQvMHg0MjAgCj4+Pj4+Pj4+Pj4gW3R0bV0KPj4+Pj4+ Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwNDJmNTIzPl0gCj4+Pj4+Pj4+Pj4gYW1kZ3B1 X2JvX2NyZWF0ZV9yZXN0cmljdGVkKzB4MWYzLzB4NDcwCj4+Pj4+Pj4+Pj4gW2FtZGdwdV0KPj4+ Pj4+Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwNDJmOWZhPl0gYW1kZ3B1X2JvX2NyZWF0 ZSsweGRhLzB4MjIwIFthbWRncHVdCj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZmZmZj MDQzNDllYT5dIGFtZGdwdV9nZW1fb2JqZWN0X2NyZWF0ZSsweGFhLzB4MTQwCj4+Pj4+Pj4+Pj4g W2FtZGdwdV0KPj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqAgWzxmZmZmZmZmZmMwNDM0Zjk3Pl0gYW1k Z3B1X2dlbV9jcmVhdGVfaW9jdGwrMHg5Ny8weDEyMAo+Pj4+Pj4+Pj4+IFthbWRncHVdCj4+Pj4+ Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZmZmZjMDM3ZGRiYT5dIGRybV9pb2N0bCsweDFmYS8w eDQ4MCBbZHJtXQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDCoCBbPGZmZmZmZmZmYzA0MTkwNGY+XSBh bWRncHVfZHJtX2lvY3RsKzB4NGYvMHg5MCBbYW1kZ3B1XQo+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqDC oCBbPGZmZmZmZmZmYmMyM2RiMzM+XSBkb192ZnNfaW9jdGwrMHhhMy8weDVmMAo+Pj4+Pj4+Pj4+ IMKgwqDCoMKgwqDCoCBbPGZmZmZmZmZmYmMyM2UwZjk+XSBTeVNfaW9jdGwrMHg3OS8weDkwCj4+ Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZmZmZiYzg2NGZmYj5dIGVudHJ5X1NZU0NBTExf NjRfZmFzdHBhdGgrMHgxZS8weGFkCj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgIFs8ZmZmZmZmZmZm ZmZmZmZmZj5dIDB4ZmZmZmZmZmZmZmZmZmZmZgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gU2lnbmVk LW9mZi1ieTogTmljb2xhaSBIw6RobmxlIDxuaWNvbGFpLmhhZWhubGVAYW1kLmNvbT4KPj4+Pj4+ Pj4+PiBBY2tlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29t Pgo+Pj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+Pj4+IMKgwqDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Nj aGVkdWxlci9ncHVfc2NoZWR1bGVyLmMgfCA3ICsrKysrKy0KPj4+Pj4+Pj4+PiDCoMKgwqAgMSBm aWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4+Pj4+Pj4+Cj4+ Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9z Y2hlZHVsZXIuYwo+Pj4+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1 X3NjaGVkdWxlci5jCj4+Pj4+Pj4+Pj4gaW5kZXggNTRlYjc3Y2ZmZDliLi4zMmE5OWU5ODBkNzgg MTAwNjQ0Cj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1 X3NjaGVkdWxlci5jCj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVs ZXIvZ3B1X3NjaGVkdWxlci5jCj4+Pj4+Pj4+Pj4gQEAgLTIyMCwyMiArMjIwLDI3IEBAIHZvaWQg YW1kX3NjaGVkX2VudGl0eV9maW5pKHN0cnVjdAo+Pj4+Pj4+Pj4+IGFtZF9ncHVfc2NoZWR1bGVy ICpzY2hlZCwKPj4+Pj4+Pj4+PiBhbWRfc2NoZWRfZW50aXR5X2lzX2lkbGUoZW50aXR5KSk7Cj4+ Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgYW1kX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkocnEsIGVu dGl0eSk7Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsKPj4+Pj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRfc2NoZWRfam9iICpqb2I7Cj4+Pj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBQYXJrIHRoZSBrZXJuZWwgZm9yIGEgbW9tZW50IHRv IG1ha2Ugc3VyZSBpdCBpc24ndAo+Pj4+Pj4+Pj4+IHByb2Nlc3NpbmcKPj4+Pj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvdXIgZW5pdHkuCj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrdGhyZWFk X3Bhcmsoc2NoZWQtPnRocmVhZCk7Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBr dGhyZWFkX3VucGFyayhzY2hlZC0+dGhyZWFkKTsKPj4+Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAg d2hpbGUgKGtmaWZvX291dCgmZW50aXR5LT5qb2JfcXVldWUsICZqb2IsIHNpemVvZihqb2IpKSkK Pj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgd2hpbGUgKGtmaWZvX291dCgmZW50aXR5LT5qb2Jf cXVldWUsICZqb2IsIAo+Pj4+Pj4+Pj4+IHNpemVvZihqb2IpKSkgewo+Pj4+Pj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRfc2NoZWRfZmVuY2UgKnNfZmVuY2UgPSBqb2It PnNfZmVuY2U7Cj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kX3NjaGVkX2Zl bmNlX3NjaGVkdWxlZChzX2ZlbmNlKTsKPj4+Pj4+Pj4+IEl0IHdvdWxkIGJlIHJlYWxseSBuaWNl IHRvIGhhdmUgYW4gZXJyb3IgY29kZSBzZXQgb24KPj4+Pj4+Pj4+IHNfZmVuY2UtPmZpbmlzaGVk IGJlZm9yZSBpdCBpcyBzaWduYWxlZCwgdXNlIAo+Pj4+Pj4+Pj4gZG1hX2ZlbmNlX3NldF9lcnJv cigpIGZvciB0aGlzLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IEFkZGl0aW9uYWwgdG8gdGhhdCBpdCB3 b3VsZCBiZSBuaWNlIHRvIG5vdGUgaW4gdGhlIHN1YmplY3QgbGluZSAKPj4+Pj4+Pj4+IHRoYXQK Pj4+Pj4+Pj4+IHRoaXMgaXMgYSByYXRoZXIgaW1wb3J0YW50IGJ1ZyBmaXguCj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4gV2l0aCB0aGF0IGZpeGVkIHRoZSB3aG9sZSBzZXJpZXMgaXMgUmV2aWV3ZWQtYnk6 IENocmlzdGlhbiBLw7ZuaWcKPj4+Pj4+Pj4+IDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Lgo+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+Pj4+PiBDaHJpc3RpYW4uCj4+Pj4+Pj4+ Pgo+Pj4+Pj4+Pj4+ICsgYW1kX3NjaGVkX2ZlbmNlX2ZpbmlzaGVkKHNfZmVuY2UpOwo+Pj4+Pj4+ Pj4+ICsgZG1hX2ZlbmNlX3B1dCgmc19mZW5jZS0+ZmluaXNoZWQpOwo+Pj4+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzY2hlZC0+b3BzLT5mcmVlX2pvYihqb2IpOwo+Pj4+ Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGtmaWZvX2ZyZWUoJmVudGl0eS0+am9iX3F1ZXVlKTsKPj4+ Pj4+Pj4+PiDCoMKgwqAgfQo+Pj4+Pj4+Pj4+IMKgwqDCoCBzdGF0aWMgdm9pZCBhbWRfc2NoZWRf ZW50aXR5X3dha2V1cChzdHJ1Y3QgZG1hX2ZlbmNlICpmLCAKPj4+Pj4+Pj4+PiBzdHJ1Y3QKPj4+ Pj4+Pj4+PiBkbWFfZmVuY2VfY2IgKmNiKQo+Pj4+Pj4+Pj4+IMKgwqDCoCB7Cj4+Pj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZF9zY2hlZF9lbnRpdHkgKmVudGl0eSA9Cj4+Pj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250YWluZXJfb2YoY2IsIHN0cnVjdCBhbWRfc2No ZWRfZW50aXR5LCBjYik7Cj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgZW50aXR5LT5kZXBlbmRl bmN5ID0gTlVMTDsKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+Pj4+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+ Pj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+Pj4+PiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+Pj4+Pj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+Pj4+PiBh bWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+Pj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4+Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo+Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pgo+Pj4+Cj4+ Pgo+Pgo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K YW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==