From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [2001:67c:670:100:5054:ff:fe2a:3aa] (helo=pty.hi.pengutronix.de) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dmJh5-00016w-PD for ptxdist@pengutronix.de; Mon, 28 Aug 2017 15:03:07 +0200 Received: from mol by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1dmJh5-0006Vh-Hr for ptxdist@pengutronix.de; Mon, 28 Aug 2017 15:03:07 +0200 Date: Mon, 28 Aug 2017 15:03:07 +0200 From: Michael Olbrich Message-ID: <20170828130307.xk7a4uzrngahl5r5@pengutronix.de> References: <20170823223911.13784-1-r.hieber@pengutronix.de> <20170823223911.13784-8-r.hieber@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20170823223911.13784-8-r.hieber@pengutronix.de> Subject: Re: [ptxdist] [PATCH 7/7] cups-filters: new package: additional filters and backends for CUPS List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ptxdist@pengutronix.de Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ptxdist-bounces@pengutronix.de Sender: "ptxdist" To: ptxdist@pengutronix.de T24gVGh1LCBBdWcgMjQsIDIwMTcgYXQgMTI6Mzk6MTFBTSArMDIwMCwgUm9sYW5kIEhpZWJlciB3 cm90ZToKPiBVcHN0cmVhbSBpcyB2ZXJ5IHJlc3BvbnNpdmUsIG1lcmdlZCBzb21lIHBhdGNoZXMg YW5kIG1hZGUgYSBuZXcgcmVsZWFzZQo+IHdoaWxlIEkgd2FzIHN0aWxsIHBhY2thZ2luZyB0aGUg b2xkIG9uZSA6KQoKUGxlYXNlIHVwZGF0ZSB0byB0aGUgbmV3IHJlbGVhc2UsIHNvIHdlIGNhbiBh dm9pZCB0aGUgcGF0Y2guCgo+IFNpZ25lZC1vZmYtYnk6IFJvbGFuZCBIaWViZXIgPHIuaGllYmVy QHBlbmd1dHJvbml4LmRlPgo+IC0tLQo+ICAuLi4vMDAwMS1jb25maWd1cmUuYWMtY2hlY2stZm9y LUMtMTEtc3VwcG9ydC5wYXRjaCB8IDEwMTkgKysrKysrKysrKysrKysrKysrKysKPiAgcGF0Y2hl cy9jdXBzLWZpbHRlcnMtMS4xNi4xL2F1dG9nZW4uc2ggICAgICAgICAgICAgfCAgICAyICsKPiAg cGF0Y2hlcy9jdXBzLWZpbHRlcnMtMS4xNi4xL3NlcmllcyAgICAgICAgICAgICAgICAgfCAgICA0 ICsKPiAgcnVsZXMvY3Vwcy1maWx0ZXJzLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDY5ICsrCj4gIHJ1bGVzL2N1cHMtZmlsdGVycy5tYWtlICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA5NiArKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDExOTAgaW5zZXJ0aW9ucygrKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9jdXBzLWZpbHRlcnMtMS4xNi4xLzAwMDEtY29u ZmlndXJlLmFjLWNoZWNrLWZvci1DLTExLXN1cHBvcnQucGF0Y2gKPiAgY3JlYXRlIG1vZGUgMTAw NzU1IHBhdGNoZXMvY3Vwcy1maWx0ZXJzLTEuMTYuMS9hdXRvZ2VuLnNoCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBwYXRjaGVzL2N1cHMtZmlsdGVycy0xLjE2LjEvc2VyaWVzCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBydWxlcy9jdXBzLWZpbHRlcnMuaW4KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bGVz L2N1cHMtZmlsdGVycy5tYWtlCj4gCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvY3Vwcy1maWx0ZXJz LTEuMTYuMS8wMDAxLWNvbmZpZ3VyZS5hYy1jaGVjay1mb3ItQy0xMS1zdXBwb3J0LnBhdGNoIGIv cGF0Y2hlcy9jdXBzLWZpbHRlcnMtMS4xNi4xLzAwMDEtY29uZmlndXJlLmFjLWNoZWNrLWZvci1D LTExLXN1cHBvcnQucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MC4uYTdkMzA4ZTBlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvY3Vwcy1maWx0ZXJz LTEuMTYuMS8wMDAxLWNvbmZpZ3VyZS5hYy1jaGVjay1mb3ItQy0xMS1zdXBwb3J0LnBhdGNoCj4g QEAgLTAsMCArMSwxMDE5IEBACj4gK0Zyb206IFJvbGFuZCBIaWViZXIgPHIuaGllYmVyQHBlbmd1 dHJvbml4LmRlPgo+ICtEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDEyOjUzOjE0ICswMjAwCj4gK1N1 YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBjaGVjayBmb3IgQysrMTEgc3VwcG9ydAo+ICsK PiArVGhlIGZpbHRlcnMgcGRmdG9vcHZwLCBiYW5uZXJ0b3BkZiBhbmQgcGRmdG9yYXN0ZXIgZGVw ZW5kIG9uIGZlYXR1cmVzCj4gK29ubHkgYXZhaWxhYmxlIGluIEMrKzExLCBpbmRpcmVjdGx5IGFs c28gYmVjYXVzZSBwb3BwbGVyIGRvZXMgbm90IHB1dAo+ICstc3RkPWMrKzExIG9uIGl0cyBwa2ct Y29uZmlnIENGTEFHUyAoYnV0IEknbSBub3Qgc3VyZSB3aGV0aGVyIGl0IHNob3VsZAo+ICtldmVu IGRvIHRoaXMpLiBTb2x2ZSB0aGlzIHByb2JsZW1zIGJ5IGFkZGluZyAtc3RkPWMrKzEgdG8gJChD WFgpLCBpZgo+ICtuZWNlc3NhcnksIG9yIGZhaWwgaWYgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1 cHBvcnQgQysrMTEuCj4gKwo+ICtGb3J3YXJkZWQ6IGh0dHBzOi8vYnVncy5saW51eGZvdW5kYXRp b24ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA0Cj4gK0FwcGxpZWQtVXBzdHJlYW06IGh0dHA6Ly9i enIubGludXhmb3VuZGF0aW9uLm9yZy9sb2dnZXJoZWFkL29wZW5wcmludGluZy9jdXBzLWZpbHRl cnMvcmV2aXNpb24vNzY3NAo+ICtTaWduZWQtb2ZmLWJ5OiBSb2xhbmQgSGllYmVyIDxyLmhpZWJl ckBwZW5ndXRyb25peC5kZT4KPiArLS0tCj4gKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAg fCAgIDEgKwo+ICsgbTQvYXhfY3h4X2NvbXBpbGVfc3RkY3h4Lm00IHwgOTgyICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gKyAyIGZpbGVzIGNoYW5nZWQsIDk4 MyBpbnNlcnRpb25zKCspCj4gKyBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY3h4X2NvbXBpbGVf c3RkY3h4Lm00Cj4gKwo+ICtkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFj Cj4gK2luZGV4IDZjZTY3MWU2MDI2YS4uN2FkNTU5MmUwNDIzIDEwMDY0NAo+ICstLS0gYS9jb25m aWd1cmUuYWMKPiArKysrIGIvY29uZmlndXJlLmFjCj4gK0BAIC01Miw2ICs1Miw3IEBAIEFIX0JP VFRPTShbCj4gKyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsgQUNfUFJPR19DQwo+ ICsgQUNfUFJPR19DWFgKPiArK0FYX0NYWF9DT01QSUxFX1NURENYWChbMTFdLFtub2V4dF0sW21h bmRhdG9yeV0pCj4gKyBBTV9QUk9HX0NDX0NfTwo+ICsgQUNfUFJPR19DUFAKPiArIEFDX1BST0df SU5TVEFMTAo+ICtkaWZmIC0tZ2l0IGEvbTQvYXhfY3h4X2NvbXBpbGVfc3RkY3h4Lm00IGIvbTQv YXhfY3h4X2NvbXBpbGVfc3RkY3h4Lm00Cj4gK25ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gK2luZGV4 IDAwMDAwMDAwMDAwMC4uNTAzMmJiYTgwOTFkCj4gKy0tLSAvZGV2L251bGwKPiArKysrIGIvbTQv YXhfY3h4X2NvbXBpbGVfc3RkY3h4Lm00Cj4gK0BAIC0wLDAgKzEsOTgyIEBACj4gKysjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQo+ICsrIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29u Zi1hcmNoaXZlL2F4X2N4eF9jb21waWxlX3N0ZGN4eC5odG1sCj4gKysjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+ICsrIwo+ICsrIyBTWU5PUFNJUwo+ICsrIwo+ICsrIyAgIEFYX0NYWF9DT01QSUxFX1NU RENYWChWRVJTSU9OLCBbZXh0fG5vZXh0XSwgW21hbmRhdG9yeXxvcHRpb25hbF0pCj4gKysjCj4g KysjIERFU0NSSVBUSU9OCj4gKysjCj4gKysjICAgQ2hlY2sgZm9yIGJhc2VsaW5lIGxhbmd1YWdl IGNvdmVyYWdlIGluIHRoZSBjb21waWxlciBmb3IgdGhlIHNwZWNpZmllZAo+ICsrIyAgIHZlcnNp b24gb2YgdGhlIEMrKyBzdGFuZGFyZC4gIElmIG5lY2Vzc2FyeSwgYWRkIHN3aXRjaGVzIHRvIENY WCBhbmQKPiArKyMgICBDWFhDUFAgdG8gZW5hYmxlIHN1cHBvcnQuICBWRVJTSU9OIG1heSBiZSAn MTEnIChmb3IgdGhlIEMrKzExIHN0YW5kYXJkKQo+ICsrIyAgIG9yICcxNCcgKGZvciB0aGUgQysr MTQgc3RhbmRhcmQpLgo+ICsrIwo+ICsrIyAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHNwZWNp ZmllZCwgaW5kaWNhdGVzIHdoZXRoZXIgeW91IGluc2lzdCBvbiBhbgo+ICsrIyAgIGV4dGVuZGVk IG1vZGUgKGUuZy4gLXN0ZD1nbnUrKzExKSBvciBhIHN0cmljdCBjb25mb3JtYW5jZSBtb2RlIChl LmcuCj4gKysjICAgLXN0ZD1jKysxMSkuICBJZiBuZWl0aGVyIGlzIHNwZWNpZmllZCwgeW91IGdl dCB3aGF0ZXZlciB3b3Jrcywgd2l0aAo+ICsrIyAgIHByZWZlcmVuY2UgZm9yIGFuIGV4dGVuZGVk IG1vZGUuCj4gKysjCj4gKysjICAgVGhlIHRoaXJkIGFyZ3VtZW50LCBpZiBzcGVjaWZpZWQgJ21h bmRhdG9yeScgb3IgaWYgbGVmdCB1bnNwZWNpZmllZCwKPiArKyMgICBpbmRpY2F0ZXMgdGhhdCBi YXNlbGluZSBzdXBwb3J0IGZvciB0aGUgc3BlY2lmaWVkIEMrKyBzdGFuZGFyZCBpcwo+ICsrIyAg IHJlcXVpcmVkIGFuZCB0aGF0IHRoZSBtYWNybyBzaG91bGQgZXJyb3Igb3V0IGlmIG5vIG1vZGUg d2l0aCB0aGF0Cj4gKysjICAgc3VwcG9ydCBpcyBmb3VuZC4gIElmIHNwZWNpZmllZCAnb3B0aW9u YWwnLCB0aGVuIGNvbmZpZ3VyYXRpb24gcHJvY2VlZHMKPiArKyMgICByZWdhcmRsZXNzLCBhZnRl ciBkZWZpbmluZyBIQVZFX0NYWCR7VkVSU0lPTn0gaWYgYW5kIG9ubHkgaWYgYQo+ICsrIyAgIHN1 cHBvcnRpbmcgbW9kZSBpcyBmb3VuZC4KPiArKyMKPiArKyMgTElDRU5TRQo+ICsrIwo+ICsrIyAg IENvcHlyaWdodCAoYykgMjAwOCBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KPiAr KyMgICBDb3B5cmlnaHQgKGMpIDIwMTIgWmFjayBXZWluYmVyZyA8emFja3dAcGFuaXguY29tPgo+ ICsrIyAgIENvcHlyaWdodCAoYykgMjAxMyBSb3kgU3RvZ25lciA8cm95c3RnbnJAaWNlcy51dGV4 YXMuZWR1Pgo+ICsrIyAgIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBHb29nbGUgSW5jLjsgY29u dHJpYnV0ZWQgYnkgQWxleGV5IFNva29sb3YgPHNva29sb3ZAZ29vZ2xlLmNvbT4KPiArKyMgICBD b3B5cmlnaHQgKGMpIDIwMTUgUGF1bCBOb3JtYW4gPHBlbm9ybWFuQG1hYy5jb20+Cj4gKysjICAg Q29weXJpZ2h0IChjKSAyMDE1IE1vcml0eiBLbGFtbWxlciA8bW9yaXR6QGtsYW1tbGVyLmV1Pgo+ ICsrIyAgIENvcHlyaWdodCAoYykgMjAxNiBLcnplc2ltaXIgTm93YWsgPHFkbGFjekBnbWFpbC5j b20+Cj4gKysjCj4gKysjICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwg d2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCj4gKysjICAgcGVybWl0dGVkIGluIGFu eSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCj4g KysjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgb2ZmZXJl ZCBhcy1pcywgd2l0aG91dCBhbnkKPiArKyMgICB3YXJyYW50eS4KPiArKwo+ICsrI3NlcmlhbCA3 Cj4gKysKPiArK2RubCAgVGhpcyBtYWNybyBpcyBiYXNlZCBvbiB0aGUgY29kZSBmcm9tIHRoZSBB WF9DWFhfQ09NUElMRV9TVERDWFhfMTEgbWFjcm8KPiArK2RubCAgKHNlcmlhbCB2ZXJzaW9uIG51 bWJlciAxMykuCj4gKysKPiArK0FYX1JFUVVJUkVfREVGSU5FRChbQUNfTVNHX1dBUk5dKQo+ICsr QUNfREVGVU4oW0FYX0NYWF9DT01QSUxFX1NURENYWF0sIFtkbmwKPiArKyAgbTRfaWYoWyQxXSwg WzExXSwgW2F4X2N4eF9jb21waWxlX2FsdGVybmF0aXZlcz0iMTEgMHgiXSwKPiArKyAgICAgICAg WyQxXSwgWzE0XSwgW2F4X2N4eF9jb21waWxlX2FsdGVybmF0aXZlcz0iMTQgMXkiXSwKPiArKyAg ICAgICAgWyQxXSwgWzE3XSwgW2F4X2N4eF9jb21waWxlX2FsdGVybmF0aXZlcz0iMTcgMXoiXSwK PiArKyAgICAgICAgW200X2ZhdGFsKFtpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IGAkMScgdG8gQVhf Q1hYX0NPTVBJTEVfU1REQ1hYXSldKWRubAo+ICsrICBtNF9pZihbJDJdLCBbXSwgW10sCj4gKysg ICAgICAgIFskMl0sIFtleHRdLCBbXSwKPiArKyAgICAgICAgWyQyXSwgW25vZXh0XSwgW10sCj4g KysgICAgICAgIFttNF9mYXRhbChbaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgYCQyJyB0byBBWF9D WFhfQ09NUElMRV9TVERDWFhdKV0pZG5sCj4gKysgIG00X2lmKFskM10sIFtdLCBbYXhfY3h4X2Nv bXBpbGVfY3h4JDFfcmVxdWlyZWQ9dHJ1ZV0sCj4gKysgICAgICAgIFskM10sIFttYW5kYXRvcnld LCBbYXhfY3h4X2NvbXBpbGVfY3h4JDFfcmVxdWlyZWQ9dHJ1ZV0sCj4gKysgICAgICAgIFskM10s IFtvcHRpb25hbF0sIFtheF9jeHhfY29tcGlsZV9jeHgkMV9yZXF1aXJlZD1mYWxzZV0sCj4gKysg ICAgICAgIFttNF9mYXRhbChbaW52YWxpZCB0aGlyZCBhcmd1bWVudCBgJDMnIHRvIEFYX0NYWF9D T01QSUxFX1NURENYWF0pXSkKPiArKyAgQUNfTEFOR19QVVNIKFtDKytdKWRubAo+ICsrICBhY19z dWNjZXNzPW5vCj4gKysgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJENYWCBzdXBwb3J0cyBDKysk MSBmZWF0dXJlcyBieSBkZWZhdWx0LAo+ICsrICBheF9jdl9jeHhfY29tcGlsZV9jeHgkMSwKPiAr KyAgW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbX0FYX0NYWF9DT01QSUxFX1NU RENYWF90ZXN0Ym9keV8kMV0pXSwKPiArKyAgICBbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4JDE9eWVz XSwKPiArKyAgICBbYXhfY3ZfY3h4X2NvbXBpbGVfY3h4JDE9bm9dKV0pCj4gKysgIGlmIHRlc3Qg eCRheF9jdl9jeHhfY29tcGlsZV9jeHgkMSA9IHh5ZXM7IHRoZW4KPiArKyAgICBhY19zdWNjZXNz PXllcwo+ICsrICBmaQo+ICsrCj4gKysgIG00X2lmKFskMl0sIFtub2V4dF0sIFtdLCBbZG5sCj4g KysgIGlmIHRlc3QgeCRhY19zdWNjZXNzID0geG5vOyB0aGVuCj4gKysgICAgZm9yIGFsdGVybmF0 aXZlIGluICR7YXhfY3h4X2NvbXBpbGVfYWx0ZXJuYXRpdmVzfTsgZG8KPiArKyAgICAgIHN3aXRj aD0iLXN0ZD1nbnUrKyR7YWx0ZXJuYXRpdmV9Igo+ICsrICAgICAgY2FjaGV2YXI9QVNfVFJfU0go W2F4X2N2X2N4eF9jb21waWxlX2N4eCQxXyRzd2l0Y2hdKQo+ICsrICAgICAgQUNfQ0FDSEVfQ0hF Q0sod2hldGhlciAkQ1hYIHN1cHBvcnRzIEMrKyQxIGZlYXR1cmVzIHdpdGggJHN3aXRjaCwKPiAr KyAgICAgICAgICAgICAgICAgICAgICRjYWNoZXZhciwKPiArKyAgICAgICAgW2FjX3NhdmVfQ1hY PSIkQ1hYIgo+ICsrICAgICAgICAgQ1hYPSIkQ1hYICRzd2l0Y2giCj4gKysgICAgICAgICBBQ19D T01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW19BWF9DWFhfQ09NUElMRV9TVERDWFhfdGVz dGJvZHlfJDFdKV0sCj4gKysgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPXllc10sCj4gKysgICAg ICAgICAgW2V2YWwgJGNhY2hldmFyPW5vXSkKPiArKyAgICAgICAgIENYWD0iJGFjX3NhdmVfQ1hY Il0pCj4gKysgICAgICBpZiBldmFsIHRlc3QgeFwkJGNhY2hldmFyID0geHllczsgdGhlbgo+ICsr ICAgICAgICBDWFg9IiRDWFggJHN3aXRjaCIKPiArKyAgICAgICAgaWYgdGVzdCAtbiAiJENYWENQ UCIgOyB0aGVuCj4gKysgICAgICAgICAgQ1hYQ1BQPSIkQ1hYQ1BQICRzd2l0Y2giCj4gKysgICAg ICAgIGZpCj4gKysgICAgICAgIGFjX3N1Y2Nlc3M9eWVzCj4gKysgICAgICAgIGJyZWFrCj4gKysg ICAgICBmaQo+ICsrICAgIGRvbmUKPiArKyAgZmldKQo+ICsrCj4gKysgIG00X2lmKFskMl0sIFtl eHRdLCBbXSwgW2RubAo+ICsrICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgo+ICsr ICAgIGRubCBIUCdzIGFDQyBuZWVkcyArc3RkPWMrKzExIGFjY29yZGluZyB0bzoKPiArKyAgICBk bmwgaHR0cDovL2gyMTAwNy53d3cyLmhwLmNvbS9wb3J0YWwvZG93bmxvYWQvZmlsZXMvdW5wcm90 L2FDeHgvUERGX1JlbGVhc2VfTm90ZXMvNzY5MTQ5LTAwMS5wZGYKPiArKyAgICBkbmwgQ3JheSdz IGNyYXlDQyBuZWVkcyAiLWggc3RkPWMrKzExIgo+ICsrICAgIGZvciBhbHRlcm5hdGl2ZSBpbiAk e2F4X2N4eF9jb21waWxlX2FsdGVybmF0aXZlc307IGRvCj4gKysgICAgICBmb3Igc3dpdGNoIGlu IC1zdGQ9YysrJHthbHRlcm5hdGl2ZX0gK3N0ZD1jKyske2FsdGVybmF0aXZlfSAiLWggc3RkPWMr KyR7YWx0ZXJuYXRpdmV9IjsgZG8KPiArKyAgICAgICAgY2FjaGV2YXI9QVNfVFJfU0goW2F4X2N2 X2N4eF9jb21waWxlX2N4eCQxXyRzd2l0Y2hdKQo+ICsrICAgICAgICBBQ19DQUNIRV9DSEVDSyh3 aGV0aGVyICRDWFggc3VwcG9ydHMgQysrJDEgZmVhdHVyZXMgd2l0aCAkc3dpdGNoLAo+ICsrICAg ICAgICAgICAgICAgICAgICAgICAkY2FjaGV2YXIsCj4gKysgICAgICAgICAgW2FjX3NhdmVfQ1hY PSIkQ1hYIgo+ICsrICAgICAgICAgICBDWFg9IiRDWFggJHN3aXRjaCIKPiArKyAgICAgICAgICAg QUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtfQVhfQ1hYX0NPTVBJTEVfU1REQ1hY X3Rlc3Rib2R5XyQxXSldLAo+ICsrICAgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPXllc10sCj4g KysgICAgICAgICAgICBbZXZhbCAkY2FjaGV2YXI9bm9dKQo+ICsrICAgICAgICAgICBDWFg9IiRh Y19zYXZlX0NYWCJdKQo+ICsrICAgICAgICBpZiBldmFsIHRlc3QgeFwkJGNhY2hldmFyID0geHll czsgdGhlbgo+ICsrICAgICAgICAgIENYWD0iJENYWCAkc3dpdGNoIgo+ICsrICAgICAgICAgIGlm IHRlc3QgLW4gIiRDWFhDUFAiIDsgdGhlbgo+ICsrICAgICAgICAgICAgQ1hYQ1BQPSIkQ1hYQ1BQ ICRzd2l0Y2giCj4gKysgICAgICAgICAgZmkKPiArKyAgICAgICAgICBhY19zdWNjZXNzPXllcwo+ ICsrICAgICAgICAgIGJyZWFrCj4gKysgICAgICAgIGZpCj4gKysgICAgICBkb25lCj4gKysgICAg ICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHh5ZXM7IHRoZW4KPiArKyAgICAgICAgYnJlYWsKPiAr KyAgICAgIGZpCj4gKysgICAgZG9uZQo+ICsrICBmaV0pCj4gKysgIEFDX0xBTkdfUE9QKFtDKytd KQo+ICsrICBpZiB0ZXN0IHgkYXhfY3h4X2NvbXBpbGVfY3h4JDFfcmVxdWlyZWQgPSB4dHJ1ZTsg dGhlbgo+ICsrICAgIGlmIHRlc3QgeCRhY19zdWNjZXNzID0geG5vOyB0aGVuCj4gKysgICAgICBB Q19NU0dfRVJST1IoWyoqKiBBIGNvbXBpbGVyIHdpdGggc3VwcG9ydCBmb3IgQysrJDEgbGFuZ3Vh Z2UgZmVhdHVyZXMgaXMgcmVxdWlyZWQuXSkKPiArKyAgICBmaQo+ICsrICBmaQo+ICsrICBpZiB0 ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgo+ICsrICAgIEhBVkVfQ1hYJDE9MAo+ICsrICAg IEFDX01TR19OT1RJQ0UoW05vIGNvbXBpbGVyIHdpdGggQysrJDEgc3VwcG9ydCB3YXMgZm91bmRd KQo+ICsrICBlbHNlCj4gKysgICAgSEFWRV9DWFgkMT0xCj4gKysgICAgQUNfREVGSU5FKEhBVkVf Q1hYJDEsMSwKPiArKyAgICAgICAgICAgICAgW2RlZmluZSBpZiB0aGUgY29tcGlsZXIgc3VwcG9y dHMgYmFzaWMgQysrJDEgc3ludGF4XSkKPiArKyAgZmkKPiArKyAgQUNfU1VCU1QoSEFWRV9DWFgk MSkKPiArKyAgbTRfaWYoWyQxXSwgWzE3XSwgW0FDX01TR19XQVJOKFtDKysxNyBpcyBub3QgeWV0 IHN0YW5kYXJkaXplZCwgc28gdGhlIGNoZWNrcyBtYXkgY2hhbmdlIGluIGluY29tcGF0aWJsZSB3 YXlzIGFueXRpbWVdKV0pCj4gKytdKQo+ICsrCj4gKysKPiArK2RubCAgVGVzdCBib2R5IGZvciBj aGVja2luZyBDKysxMSBzdXBwb3J0Cj4gKysKPiArK200X2RlZmluZShbX0FYX0NYWF9DT01QSUxF X1NURENYWF90ZXN0Ym9keV8xMV0sCj4gKysgIF9BWF9DWFhfQ09NUElMRV9TVERDWFhfdGVzdGJv ZHlfbmV3X2luXzExCj4gKyspCj4gKysKPiArKwo+ICsrZG5sICBUZXN0IGJvZHkgZm9yIGNoZWNr aW5nIEMrKzE0IHN1cHBvcnQKPiArKwo+ICsrbTRfZGVmaW5lKFtfQVhfQ1hYX0NPTVBJTEVfU1RE Q1hYX3Rlc3Rib2R5XzE0XSwKPiArKyAgX0FYX0NYWF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9u ZXdfaW5fMTEKPiArKyAgX0FYX0NYWF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTQK PiArKykKPiArKwo+ICsrbTRfZGVmaW5lKFtfQVhfQ1hYX0NPTVBJTEVfU1REQ1hYX3Rlc3Rib2R5 XzE3XSwKPiArKyAgX0FYX0NYWF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTEKPiAr KyAgX0FYX0NYWF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTQKPiArKyAgX0FYX0NY WF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTcKPiArKykKPiArKwo+ICsrZG5sICBU ZXN0cyBmb3IgbmV3IGZlYXR1cmVzIGluIEMrKzExCj4gKysKPiArK200X2RlZmluZShbX0FYX0NY WF9DT01QSUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTFdLCBbWwo+ICsrCj4gKysvLyBJZiB0 aGUgY29tcGlsZXIgYWRtaXRzIHRoYXQgaXQgaXMgbm90IHJlYWR5IGZvciBDKysxMSwgd2h5IHRv cnR1cmUgaXQ/Cj4gKysvLyBIb3BlZnVsbHksIHRoaXMgd2lsbCBzcGVlZCB1cCB0aGUgdGVzdC4K PiArKwo+ICsrI2lmbmRlZiBfX2NwbHVzcGx1cwo+ICsrCj4gKysjZXJyb3IgIlRoaXMgaXMgbm90 IGEgQysrIGNvbXBpbGVyIgo+ICsrCj4gKysjZWxpZiBfX2NwbHVzcGx1cyA8IDIwMTEwM0wKPiAr Kwo+ICsrI2Vycm9yICJUaGlzIGlzIG5vdCBhIEMrKzExIGNvbXBpbGVyIgo+ICsrCj4gKysjZWxz ZQo+ICsrCj4gKytuYW1lc3BhY2UgY3h4MTEKPiArK3sKPiArKwo+ICsrICBuYW1lc3BhY2UgdGVz dF9zdGF0aWNfYXNzZXJ0Cj4gKysgIHsKPiArKwo+ICsrICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU Pgo+ICsrICAgIHN0cnVjdCBjaGVjawo+ICsrICAgIHsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQo c2l6ZW9mKGludCkgPD0gc2l6ZW9mKFQpLCAibm90IGJpZyBlbm91Z2giKTsKPiArKyAgICB9Owo+ ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9maW5hbF9vdmVycmlkZQo+ICsr ICB7Cj4gKysKPiArKyAgICBzdHJ1Y3QgQmFzZQo+ICsrICAgIHsKPiArKyAgICAgIHZpcnR1YWwg dm9pZCBmKCkge30KPiArKyAgICB9Owo+ICsrCj4gKysgICAgc3RydWN0IERlcml2ZWQgOiBwdWJs aWMgQmFzZQo+ICsrICAgIHsKPiArKyAgICAgIHZpcnR1YWwgdm9pZCBmKCkgb3ZlcnJpZGUge30K PiArKyAgICB9Owo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9kb3VibGVf cmlnaHRfYW5nbGVfYnJhY2tldHMKPiArKyAgewo+ICsrCj4gKysgICAgdGVtcGxhdGUgPCB0eXBl bmFtZSBUID4KPiArKyAgICBzdHJ1Y3QgY2hlY2sge307Cj4gKysKPiArKyAgICB0eXBlZGVmIGNo ZWNrPHZvaWQ+IHNpbmdsZV90eXBlOwo+ICsrICAgIHR5cGVkZWYgY2hlY2s8Y2hlY2s8dm9pZD4+ IGRvdWJsZV90eXBlOwo+ICsrICAgIHR5cGVkZWYgY2hlY2s8Y2hlY2s8Y2hlY2s8dm9pZD4+PiB0 cmlwbGVfdHlwZTsKPiArKyAgICB0eXBlZGVmIGNoZWNrPGNoZWNrPGNoZWNrPGNoZWNrPHZvaWQ+ Pj4+IHF1YWRydXBsZV90eXBlOwo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVz dF9kZWNsdHlwZQo+ICsrICB7Cj4gKysKPiArKyAgICBpbnQKPiArKyAgICBmKCkKPiArKyAgICB7 Cj4gKysgICAgICBpbnQgYSA9IDE7Cj4gKysgICAgICBkZWNsdHlwZShhKSBiID0gMjsKPiArKyAg ICAgIHJldHVybiBhICsgYjsKPiArKyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4gKysgIG5hbWVz cGFjZSB0ZXN0X3R5cGVfZGVkdWN0aW9uCj4gKysgIHsKPiArKwo+ICsrICAgIHRlbXBsYXRlIDwg dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4KPiArKyAgICBzdHJ1Y3QgaXNfc2FtZQo+ICsrICAg IHsKPiArKyAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gZmFsc2U7Cj4gKysgICAgfTsK PiArKwo+ICsrICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVCA+Cj4gKysgICAgc3RydWN0IGlzX3Nh bWU8VCwgVD4KPiArKyAgICB7Cj4gKysgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy dWU7Cj4gKysgICAgfTsKPiArKwo+ICsrICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVDEsIHR5cGVu YW1lIFQyID4KPiArKyAgICBhdXRvCj4gKysgICAgYWRkKFQxIGExLCBUMiBhMikgLT4gZGVjbHR5 cGUoYTEgKyBhMikKPiArKyAgICB7Cj4gKysgICAgICByZXR1cm4gYTEgKyBhMjsKPiArKyAgICB9 Cj4gKysKPiArKyAgICBpbnQKPiArKyAgICB0ZXN0KGNvbnN0IGludCBjLCB2b2xhdGlsZSBpbnQg dikKPiArKyAgICB7Cj4gKysgICAgICBzdGF0aWNfYXNzZXJ0KGlzX3NhbWU8aW50LCBkZWNsdHlw ZSgwKT46OnZhbHVlID09IHRydWUsICIiKTsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2Ft ZTxpbnQsIGRlY2x0eXBlKGMpPjo6dmFsdWUgPT0gZmFsc2UsICIiKTsKPiArKyAgICAgIHN0YXRp Y19hc3NlcnQoaXNfc2FtZTxpbnQsIGRlY2x0eXBlKHYpPjo6dmFsdWUgPT0gZmFsc2UsICIiKTsK PiArKyAgICAgIGF1dG8gYWMgPSBjOwo+ICsrICAgICAgYXV0byBhdiA9IHY7Cj4gKysgICAgICBh dXRvIHN1bWkgPSBhYyArIGF2ICsgJ3gnOwo+ICsrICAgICAgYXV0byBzdW1mID0gYWMgKyBhdiAr IDEuMDsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZTxpbnQsIGRlY2x0eXBlKGFjKT46 OnZhbHVlID09IHRydWUsICIiKTsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZTxpbnQs IGRlY2x0eXBlKGF2KT46OnZhbHVlID09IHRydWUsICIiKTsKPiArKyAgICAgIHN0YXRpY19hc3Nl cnQoaXNfc2FtZTxpbnQsIGRlY2x0eXBlKHN1bWkpPjo6dmFsdWUgPT0gdHJ1ZSwgIiIpOwo+ICsr ICAgICAgc3RhdGljX2Fzc2VydChpc19zYW1lPGludCwgZGVjbHR5cGUoc3VtZik+Ojp2YWx1ZSA9 PSBmYWxzZSwgIiIpOwo+ICsrICAgICAgc3RhdGljX2Fzc2VydChpc19zYW1lPGludCwgZGVjbHR5 cGUoYWRkKGMsIHYpKT46OnZhbHVlID09IHRydWUsICIiKTsKPiArKyAgICAgIHJldHVybiAoc3Vt ZiA+IDAuMCkgPyBzdW1pIDogYWRkKGMsIHYpOwo+ICsrICAgIH0KPiArKwo+ICsrICB9Cj4gKysK PiArKyAgbmFtZXNwYWNlIHRlc3Rfbm9leGNlcHQKPiArKyAgewo+ICsrCj4gKysgICAgaW50IGYo KSB7IHJldHVybiAwOyB9Cj4gKysgICAgaW50IGcoKSBub2V4Y2VwdCB7IHJldHVybiAwOyB9Cj4g KysKPiArKyAgICBzdGF0aWNfYXNzZXJ0KG5vZXhjZXB0KGYoKSkgPT0gZmFsc2UsICIiKTsKPiAr KyAgICBzdGF0aWNfYXNzZXJ0KG5vZXhjZXB0KGcoKSkgPT0gdHJ1ZSwgIiIpOwo+ICsrCj4gKysg IH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9jb25zdGV4cHIKPiArKyAgewo+ICsrCj4gKysg ICAgdGVtcGxhdGUgPCB0eXBlbmFtZSBDaGFyVCA+Cj4gKysgICAgdW5zaWduZWQgbG9uZyBjb25z dGV4cHIKPiArKyAgICBzdHJsZW5fY19yKGNvbnN0IENoYXJUICpjb25zdCBzLCBjb25zdCB1bnNp Z25lZCBsb25nIGFjYykgbm9leGNlcHQKPiArKyAgICB7Cj4gKysgICAgICByZXR1cm4gKnMgPyBz dHJsZW5fY19yKHMgKyAxLCBhY2MgKyAxKSA6IGFjYzsKPiArKyAgICB9Cj4gKysKPiArKyAgICB0 ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXJUID4KPiArKyAgICB1bnNpZ25lZCBsb25nIGNvbnN0ZXhw cgo+ICsrICAgIHN0cmxlbl9jKGNvbnN0IENoYXJUICpjb25zdCBzKSBub2V4Y2VwdAo+ICsrICAg IHsKPiArKyAgICAgIHJldHVybiBzdHJsZW5fY19yKHMsIDBVTCk7Cj4gKysgICAgfQo+ICsrCj4g KysgICAgc3RhdGljX2Fzc2VydChzdHJsZW5fYygiIikgPT0gMFVMLCAiIik7Cj4gKysgICAgc3Rh dGljX2Fzc2VydChzdHJsZW5fYygiMSIpID09IDFVTCwgIiIpOwo+ICsrICAgIHN0YXRpY19hc3Nl cnQoc3RybGVuX2MoImV4YW1wbGUiKSA9PSA3VUwsICIiKTsKPiArKyAgICBzdGF0aWNfYXNzZXJ0 KHN0cmxlbl9jKCJhbm90aGVyXDBleGFtcGxlIikgPT0gN1VMLCAiIik7Cj4gKysKPiArKyAgfQo+ ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X3J2YWx1ZV9yZWZlcmVuY2VzCj4gKysgIHsKPiArKwo+ ICsrICAgIHRlbXBsYXRlIDwgaW50IE4gPgo+ICsrICAgIHN0cnVjdCBhbnN3ZXIKPiArKyAgICB7 Cj4gKysgICAgICBzdGF0aWMgY29uc3RleHByIGludCB2YWx1ZSA9IE47Cj4gKysgICAgfTsKPiAr Kwo+ICsrICAgIGFuc3dlcjwxPiBmKGludCYpICAgICAgIHsgcmV0dXJuIGFuc3dlcjwxPigpOyB9 Cj4gKysgICAgYW5zd2VyPDI+IGYoY29uc3QgaW50JikgeyByZXR1cm4gYW5zd2VyPDI+KCk7IH0K PiArKyAgICBhbnN3ZXI8Mz4gZihpbnQmJikgICAgICB7IHJldHVybiBhbnN3ZXI8Mz4oKTsgfQo+ ICsrCj4gKysgICAgdm9pZAo+ICsrICAgIHRlc3QoKQo+ICsrICAgIHsKPiArKyAgICAgIGludCBp ID0gMDsKPiArKyAgICAgIGNvbnN0IGludCBjID0gMDsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQo ZGVjbHR5cGUoZihpKSk6OnZhbHVlID09IDEsICIiKTsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQo ZGVjbHR5cGUoZihjKSk6OnZhbHVlID09IDIsICIiKTsKPiArKyAgICAgIHN0YXRpY19hc3NlcnQo ZGVjbHR5cGUoZigwKSk6OnZhbHVlID09IDMsICIiKTsKPiArKyAgICB9Cj4gKysKPiArKyAgfQo+ ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X3VuaWZvcm1faW5pdGlhbGl6YXRpb24KPiArKyAgewo+ ICsrCj4gKysgICAgc3RydWN0IHRlc3QKPiArKyAgICB7Cj4gKysgICAgICBzdGF0aWMgY29uc3Qg aW50IHplcm8ge307Cj4gKysgICAgICBzdGF0aWMgY29uc3QgaW50IG9uZSB7MX07Cj4gKysgICAg fTsKPiArKwo+ICsrICAgIHN0YXRpY19hc3NlcnQodGVzdDo6emVybyA9PSAwLCAiIik7Cj4gKysg ICAgc3RhdGljX2Fzc2VydCh0ZXN0OjpvbmUgPT0gMSwgIiIpOwo+ICsrCj4gKysgIH0KPiArKwo+ ICsrICBuYW1lc3BhY2UgdGVzdF9sYW1iZGFzCj4gKysgIHsKPiArKwo+ICsrICAgIHZvaWQKPiAr KyAgICB0ZXN0MSgpCj4gKysgICAgewo+ICsrICAgICAgYXV0byBsYW1iZGExID0gW10oKXt9Owo+ ICsrICAgICAgYXV0byBsYW1iZGEyID0gbGFtYmRhMTsKPiArKyAgICAgIGxhbWJkYTEoKTsKPiAr KyAgICAgIGxhbWJkYTIoKTsKPiArKyAgICB9Cj4gKysKPiArKyAgICBpbnQKPiArKyAgICB0ZXN0 MigpCj4gKysgICAgewo+ICsrICAgICAgYXV0byBhID0gW10oaW50IGksIGludCBqKXsgcmV0dXJu IGkgKyBqOyB9KDEsIDIpOwo+ICsrICAgICAgYXV0byBiID0gW10oKSAtPiBpbnQgeyByZXR1cm4g JzAnOyB9KCk7Cj4gKysgICAgICBhdXRvIGMgPSBbPV0oKXsgcmV0dXJuIGEgKyBiOyB9KCk7Cj4g KysgICAgICBhdXRvIGQgPSBbJl0oKXsgcmV0dXJuIGM7IH0oKTsKPiArKyAgICAgIGF1dG8gZSA9 IFthLCAmYl0oaW50IHgpIG11dGFibGUgewo+ICsrICAgICAgICBjb25zdCBhdXRvIGlkZW50aXR5 ID0gW10oaW50IHkpeyByZXR1cm4geTsgfTsKPiArKyAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBp IDwgYTsgKytpKQo+ICsrICAgICAgICAgIGEgKz0gYi0tOwo+ICsrICAgICAgICByZXR1cm4geCAr IGlkZW50aXR5KGEgKyBiKTsKPiArKyAgICAgIH0oMCk7Cj4gKysgICAgICByZXR1cm4gYSArIGIg KyBjICsgZCArIGU7Cj4gKysgICAgfQo+ICsrCj4gKysgICAgaW50Cj4gKysgICAgdGVzdDMoKQo+ ICsrICAgIHsKPiArKyAgICAgIGNvbnN0IGF1dG8gbnVsbGFyeSA9IFtdKCl7IHJldHVybiAwOyB9 Owo+ICsrICAgICAgY29uc3QgYXV0byB1bmFyeSA9IFtdKGludCB4KXsgcmV0dXJuIHg7IH07Cj4g KysgICAgICB1c2luZyBudWxsYXJ5X3QgPSBkZWNsdHlwZShudWxsYXJ5KTsKPiArKyAgICAgIHVz aW5nIHVuYXJ5X3QgPSBkZWNsdHlwZSh1bmFyeSk7Cj4gKysgICAgICBjb25zdCBhdXRvIGhpZ2hl cjFzdCA9IFtdKG51bGxhcnlfdCBmKXsgcmV0dXJuIGYoKTsgfTsKPiArKyAgICAgIGNvbnN0IGF1 dG8gaGlnaGVyMm5kID0gW3VuYXJ5XShudWxsYXJ5X3QgZjEpewo+ICsrICAgICAgICByZXR1cm4g W3VuYXJ5LCBmMV0odW5hcnlfdCBmMil7IHJldHVybiBmMih1bmFyeShmMSgpKSk7IH07Cj4gKysg ICAgICB9Owo+ICsrICAgICAgcmV0dXJuIGhpZ2hlcjFzdChudWxsYXJ5KSArIGhpZ2hlcjJuZChu dWxsYXJ5KSh1bmFyeSk7Cj4gKysgICAgfQo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3Bh Y2UgdGVzdF92YXJpYWRpY190ZW1wbGF0ZXMKPiArKyAgewo+ICsrCj4gKysgICAgdGVtcGxhdGUg PGludC4uLj4KPiArKyAgICBzdHJ1Y3Qgc3VtOwo+ICsrCj4gKysgICAgdGVtcGxhdGUgPGludCBO MCwgaW50Li4uIE4xdG9OPgo+ICsrICAgIHN0cnVjdCBzdW08TjAsIE4xdG9OLi4uPgo+ICsrICAg IHsKPiArKyAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byB2YWx1ZSA9IE4wICsgc3VtPE4xdG9O Li4uPjo6dmFsdWU7Cj4gKysgICAgfTsKPiArKwo+ICsrICAgIHRlbXBsYXRlIDw+Cj4gKysgICAg c3RydWN0IHN1bTw+Cj4gKysgICAgewo+ICsrICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHZh bHVlID0gMDsKPiArKyAgICB9Owo+ICsrCj4gKysgICAgc3RhdGljX2Fzc2VydChzdW08Pjo6dmFs dWUgPT0gMCwgIiIpOwo+ICsrICAgIHN0YXRpY19hc3NlcnQoc3VtPDE+Ojp2YWx1ZSA9PSAxLCAi Iik7Cj4gKysgICAgc3RhdGljX2Fzc2VydChzdW08MjM+Ojp2YWx1ZSA9PSAyMywgIiIpOwo+ICsr ICAgIHN0YXRpY19hc3NlcnQoc3VtPDEsIDI+Ojp2YWx1ZSA9PSAzLCAiIik7Cj4gKysgICAgc3Rh dGljX2Fzc2VydChzdW08NSwgNSwgMTE+Ojp2YWx1ZSA9PSAyMSwgIiIpOwo+ICsrICAgIHN0YXRp Y19hc3NlcnQoc3VtPDIsIDMsIDUsIDcsIDExLCAxMz46OnZhbHVlID09IDQxLCAiIik7Cj4gKysK PiArKyAgfQo+ICsrCj4gKysgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMv MTM3MjgxODQvdGVtcGxhdGUtYWxpYXNlcy1hbmQtc2ZpbmFlCj4gKysgIC8vIENsYW5nIDMuMSBm YWlscyB3aXRoIGhlYWRlcnMgb2YgbGlic3RkKysgNC44LjMgd2hlbiB1c2luZyBzdGQ6OmZ1bmN0 aW9uCj4gKysgIC8vIGJlY2F1c2Ugb2YgdGhpcy4KPiArKyAgbmFtZXNwYWNlIHRlc3RfdGVtcGxh dGVfYWxpYXNfc2ZpbmFlCj4gKysgIHsKPiArKwo+ICsrICAgIHN0cnVjdCBmb28ge307Cj4gKysK PiArKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgo+ICsrICAgIHVzaW5nIG1lbWJlciA9IHR5cGVu YW1lIFQ6Om1lbWJlcl90eXBlOwo+ICsrCj4gKysgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KPiAr KyAgICB2b2lkIGZ1bmMoLi4uKSB7fQo+ICsrCj4gKysgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K PiArKyAgICB2b2lkIGZ1bmMobWVtYmVyPFQ+Kikge30KPiArKwo+ICsrICAgIHZvaWQgdGVzdCgp Owo+ICsrCj4gKysgICAgdm9pZCB0ZXN0KCkgeyBmdW5jPGZvbz4oMCk7IH0KPiArKwo+ICsrICB9 Cj4gKysKPiArK30gIC8vIG5hbWVzcGFjZSBjeHgxMQo+ICsrCj4gKysjZW5kaWYgIC8vIF9fY3Bs dXNwbHVzID49IDIwMTEwM0wKPiArKwo+ICsrXV0pCj4gKysKPiArKwo+ICsrZG5sICBUZXN0cyBm b3IgbmV3IGZlYXR1cmVzIGluIEMrKzE0Cj4gKysKPiArK200X2RlZmluZShbX0FYX0NYWF9DT01Q SUxFX1NURENYWF90ZXN0Ym9keV9uZXdfaW5fMTRdLCBbWwo+ICsrCj4gKysvLyBJZiB0aGUgY29t cGlsZXIgYWRtaXRzIHRoYXQgaXQgaXMgbm90IHJlYWR5IGZvciBDKysxNCwgd2h5IHRvcnR1cmUg aXQ/Cj4gKysvLyBIb3BlZnVsbHksIHRoaXMgd2lsbCBzcGVlZCB1cCB0aGUgdGVzdC4KPiArKwo+ ICsrI2lmbmRlZiBfX2NwbHVzcGx1cwo+ICsrCj4gKysjZXJyb3IgIlRoaXMgaXMgbm90IGEgQysr IGNvbXBpbGVyIgo+ICsrCj4gKysjZWxpZiBfX2NwbHVzcGx1cyA8IDIwMTQwMkwKPiArKwo+ICsr I2Vycm9yICJUaGlzIGlzIG5vdCBhIEMrKzE0IGNvbXBpbGVyIgo+ICsrCj4gKysjZWxzZQo+ICsr Cj4gKytuYW1lc3BhY2UgY3h4MTQKPiArK3sKPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9wb2x5 bW9ycGhpY19sYW1iZGFzCj4gKysgIHsKPiArKwo+ICsrICAgIGludAo+ICsrICAgIHRlc3QoKQo+ ICsrICAgIHsKPiArKyAgICAgIGNvbnN0IGF1dG8gbGFtYmRhID0gW10oYXV0byYmLi4uIGFyZ3Mp ewo+ICsrICAgICAgICBjb25zdCBhdXRvIGlzdGlueSA9IFtdKGF1dG8geCl7Cj4gKysgICAgICAg ICAgcmV0dXJuIChzaXplb2YoeCkgPT0gMVVMKSA/IDEgOiAwOwo+ICsrICAgICAgICB9Owo+ICsr ICAgICAgICBjb25zdCBpbnQgYXJldGlueVtdID0geyBpc3RpbnkoYXJncykuLi4gfTsKPiArKyAg ICAgICAgcmV0dXJuIGFyZXRpbnlbMF07Cj4gKysgICAgICB9Owo+ICsrICAgICAgcmV0dXJuIGxh bWJkYSgxLCAxTCwgMS4wZiwgJzEnKTsKPiArKyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4gKysg IG5hbWVzcGFjZSB0ZXN0X2JpbmFyeV9saXRlcmFscwo+ICsrICB7Cj4gKysKPiArKyAgICBjb25z dGV4cHIgYXV0byBpdmlpID0gMGIwMDAwMDAwMDAwMTAxMDEwOwo+ICsrICAgIHN0YXRpY19hc3Nl cnQoaXZpaSA9PSA0MiwgIndyb25nIHZhbHVlIik7Cj4gKysKPiArKyAgfQo+ICsrCj4gKysgIG5h bWVzcGFjZSB0ZXN0X2dlbmVyYWxpemVkX2NvbnN0ZXhwcgo+ICsrICB7Cj4gKysKPiArKyAgICB0 ZW1wbGF0ZSA8IHR5cGVuYW1lIENoYXJUID4KPiArKyAgICBjb25zdGV4cHIgdW5zaWduZWQgbG9u Zwo+ICsrICAgIHN0cmxlbl9jKGNvbnN0IENoYXJUICpjb25zdCBzKSBub2V4Y2VwdAo+ICsrICAg IHsKPiArKyAgICAgIGF1dG8gbGVuZ3RoID0gMFVMOwo+ICsrICAgICAgZm9yIChhdXRvIHAgPSBz OyAqcDsgKytwKQo+ICsrICAgICAgICArK2xlbmd0aDsKPiArKyAgICAgIHJldHVybiBsZW5ndGg7 Cj4gKysgICAgfQo+ICsrCj4gKysgICAgc3RhdGljX2Fzc2VydChzdHJsZW5fYygiIikgPT0gMFVM LCAiIik7Cj4gKysgICAgc3RhdGljX2Fzc2VydChzdHJsZW5fYygieCIpID09IDFVTCwgIiIpOwo+ ICsrICAgIHN0YXRpY19hc3NlcnQoc3RybGVuX2MoInRlc3QiKSA9PSA0VUwsICIiKTsKPiArKyAg ICBzdGF0aWNfYXNzZXJ0KHN0cmxlbl9jKCJhbm90aGVyXDB0ZXN0IikgPT0gN1VMLCAiIik7Cj4g KysKPiArKyAgfQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2xhbWJkYV9pbml0X2NhcHR1cmUK PiArKyAgewo+ICsrCj4gKysgICAgaW50Cj4gKysgICAgdGVzdCgpCj4gKysgICAgewo+ICsrICAg ICAgYXV0byB4ID0gMDsKPiArKyAgICAgIGNvbnN0IGF1dG8gbGFtYmRhMSA9IFthID0geF0oaW50 IGIpeyByZXR1cm4gYSArIGI7IH07Cj4gKysgICAgICBjb25zdCBhdXRvIGxhbWJkYTIgPSBbYSA9 IGxhbWJkYTEoeCldKCl7IHJldHVybiBhOyB9Owo+ICsrICAgICAgcmV0dXJuIGxhbWJkYTIoKTsK PiArKyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2RpZ2l0X3Nl cGFyYXRvcnMKPiArKyAgewo+ICsrCj4gKysgICAgY29uc3RleHByIGF1dG8gdGVuX21pbGxpb24g PSAxMDAnMDAwJzAwMDsKPiArKyAgICBzdGF0aWNfYXNzZXJ0KHRlbl9taWxsaW9uID09IDEwMDAw MDAwMCwgIiIpOwo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9yZXR1cm5f dHlwZV9kZWR1Y3Rpb24KPiArKyAgewo+ICsrCj4gKysgICAgYXV0byBmKGludCYgeCkgeyByZXR1 cm4geDsgfQo+ICsrICAgIGRlY2x0eXBlKGF1dG8pIGcoaW50JiB4KSB7IHJldHVybiB4OyB9Cj4g KysKPiArKyAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Cj4gKysgICAg c3RydWN0IGlzX3NhbWUKPiArKyAgICB7Cj4gKysgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g dmFsdWUgPSBmYWxzZTsKPiArKyAgICB9Owo+ICsrCj4gKysgICAgdGVtcGxhdGUgPCB0eXBlbmFt ZSBUID4KPiArKyAgICBzdHJ1Y3QgaXNfc2FtZTxULCBUPgo+ICsrICAgIHsKPiArKyAgICAgIHN0 YXRpYyBjb25zdGV4cHIgYXV0byB2YWx1ZSA9IHRydWU7Cj4gKysgICAgfTsKPiArKwo+ICsrICAg IGludAo+ICsrICAgIHRlc3QoKQo+ICsrICAgIHsKPiArKyAgICAgIGF1dG8geCA9IDA7Cj4gKysg ICAgICBzdGF0aWNfYXNzZXJ0KGlzX3NhbWU8aW50LCBkZWNsdHlwZShmKHgpKT46OnZhbHVlLCAi Iik7Cj4gKysgICAgICBzdGF0aWNfYXNzZXJ0KGlzX3NhbWU8aW50JiwgZGVjbHR5cGUoZyh4KSk+ Ojp2YWx1ZSwgIiIpOwo+ICsrICAgICAgcmV0dXJuIHg7Cj4gKysgICAgfQo+ICsrCj4gKysgIH0K PiArKwo+ICsrfSAgLy8gbmFtZXNwYWNlIGN4eDE0Cj4gKysKPiArKyNlbmRpZiAgLy8gX19jcGx1 c3BsdXMgPj0gMjAxNDAyTAo+ICsrCj4gKytdXSkKPiArKwo+ICsrCj4gKytkbmwgIFRlc3RzIGZv ciBuZXcgZmVhdHVyZXMgaW4gQysrMTcKPiArKwo+ICsrbTRfZGVmaW5lKFtfQVhfQ1hYX0NPTVBJ TEVfU1REQ1hYX3Rlc3Rib2R5X25ld19pbl8xN10sIFtbCj4gKysKPiArKy8vIElmIHRoZSBjb21w aWxlciBhZG1pdHMgdGhhdCBpdCBpcyBub3QgcmVhZHkgZm9yIEMrKzE3LCB3aHkgdG9ydHVyZSBp dD8KPiArKy8vIEhvcGVmdWxseSwgdGhpcyB3aWxsIHNwZWVkIHVwIHRoZSB0ZXN0Lgo+ICsrCj4g KysjaWZuZGVmIF9fY3BsdXNwbHVzCj4gKysKPiArKyNlcnJvciAiVGhpcyBpcyBub3QgYSBDKysg Y29tcGlsZXIiCj4gKysKPiArKyNlbGlmIF9fY3BsdXNwbHVzIDw9IDIwMTQwMkwKPiArKwo+ICsr I2Vycm9yICJUaGlzIGlzIG5vdCBhIEMrKzE3IGNvbXBpbGVyIgo+ICsrCj4gKysjZWxzZQo+ICsr Cj4gKysjaWYgZGVmaW5lZChfX2NsYW5nX18pCj4gKysgICNkZWZpbmUgUkVBTExZX0NMQU5HCj4g KysjZWxzZQo+ICsrICAjaWYgZGVmaW5lZChfX0dOVUNfXykKPiArKyAgICAjZGVmaW5lIFJFQUxM WV9HQ0MKPiArKyAgI2VuZGlmCj4gKysjZW5kaWYKPiArKwo+ICsrI2luY2x1ZGUgPGluaXRpYWxp emVyX2xpc3Q+Cj4gKysjaW5jbHVkZSA8dXRpbGl0eT4KPiArKyNpbmNsdWRlIDx0eXBlX3RyYWl0 cz4KPiArKwo+ICsrbmFtZXNwYWNlIGN4eDE3Cj4gKyt7Cj4gKysKPiArKyNpZiAhZGVmaW5lZChS RUFMTFlfQ0xBTkcpCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2NvbnN0ZXhwcl9sYW1iZGFzCj4gKysg IHsKPiArKwo+ICsrICAgIC8vIFRPRE86IHRlc3QgaXQgd2l0aCBjbGFuZysrIGZyb20gZ2l0Cj4g KysKPiArKyAgICBjb25zdGV4cHIgaW50IGZvbyA9IFtdKCl7cmV0dXJuIDQyO30oKTsKPiArKwo+ ICsrICB9Cj4gKysjZW5kaWYgLy8gIWRlZmluZWQoUkVBTExZX0NMQU5HKQo+ICsrCj4gKysgIG5h bWVzcGFjZSB0ZXN0OjpuZXN0ZWRfbmFtZXNwYWNlOjpkZWZpbml0aW9ucwo+ICsrICB7Cj4gKysK PiArKyAgfQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2ZvbGRfZXhwcmVzc2lvbgo+ICsrICB7 Cj4gKysKPiArKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgo+ICsrICAgIGludCBtdWx0 aXBseShBcmdzLi4uIGFyZ3MpCj4gKysgICAgewo+ICsrICAgICAgcmV0dXJuIChhcmdzICogLi4u ICogMSk7Cj4gKysgICAgfQo+ICsrCj4gKysgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4K PiArKyAgICBib29sIGFsbChBcmdzLi4uIGFyZ3MpCj4gKysgICAgewo+ICsrICAgICAgcmV0dXJu IChhcmdzICYmIC4uLik7Cj4gKysgICAgfQo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3Bh Y2UgdGVzdF9leHRlbmRlZF9zdGF0aWNfYXNzZXJ0Cj4gKysgIHsKPiArKwo+ICsrICAgIHN0YXRp Y19hc3NlcnQgKHRydWUpOwo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF9h dXRvX2JyYWNlX2luaXRfbGlzdAo+ICsrICB7Cj4gKysKPiArKyAgICBhdXRvIGZvbyA9IHs1fTsK PiArKyAgICBhdXRvIGJhciB7NX07Cj4gKysKPiArKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf c2FtZTxzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50PiwgZGVjbHR5cGUoZm9vKT46OnZhbHVlKTsK PiArKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxpbnQsIGRlY2x0eXBlKGJhcik+Ojp2 YWx1ZSk7Cj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVzdF90eXBlbmFtZV9pbl90ZW1w bGF0ZV90ZW1wbGF0ZV9wYXJhbWV0ZXIKPiArKyAgewo+ICsrCj4gKysgICAgdGVtcGxhdGU8dGVt cGxhdGU8dHlwZW5hbWU+IHR5cGVuYW1lIFg+IHN0cnVjdCBEOwo+ICsrCj4gKysgIH0KPiArKwo+ ICsrICBuYW1lc3BhY2UgdGVzdF9mYWxsdGhyb3VnaF9ub2Rpc2NhcmRfbWF5YmVfdW51c2VkX2F0 dHJpYnV0ZXMKPiArKyAgewo+ICsrCj4gKysgICAgaW50IGYxKCkKPiArKyAgICB7Cj4gKysgICAg ICByZXR1cm4gNDI7Cj4gKysgICAgfQo+ICsrCj4gKysgICAgW1tub2Rpc2NhcmRdXSBpbnQgZjIo KQo+ICsrICAgIHsKPiArKyAgICAgIFtbbWF5YmVfdW51c2VkXV0gYXV0byB1bnVzZWQgPSBmMSgp Owo+ICsrCj4gKysgICAgICBzd2l0Y2ggKGYxKCkpCj4gKysgICAgICB7Cj4gKysgICAgICBjYXNl IDE3Ogo+ICsrICAgICAgICBmMSgpOwo+ICsrICAgICAgICBbW2ZhbGx0aHJvdWdoXV07Cj4gKysg ICAgICBjYXNlIDQyOgo+ICsrICAgICAgICBmMSgpOwo+ICsrICAgICAgfQo+ICsrICAgICAgcmV0 dXJuIGYxKCk7Cj4gKysgICAgfQo+ICsrCj4gKysgIH0KPiArKwo+ICsrICBuYW1lc3BhY2UgdGVz dF9leHRlbmRlZF9hZ2dyZWdhdGVfaW5pdGlhbGl6YXRpb24KPiArKyAgewo+ICsrCj4gKysgICAg c3RydWN0IGJhc2UxCj4gKysgICAgewo+ICsrICAgICAgaW50IGIxLCBiMiA9IDQyOwo+ICsrICAg IH07Cj4gKysKPiArKyAgICBzdHJ1Y3QgYmFzZTIKPiArKyAgICB7Cj4gKysgICAgICBiYXNlMigp IHsKPiArKyAgICAgICAgYjMgPSA0MjsKPiArKyAgICAgIH0KPiArKyAgICAgIGludCBiMzsKPiAr KyAgICB9Owo+ICsrCj4gKysgICAgc3RydWN0IGRlcml2ZWQgOiBiYXNlMSwgYmFzZTIKPiArKyAg ICB7Cj4gKysgICAgICAgIGludCBkOwo+ICsrICAgIH07Cj4gKysKPiArKyAgICBkZXJpdmVkIGQx IHt7MSwgMn0sIHt9LCA0fTsgIC8vIGZ1bGwgaW5pdGlhbGl6YXRpb24KPiArKyAgICBkZXJpdmVk IGQyIHt7fSwge30sIDR9OyAgICAgIC8vIHZhbHVlLWluaXRpYWxpemVkIGJhc2VzCj4gKysKPiAr KyAgfQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2dlbmVyYWxfcmFuZ2VfYmFzZWRfZm9yX2xv b3AKPiArKyAgewo+ICsrCj4gKysgICAgc3RydWN0IGl0ZXIKPiArKyAgICB7Cj4gKysgICAgICBp bnQgaTsKPiArKwo+ICsrICAgICAgaW50JiBvcGVyYXRvciogKCkKPiArKyAgICAgIHsKPiArKyAg ICAgICAgcmV0dXJuIGk7Cj4gKysgICAgICB9Cj4gKysKPiArKyAgICAgIGNvbnN0IGludCYgb3Bl cmF0b3IqICgpIGNvbnN0Cj4gKysgICAgICB7Cj4gKysgICAgICAgIHJldHVybiBpOwo+ICsrICAg ICAgfQo+ICsrCj4gKysgICAgICBpdGVyJiBvcGVyYXRvcisrKCkKPiArKyAgICAgIHsKPiArKyAg ICAgICAgKytpOwo+ICsrICAgICAgICByZXR1cm4gKnRoaXM7Cj4gKysgICAgICB9Cj4gKysgICAg fTsKPiArKwo+ICsrICAgIHN0cnVjdCBzZW50aW5lbAo+ICsrICAgIHsKPiArKyAgICAgIGludCBp Owo+ICsrICAgIH07Cj4gKysKPiArKyAgICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IGl0ZXImIGks IGNvbnN0IHNlbnRpbmVsJiBzKQo+ICsrICAgIHsKPiArKyAgICAgIHJldHVybiBpLmkgPT0gcy5p Owo+ICsrICAgIH0KPiArKwo+ICsrICAgIGJvb2wgb3BlcmF0b3IhPSAoY29uc3QgaXRlciYgaSwg Y29uc3Qgc2VudGluZWwmIHMpCj4gKysgICAgewo+ICsrICAgICAgcmV0dXJuICEoaSA9PSBzKTsK PiArKyAgICB9Cj4gKysKPiArKyAgICBzdHJ1Y3QgcmFuZ2UKPiArKyAgICB7Cj4gKysgICAgICBp dGVyIGJlZ2luKCkgY29uc3QKPiArKyAgICAgIHsKPiArKyAgICAgICAgcmV0dXJuIHswfTsKPiAr KyAgICAgIH0KPiArKwo+ICsrICAgICAgc2VudGluZWwgZW5kKCkgY29uc3QKPiArKyAgICAgIHsK PiArKyAgICAgICAgcmV0dXJuIHs1fTsKPiArKyAgICAgIH0KPiArKyAgICB9Owo+ICsrCj4gKysg ICAgdm9pZCBmKCkKPiArKyAgICB7Cj4gKysgICAgICByYW5nZSByIHt9Owo+ICsrCj4gKysgICAg ICBmb3IgKGF1dG8gaSA6IHIpCj4gKysgICAgICB7Cj4gKysgICAgICAgIFtbbWF5YmVfdW51c2Vk XV0gYXV0byB2ID0gaTsKPiArKyAgICAgIH0KPiArKyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4g KysgIG5hbWVzcGFjZSB0ZXN0X2xhbWJkYV9jYXB0dXJlX2FzdGVyaXNrX3RoaXNfYnlfdmFsdWUK PiArKyAgewo+ICsrCj4gKysgICAgc3RydWN0IHQKPiArKyAgICB7Cj4gKysgICAgICBpbnQgaTsK PiArKyAgICAgIGludCBmb28oKQo+ICsrICAgICAgewo+ICsrICAgICAgICByZXR1cm4gWyp0aGlz XSgpCj4gKysgICAgICAgIHsKPiArKyAgICAgICAgICByZXR1cm4gaTsKPiArKyAgICAgICAgfSgp Owo+ICsrICAgICAgfQo+ICsrICAgIH07Cj4gKysKPiArKyAgfQo+ICsrCj4gKysgIG5hbWVzcGFj ZSB0ZXN0X2VudW1fY2xhc3NfY29uc3RydWN0aW9uCj4gKysgIHsKPiArKwo+ICsrICAgIGVudW0g Y2xhc3MgYnl0ZSA6IHVuc2lnbmVkIGNoYXIKPiArKyAgICB7fTsKPiArKwo+ICsrICAgIGJ5dGUg Zm9vIHs0Mn07Cj4gKysKPiArKyAgfQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2NvbnN0ZXhw cl9pZgo+ICsrICB7Cj4gKysKPiArKyAgICB0ZW1wbGF0ZSA8Ym9vbCBjb25kPgo+ICsrICAgIGlu dCBmICgpCj4gKysgICAgewo+ICsrICAgICAgaWYgY29uc3RleHByKGNvbmQpCj4gKysgICAgICB7 Cj4gKysgICAgICAgIHJldHVybiAxMzsKPiArKyAgICAgIH0KPiArKyAgICAgIGVsc2UKPiArKyAg ICAgIHsKPiArKyAgICAgICAgcmV0dXJuIDQyOwo+ICsrICAgICAgfQo+ICsrICAgIH0KPiArKwo+ ICsrICB9Cj4gKysKPiArKyAgbmFtZXNwYWNlIHRlc3Rfc2VsZWN0aW9uX3N0YXRlbWVudF93aXRo X2luaXRpYWxpemVyCj4gKysgIHsKPiArKwo+ICsrICAgIGludCBmKCkKPiArKyAgICB7Cj4gKysg ICAgICByZXR1cm4gMTM7Cj4gKysgICAgfQo+ICsrCj4gKysgICAgaW50IGYyKCkKPiArKyAgICB7 Cj4gKysgICAgICBpZiAoYXV0byBpID0gZigpOyBpID4gMCkKPiArKyAgICAgIHsKPiArKyAgICAg ICAgcmV0dXJuIDM7Cj4gKysgICAgICB9Cj4gKysKPiArKyAgICAgIHN3aXRjaCAoYXV0byBpID0g ZigpOyBpICsgNCkKPiArKyAgICAgIHsKPiArKyAgICAgIGNhc2UgMTc6Cj4gKysgICAgICAgIHJl dHVybiAyOwo+ICsrCj4gKysgICAgICBkZWZhdWx0Ogo+ICsrICAgICAgICByZXR1cm4gMTsKPiAr KyAgICAgIH0KPiArKyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4gKysjaWYgIWRlZmluZWQoUkVB TExZX0NMQU5HKQo+ICsrICBuYW1lc3BhY2UgdGVzdF90ZW1wbGF0ZV9hcmd1bWVudF9kZWR1Y3Rp b25fZm9yX2NsYXNzX3RlbXBsYXRlcwo+ICsrICB7Cj4gKysKPiArKyAgICAvLyBUT0RPOiB0ZXN0 IGl0IHdpdGggY2xhbmcrKyBmcm9tIGdpdAo+ICsrCj4gKysgICAgdGVtcGxhdGUgPHR5cGVuYW1l IFQxLCB0eXBlbmFtZSBUMj4KPiArKyAgICBzdHJ1Y3QgcGFpcgo+ICsrICAgIHsKPiArKyAgICAg IHBhaXIgKFQxIHAxLCBUMiBwMikKPiArKyAgICAgICAgOiBtMSB7cDF9LAo+ICsrICAgICAgICAg IG0yIHtwMn0KPiArKyAgICAgIHt9Cj4gKysKPiArKyAgICAgIFQxIG0xOwo+ICsrICAgICAgVDIg bTI7Cj4gKysgICAgfTsKPiArKwo+ICsrICAgIHZvaWQgZigpCj4gKysgICAgewo+ICsrICAgICAg W1ttYXliZV91bnVzZWRdXSBhdXRvIHAgPSBwYWlyezEzLCA0MnV9Owo+ICsrICAgIH0KPiArKwo+ ICsrICB9Cj4gKysjZW5kaWYgLy8gIWRlZmluZWQoUkVBTExZX0NMQU5HKQo+ICsrCj4gKysgIG5h bWVzcGFjZSB0ZXN0X25vbl90eXBlX2F1dG9fdGVtcGxhdGVfcGFyYW1ldGVycwo+ICsrICB7Cj4g KysKPiArKyAgICB0ZW1wbGF0ZSA8YXV0byBuPgo+ICsrICAgIHN0cnVjdCBCCj4gKysgICAge307 Cj4gKysKPiArKyAgICBCPDU+IGIxOwo+ICsrICAgIEI8J2EnPiBiMjsKPiArKwo+ICsrICB9Cj4g KysKPiArKyNpZiAhZGVmaW5lZChSRUFMTFlfQ0xBTkcpCj4gKysgIG5hbWVzcGFjZSB0ZXN0X3N0 cnVjdHVyZWRfYmluZGluZ3MKPiArKyAgewo+ICsrCj4gKysgICAgLy8gVE9ETzogdGVzdCBpdCB3 aXRoIGNsYW5nKysgZnJvbSBnaXQKPiArKwo+ICsrICAgIGludCBhcnJbMl0gPSB7IDEsIDIgfTsK PiArKyAgICBzdGQ6OnBhaXI8aW50LCBpbnQ+IHByID0geyAxLCAyIH07Cj4gKysKPiArKyAgICBh dXRvIGYxKCkgLT4gaW50KCYpWzJdCj4gKysgICAgewo+ICsrICAgICAgcmV0dXJuIGFycjsKPiAr KyAgICB9Cj4gKysKPiArKyAgICBhdXRvIGYyKCkgLT4gc3RkOjpwYWlyPGludCwgaW50PiYKPiAr KyAgICB7Cj4gKysgICAgICByZXR1cm4gcHI7Cj4gKysgICAgfQo+ICsrCj4gKysgICAgc3RydWN0 IFMKPiArKyAgICB7Cj4gKysgICAgICBpbnQgeDEgOiAyOwo+ICsrICAgICAgdm9sYXRpbGUgZG91 YmxlIHkxOwo+ICsrICAgIH07Cj4gKysKPiArKyAgICBTIGYzKCkKPiArKyAgICB7Cj4gKysgICAg ICByZXR1cm4ge307Cj4gKysgICAgfQo+ICsrCj4gKysgICAgYXV0byBbIHgxLCB5MSBdID0gZjEo KTsKPiArKyAgICBhdXRvJiBbIHhyMSwgeXIxIF0gPSBmMSgpOwo+ICsrICAgIGF1dG8gWyB4Miwg eTIgXSA9IGYyKCk7Cj4gKysgICAgYXV0byYgWyB4cjIsIHlyMiBdID0gZjIoKTsKPiArKyAgICBj b25zdCBhdXRvIFsgeDMsIHkzIF0gPSBmMygpOwo+ICsrCj4gKysgIH0KPiArKyNlbmRpZiAvLyAh ZGVmaW5lZChSRUFMTFlfQ0xBTkcpCj4gKysKPiArKyNpZiAhZGVmaW5lZChSRUFMTFlfQ0xBTkcp Cj4gKysgIG5hbWVzcGFjZSB0ZXN0X2V4Y2VwdGlvbl9zcGVjX3R5cGVfc3lzdGVtCj4gKysgIHsK PiArKwo+ICsrICAgIC8vIFRPRE86IHRlc3QgaXQgd2l0aCBjbGFuZysrIGZyb20gZ2l0Cj4gKysK PiArKyAgICBzdHJ1Y3QgR29vZCB7fTsKPiArKyAgICBzdHJ1Y3QgQmFkIHt9Owo+ICsrCj4gKysg ICAgdm9pZCBnMSgpIG5vZXhjZXB0Owo+ICsrICAgIHZvaWQgZzIoKTsKPiArKwo+ICsrICAgIHRl bXBsYXRlPHR5cGVuYW1lIFQ+Cj4gKysgICAgQmFkCj4gKysgICAgZihUKiwgVCopOwo+ICsrCj4g KysgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgo+ICsrICAgIEdvb2QKPiAr KyAgICBmKFQxKiwgVDIqKTsKPiArKwo+ICsrICAgIHN0YXRpY19hc3NlcnQgKHN0ZDo6aXNfc2Ft ZV92PEdvb2QsIGRlY2x0eXBlKGYoZzEsIGcyKSk+KTsKPiArKwo+ICsrICB9Cj4gKysjZW5kaWYg Ly8gIWRlZmluZWQoUkVBTExZX0NMQU5HKQo+ICsrCj4gKysgIG5hbWVzcGFjZSB0ZXN0X2lubGlu ZV92YXJpYWJsZXMKPiArKyAgewo+ICsrCj4gKysgICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBm KFQpCj4gKysgICAge30KPiArKwo+ICsrICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBUIGco VCkKPiArKyAgICB7Cj4gKysgICAgICByZXR1cm4gVHt9Owo+ICsrICAgIH0KPiArKwo+ICsrICAg IHRlbXBsYXRlPD4gaW5saW5lIHZvaWQgZjw+KGludCkKPiArKyAgICB7fQo+ICsrCj4gKysgICAg dGVtcGxhdGU8PiBpbnQgZzw+KGludCkKPiArKyAgICB7Cj4gKysgICAgICByZXR1cm4gNTsKPiAr KyAgICB9Cj4gKysKPiArKyAgfQo+ICsrCj4gKyt9ICAvLyBuYW1lc3BhY2UgY3h4MTcKPiArKwo+ ICsrI2VuZGlmICAvLyBfX2NwbHVzcGx1cyA8PSAyMDE0MDJMCj4gKysKPiArK11dKQo+IGRpZmYg LS1naXQgYS9wYXRjaGVzL2N1cHMtZmlsdGVycy0xLjE2LjEvYXV0b2dlbi5zaCBiL3BhdGNoZXMv Y3Vwcy1maWx0ZXJzLTEuMTYuMS9hdXRvZ2VuLnNoCj4gbmV3IGZpbGUgbW9kZSAxMDA3NTUKPiBp bmRleCAwMDAwMDAwMDAuLmRkYWU1NjNiYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wYXRjaGVz L2N1cHMtZmlsdGVycy0xLjE2LjEvYXV0b2dlbi5zaAo+IEBAIC0wLDAgKzEsMiBAQAo+ICsjIS9i aW4vc2gKPiArZXhlYyAuL2F1dG9nZW4uc2gKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9jdXBzLWZp bHRlcnMtMS4xNi4xL3NlcmllcyBiL3BhdGNoZXMvY3Vwcy1maWx0ZXJzLTEuMTYuMS9zZXJpZXMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMC4uOGMwNTMwNzdhCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvY3Vwcy1maWx0ZXJzLTEuMTYuMS9zZXJpZXMKPiBA QCAtMCwwICsxLDQgQEAKPiArIyBnZW5lcmF0ZWQgYnkgZ2l0LXB0eC1wYXRjaGVzCj4gKyN0YWc6 YmFzZSAtLXN0YXJ0LW51bWJlciAxCj4gKzAwMDEtY29uZmlndXJlLmFjLWNoZWNrLWZvci1DLTEx LXN1cHBvcnQucGF0Y2gKPiArIyBiMGYwNmQzOTg4ODU0MDc1M2QzZThlMWIxY2IwZjA5MiAgLSBn aXQtcHR4LXBhdGNoZXMgbWFnaWMKPiBkaWZmIC0tZ2l0IGEvcnVsZXMvY3Vwcy1maWx0ZXJzLmlu IGIvcnVsZXMvY3Vwcy1maWx0ZXJzLmluCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwMDAuLjRlN2NiMzc5Ngo+IC0tLSAvZGV2L251bGwKPiArKysgYi9ydWxlcy9jdXBzLWZp bHRlcnMuaW4KPiBAQCAtMCwwICsxLDY5IEBACj4gKyMjIFNFQ1RJT049YXBwbGljYXRpb25zCj4g Kwo+ICttZW51Y29uZmlnIENVUFNfRklMVEVSUwo+ICsJdHJpc3RhdGUKPiArCXByb21wdCAiY3Vw cy1maWx0ZXJzICAgICAgICAgICAgICAgICAgIgo+ICsKPiArCXNlbGVjdCBMSUJDX0RMCj4gKwlz ZWxlY3QgSE9TVF9DVVBTCj4gKwlzZWxlY3QgQ1VQUwo+ICsJc2VsZWN0IEdMSUIKPiArCXNlbGVj dCBaTElCCj4gKwlzZWxlY3QgTENNUwo+ICsJc2VsZWN0IEZSRUVUWVBFCj4gKwlzZWxlY3QgRk9O VENPTkZJRwo+ICsJc2VsZWN0IFFQREYKPiArCj4gKwkjIE5vdGU6IGNvbmZpZ3VyZSBkb2VzIG5v dCBjaGVjayBmb3IgdGhlc2UgcG9wcGxlciBvcHRpb25zOgo+ICsJc2VsZWN0IFBPUFBMRVIJCQlp ZiBDVVBTX0ZJTFRFUlNfUE9QUExFUgo+ICsJc2VsZWN0IFBPUFBMRVJfQklOCQlpZiBDVVBTX0ZJ TFRFUlNfUE9QUExFUiAjIGZvciBwZGZ0b3BzCj4gKwlzZWxlY3QgUE9QUExFUl9DUFAJCWlmIENV UFNfRklMVEVSU19QT1BQTEVSCj4gKwlzZWxlY3QgUE9QUExFUl9DTVMJCWlmIENVUFNfRklMVEVS U19QT1BQTEVSCj4gKwlzZWxlY3QgUE9QUExFUl9TUExBU0gJCWlmIENVUFNfRklMVEVSU19QT1BQ TEVSCj4gKwlzZWxlY3QgUE9QUExFUl9TUExBU0hfRlAJaWYgQ1VQU19GSUxURVJTX1BPUFBMRVIK PiArCXNlbGVjdCBQT1BQTEVSX1NQTEFTSF9GUF9ET1VCTEUJaWYgQ1VQU19GSUxURVJTX1BPUFBM RVIKPiArCXNlbGVjdCBQT1BQTEVSX1hQREYJCWlmIENVUFNfRklMVEVSU19QT1BQTEVSCj4gKwo+ ICsJc2VsZWN0IExJQkpQRUcJCQlpZiBDVVBTX0ZJTFRFUlNfSlBFRwo+ICsJc2VsZWN0IExJQlBO RwkJCWlmIENVUFNfRklMVEVSU19QTkcKPiArCj4gKwloZWxwCj4gKwkgIGN1cHMtZmlsdGVycyBj b250YWlucyBiYWNrZW5kcywgZmlsdGVycywgYW5kIG90aGVyIHNvZnR3YXJlIHRoYXQKPiArCSAg d2FzIG9uY2UgcGFydCBvZiB0aGUgY29yZSBDVVBTIGRpc3RyaWJ1dGlvbiBidXQgaXMgbm8gbG9u Z2VyCj4gKwkgIG1haW50YWluZWQgYnkgQXBwbGUgSW5jLiBJbiBhZGRpdGlvbiBpdCBjb250YWlu cyBhZGRpdGlvbmFsIGZpbHRlcnMKPiArCSAgYW5kIHNvZnR3YXJlIGRldmVsb3BlZCBpbmRlcGVu ZGVudGx5IG9mIEFwcGxlLCBlc3BlY2lhbGx5IGZpbHRlcnMgZm9yCj4gKwkgIHRoZSBQREYtY2Vu dHJpYyBwcmludGluZyB3b3JrZmxvdyBpbnRyb2R1Y2VkIGJ5IE9wZW5QcmludGluZyBhbmQgYQo+ ICsJICBkYWVtb24gdG8gYnJvd3NlIEJvbmpvdXIgYnJvYWRjYXN0cyBvZiByZW1vdGUgQ1VQUyBw cmludGVycyBhbmQgbWFrZXMKPiArCSAgdGhlc2UgcHJpbnRlcnMgYXZhaWxhYmxlIGxvY2FsbHku Cj4gKwo+ICtpZiBDVVBTX0ZJTFRFUlMKPiArCj4gK2NvbmZpZyBDVVBTX0ZJTFRFUlNfUE9QUExF Ugo+ICsJYm9vbCAiYnVpbGQgd2l0aCBwb3BwbGVyIHN1cHBvcnQiCj4gKwloZWxwCj4gKwkgIEJ1 aWxkIHdpdGggcG9wcGxlciBzdXBwb3J0LCBuZWVkZWQgZm9yIHBkZnRvKiBmaWx0ZXJzIGFuZCBi YW5uZXJzLgo+ICsKPiArY29tbWVudCAicG9wcGxlciBzdXBwb3J0IHdpbGwgbm90IGJ1aWxkIHdp dGggUE9QUExFUl9TUExBU0hfRklYRURQT0lOVCEiCj4gKwlkZXBlbmRzIG9uIChQT1BQTEVSX1NQ TEFTSF9GSVhFRFBPSU5UICYmIENVUFNfRklMVEVSU19QT1BQTEVSKQo+ICsKPiArY29uZmlnIENV UFNfRklMVEVSU19JTUFHRUZJTFRFUlMKPiArCWJvb2wgImJ1aWxkIGltYWdlIGZpbHRlcnMiCj4g KwloZWxwCj4gKwkgIEJ1aWxkIGltYWdldG9wZGYgYW5kIGltYWdldG9yYXN0ZXIgZmlsdGVycwo+ ICsKPiArY29uZmlnIENVUFNfRklMVEVSU19KUEVHCj4gKwlib29sICJ3aXRoIEpQRUcgc3VwcG9y dCIKPiArCWRlcGVuZHMgb24gQ1VQU19GSUxURVJTX0lNQUdFRklMVEVSUwo+ICsJZGVmYXVsdCB5 Cj4gKwloZWxwCj4gKwkgIEVuYWJsZSBKUEVHIHN1cHBvcnQgaW4gaW1hZ2UgZmlsdGVycwo+ICsK PiArY29uZmlnIENVUFNfRklMVEVSU19QTkcKPiArCWJvb2wgIndpdGggUE5HIHN1cHBvcnQiCj4g KwlkZXBlbmRzIG9uIENVUFNfRklMVEVSU19JTUFHRUZJTFRFUlMKPiArCWRlZmF1bHQgeQo+ICsJ aGVscAo+ICsJICBFbmFibGUgUE5HIHN1cHBvcnQgaW4gaW1hZ2UgZmlsdGVycwo+ICsKPiArZW5k aWYKPiArIyB2aW06IGZ0PWtjb25maWcgdHM9OCBub2V0IHR3PTgwCj4gZGlmZiAtLWdpdCBhL3J1 bGVzL2N1cHMtZmlsdGVycy5tYWtlIGIvcnVsZXMvY3Vwcy1maWx0ZXJzLm1ha2UKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMC4uNWNjZmYyYzEwCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL3J1bGVzL2N1cHMtZmlsdGVycy5tYWtlCj4gQEAgLTAsMCArMSw5NiBAQAo+ICsj IC0qLW1ha2VmaWxlLSotCj4gKyMKPiArIyBDb3B5cmlnaHQgKEMpIDIwMTcgYnkgUm9sYW5kIEhp ZWJlciA8ci5oaWViZXJAcGVuZ3V0cm9uaXguZGU+Cj4gKyMKPiArIyBTZWUgQ1JFRElUUyBmb3Ig ZGV0YWlscyBhYm91dCB3aG8gaGFzIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcHJvamVjdC4KPiArIwo+ ICsjIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBQVFhkaXN0IHByb2plY3QgYW5k IGxpY2Vuc2UgY29uZGl0aW9ucwo+ICsjIHNlZSB0aGUgUkVBRE1FIGZpbGUuCj4gKyMKPiArCj4g KyMKPiArIyBXZSBwcm92aWRlIHRoaXMgcGFja2FnZQo+ICsjCj4gK1BBQ0tBR0VTLSQoUFRYQ09O Rl9DVVBTX0ZJTFRFUlMpICs9IGN1cHMtZmlsdGVycwo+ICsKPiArIwo+ICsjIFBhdGhzIGFuZCBu YW1lcwo+ICsjCj4gK0NVUFNfRklMVEVSU19WRVJTSU9OCTo9IDEuMTYuMQo+ICtDVVBTX0ZJTFRF UlNfTUQ1CTo9IGY3NmQxM2M0MzEyNTdhOTViMjMzZTVjODdkMTA3NDJmCj4gK0NVUFNfRklMVEVS UwkJOj0gY3Vwcy1maWx0ZXJzLSQoQ1VQU19GSUxURVJTX1ZFUlNJT04pCj4gK0NVUFNfRklMVEVS U19TVUZGSVgJOj0gdGFyLnh6Cj4gK0NVUFNfRklMVEVSU19VUkwJOj0gaHR0cDovL29wZW5wcmlu dGluZy5vcmcvZG93bmxvYWQvY3Vwcy1maWx0ZXJzLyQoQ1VQU19GSUxURVJTKS4kKENVUFNfRklM VEVSU19TVUZGSVgpCj4gK0NVUFNfRklMVEVSU19TT1VSQ0UJOj0gJChTUkNESVIpLyQoQ1VQU19G SUxURVJTKS4kKENVUFNfRklMVEVSU19TVUZGSVgpCj4gK0NVUFNfRklMVEVSU19ESVIJOj0gJChC VUlMRERJUikvJChDVVBTX0ZJTFRFUlMpCj4gK0NVUFNfRklMVEVSU19MSUNFTlNFCTo9IEdQTC0y LjAgQU5EIEdQTC0yLjArIEFORCBHUEwtMy4wIEFORCBHUEwtMy4wKyBBTkQgTEdQTC0yIEFORCBM R1BMLTIuMSsgQU5EIE1JVCBBTkQgQlNELTQtY2xhdXNlCj4gKwo+ICsjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiArIyBQcmVwYXJlCj4gKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsKPiArQ1VQU19G SUxURVJTX0VOVgk6PSAkKENST1NTX0VOVikKCnJlbW92ZS4KCk1pY2hhZWwKCj4gKwo+ICsjCj4g KyMgYXV0b2NvbmYKPiArIwo+ICsjIFdlIGhhdmUgdG8gc2V0IC0tZXhlYy1wcmVmaXggYW5kIC0t bGliZGlyLCBvdGhlcndpc2UgdGhlIGxpYnMgZW5kIHVwIGluCj4gKyMgJHtwcmVmaXh9L2xpYjY0 IGR1ZSB0byBicm9rZW4gYXV0b2NvbmYgbWFnaWMsIHdoaWNoIGlzIG5vdCB3aGF0IHdlIHdhbnQu Cj4gKyMKPiArQ1VQU19GSUxURVJTX0NPTkZfVE9PTAk6PSBhdXRvY29uZgo+ICtDVVBTX0ZJTFRF UlNfQ09ORl9PUFQJOj0gXAo+ICsJJChDUk9TU19BVVRPQ09ORl9VU1IpIFwKPiArCS0tZXhlYy1w cmVmaXg9L3Vzci8gXAo+ICsJLS1saWJkaXI9L3Vzci9saWIvIFwKPiArCS0tZGlzYWJsZS1zaWxl bnQtcnVsZXMgXAo+ICsJLS1kaXNhYmxlLWRyaXZlcmxlc3MgXAo+ICsJLS1kaXNhYmxlLWF1dG8t c2V0dXAtZHJpdmVybGVzcyBcCj4gKwktLSQoY2FsbCBwdHgvZW5kaXMsUFRYQ09ORl9DVVBTX0ZJ TFRFUlNfSU1BR0VGSUxURVJTKS1pbWFnZWZpbHRlcnMgXAo+ICsJLS1kaXNhYmxlLWF2YWhpIFwK PiArCS0tZGlzYWJsZS1sZGFwIFwKPiArCS0tJChjYWxsIHB0eC9lbmRpcyxQVFhDT05GX0NVUFNf RklMVEVSU19QT1BQTEVSKS1wb3BwbGVyIFwKPiArCS0tZGlzYWJsZS1kYnVzIFwKPiArCSQoR0xP QkFMX0xBUkdFX0ZJTEVfT1BUSU9OKSBcCj4gKwktLWRpc2FibGUtbXV0b29sIFwKPiArCS0tZGlz YWJsZS1naG9zdHNjcmlwdCBcCj4gKwktLWRpc2FibGUtaWpzIFwKPiArCS0tZGlzYWJsZS1ncy1w czJ3cml0ZSBcCj4gKwktLWRpc2FibGUtZm9vbWF0aWMgXAo+ICsJLS1kaXNhYmxlLXdlcnJvciBc Cj4gKwktLWRpc2FibGUtYnJhaWxsZSBcCj4gKwktLXdpdGgtZ251LWxkIFwKPiArCS0td2l0aC1j dXBzLWNvbmZpZz0kKFBUWERJU1RfU1lTUk9PVF9DUk9TUykvYmluL2N1cHMtY29uZmlnIFwKPiAr CS0td2l0aC1hcHBsZS1yYXN0ZXItZmlsdGVyPXJhc3RlcnRvcGRmIFwKPiArCS0td2l0aC1jdXBz LXJ1bmRpcj0vcnVuIFwKPiArCS0td2l0aC1jdXBzLWRvbWFpbnNvY2tldD0vcnVuL2N1cHMuc29j ayBcCj4gKwktLSQoY2FsbCBwdHgvd3dvLFBUWENPTkZfQ1VQU19GSUxURVJTX0pQRUcpLWpwZWcg XAo+ICsJLS0kKGNhbGwgcHR4L3d3byxQVFhDT05GX0NVUFNfRklMVEVSU19QTkcpLXBuZyBcCj4g KwktLXdpdGhvdXQtdGlmZiBcCj4gKwktLXdpdGgtYnJvd3NlcmVtb3RlcHJvdG9jb2xzPSJkbnNz ZCBjdXBzIiBcCj4gKwktLXdpdGgtcGRmdG9wcz1wZGZ0b3BzCj4gKwo+ICsjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiArIyBUYXJnZXQtSW5zdGFsbAo+ICsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAr Cj4gKyQoU1RBVEVESVIpL2N1cHMtZmlsdGVycy50YXJnZXRpbnN0YWxsOgo+ICsJQCQoY2FsbCB0 YXJnZXRpbmZvKQo+ICsKPiArCUAkKGNhbGwgaW5zdGFsbF9pbml0LCBjdXBzLWZpbHRlcnMpCj4g KwlAJChjYWxsIGluc3RhbGxfZml4dXAsIGN1cHMtZmlsdGVycyxQUklPUklUWSxvcHRpb25hbCkK PiArCUAkKGNhbGwgaW5zdGFsbF9maXh1cCwgY3Vwcy1maWx0ZXJzLFNFQ1RJT04sYmFzZSkKPiAr CUAkKGNhbGwgaW5zdGFsbF9maXh1cCwgY3Vwcy1maWx0ZXJzLEFVVEhPUiwiUm9sYW5kIEhpZWJl ciA8ci5oaWViZXJAcGVuZ3V0cm9uaXguZGU+IikKPiArCUAkKGNhbGwgaW5zdGFsbF9maXh1cCwg Y3Vwcy1maWx0ZXJzLERFU0NSSVBUSU9OLG1pc3NpbmcpCj4gKwo+ICsJQCQoY2FsbCBpbnN0YWxs X2xpYiwgY3Vwcy1maWx0ZXJzLCAwLCAwLCAwNzU1LCBsaWJjdXBzZmlsdGVycykKPiArCUAkKGNh bGwgaW5zdGFsbF9saWIsIGN1cHMtZmlsdGVycywgMCwgMCwgMDc1NSwgbGliZm9udGVtYmVkKQo+ ICsJQCQoY2FsbCBpbnN0YWxsX3RyZWUsIGN1cHMtZmlsdGVycywgMCwgMCwgLSwgL3Vzci9saWIv Y3Vwcy9maWx0ZXIpCj4gKwlAJChjYWxsIGluc3RhbGxfdHJlZSwgY3Vwcy1maWx0ZXJzLCAwLCAw LCAtLCAvdXNyL2xpYi9jdXBzL2JhY2tlbmQpCj4gKwlAJChjYWxsIGluc3RhbGxfdHJlZSwgY3Vw cy1maWx0ZXJzLCAwLCAwLCAtLCAvdXNyL3NoYXJlL2N1cHMpCj4gKwlAJChjYWxsIGluc3RhbGxf dHJlZSwgY3Vwcy1maWx0ZXJzLCAwLCAwLCAtLCAvdXNyL3NoYXJlL3BwZCkKPiArCj4gKwlAJChj YWxsIGluc3RhbGxfZmluaXNoLCBjdXBzLWZpbHRlcnMpCj4gKwo+ICsJQCQoY2FsbCB0b3VjaCkK PiArCj4gKyMgdmltOiBmdD1tYWtlIHRzPTggdHc9ODAKPiAtLSAKPiAyLjExLjAKPiAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IHB0eGRpc3Qg bWFpbGluZyBsaXN0Cj4gcHR4ZGlzdEBwZW5ndXRyb25peC5kZQoKLS0gClBlbmd1dHJvbml4IGUu Sy4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8CkluZHVzdHJpYWwgTGludXggU29sdXRpb25zICAgICAgICAgICAgICAgICB8IGh0dHA6Ly93 d3cucGVuZ3V0cm9uaXguZGUvICB8ClBlaW5lciBTdHIuIDYtOCwgMzExMzcgSGlsZGVzaGVpbSwg R2VybWFueSB8IFBob25lOiArNDktNTEyMS0yMDY5MTctMCAgICB8CkFtdHNnZXJpY2h0IEhpbGRl c2hlaW0sIEhSQSAyNjg2ICAgICAgICAgICB8IEZheDogICArNDktNTEyMS0yMDY5MTctNTU1NSB8 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdHhkaXN0 IG1haWxpbmcgbGlzdApwdHhkaXN0QHBlbmd1dHJvbml4LmRl