From nobody Thu Mar 28 14:55:22 2024 X-Original-To: alpine-aports@lists.alpinelinux.org Received: from mail.bitmessage.ch (mail.bitmessage.ch [146.228.112.252]) by lists.alpinelinux.org (Postfix) with ESMTP id C32EC5C4D2E for ; Fri, 6 Oct 2017 18:39:19 +0000 (GMT) dkim-signature: v=1; a=rsa-sha256; d=bitmessage.ch; s=mail; c=relaxed/relaxed; q=dns/txt; h=From:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding; bh=6I7k/TRBlX+GwBzneRKzBGMBbknuYyB/32M/qCVJrYA=; b=Bvf5xX0nqgPY0c2f1DESo8y7mM4Tiz1mZ/qvrlWfs0HfBz3ZPlvmzRF85F/3Bj0JLpKGLYwtIspbctDu6pptId0M1qgC4RO/RDEYf64Ym3Xi5FVYsW0a+qB2lHpQTfKZPKexdqtcLS8+Icya8MPx4Zs0iIusVtKuWUx84Kod25M= Received: from alpine.my.domain (ip.178-71-21-48.avangarddsl.ru [178.71.21.48]) by mail.bitmessage.ch with ESMTPSA (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128) ; Fri, 6 Oct 2017 20:38:12 +0200 From: =?UTF-8?q?C=C3=A1g?= To: alpine-aports@lists.alpinelinux.org Subject: [alpine-aports] [PATCH] main/mg: update to the latest version Date: Fri, 6 Oct 2017 19:38:14 +0100 Message-Id: <20171006183814.2851-1-ca6c@bitmessage.ch> X-Mailer: git-send-email 2.14.2 X-Mailinglist: alpine-aports Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmVtb3ZlIHVuaWNvZGUgcGF0Y2guDQotLS0NCiBtYWluL21nL0FQS0JVSUxEICAgICAgfCAgICA1 ICstDQogbWFpbi9tZy91bmljb2RlLnBhdGNoIHwgMTM0NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDEzNTAgZGVsZXRpb25zKC0pDQogZGVsZXRlIG1vZGUgMTAwNjQ0IG1haW4vbWcvdW5p Y29kZS5wYXRjaA0KDQpkaWZmIC0tZ2l0IGEvbWFpbi9tZy9BUEtCVUlMRCBiL21haW4vbWcvQVBL QlVJTEQNCmluZGV4IDViNWE5MDFmZWEuLjQ5ZTQ5N2EwMDUgMTAwNjQ0DQotLS0gYS9tYWluL21n L0FQS0JVSUxEDQorKysgYi9tYWluL21nL0FQS0JVSUxEDQpAQCAtMSw4ICsxLDggQEANCiAjIENv bnRyaWJ1dG9yOiBMZWUgSGlubWFuIDxoaW5tYW5AZ21haWwuY29tPg0KICMgTWFpbnRhaW5lcjog Q8OhZyA8Y2E2Y0BiaXRtZXNzYWdlLmNoPg0KIHBrZ25hbWU9bWcNCi1wa2d2ZXI9MjAxNzA0MDEN Ci1wa2dyZWw9MQ0KK3BrZ3Zlcj0yMDE3MDgyOA0KK3BrZ3JlbD0wDQogcGtnZGVzYz0ibWljcm9z Y29waWMgRU1BQ1Mgc3R5bGUgZWRpdG9yIg0KIHVybD0iaHR0cDovL2hvbWVwYWdlLmJvZXRlcy5v cmcvc29mdHdhcmUvbWciDQogYXJjaD0iYWxsIg0KQEAgLTEzLDcgKzEzLDYgQEAgaW5zdGFsbD0N CiBzdWJwYWNrYWdlcz0iJHBrZ25hbWUtZG9jIg0KIHNvdXJjZT0iaHR0cDovL2hvbWVwYWdlLmJv ZXRlcy5vcmcvc29mdHdhcmUvbWcvJHBrZ25hbWUtJHBrZ3Zlci50YXIuZ3oNCiAJbWlzc2luZy1k ZWZpbmVzLnBhdGNoDQotCXVuaWNvZGUucGF0Y2gNCiAJIg0KIA0KIF9idWlsZGRpcj0iJHNyY2Rp ciIvJHBrZ25hbWUtJHBrZ3Zlcg0KZGlmZiAtLWdpdCBhL21haW4vbWcvdW5pY29kZS5wYXRjaCBi L21haW4vbWcvdW5pY29kZS5wYXRjaA0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAz OWQ4ODMxZjY4Li4wMDAwMDAwMDAwDQotLS0gYS9tYWluL21nL3VuaWNvZGUucGF0Y2gNCisrKyAv ZGV2L251bGwNCkBAIC0xLDEzNDcgKzAsMCBAQA0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9S RUFETUUubWQNCi1pbmRleCA5OTRkNmJlLi4yZjVkMmMxIDEwMDY0NA0KLS0tLSBhL1JFQURNRS5t ZA0KLSsrKyBiL1JFQURNRS5tZA0KLUBAIC0xLDQ5ICsxLDUwIEBADQotLSMgUE9SVElORyBNRyBB TkQgVVNJTkcgTElCQlNEDQotKyMgbWcgd2l0aCB3aWRlIGRpc3BsYXkgc3VwcG9ydC4NCi0gDQot LUkndmUgbWFpbnRhaW5lZCBhbmQgcG9ydGVkIG1nIGZvciBxdWl0ZSBzb21lIHRpbWUgbm93IGFu ZCBhdCBmaXJzdCBpdA0KLS13YXMgZWFzeSByZWNlbnRseSBpdCBnb3QgaGFyZGVyIGFuZCBoYXJk ZXIgc2luY2UgaXQgd2FzIGEgbW92aW5nDQotLXRhcmdldC4gRXNwZWNpYWxseSB0aGUgaW5jbHVz aW9uIG9mIHNvbWUgc3lzdGVtIHNwZWNpZmljIGxpYnJhcmllcyBzaW5jZQ0KLS1hYm91dCAyIHll YXJzIGFnbyBtYWRlIGl0IHRvbyBtdWNoIG9mIGFuIGVmZm9ydCBmb3IgbXkgaHVtYmxlIGNvZGlu Zw0KLS1za2lsbHMuDQotLQ0KLS1TbyByZWNlbnRseSBKYXNwZXIgTGlldmlzc2UgQWRyaWFhbnNl IGFza2VkIG1lIHRvIHRyeSBpdCBhZ2FpbiBhbmQgSQ0KLS1yZXN0YXJ0ZWQgd29ya2luZyBvbiB0 aGUgcHJvamVjdCBhbmQgcmFuIGludG8gZXhhY3RseSB0aGUgc2FtZSBwcm9ibGVtcw0KLS1hZ2Fp bi4gV2hpbGUgZ29vZ2xpbmcgZm9yIHNvbHV0aW9ucyBJIHJhbiBpbnRvIGxpYmJzZDoNCi0tDQot LSAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8NCi0tDQotLUl0J3MgYSBwb3J0 aW5nIGxpYnJhcnkgZm9yIE9wZW5CU0QgY29kZSEgQW5kIGFmdGVyIGluc3RhbGxpbmcgdGhhdCBp dA0KLS13YXMgYSBwaWVjZSBvZiBwaWUgdG8gZ2V0IG1nIHBvcnRlZCBhZ2Fpbi4NCi0tDQotLSMj IFBPUlRJTkcgVE8gQUxMIE9USEVSIFBMQVRGT1JNUw0KLS0NCi0tT2theSwgdGhhdCB3YXMgZGVi aWFuLiBOb3cgSSBoYXZlIHRvIGdldCB0aGUgcmVzdCBvZiBhbGwgdGhlIHByZXZpb3VzbHkNCi0t c3Vwb3J0ZWQgcGxhdGZvcm1zIHdvcmtpbmcgYWdhaW4uIEFsbCBoZWxwIGlzIHdlbGNvbWUgYW5k IGFzIGFsd2F5czoNCi0tUGxlYXNlIHByb3ZpZGUgcGF0Y2hlcyB0aGF0IGRvIG5vdCBicmVhayBz dHVmZiBmb3Igb3RoZXIgcGxhdGZvcm1zLg0KLS0NCi0tIyMgQlVJTERJTkcgTUcNCi0tDQotLVNv LCBiYXNpYyBpbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIG1nOg0KLS0NCi0tIC0gR2V0IGxpYmJz ZCBpbnN0YWxsZWQuDQotLSAtIFJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOg0KLStJIGp1c3Qg cmVjZWl2ZWQgdGhpcyBhbWF6aW5nIHBhdGNoIGZyb20gUy4gR2lsZXMuIEZvciB0aG9zZSBpbXBh dGllbnQNCi0rcGVvcGxlOiBjaGVjayBpdCBvdXQgKHRpaGloaSkgYW5kIGFkZCB0aGlzIGxpbmUg dG8geW91ciBgLm1nYA0KLSANCi0gYGBgDQotLW1ha2UNCi0tc3VkbyBtYWtlIGluc3RhbGwNCi0r c2V0LWRlZmF1bHQtbW9kZSAid2lkZSINCi0gYGBgDQotIA0KLS0jIyBVU0lORyBDVlMNCi0tDQot LVRoaXMgY29kZSBpcyB0aGUgY3ZzIGNoZWNrb3V0IGZyb20gdGhlIE9wZW5CU0QgcHJvamVjdCBz byBpZiB5b3UgaW5zdGFsbA0KLS1jdnMgeW91IGNhbiBzZWUgd2hhdCBJIGNoYW5nZWQgdG8gcG9y dCBtZy4gTGlrZSB0aGlzOg0KLS0NCi0tYGBgDQotLWN2cyBkaWZmIC11dw0KLS1gYGANCi0tDQot LSMjIEFCT1VUIGZnZXRsbigpDQotLQ0KLS1JbmNhc2UgeW91IGFyZSB3b25kZXJpbmcgYWJvdXQg dGhhdCBkZXByZWNhdGlvbiB3YXJuaW5nLCBoZXJlIGlzIGEgbmljZSBleHBsYW5hdGlvbiBhYm91 dCB3aHkgaXQgaXMgaGFyZCB0byBmaXg6DQotLQ0KLS0gIGh0dHA6Ly9uaWFsbG9oaWdnaW5zLmNv bS8yMDA5LzEwLzAzL3JlYWQtYS1maWxlLWxpbmUtYnktbGluZS1pbi1jLXNlY3VyZS1mZ2V0cy1p ZGlvbS8NCi0rIyMgSW50cm9kdWN0aW9uIGJ5IFMuIEdpbGVzDQotKw0KLStIaSwNCi0rDQotK0kn dmUgZ290IGEgcGF0Y2ggdGhhdCBhbGxvd3MgbWcgdG8gZGlzcGxheSB3aWRlIGNoYXJhY3RlcnMs IGlmIHlvdSdyZQ0KLStpbnRlcmVzdGVkLg0KLSsNCi0rSXQgY2FuIGJlIHR1cm5lZCBvbiBieSBz aG93LXdpZGUtbW9kZSAoYmV0dGVyIG5hbWUgd2VsY29tZSksIGFuZCBpcw0KLStmYWlybHkgbGlt aXRlZCBpbiByZWdhcmQgdG8gd2hhdCB0eXBlcyBvZiB3aWRlIGNoYXJhY3RlcnMgYXJlDQotK2Rp c3BsYXllZC4gRXZlcnl0aGluZyBnb2VzIHRocm91Z2ggbWJydG93YygzKSwgc28geW91IGdldCBl eGFjdGx5IG9uZQ0KLStzdXBwb3J0ZWQgZW5jb2Rpbmc6IHdoYXRldmVyIExDXyogc2F5cy4gRXZl cnl0aGluZyBlbHNlIGlzIGRpc3BsYXllZA0KLSthcyBvY3RhbCBlc2NhcGUgc2VxdWVuY2VzIChh cyBub3JtYWwgY3VycmVudCBiZWhhdmlvcikuIE1vdGlvbiBpcw0KLStzdGlsbCBvbiBhIGJ5dGUg bGV2ZWwsIHNvIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGFyZSBzbG93IHRvIHRyYXZlbA0KLSt0aHJv dWdoLCBhbmQgeW91IGNhbiBpbnNlcnQgYnl0ZXMgaW4gdGhlIG1pZGRsZSBvZiB0aGVtICh3aGlj aCB3b3Jrcw0KLStmaW5lKS4gQSBsaW1pdGVkIHZlcnNpb24gb2YgaW5zZXJ0LWNoYXIgaXMgYWxz byBpbmNsdWRlZCwgd2hpY2ggd29ya3MNCi0rdGhyb3VnaCB3Y2hhcl90LCBzbyB0aGF0IG9uIGFu eSBzeXN0ZW0gd2l0aCBfX1NURENfSVNPXzEwNjQ2X18gc2V0LA0KLStpbnNlcnRpbmcgdW5pY29k ZSBjb2RlcG9pbnRzIGJ5IG51bWJlciBpcyBwb3NzaWJsZS4NCi0rDQotK0l0IGFsc28gZml4ZXMg c29tZSBvZGQgYnVncyByZWxhdGVkIHRvIHdpZGUgY2hhcmFjdGVyIGRpc3BsYXkgYW5kDQotK2V4 dGVuZGVkIGxpbmVzLiBGb3IgZXhhbXBsZTogaW4gYSBmaWxlIHdpdGggZW5vdWdoIHdpZGUgY2hh cmFjdGVycw0KLSsoc3VjaCBhcyDvvKHvvKLvvKMpIHRvIG1ha2UgYSBsaW5lIGV4dGVuZCBmYXIg KHNheSwgMjAwIGNoYXJhY3RlcnMgb24gYW4NCi0rODAtd2lkZSBkaXNwbGF5KSwgbW92aW5nIHRv IHRoZSByaWdodCBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZSB3aWxsIChpbg0KLSsyMDE2MDExOCkg Y29ycnVwdCB0aGUgZGlzcGxheSwgdGhlbiBldmVudHVhbGx5IHNlZ2ZhdWx0LCBiZWNhdXNlDQot K3Z0cHV0ZSBkb2Vzbid0IHBlcmZvcm0gdGhlIHNhbWUgb2N0YWwgZXhwYW5zaW9uIGFzIHZ0cHV0 YyBhbmQgdGhlDQotK2NvbHVtbnMgZ2V0IG91dCBvZiBzeW5jLiBUaGlzIHBhdGNoIG1ha2VzIGRp c3BsYXkuYyBhd2FyZSBvZiB0aGUNCi0rcG9zc2liaWxpdHkgdGhhdCB0aGUgYnl0ZXMgYW5kIGds eXBocyBvZiB0aGUgYnVmZmVycyBhcmVuJ3QgMToxLCBzbw0KLStwcm90ZWN0cyBhZ2FpbnN0IHRo YXQuDQotKw0KLStUaGF0IHNhaWQsIHdpZGUgY2hhcmFjdGVyIHN1cHBvcnQgY29tcGxpY2F0ZXMg YSBsb3Qgb2YgYWxyZWFkeQ0KLStjb21wbGljYXRlZCBsb2dpYyAoZm9yIGV4YW1wbGUsIHZ0cHV0 cykgYW5kIHJlbGllcyBvbiB3Y2hhcl90IGZvcg0KLSthbG1vc3QgZXZlcnl0aGluZywgYWRkaW5n IHNvbWUgdW5lc2NhcGFibGUgb3ZlcmhlYWQuDQotKw0KLStJZiB5b3Ugd2FudCB0byB0YWtlIHRo aXMgcGF0Y2gsIHBsZWFzZSBkbyBzby4gSWYgeW91IHRoaW5rIGl0J3MgdG9vDQotK3VnbHkgb3Ig bm90IHVzZWZ1bCwgdGhhdCdzIGFsc28gZmluZS4gIExldCBtZSBrbm93IGlmIHlvdSB3YW50IG1l IHRvDQotK3Jld3JpdGUgcGFydHMgb2YgaXQgKG9yIGlmIHlvdSBzZWUgYW55IGJ1Z3MpIG9yIGlm IHRoZXJlIGFyZSBzdHlsZQ0KLStjb252ZW50aW9ucyBJIGRpZG4ndCBmb2xsb3cuIEl0IGFwcGxp ZXMgY2xlYW5seSB3aXRoIHBhdGNoIC1pLCBwbGVhc2UNCi0rZm9yZ2l2ZSB0aGUgZ2l0LWlzbXMu DQotKw0KLSsoQW5kLCBvZiBjb3Vyc2UsIG1hbnkgdGhhbmtzIGZvciB5b3VyIHdvcmsgaW4gbWFp bnRhaW5pbmcgdGhlIHBvcnQuKQ0KLSsNCi0rUy4gR2lsbGVzDQotZGlmZiAtLWdpdCBhL2Jhc2lj LmMgYi9iYXNpYy5jDQotaW5kZXggODVkOWY3MC4uMTIzZTExNSAxMDA2NDQNCi0tLS0gYS9iYXNp Yy5jDQotKysrIGIvYmFzaWMuYw0KLUBAIC0xOCw2ICsxOCw3IEBADQotICNpbmNsdWRlIDxzaWdu YWwuaD4NCi0gI2luY2x1ZGUgPHN0ZGlvLmg+DQotICNpbmNsdWRlIDxzdGRsaWIuaD4NCi0rI2lu Y2x1ZGUgPHdjaGFyLmg+DQotIA0KLSAjaW5jbHVkZSAiZGVmLmgiDQotIA0KLUBAIC0yNjksMTIg KzI3MCwyNSBAQCBzZXRnb2FsKHZvaWQpDQotIGludA0KLSBnZXRnb2FsKHN0cnVjdCBsaW5lICpk bHApDQotIHsNCi0tCWludCBjLCBpLCBjb2wgPSAwOw0KLS0JY2hhciB0bXBbNV07DQotKwlyZXR1 cm4gZ2V0Ynl0ZW9mY29sKGRscCwgMCwgY3VyZ29hbCk7DQotK30NCi0gDQotKy8qDQotKyAqIFJl dHVybiB0aGUgYnl0ZSBvZmZzZXQgd2l0aGluIGxwIHRoYXQgaXMgdGFyZ2V0Y29sIGNvbHVtbnMg YmV5b25kDQotKyAqIHN0YXJ0Ynl0ZQ0KLSsgKi8NCi0rc2l6ZV90DQotK2dldGJ5dGVvZmNvbChj b25zdCBzdHJ1Y3QgbGluZSAqbHAsIGNvbnN0IHNpemVfdCBzdGFydGJ5dGUsDQotKyAgICAgICAg ICAgICBjb25zdCBzaXplX3QgdGFyZ2V0Y29sKQ0KLSt7DQotKwlpbnQgYzsNCi0rCXNpemVfdCBp LCBjb2wgPSAwOw0KLSsJY2hhciB0bXBbNV07DQotKwlzaXplX3QgYWR2YW5jZV9ieSA9IDE7DQot IA0KLS0JZm9yIChpID0gMDsgaSA8IGxsZW5ndGgoZGxwKTsgaSsrKSB7DQotLQkJYyA9IGxnZXRj KGRscCwgaSk7DQotKwlmb3IgKGkgPSBzdGFydGJ5dGU7IGkgPCBsbGVuZ3RoKGxwKTsgaSArPSBh ZHZhbmNlX2J5KSB7DQotKwkJYWR2YW5jZV9ieSA9IDE7DQotKwkJYyA9IGxnZXRjKGxwLCBpKTsN Ci0gCQlpZiAoYyA9PSAnXHQnDQotICNpZmRlZglOT1RBQg0KLSAJCSAgICAmJiAhKGN1cmJwLT5i X2ZsYWcgJiBCRk5PVEFCKQ0KLUBAIC0yODQsMTggKzI5OCw4NiBAQCBnZXRnb2FsKHN0cnVjdCBs aW5lICpkbHApDQotIAkJCWNvbCsrOw0KLSAJCX0gZWxzZSBpZiAoSVNDVFJMKGMpICE9IEZBTFNF KSB7DQotIAkJCWNvbCArPSAyOw0KLS0JCX0gZWxzZSBpZiAoaXNwcmludChjKSkNCi0rCQl9IGVs c2UgaWYgKGlzcHJpbnQoYykpIHsNCi0gCQkJY29sKys7DQotLQkJZWxzZSB7DQotKwkJfSBlbHNl IGlmICghKGN1cmJwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQotKwkJCW1ic3RhdGVfdCBtYnMg PSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3YyA9IDA7DQotKwkJCXNpemVfdCBjb25zdW1lZCA9IG1i cnRvd2MoJndjLCAmbHAtPmxfdGV4dFtpXSwNCi0rCQkJICAgICAgICAgICAgICAgICAgICAgICAg ICBsbGVuZ3RoKGxwKSAtIGksICZtYnMpOw0KLSsJCQlpbnQgd2lkdGggPSAtMTsNCi0rCQkJaWYg KGNvbnN1bWVkIDwgKHNpemVfdCkgLTIpIHsNCi0rCQkJCXdpZHRoID0gd2N3aWR0aCh3Yyk7DQot KwkJCX0NCi0rCQkJaWYgKHdpZHRoID49IDApIHsNCi0rCQkJCWNvbCArPSB3aWR0aDsNCi0rCQkJ CWFkdmFuY2VfYnkgPSBjb25zdW1lZDsNCi0rCQkJfSBlbHNlIHsNCi0rCQkJCWNvbCArPSBzbnBy aW50Zih0bXAsIHNpemVvZih0bXApLCAiXFwlbyIsIGMpOw0KLSsJCQl9DQotKwkJfSBlbHNlIHsN Ci0gCQkJY29sICs9IHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICJcXCVvIiwgYyk7DQotIAkJ fQ0KLS0JCWlmIChjb2wgPiBjdXJnb2FsKQ0KLSsJCWlmIChjb2wgPiB0YXJnZXRjb2wpDQotIAkJ CWJyZWFrOw0KLSAJfQ0KLSAJcmV0dXJuIChpKTsNCi0gfQ0KLSANCi0gLyoNCi0rICogUmV0dXJu IHRoZSBjb2x1bW4gYXQgd2hpY2ggc3BlY2lmaWVkIG9mZnNldCBieXRlIHdvdWxkIGFwcGVhciwg aWYNCi0rICogdGhpcyB3ZXJlIHBhcnQgb2YgYSBsb25nZXIgc3RyaW5nIHByaW50ZWQgYnkgdnRw dXRzLCBzdGFydGluZyBhdA0KLSsgKiBpbnRpYWxfY29sDQotKyAqLw0KLStzaXplX3QNCi0rZ2V0 Y29sb2ZieXRlKGNvbnN0IHN0cnVjdCBsaW5lICpscCwgY29uc3Qgc2l6ZV90IHN0YXJ0Ynl0ZSwN Ci0rICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBpbml0aWFsX2NvbCwgY29uc3Qgc2l6ZV90IHRh cmdldG9mZnNldCkNCi0rew0KLSsJaW50IGM7DQotKwlzaXplX3QgaSwgY29sID0gaW5pdGlhbF9j b2w7DQotKwljaGFyIHRtcFs1XTsNCi0rCXNpemVfdCBhZHZhbmNlX2J5ID0gMTsNCi0rDQotKwlm b3IgKGkgPSBzdGFydGJ5dGU7IGkgPCBsbGVuZ3RoKGxwKTsgaSArPSBhZHZhbmNlX2J5KSB7DQot KwkJaWYgKGkgPj0gdGFyZ2V0b2Zmc2V0KQ0KLSsJCQlicmVhazsNCi0rCQlhZHZhbmNlX2J5ID0g MTsNCi0rCQljID0gbGdldGMobHAsIGkpOw0KLSsJCWlmIChjID09ICdcdCcNCi0rI2lmZGVmCU5P VEFCDQotKwkJICAgICYmICEoY3VyYnAtPmJfZmxhZyAmIEJGTk9UQUIpDQotKyNlbmRpZg0KLSsJ CQkpIHsNCi0rCQkJY29sIHw9IDB4MDc7DQotKwkJCWNvbCsrOw0KLSsJCX0gZWxzZSBpZiAoSVND VFJMKGMpICE9IEZBTFNFKSB7DQotKwkJCWNvbCArPSAyOw0KLSsJCX0gZWxzZSBpZiAoaXNwcmlu dChjKSkgew0KLSsJCQljb2wrKzsNCi0rCQl9IGVsc2UgaWYgKCEoY3VyYnAtPmJfZmxhZyAmIEJG U0hPV1JBVykpIHsNCi0rCQkJbWJzdGF0ZV90IG1icyA9IHsgMCB9Ow0KLSsJCQl3Y2hhcl90IHdj ID0gMDsNCi0rCQkJc2l6ZV90IGNvbnN1bWVkID0gbWJydG93Yygmd2MsICZscC0+bF90ZXh0W2ld LA0KLSsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGxsZW5ndGgobHApIC0gaSwgJm1icyk7 DQotKwkJCWludCB3aWR0aCA9IC0xOw0KLSsJCQlpZiAoY29uc3VtZWQgPCAoc2l6ZV90KSAtMikg ew0KLSsJCQkJd2lkdGggPSB3Y3dpZHRoKHdjKTsNCi0rCQkJfQ0KLSsJCQlpZiAod2lkdGggPj0g MCkgew0KLSsJCQkJY29sICs9IHdpZHRoOw0KLSsJCQkJYWR2YW5jZV9ieSA9IGNvbnN1bWVkOw0K LSsJCQl9IGVsc2Ugew0KLSsJCQkJY29sICs9IHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICJc XCVvIiwgYyk7DQotKwkJCX0NCi0rCQl9IGVsc2Ugew0KLSsJCQljb2wgKz0gc25wcmludGYodG1w LCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0rCQl9DQotKwl9DQotKwlyZXR1cm4gKGNvbCk7 DQotK30NCi0rDQotKw0KLSsvKg0KLSAgKiBTY3JvbGwgZm9yd2FyZCBieSBhIHNwZWNpZmllZCBu dW1iZXINCi0gICogb2YgbGluZXMsIG9yIGJ5IGEgZnVsbCBwYWdlIGlmIG5vIGFyZ3VtZW50Lg0K LSAgKiBUaGUgIjIiIGlzIHRoZSB3aW5kb3cgb3ZlcmxhcCAodGhpcyBpcyB0aGUgZGVmYXVsdA0K LWRpZmYgLS1naXQgYS9jbW9kZS5jIGIvY21vZGUuYw0KLWluZGV4IGEyMzgyODUuLjlkNGNhYzMg MTAwNjQ0DQotLS0tIGEvY21vZGUuYw0KLSsrKyBiL2Ntb2RlLmMNCi1AQCAtMTQsNiArMTQsNyBA QA0KLSAjaW5jbHVkZSA8Y3R5cGUuaD4NCi0gI2luY2x1ZGUgPHNpZ25hbC5oPg0KLSAjaW5jbHVk ZSA8c3RkaW8uaD4NCi0rI2luY2x1ZGUgPHdjaGFyLmg+DQotIA0KLSAjaW5jbHVkZSAiZGVmLmgi DQotICNpbmNsdWRlICJmdW5tYXAuaCINCi1AQCAtNDE5LDEwICs0MjAsMjUgQEAgZmluZGNvbHBv cyhjb25zdCBzdHJ1Y3QgYnVmZmVyICpicCwgY29uc3Qgc3RydWN0IGxpbmUgKmxwLCBpbnQgbG8p DQotIAkJCSkgew0KLSAJCQljb2wgfD0gMHgwNzsNCi0gCQkJY29sKys7DQotLQkJfSBlbHNlIGlm IChJU0NUUkwoYykgIT0gRkFMU0UpDQotKwkJfSBlbHNlIGlmIChJU0NUUkwoYykgIT0gRkFMU0Up IHsNCi0gCQkJY29sICs9IDI7DQotLQkJZWxzZSBpZiAoaXNwcmludChjKSkgew0KLSsJCX0gZWxz ZSBpZiAoaXNwcmludChjKSkgew0KLSAJCQljb2wrKzsNCi0rCQl9IGVsc2UgaWYgKCEoYnAtPmJf ZmxhZyAmIEJGU0hPV1JBVykpIHsNCi0rCQkJbWJzdGF0ZV90IG1icyA9IHsgMCB9Ow0KLSsJCQl3 Y2hhcl90IHdjID0gMDsNCi0rCQkJc2l6ZV90IGNvbnN1bWVkID0gbWJydG93Yygmd2MsICZscC0+ bF90ZXh0W2ldLA0KLSsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgIGxsZW5ndGgobHApIC0g aSwgJm1icyk7DQotKwkJCWludCB3aWR0aCA9IC0xOw0KLSsJCQlpZiAoY29uc3VtZWQgPCAoc2l6 ZV90KSAtMikgew0KLSsJCQkJd2lkdGggPSB3Y3dpZHRoKHdjKTsNCi0rCQkJfQ0KLSsJCQlpZiAo d2lkdGggPj0gMCkgew0KLSsJCQkJY29sICs9IHdpZHRoOw0KLSsJCQkJaSArPSAoY29uc3VtZWQg LSAxKTsNCi0rCQkJfSBlbHNlIHsNCi0rCQkJCWNvbCArPSBzbnByaW50Zih0bXAsIHNpemVvZih0 bXApLCAiXFwlbyIsIGMpOw0KLSsJCQl9DQotIAkJfSBlbHNlIHsNCi0gCQkJY29sICs9IHNucHJp bnRmKHRtcCwgc2l6ZW9mKHRtcCksICJcXCVvIiwgYyk7DQotIAkJfQ0KLWRpZmYgLS1naXQgYS9k ZWYuaCBiL2RlZi5oDQotaW5kZXggNTRiNzRjZS4uMmZiMjg5ZCAxMDA2NDQNCi0tLS0gYS9kZWYu aA0KLSsrKyBiL2RlZi5oDQotQEAgLTI3MCw3ICsyNzAsNyBAQCBzdHJ1Y3QgYnVmZmVyIHsNCi0g CWludAkJIGJfbWFya287CS8qIGRpdHRvIGZvciB0aGUgIm1hcmsiCQkgKi8NCi0gCXNob3J0CQkg Yl9ubW9kZXM7CS8qIG51bWJlciBvZiBub24tZnVuZGFtZW50YWwgbW9kZXMgKi8NCi0gCWNoYXIJ CSBiX253bmQ7CS8qIENvdW50IG9mIHdpbmRvd3Mgb24gYnVmZmVyCSAqLw0KLS0JY2hhcgkJIGJf ZmxhZzsJLyogRmxhZ3MJCQkgKi8NCi0rCXNob3J0CQkgYl9mbGFnOwkvKiBGbGFncwkJCSAqLw0K LSAJY2hhcgkJIGJfZm5hbWVbTkZJTEVOXTsgLyogRmlsZSBuYW1lCQkJICovDQotIAljaGFyCQkg Yl9jd2RbTkZJTEVOXTsgLyogd29ya2luZyBkaXJlY3RvcnkJCSAqLw0KLSAJc3RydWN0IGZpbGVp bmZvCSBiX2ZpOwkJLyogRmlsZSBhdHRyaWJ1dGVzCQkgKi8NCi1AQCAtMjk3LDYgKzI5Nyw3IEBA IHN0cnVjdCBidWZmZXIgew0KLSAjZGVmaW5lIEJGRElSVFkgICAgIDB4MjAJCS8qIEJ1ZmZlciB3 YXMgbW9kaWZpZWQgZWxzZXdoZXJlICovDQotICNkZWZpbmUgQkZJR05ESVJUWSAgMHg0MAkJLyog SWdub3JlIG1vZGlmaWNhdGlvbnMgCSAqLw0KLSAjZGVmaW5lIEJGRElSRURERUwgIDB4ODAJCS8q IERpcmVkIGhhcyBhIGRlbGV0ZWQgJ0QnIGZpbGUJICovDQotKyNkZWZpbmUgQkZTSE9XUkFXICAg MHgxMDAJCS8qIFNob3cgdW5wcmludGFibGUgYXMgb2N0YWwJICovDQotIC8qDQotICAqIFRoaXMg c3RydWN0dXJlIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHJlY2VudCBhY3Rpb25zIGZvciB0aGUg VW5kbyBjb21tYW5kLg0KLSAgKi8NCi1AQCAtNDk3LDYgKzQ5OCw3IEBAIGludAkJIGRpZ2l0X2Fy Z3VtZW50KGludCwgaW50KTsNCi0gaW50CQkgbmVnYXRpdmVfYXJndW1lbnQoaW50LCBpbnQpOw0K LSBpbnQJCSBzZWxmaW5zZXJ0KGludCwgaW50KTsNCi0gaW50CQkgcXVvdGUoaW50LCBpbnQpOw0K LStpbnQJCSBpbnNlcnRfY2hhcihpbnQsIGludCk7DQotIA0KLSAvKiBtYWluLmMgKi8NCi0gaW50 CQkgY3RybGcoaW50LCBpbnQpOw0KLUBAIC01MTksNiArNTIxLDggQEAgaW50CQkgZm9yd2xpbmUo aW50LCBpbnQpOw0KLSBpbnQJCSBiYWNrbGluZShpbnQsIGludCk7DQotIHZvaWQJCSBzZXRnb2Fs KHZvaWQpOw0KLSBpbnQJCSBnZXRnb2FsKHN0cnVjdCBsaW5lICopOw0KLStzaXplX3QJCSBnZXRi eXRlb2Zjb2woY29uc3Qgc3RydWN0IGxpbmUgKiwgc2l6ZV90LCBzaXplX3QpOw0KLStzaXplX3QJ CSBnZXRjb2xvZmJ5dGUoY29uc3Qgc3RydWN0IGxpbmUgKiwgc2l6ZV90LCBzaXplX3QsIHNpemVf dCk7DQotIGludAkJIGZvcndwYWdlKGludCwgaW50KTsNCi0gaW50CQkgYmFja3BhZ2UoaW50LCBp bnQpOw0KLSBpbnQJCSBmb3J3MXBhZ2UoaW50LCBpbnQpOw0KLUBAIC02NjUsNiArNjY5LDcgQEAg aW50CQkgbm90YWJtb2RlKGludCwgaW50KTsNCi0gI2VuZGlmCS8qIE5PVEFCICovDQotIGludAkJ IG92ZXJ3cml0ZV9tb2RlKGludCwgaW50KTsNCi0gaW50CQkgc2V0X2RlZmF1bHRfbW9kZShpbnQs aW50KTsNCi0raW50CQkgc2hvd19yYXdfbW9kZShpbnQsIGludCk7DQotIA0KLSAjaWZkZWYgUkVH RVgNCi0gLyogcmVfc2VhcmNoLmMgWCAqLw0KLWRpZmYgLS1naXQgYS9kaXNwbGF5LmMgYi9kaXNw bGF5LmMNCi1pbmRleCA3YWY3MjNjLi4xMDRmODczIDEwMDY0NA0KLS0tLSBhL2Rpc3BsYXkuYw0K LSsrKyBiL2Rpc3BsYXkuYw0KLUBAIC03LDcgKzcsNyBAQA0KLSAgKiByZWRpc3BsYXkgc3lzdGVt IGtub3dzIGFsbW9zdCBub3RoaW5nIGFib3V0IHRoZSBlZGl0aW5nDQotICAqIHByb2Nlc3M7IHRo ZSBlZGl0aW5nIGZ1bmN0aW9ucyBkbywgaG93ZXZlciwgc2V0IHNvbWUNCi0gICogaGludHMgdG8g ZWxpbWluYXRlIGEgbG90IG9mIHRoZSBncmluZGluZy4gVGhlcmUgaXMgbW9yZQ0KLS0gKiB0aGF0 IGNhbiBiZSBkb25lOyB0aGUgInZ0cHV0YyIgaW50ZXJmYWNlIGlzIGEgcmVhbA0KLSsgKiB0aGF0 IGNhbiBiZSBkb25lOyB0aGUgInZ0cHV0cyIgaW50ZXJmYWNlIGlzIGEgcmVhbA0KLSAgKiBwaWcu DQotICAqLw0KLSANCi1AQCAtMTgsNiArMTgsNyBAQA0KLSAjaW5jbHVkZSA8c3RkbGliLmg+DQot ICNpbmNsdWRlIDxzdHJpbmcuaD4NCi0gI2luY2x1ZGUgPHRlcm0uaD4NCi0rI2luY2x1ZGUgPHdj aGFyLmg+DQotIA0KLSAjaW5jbHVkZSAiZGVmLmgiDQotICNpbmNsdWRlICJrYmQuaCINCi1AQCAt NTIsMTEgKzUzLDEwIEBAIHN0cnVjdCBzY29yZSB7DQotIH07DQotIA0KLSB2b2lkCXZ0bW92ZShp bnQsIGludCk7DQotLXZvaWQJdnRwdXRjKGludCk7DQotIHZvaWQJdnRwdXRlKGludCk7DQotLWlu dAl2dHB1dHMoY29uc3QgY2hhciAqKTsNCi0raW50CXZ0cHV0cyhjb25zdCBjaGFyICosIHNpemVf dCwgc2l6ZV90KTsNCi0gdm9pZAl2dGVlb2wodm9pZCk7DQotLXZvaWQJdXBkZXh0KGludCwgaW50 KTsNCi0raW50CXVwZGV4dChpbnQsIGludCk7DQotIHZvaWQJbW9kZWxpbmUoc3RydWN0IG1nd2lu ICosIGludCk7DQotIHZvaWQJc2V0c2NvcmVzKGludCwgaW50KTsNCi0gdm9pZAl0cmFjZWJhY2so aW50LCBpbnQsIGludCwgaW50KTsNCi1AQCAtMjE2LDggKzIxNiw4IEBAIHZ0cmVzaXplKGludCBm b3JjZSwgaW50IG5ld3JvdywgaW50IG5ld2NvbCkNCi0gCX0NCi0gCWlmIChyb3djaGFuZ2VkIHx8 IGNvbGNoYW5nZWQgfHwgZmlyc3RfcnVuKSB7DQotIAkJZm9yIChpID0gMDsgaSA8IDIgKiAobmV3 cm93IC0gMSk7IGkrKykNCi0tCQkJVFJZUkVBTExPQyh2aWRlb1tpXS52X3RleHQsIG5ld2NvbCk7 DQotLQkJVFJZUkVBTExPQyhibGFua3Mudl90ZXh0LCBuZXdjb2wpOw0KLSsJCQlUUllSRUFMTE9D KHZpZGVvW2ldLnZfdGV4dCwgbmV3Y29sICogTUJfQ1VSX01BWCk7DQotKwkJVFJZUkVBTExPQyhi bGFua3Mudl90ZXh0LCBuZXdjb2wgKiBNQl9DVVJfTUFYKTsNCi0gCX0NCi0gDQotIAlucm93ID0g bmV3cm93Ow0KLUBAIC0yNjAsNyArMjYwLDcgQEAgdnRpbml0KHZvaWQpDQotIAkgKi8NCi0gDQot IAlibGFua3Mudl9jb2xvciA9IENURVhUOw0KLS0JZm9yIChpID0gMDsgaSA8IG5jb2w7ICsraSkN Ci0rCWZvciAoaSA9IDA7IGkgPCBuY29sICogTUJfQ1VSX01BWDsgKytpKQ0KLSAJCWJsYW5rcy52 X3RleHRbaV0gPSAnICc7DQotIH0NCi0gDQotQEAgLTI4Nyw3ICsyODcsNyBAQCB2dHRpZHkodm9p ZCkNCi0gICogTW92ZSB0aGUgdmlydHVhbCBjdXJzb3IgdG8gYW4gb3JpZ2luDQotICAqIDAgc3Bv dCBvbiB0aGUgdmlydHVhbCBkaXNwbGF5IHNjcmVlbi4gSSBjb3VsZA0KLSAgKiBzdG9yZSB0aGUg Y29sdW1uIGFzIGEgY2hhcmFjdGVyIHBvaW50ZXIgdG8gdGhlIHNwb3QNCi0tICogb24gdGhlIGxp bmUsIHdoaWNoIHdvdWxkIG1ha2UgInZ0cHV0YyIgYSBsaXR0bGUgYml0DQotKyAqIG9uIHRoZSBs aW5lLCB3aGljaCB3b3VsZCBtYWtlICJ2dHB1dHMiIGEgbGl0dGxlIGJpdA0KLSAgKiBtb3JlIGVm ZmljaWVudC4gTm8gY2hlY2tpbmcgZm9yIGVycm9ycy4NCi0gICovDQotIHZvaWQNCi1AQCAtMjk4 LDgyICsyOTgsNiBAQCB2dG1vdmUoaW50IHJvdywgaW50IGNvbCkNCi0gfQ0KLSANCi0gLyoNCi0t ICogV3JpdGUgYSBjaGFyYWN0ZXIgdG8gdGhlIHZpcnR1YWwgZGlzcGxheSwNCi0tICogZGVhbGlu ZyB3aXRoIGxvbmcgbGluZXMgYW5kIHRoZSBkaXNwbGF5IG9mIHVucHJpbnRhYmxlDQotLSAqIHRo aW5ncyBsaWtlIGNvbnRyb2wgY2hhcmFjdGVycy4gQWxzbyBleHBhbmQgdGFicyBldmVyeSA4DQot LSAqIGNvbHVtbnMuIFRoaXMgY29kZSBvbmx5IHB1dHMgcHJpbnRpbmcgY2hhcmFjdGVycyBpbnRv DQotLSAqIHRoZSB2aXJ0dWFsIGRpc3BsYXkgaW1hZ2UuIFNwZWNpYWwgY2FyZSBtdXN0IGJlIHRh a2VuIHdoZW4NCi0tICogZXhwYW5kaW5nIHRhYnMuIE9uIGEgc2NyZWVuIHdob3NlIHdpZHRoIGlz IG5vdCBhIG11bHRpcGxlDQotLSAqIG9mIDgsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGUgdmlydHVh bCBjdXJzb3IgdG8gaGl0IHRoZQ0KLS0gKiByaWdodCBtYXJnaW4gYmVmb3JlIHRoZSBuZXh0IHRh YiBzdG9wIGlzIHJlYWNoZWQuIFRoaXMNCi0tICogbWFrZXMgdGhlIHRhYiBjb2RlIGxvb3AgaWYg eW91IGFyZSBub3QgY2FyZWZ1bC4NCi0tICogVGhyZWUgZ3Vlc3NlcyBob3cgd2UgZm91bmQgdGhp cy4NCi0tICovDQotLXZvaWQNCi0tdnRwdXRjKGludCBjKQ0KLS17DQotLQlzdHJ1Y3QgdmlkZW8J KnZwOw0KLS0NCi0tCWMgJj0gMHhmZjsNCi0tDQotLQl2cCA9IHZzY3JlZW5bdnRyb3ddOw0KLS0J aWYgKHZ0Y29sID49IG5jb2wpDQotLQkJdnAtPnZfdGV4dFtuY29sIC0gMV0gPSAnJCc7DQotLQll bHNlIGlmIChjID09ICdcdCcNCi0tI2lmZGVmCU5PVEFCDQotLQkgICAgJiYgIShjdXJicC0+Yl9m bGFnICYgQkZOT1RBQikNCi0tI2VuZGlmDQotLQkgICAgKSB7DQotLQkJZG8gew0KLS0JCQl2dHB1 dGMoJyAnKTsNCi0tCQl9IHdoaWxlICh2dGNvbCA8IG5jb2wgJiYgKHZ0Y29sICYgMHgwNykgIT0g MCk7DQotLQl9IGVsc2UgaWYgKElTQ1RSTChjKSkgew0KLS0JCXZ0cHV0YygnXicpOw0KLS0JCXZ0 cHV0YyhDQ0hSKGMpKTsNCi0tCX0gZWxzZSBpZiAoaXNwcmludChjKSkNCi0tCQl2cC0+dl90ZXh0 W3Z0Y29sKytdID0gYzsNCi0tCWVsc2Ugew0KLS0JCWNoYXIgYmZbNV07DQotLQ0KLS0JCXNucHJp bnRmKGJmLCBzaXplb2YoYmYpLCAiXFwlbyIsIGMpOw0KLS0JCXZ0cHV0cyhiZik7DQotLQl9DQot LX0NCi0tDQotLS8qDQotLSAqIFB1dCBhIGNoYXJhY3RlciB0byB0aGUgdmlydHVhbCBzY3JlZW4g aW4gYW4gZXh0ZW5kZWQgbGluZS4gIElmIHdlIGFyZSBub3QNCi0tICogeWV0IG9uIGxlZnQgZWRn ZSwgZG9uJ3QgcHJpbnQgaXQgeWV0LiAgQ2hlY2sgZm9yIG92ZXJmbG93IG9uIHRoZSByaWdodA0K LS0gKiBtYXJnaW4uDQotLSAqLw0KLS12b2lkDQotLXZ0cHV0ZShpbnQgYykNCi0tew0KLS0Jc3Ry dWN0IHZpZGVvICp2cDsNCi0tDQotLQljICY9IDB4ZmY7DQotLQ0KLS0JdnAgPSB2c2NyZWVuW3Z0 cm93XTsNCi0tCWlmICh2dGNvbCA+PSBuY29sKQ0KLS0JCXZwLT52X3RleHRbbmNvbCAtIDFdID0g JyQnOw0KLS0JZWxzZSBpZiAoYyA9PSAnXHQnDQotLSNpZmRlZglOT1RBQg0KLS0JICAgICYmICEo Y3VyYnAtPmJfZmxhZyAmIEJGTk9UQUIpDQotLSNlbmRpZg0KLS0JICAgICkgew0KLS0JCWRvIHsN Ci0tCQkJdnRwdXRlKCcgJyk7DQotLQkJfSB3aGlsZSAoKCh2dGNvbCArIGxib3VuZCkgJiAweDA3 KSAhPSAwICYmIHZ0Y29sIDwgbmNvbCk7DQotLQl9IGVsc2UgaWYgKElTQ1RSTChjKSAhPSBGQUxT RSkgew0KLS0JCXZ0cHV0ZSgnXicpOw0KLS0JCXZ0cHV0ZShDQ0hSKGMpKTsNCi0tCX0gZWxzZSB7 DQotLQkJaWYgKHZ0Y29sID49IDApDQotLQkJCXZwLT52X3RleHRbdnRjb2xdID0gYzsNCi0tCQkr K3Z0Y29sOw0KLS0JfQ0KLS19DQotLQ0KLS0vKg0KLSAgKiBFcmFzZSBmcm9tIHRoZSBlbmQgb2Yg dGhlIHNvZnR3YXJlIGN1cnNvciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lIG9uIHdoaWNoDQotICAq IHRoZSBzb2Z0d2FyZSBjdXJzb3IgaXMgbG9jYXRlZC4gVGhlIGRpc3BsYXkgcm91dGluZXMgd2ls bCBkZWNpZGUgaWYgYQ0KLSAgKiBoYXJkd2FyZSBlcmFzZSB0byBlbmQgb2YgbGluZSBjb21tYW5k IHNob3VsZCBiZSB1c2VkIHRvIGRpc3BsYXkgdGhpcy4NCi1AQCAtMzg0LDcgKzMwOCw3IEBAIHZ0 ZWVvbCh2b2lkKQ0KLSAJc3RydWN0IHZpZGVvICp2cDsNCi0gDQotIAl2cCA9IHZzY3JlZW5bdnRy b3ddOw0KLS0Jd2hpbGUgKHZ0Y29sIDwgbmNvbCkNCi0rCXdoaWxlICh2dGNvbCA8IG5jb2wgKiBN Ql9DVVJfTUFYKQ0KLSAJCXZwLT52X3RleHRbdnRjb2wrK10gPSAnICc7DQotIH0NCi0gDQotQEAg LTQwNCw3ICszMjgsNyBAQCB1cGRhdGUoaW50IG1vZGVsaW5lY29sb3IpDQotIAlzdHJ1Y3QgbWd3 aW4JKndwOw0KLSAJc3RydWN0IHZpZGVvCSp2cDE7DQotIAlzdHJ1Y3QgdmlkZW8JKnZwMjsNCi0t CWludAkgYywgaSwgajsNCi0rCWludAkgYywgaTsNCi0gCWludAkgaGZsYWc7DQotIAlpbnQJIGN1 cnJvdywgY3VyY29sOw0KLSAJaW50CSBvZmZzLCBzaXplOw0KLUBAIC00NzksOCArNDAzLDkgQEAg dXBkYXRlKGludCBtb2RlbGluZWNvbG9yKQ0KLSAJCQl2c2NyZWVuW2ldLT52X2NvbG9yID0gQ1RF WFQ7DQotIAkJCXZzY3JlZW5baV0tPnZfZmxhZyB8PSAoVkZDSEcgfCBWRkhCQUQpOw0KLSAJCQl2 dG1vdmUoaSwgMCk7DQotLQkJCWZvciAoaiA9IDA7IGogPCBsbGVuZ3RoKGxwKTsgKytqKQ0KLS0J CQkJdnRwdXRjKGxnZXRjKGxwLCBqKSk7DQotKwkJCWlmIChsbGVuZ3RoKGxwKSkgew0KLSsJCQkJ dnRwdXRzKGxwLT5sX3RleHQsIGxsZW5ndGgobHApLCAwKTsNCi0rCQkJfQ0KLSAJCQl2dGVlb2wo KTsNCi0gCQl9IGVsc2UgaWYgKCh3cC0+d19yZmxhZyAmIChXRkVESVQgfCBXRkZVTEwpKSAhPSAw KSB7DQotIAkJCWhmbGFnID0gVFJVRTsNCi1AQCAtNDg5LDggKzQxNCwxMCBAQCB1cGRhdGUoaW50 IG1vZGVsaW5lY29sb3IpDQotIAkJCQl2c2NyZWVuW2ldLT52X2ZsYWcgfD0gKFZGQ0hHIHwgVkZI QkFEKTsNCi0gCQkJCXZ0bW92ZShpLCAwKTsNCi0gCQkJCWlmIChscCAhPSB3cC0+d19idWZwLT5i X2hlYWRwKSB7DQotLQkJCQkJZm9yIChqID0gMDsgaiA8IGxsZW5ndGgobHApOyArK2opDQotLQkJ CQkJCXZ0cHV0YyhsZ2V0YyhscCwgaikpOw0KLSsJCQkJCWlmIChsbGVuZ3RoKGxwKSkgew0KLSsJ CQkJCQl2dHB1dHMobHAtPmxfdGV4dCwgbGxlbmd0aChscCksDQotKwkJCQkJCSAgICAwKTsNCi0r CQkJCQl9DQotIAkJCQkJbHAgPSBsZm9ydyhscCk7DQotIAkJCQl9DQotIAkJCQl2dGVlb2woKTsN Ci1AQCAtNTA4LDMyICs0MzUsNTMgQEAgdXBkYXRlKGludCBtb2RlbGluZWNvbG9yKQ0KLSAJCSsr Y3Vycm93Ow0KLSAJCWxwID0gbGZvcncobHApOw0KLSAJfQ0KLSsNCi0gCWN1cmNvbCA9IDA7DQot IAlpID0gMDsNCi0gCXdoaWxlIChpIDwgY3Vyd3AtPndfZG90bykgew0KLS0JCWMgPSBsZ2V0Yyhs cCwgaSsrKTsNCi0rCQljaGFyIHRtcFs1XTsNCi0rCQljID0gbGdldGMobHAsIGkpOw0KLSAJCWlm IChjID09ICdcdCcNCi0gI2lmZGVmCU5PVEFCDQotIAkJICAgICYmICEoY3VyYnAtPmJfZmxhZyAm IEJGTk9UQUIpDQotICNlbmRpZg0KLSAJCQkpIHsNCi0tCQkJY3VyY29sIHw9IDB4MDc7DQotIAkJ CWN1cmNvbCsrOw0KLSsJCQl3aGlsZSAoKGN1cmNvbCAtIGxib3VuZCkgJiAweDA3KSB7DQotKwkJ CQljdXJjb2wrKzsNCi0rCQkJfQ0KLSAJCX0gZWxzZSBpZiAoSVNDVFJMKGMpICE9IEZBTFNFKQ0K LSAJCQljdXJjb2wgKz0gMjsNCi0tCQllbHNlIGlmIChpc3ByaW50KGMpKQ0KLSsJCWVsc2UgaWYg KGlzcHJpbnQoYykpIHsNCi0gCQkJY3VyY29sKys7DQotLQkJZWxzZSB7DQotLQkJCWNoYXIgYmZb NV07DQotLQ0KLS0JCQlzbnByaW50ZihiZiwgc2l6ZW9mKGJmKSwgIlxcJW8iLCBjKTsNCi0tCQkJ Y3VyY29sICs9IHN0cmxlbihiZik7DQotKwkJfSBlbHNlIGlmICghKGN1cmJwLT5iX2ZsYWcgJiBC RlNIT1dSQVcpKSB7DQotKwkJCW1ic3RhdGVfdCBtYnMgPSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3 YyA9IDA7DQotKwkJCXNpemVfdCBjb25zdW1lZCA9IG1icnRvd2MoJndjLCAmbHAtPmxfdGV4dFtp XSwNCi0rCQkJICAgICAgICAgICAgICAgICAgICAgICAgICBsbGVuZ3RoKGxwKSAtIGksICZtYnMp Ow0KLSsJCQlpbnQgd2lkdGggPSAtMTsNCi0rCQkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkgLTIp IHsNCi0rCQkJCXdpZHRoID0gd2N3aWR0aCh3Yyk7DQotKwkJCX0gZWxzZSB7DQotKwkJCQltZW1z ZXQoJm1icywgMCwgc2l6ZW9mIG1icyk7DQotKwkJCX0NCi0rCQkJaWYgKHdpZHRoID49IDApIHsN Ci0rCQkJCWN1cmNvbCArPSB3aWR0aDsNCi0rCQkJCWkgKz0gKGNvbnN1bWVkIC0gMSk7DQotKwkJ CX0gZWxzZSB7DQotKwkJCQlzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiXFwlbyIsIGMpOw0K LSsJCQkJY3VyY29sICs9IHN0cmxlbih0bXApOw0KLSsJCQl9DQotKwkJfSBlbHNlIHsNCi0rCQkJ c25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0rCQkJY3VyY29sICs9IHN0 cmxlbih0bXApOw0KLSAJCX0NCi0rCQlpKys7DQotIAl9DQotIAlpZiAoY3VyY29sID49IG5jb2wg LSAxKSB7CS8qIGV4dGVuZGVkIGxpbmUuICovDQotIAkJLyogZmxhZyB3ZSBhcmUgZXh0ZW5kZWQg YW5kIGNoYW5nZWQgKi8NCi0gCQl2c2NyZWVuW2N1cnJvd10tPnZfZmxhZyB8PSBWRkVYVCB8IFZG Q0hHOw0KLS0JCXVwZGV4dChjdXJyb3csIGN1cmNvbCk7CS8qIGFuZCBvdXRwdXQgZXh0ZW5kZWQg bGluZSAqLw0KLSsJCWN1cmNvbCA9IHVwZGV4dChjdXJyb3csIGN1cmNvbCk7DQotIAl9IGVsc2UN Ci0gCQlsYm91bmQgPSAwOwkvKiBub3QgZXh0ZW5kZWQgbGluZSAqLw0KLSANCi1AQCAtNTUyLDgg KzUwMCwxMCBAQCB1cGRhdGUoaW50IG1vZGVsaW5lY29sb3IpDQotIAkJCQlpZiAoKHdwICE9IGN1 cndwKSB8fCAobHAgIT0gd3AtPndfZG90cCkgfHwNCi0gCQkJCSAgICAoY3VyY29sIDwgbmNvbCAt IDEpKSB7DQotIAkJCQkJdnRtb3ZlKGksIDApOw0KLS0JCQkJCWZvciAoaiA9IDA7IGogPCBsbGVu Z3RoKGxwKTsgKytqKQ0KLS0JCQkJCQl2dHB1dGMobGdldGMobHAsIGopKTsNCi0rCQkJCQlpZiAo bGxlbmd0aChscCkpIHsNCi0rCQkJCQkJdnRwdXRzKGxwLT5sX3RleHQsIGxsZW5ndGgobHApLA0K LSsJCQkJCQkgICAgMCk7DQotKwkJCQkJfQ0KLSAJCQkJCXZ0ZWVvbCgpOw0KLSAJCQkJCS8qIHRo aXMgbGluZSBubyBsb25nZXIgaXMgZXh0ZW5kZWQgKi8NCi0gCQkJCQl2c2NyZWVuW2ldLT52X2Zs YWcgJj0gflZGRVhUOw0KLUBAIC02NTUsMzkgKzYwNSw0NCBAQCB1Y29weShzdHJ1Y3QgdmlkZW8g KnZ2cCwgc3RydWN0IHZpZGVvICpwdnApDQotIAlwdnAtPnZfaGFzaCA9IHZ2cC0+dl9oYXNoOw0K LSAJcHZwLT52X2Nvc3QgPSB2dnAtPnZfY29zdDsNCi0gCXB2cC0+dl9jb2xvciA9IHZ2cC0+dl9j b2xvcjsNCi0tCWJjb3B5KHZ2cC0+dl90ZXh0LCBwdnAtPnZfdGV4dCwgbmNvbCk7DQotKwliY29w eSh2dnAtPnZfdGV4dCwgcHZwLT52X3RleHQsIG5jb2wgKiBNQl9DVVJfTUFYKTsNCi0gfQ0KLSAN Ci0gLyoNCi0tICogdXBkZXh0OiB1cGRhdGUgdGhlIGV4dGVuZGVkIGxpbmUgd2hpY2ggdGhlIGN1 cnNvciBpcyBjdXJyZW50bHkgb24gYXQgYQ0KLS0gKiBjb2x1bW4gZ3JlYXRlciB0aGFuIHRoZSB0 ZXJtaW5hbCB3aWR0aC4gVGhlIGxpbmUgd2lsbCBiZSBzY3JvbGxlZCByaWdodCBvcg0KLS0gKiBs ZWZ0IHRvIGxldCB0aGUgdXNlciBzZWUgd2hlcmUgdGhlIGN1cnNvciBpcy4NCi0rICogdXBkZXh0 OiB1cGRhdGUgdGhlIGV4dGVuZGVkIGxpbmUgd2hpY2ggdGhlIGN1cnNvciBpcyBjdXJyZW50bHkg b24NCi0rICogYXQgYSBjb2x1bW4gZ3JlYXRlciB0aGFuIHRoZSB0ZXJtaW5hbCB3aWR0aC4gVGhl IGxpbmUgd2lsbCBiZQ0KLSsgKiBzY3JvbGxlZCByaWdodCBvciBsZWZ0IHRvIGxldCB0aGUgdXNl ciBzZWUgd2hlcmUgdGhlIGN1cnNvcg0KLSsgKiBpcy4gY3VyY29sIG1heSBuZWVkIHRvIGJlIGFk anVzdGVkLCBkZXBlbmRpbmcgb24gaG93IHdpZGUNCi0rICogY2hhcmFjdGVycyBhbmQgbGJvdW5k IGludGVyYWN0LCB0aGF0IGFkanVzdGVkIHBvc2l0aW9uIGlzIHJldHVybmVkLg0KLSAgKi8NCi0t dm9pZA0KLStpbnQNCi0gdXBkZXh0KGludCBjdXJyb3csIGludCBjdXJjb2wpDQotIHsNCi0tCXN0 cnVjdCBsaW5lCSpscDsJCQkvKiBwb2ludGVyIHRvIGN1cnJlbnQgbGluZSAqLw0KLS0JaW50CSBq OwkJCS8qIGluZGV4IGludG8gbGluZSAqLw0KLSsJc3RydWN0IGxpbmUgKmxwID0gY3Vyd3AtPndf ZG90cDsJLyogcG9pbnRlciB0byBjdXJyZW50IGxpbmUgKi8NCi0rCXNpemVfdCBzdGFydGJ5dGU7 DQotKwlpbnQgYmV0dGVyY29sID0gY3VyY29sOw0KLSsJc2l6ZV90IGZ1bGxleHRlbnQ7DQotIA0K LSAJaWYgKG5jb2wgPCAyKQ0KLS0JCXJldHVybjsNCi0rCQlyZXR1cm4gY3VyY29sOw0KLSANCi0g CS8qDQotLQkgKiBjYWxjdWxhdGUgd2hhdCBjb2x1bW4gdGhlIGxlZnQgYm91bmQgc2hvdWxkIGJl DQotLQkgKiAoZm9yY2UgY3Vyc29yIGludG8gbWlkZGxlIGhhbGYgb2Ygc2NyZWVuKQ0KLSsJICog Y2FsY3VsYXRlIHdoYXQgY29sdW1uIHRoZSBsZWZ0IGJvdW5kIHNob3VsZCBiZSAoZm9yY2UNCi0r CSAqIGN1cnNvciBpbnRvIG1pZGRsZSBoYWxmIG9mIHNjcmVlbikuIEVuc3VyaW5nIHRoYXQgaXQg aXMgYXQNCi0rCSAqIGEgdGFic3RvcCBhbGxvd3MgdXBkYXRlKCkgdG8gY2FsY3VsYXRlIGN1cmNv bCB3aXRob3V0DQotKwkgKiB3b25kZXJpbmcgaG93IHRhYnN0b3BzIGFyZSBjYWxjdWxhdGVkIGJl Zm9yZSB0aGUgZmlyc3QgJyQnLg0KLSAJICovDQotIAlsYm91bmQgPSBjdXJjb2wgLSAoY3VyY29s ICUgKG5jb2wgPj4gMSkpIC0gKG5jb2wgPj4gMik7DQotLQ0KLS0JLyoNCi0tCSAqIHNjYW4gdGhy b3VnaCB0aGUgbGluZSBvdXRwdXRpbmcgY2hhcmFjdGVycyB0byB0aGUgdmlydHVhbCBzY3JlZW4N Ci0tCSAqIG9uY2Ugd2UgcmVhY2ggdGhlIGxlZnQgZWRnZQ0KLS0JICovDQotLQl2dG1vdmUoY3Vy cm93LCAtbGJvdW5kKTsJCS8qIHN0YXJ0IHNjYW5uaW5nIG9mZnNjcmVlbiAqLw0KLS0JbHAgPSBj dXJ3cC0+d19kb3RwOwkJCS8qIGxpbmUgdG8gb3V0cHV0ICovDQotLQlmb3IgKGogPSAwOyBqIDwg bGxlbmd0aChscCk7ICsraikJLyogdW50aWwgdGhlIGVuZC1vZi1saW5lICovDQotLQkJdnRwdXRl KGxnZXRjKGxwLCBqKSk7DQotLQl2dGVlb2woKTsJCQkJLyogdHJ1bmNhdGUgdGhlIHZpcnR1YWwg bGluZSAqLw0KLS0JdnNjcmVlbltjdXJyb3ddLT52X3RleHRbMF0gPSAnJCc7CS8qIGFuZCBwdXQg YSAnJCcgaW4gY29sdW1uIDEgKi8NCi0rCWxib3VuZCA9IChsYm91bmQgfCAweDA3KSArIDE7DQot Kwl2c2NyZWVuW2N1cnJvd10tPnZfdGV4dFswXSA9ICckJzsNCi0rCXZ0bW92ZShjdXJyb3csIDEp Ow0KLSsJc3RhcnRieXRlID0gZ2V0Ynl0ZW9mY29sKGxwLCAwLCBsYm91bmQgKyAxKTsNCi0rCWZ1 bGxleHRlbnQgPSBnZXRieXRlb2Zjb2wobHAsIHN0YXJ0Ynl0ZSwgbmNvbCArIDEpOw0KLSsJdnRw dXRzKGxwLT5sX3RleHQgKyBzdGFydGJ5dGUsIGZ1bGxleHRlbnQgLSBzdGFydGJ5dGUsIDEpOw0K LSsJdnRlZW9sKCk7DQotKw0KLSsJYmV0dGVyY29sID0gbGJvdW5kICsgZ2V0Y29sb2ZieXRlKGxw LCBzdGFydGJ5dGUsIDEsIGN1cndwLT53X2RvdG8pOw0KLSsJcmV0dXJuIChiZXR0ZXJjb2wpOw0K LSB9DQotIA0KLSAvKg0KLUBAIC03MDIsMTIgKzY1NywzNSBAQCB1cGRleHQoaW50IGN1cnJvdywg aW50IGN1cmNvbCkNCi0gdm9pZA0KLSB1bGluZShpbnQgcm93LCBzdHJ1Y3QgdmlkZW8gKnZ2cCwg c3RydWN0IHZpZGVvICpwdnApDQotIHsNCi0tCWNoYXIgICpjcDE7DQotLQljaGFyICAqY3AyOw0K LS0JY2hhciAgKmNwMzsNCi0tCWNoYXIgICpjcDQ7DQotLQljaGFyICAqY3A1Ow0KLSsJY2hhciAg KmNwMTsgLyogUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgZGlydHkgcmVnaW9uICovDQotKwljaGFy ICAqY3AyOyAvKiBwdnAncyBjb3VudGVycGFydCBmb3IgY3AxICovDQotKwljaGFyICAqY3AzOyAv KiBQb2ludGVyIHRvIGVuZCBvZiBkaXJ0eSByZWdpb24gKi8NCi0rCWNoYXIgICpjcDQ7IC8qIHB2 cCdzIGNvdW50ZXJwYXJ0IGZvciBjcDMgKi8NCi0rCWNoYXIgICpjcDU7IC8qIEFmdGVyIHRoaXMs IHdpdGhpbiBkaXJ0eSByZWdpb24sIGFsbCBpcyAnICcgKi8NCi0rCWNoYXIgICptYmNvdW50ZXI7 DQotIAlpbnQgICAgbmJmbGFnOw0KLSsJaW50ICAgIHN0YXJ0Y29sOyAvKiBvbnNjcmVlbiBjb2x1 bW4gbWF0Y2hpbmcgY3AxICovDQotKwljaGFyICAqbGFzdGJ5dGU7IC8qIGJ5dGUgd2hpY2ggaGFu ZGxlcyBsYXN0IG9uc2NyZWVuIGNvbHVtbiAgKi8NCi0rCWludCAgICBzZWVuY29scyA9IDA7DQot KwltYnN0YXRlX3QgbWJzID0geyAwIH07DQotKwl3Y2hhcl90IHdjID0gMDsNCi0rDQotKwlsYXN0 Ynl0ZSA9IHZ2cC0+dl90ZXh0Ow0KLSsJd2hpbGUgKHNlZW5jb2xzIDwgbmNvbCAmJiAqbGFzdGJ5 dGUpIHsNCi0rCQlzaXplX3QgY29uc3VtZWQgPSBtYnJ0b3djKCZ3YywgbGFzdGJ5dGUsDQotKwkJ ICAgICh2dnAtPnZfdGV4dCArIG5jb2wgKiBNQl9DVVJfTUFYIC0gbGFzdGJ5dGUpLCAmbWJzKTsN Ci0rCQlpZiAoY29uc3VtZWQgPCAoc2l6ZV90KSAtMikgew0KLSsJCQlsYXN0Ynl0ZSArPSBjb25z dW1lZDsNCi0rCQkJc2VlbmNvbHMgKz0gd2N3aWR0aCh3Yyk7DQotKwkJfSBlbHNlIHsNCi0rCQkJ bGFzdGJ5dGUrKzsNCi0rCQkJc2VlbmNvbHMrKzsNCi0rCQkJbWVtc2V0KCZtYnMsIDAsIHNpemVv ZiBtYnMpOw0KLSsJCX0NCi0rCX0NCi0rCWlmIChsYXN0Ynl0ZSAtIHZ2cC0+dl90ZXh0IDwgbmNv bCkgew0KLSsJCWxhc3RieXRlID0gJnZ2cC0+dl90ZXh0W25jb2xdOw0KLSsJfQ0KLSANCi0gCWlm ICh2dnAtPnZfY29sb3IgIT0gcHZwLT52X2NvbG9yKSB7CS8qIFdyb25nIGNvbG9yLCBkbyBhCSAq Lw0KLSAJCXR0bW92ZShyb3csIDApOwkJCS8qIGZ1bGwgcmVkcmF3LgkJICovDQotQEAgLTcyMywx MSArNzAxLDEyIEBAIHVsaW5lKGludCByb3csIHN0cnVjdCB2aWRlbyAqdnZwLCBzdHJ1Y3Qgdmlk ZW8gKnB2cCkNCi0gCQkgKiBwdXR0aW5nIHRoZSBpbnZpc2libGUgZ2xpdGNoIGNoYXJhY3RlciBv biB0aGUgbmV4dCBsaW5lLg0KLSAJCSAqIChIYXplbHRpbmUgZXhlY3V0aXZlIDgwIG1vZGVsIDMw KQ0KLSAJCSAqLw0KLS0JCWNwMiA9ICZ2dnAtPnZfdGV4dFtuY29sIC0gKG1hZ2ljX2Nvb2tpZV9n bGl0Y2ggPj0gMCA/DQotLQkJICAgIChtYWdpY19jb29raWVfZ2xpdGNoICE9IDAgPyBtYWdpY19j b29raWVfZ2xpdGNoIDogMSkgOiAwKV07DQotKwkJY3AyID0gbGFzdGJ5dGUgLQ0KLSsJCSAgICAo bWFnaWNfY29va2llX2dsaXRjaCA+PSAwID8gKG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggIT0gMCA/DQot KwkJICAgIG1hZ2ljX2Nvb2tpZV9nbGl0Y2ggOiAxKSA6IDApOw0KLSAjZWxzZQ0KLSAJCWNwMSA9 ICZ2dnAtPnZfdGV4dFswXTsNCi0tCQljcDIgPSAmdnZwLT52X3RleHRbbmNvbF07DQotKwkJY3Ay ID0gbGFzdGJ5dGU7DQotICNlbmRpZg0KLSAJCXdoaWxlIChjcDEgIT0gY3AyKSB7DQotIAkJCXR0 cHV0YygqY3AxKyspOw0KLUBAIC03MzgsMjEgKzcxNywzMSBAQCB1bGluZShpbnQgcm93LCBzdHJ1 Y3QgdmlkZW8gKnZ2cCwgc3RydWN0IHZpZGVvICpwdnApDQotIAl9DQotIAljcDEgPSAmdnZwLT52 X3RleHRbMF07CQkvKiBDb21wdXRlIGxlZnQgbWF0Y2guCSAqLw0KLSAJY3AyID0gJnB2cC0+dl90 ZXh0WzBdOw0KLS0Jd2hpbGUgKGNwMSAhPSAmdnZwLT52X3RleHRbbmNvbF0gJiYgY3AxWzBdID09 IGNwMlswXSkgew0KLSsJd2hpbGUgKGNwMSAhPSBsYXN0Ynl0ZSAmJiBjcDFbMF0gPT0gY3AyWzBd KSB7DQotIAkJKytjcDE7DQotIAkJKytjcDI7DQotIAl9DQotLQlpZiAoY3AxID09ICZ2dnAtPnZf dGV4dFtuY29sXSkJLyogQWxsIGVxdWFsLgkJICovDQotKwlpZiAoY3AxID09IGxhc3RieXRlKQkv KiBBbGwgZXF1YWwuCQkgKi8NCi0gCQlyZXR1cm47DQotKwl3aGlsZSAoY3AxICE9IHZ2cC0+dl90 ZXh0ICYmICFpc3ByaW50KCpjcDEpICYmDQotKwkgICAgICAgbWJydG93Yygmd2MsIGNwMSwgKGxh c3RieXRlIC0gY3AxKSwgJm1icykgPj0gKHNpemVfdCkgLTIpIHsNCi0rCQktLWNwMTsNCi0rCQkt LWNwMjsNCi0rCX0NCi0gCW5iZmxhZyA9IEZBTFNFOw0KLS0JY3AzID0gJnZ2cC0+dl90ZXh0W25j b2xdOwkvKiBDb21wdXRlIHJpZ2h0IG1hdGNoLiAgKi8NCi0tCWNwNCA9ICZwdnAtPnZfdGV4dFtu Y29sXTsNCi0rCWNwMyA9IGxhc3RieXRlOwkvKiBDb21wdXRlIHJpZ2h0IG1hdGNoLiAgKi8NCi0r CWNwNCA9ICZwdnAtPnZfdGV4dFtsYXN0Ynl0ZSAtIHZ2cC0+dl90ZXh0XTsNCi0gCXdoaWxlIChj cDNbLTFdID09IGNwNFstMV0pIHsNCi0gCQktLWNwMzsNCi0gCQktLWNwNDsNCi0gCQlpZiAoY3Az WzBdICE9ICcgJykJLyogTm90ZSBub24tYmxhbmtzIGluCSAqLw0KLSAJCQluYmZsYWcgPSBUUlVF OwkvKiB0aGUgcmlnaHQgbWF0Y2guCSAqLw0KLSAJfQ0KLSsJd2hpbGUgKGNwMyAhPSBsYXN0Ynl0 ZSAmJiAhaXNwcmludCgqY3AzKSAmJg0KLSsJICAgICAgICBtYnJ0b3djKCZ3YywgY3AzLCAobGFz dGJ5dGUgLSBjcDMpLCAmbWJzKSA+PSAoc2l6ZV90KSAtMikgew0KLSsJCSsrY3AzOw0KLSsJCSsr Y3A0Ow0KLSsJfQ0KLSAJY3A1ID0gY3AzOwkJCS8qIElzIGVyYXNlIGdvb2Q/CSAqLw0KLSAJaWYg KG5iZmxhZyA9PSBGQUxTRSAmJiB2dnAtPnZfY29sb3IgPT0gQ1RFWFQpIHsNCi0gCQl3aGlsZSAo Y3A1ICE9IGNwMSAmJiBjcDVbLTFdID09ICcgJykNCi1AQCAtNzYyLDEzICs3NTEsMjcgQEAgdWxp bmUoaW50IHJvdywgc3RydWN0IHZpZGVvICp2dnAsIHN0cnVjdCB2aWRlbyAqcHZwKQ0KLSAJCQlj cDUgPSBjcDM7DQotIAl9DQotIAkvKiBBbGN5b24gaGFjayAqLw0KLS0JdHRtb3ZlKHJvdywgKGlu dCkgKGNwMSAtICZ2dnAtPnZfdGV4dFswXSkpOw0KLSsJc3RhcnRjb2wgPSAwOw0KLSsJbWJjb3Vu dGVyID0gdnZwLT52X3RleHQ7DQotKwl3aGlsZSAoKGNwMSAtIG1iY291bnRlcikgPiAwKSB7DQot KwkJc2l6ZV90IGNvbnN1bWVkID0gbWJydG93Yygmd2MsIG1iY291bnRlciwgKGNwMSAtIG1iY291 bnRlciksDQotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAmbWJzKTsNCi0rCQlpZiAoY29u c3VtZWQgPCAoc2l6ZV90KSAtMikgew0KLSsJCQltYmNvdW50ZXIgKz0gY29uc3VtZWQ7DQotKwkJ CXN0YXJ0Y29sICs9IHdjd2lkdGgod2MpOw0KLSsJCX0gZWxzZSB7DQotKwkJCW1iY291bnRlcisr Ow0KLSsJCQlzdGFydGNvbCsrOw0KLSsJCQltZW1zZXQoJm1icywgMCwgc2l6ZW9mIG1icyk7DQot KwkJfQ0KLSsJfQ0KLSsJdHRtb3ZlKHJvdywgc3RhcnRjb2wpOw0KLSAjaWZkZWYJU1RBTkRPVVRf R0xJVENIDQotIAlpZiAodnZwLT52X2NvbG9yICE9IENURVhUICYmIG1hZ2ljX2Nvb2tpZV9nbGl0 Y2ggPiAwKSB7DQotIAkJaWYgKGNwMSA8ICZ2dnAtPnZfdGV4dFttYWdpY19jb29raWVfZ2xpdGNo XSkNCi0gCQkJY3AxID0gJnZ2cC0+dl90ZXh0W21hZ2ljX2Nvb2tpZV9nbGl0Y2hdOw0KLS0JCWlm IChjcDUgPiAmdnZwLT52X3RleHRbbmNvbCAtIG1hZ2ljX2Nvb2tpZV9nbGl0Y2hdKQ0KLS0JCQlj cDUgPSAmdnZwLT52X3RleHRbbmNvbCAtIG1hZ2ljX2Nvb2tpZV9nbGl0Y2hdOw0KLSsJCWlmIChj cDUgPiBsYXN0Ynl0ZSAtIG1hZ2ljX2Nvb2tpZV9nbGl0Y2gpDQotKwkJCWNwNSA9IGxhc3RieXRl IC0gbWFnaWNfY29va2llX2dsaXRjaDsNCi0gCX0gZWxzZSBpZiAobWFnaWNfY29va2llX2dsaXRj aCA8IDApDQotICNlbmRpZg0KLSAJCXR0Y29sb3IodnZwLT52X2NvbG9yKTsNCi1AQCAtODAxLDQ2 ICs4MDQsMzkgQEAgbW9kZWxpbmUoc3RydWN0IG1nd2luICp3cCwgaW50IG1vZGVsaW5lY29sb3Ip DQotIAl2c2NyZWVuW25dLT52X2ZsYWcgfD0gKFZGQ0hHIHwgVkZIQkFEKTsJLyogUmVjb21wdXRl LCBkaXNwbGF5LgkgKi8NCi0gCXZ0bW92ZShuLCAwKTsJCQkJLyogU2VlayB0byByaWdodCBsaW5l LgkgKi8NCi0gCWJwID0gd3AtPndfYnVmcDsNCi0tCXZ0cHV0YygnLScpOw0KLS0JdnRwdXRjKCct Jyk7DQotKwluID0gdnRwdXRzKCItLSIsIDAsIDApOw0KLSAJaWYgKChicC0+Yl9mbGFnICYgQkZS RUFET05MWSkgIT0gMCkgew0KLS0JCXZ0cHV0YygnJScpOw0KLSsJCW4gKz0gdnRwdXRzKCIlIiwg MCwgbik7DQotIAkJaWYgKChicC0+Yl9mbGFnICYgQkZDSEcpICE9IDApDQotLQkJCXZ0cHV0Yygn KicpOw0KLSsJCQluICs9IHZ0cHV0cygiKiIsIDAsIG4pOw0KLSAJCWVsc2UNCi0tCQkJdnRwdXRj KCclJyk7DQotKwkJCW4gKz0gdnRwdXRzKCIlIiwgMCwgbik7DQotIAl9IGVsc2UgaWYgKChicC0+ Yl9mbGFnICYgQkZDSEcpICE9IDApIHsJLyogIioiIGlmIGNoYW5nZWQuCSAqLw0KLS0JCXZ0cHV0 YygnKicpOw0KLS0JCXZ0cHV0YygnKicpOw0KLSsJCW4gKz0gdnRwdXRzKCIqKiIsIDAsIG4pOw0K LSAJfSBlbHNlIHsNCi0tCQl2dHB1dGMoJy0nKTsNCi0tCQl2dHB1dGMoJy0nKTsNCi0rCQluICs9 IHZ0cHV0cygiLS0iLCAwLCBuKTsNCi0gCX0NCi0tCXZ0cHV0YygnLScpOw0KLSsJbiArPSB2dHB1 dHMoIi0iLCAwLCBuKTsNCi0gCW4gPSA1Ow0KLS0JbiArPSB2dHB1dHMoIk1nOiAiKTsNCi0rCW4g Kz0gdnRwdXRzKCJNZzogIiwgMCwgbik7DQotIAlpZiAoYnAtPmJfYm5hbWVbMF0gIT0gJ1wwJykN Ci0tCQluICs9IHZ0cHV0cygmKGJwLT5iX2JuYW1lWzBdKSk7DQotKwkJbiArPSB2dHB1dHMoJihi cC0+Yl9ibmFtZVswXSksIDAsIG4pOw0KLSAJd2hpbGUgKG4gPCA0MikgewkJCS8qIFBhZCBvdXQg d2l0aCBibGFua3MuCSAqLw0KLS0JCXZ0cHV0YygnICcpOw0KLS0JCSsrbjsNCi0rCQluICs9IHZ0 cHV0cygiICIsIDAsIG4pOw0KLSAJfQ0KLS0JdnRwdXRjKCcoJyk7DQotLQkrK247DQotKwluICs9 IHZ0cHV0cygiKCIsIDAsIG4pOw0KLSAJZm9yIChtZCA9IDA7IDsgKSB7DQotLQkJbiArPSB2dHB1 dHMoYnAtPmJfbW9kZXNbbWRdLT5wX25hbWUpOw0KLSsJCW4gKz0gdnRwdXRzKGJwLT5iX21vZGVz W21kXS0+cF9uYW1lLCAwLCBuKTsNCi0gCQlpZiAoKyttZCA+IGJwLT5iX25tb2RlcykNCi0gCQkJ YnJlYWs7DQotLQkJdnRwdXRjKCctJyk7DQotLQkJKytuOw0KLSsJCW4gKz0gdnRwdXRzKCItIiwg MCwgbik7DQotIAl9DQotIAkvKiBYWFggVGhlc2Ugc2hvdWxkIGV2ZW50dWFsbHkgbW92ZSB0byBh IHJlYWwgbW9kZSAqLw0KLSAJaWYgKG1hY3JvZGVmID09IFRSVUUpDQotLQkJbiArPSB2dHB1dHMo Ii1kZWYiKTsNCi0rCQluICs9IHZ0cHV0cygiLWRlZiIsIDAsIG4pOw0KLSAJaWYgKGdsb2JhbHdk ID09IFRSVUUpDQotLQkJbiArPSB2dHB1dHMoIi1nd2QiKTsNCi0tCXZ0cHV0YygnKScpOw0KLS0J KytuOw0KLSsJCW4gKz0gdnRwdXRzKCItZ3dkIiwgMCwgbik7DQotKwluICs9IHZ0cHV0cygiKSIs IDAsIG4pOw0KLSANCi0gCWlmIChsaW5lbm9zICYmIGNvbG5vcykNCi0gCQlsZW4gPSBzbnByaW50 ZihzbCwgc2l6ZW9mKHNsKSwgIi0tTCVkLS1DJWQiLCB3cC0+d19kb3RsaW5lLA0KLUBAIC04NTAs MjcgKzg0NiwxMzIgQEAgbW9kZWxpbmUoc3RydWN0IG1nd2luICp3cCwgaW50IG1vZGVsaW5lY29s b3IpDQotIAllbHNlIGlmIChjb2xub3MpDQotIAkJbGVuID0gc25wcmludGYoc2wsIHNpemVvZihz bCksICItLUMlZCIsIGdldGNvbHBvcyh3cCkpOw0KLSAJaWYgKChsaW5lbm9zIHx8IGNvbG5vcykg JiYgbGVuIDwgc2l6ZW9mKHNsKSAmJiBsZW4gIT0gLTEpDQotLQkJbiArPSB2dHB1dHMoc2wpOw0K LSsJCW4gKz0gdnRwdXRzKHNsLCAwLCBuKTsNCi0gDQotIAl3aGlsZSAobiA8IG5jb2wpIHsJCQkv KiBQYWQgb3V0LgkJICovDQotLQkJdnRwdXRjKCctJyk7DQotLQkJKytuOw0KLSsJCW4gKz0gdnRw dXRzKCItIiwgMCwgbik7DQotIAl9DQotIH0NCi0gDQotIC8qDQotLSAqIE91dHB1dCBhIHN0cmlu ZyB0byB0aGUgbW9kZSBsaW5lLCByZXBvcnQgaG93IGxvbmcgaXQgd2FzLg0KLSsgKiBPdXRwdXQg YSBzdHJpbmcgdG8gdGhlIG1vZGUgbGluZSwgcmVwb3J0IGhvdyBsb25nIGl0IHdhcywNCi0rICog ZGVhbGluZyB3aXRoIGxvbmcgbGluZXMgYW5kIHRoZSBkaXNwbGF5IG9mIHVucHJpbnRhYmxlDQot KyAqIHRoaW5ncyBsaWtlIGNvbnRyb2wgY2hhcmFjdGVycy4gQWxzbyBleHBhbmQgdGFicyBldmVy eSA4DQotKyAqIGNvbHVtbnMuIFRoaXMgY29kZSBvbmx5IHB1dHMgcHJpbnRpbmcgY2hhcmFjdGVy cyBpbnRvDQotKyAqIHRoZSB2aXJ0dWFsIGRpc3BsYXkgaW1hZ2UuIFNwZWNpYWwgY2FyZSBtdXN0 IGJlIHRha2VuIHdoZW4NCi0rICogZXhwYW5kaW5nIHRhYnMuIE9uIGEgc2NyZWVuIHdob3NlIHdp ZHRoIGlzIG5vdCBhIG11bHRpcGxlDQotKyAqIG9mIDgsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGUg dmlydHVhbCBjdXJzb3IgdG8gaGl0IHRoZQ0KLSsgKiByaWdodCBtYXJnaW4gYmVmb3JlIHRoZSBu ZXh0IHRhYiBzdG9wIGlzIHJlYWNoZWQuIFRoaXMNCi0rICogbWFrZXMgdGhlIHRhYiBjb2RlIGxv b3AgaWYgeW91IGFyZSBub3QgY2FyZWZ1bC4NCi0rICogVGhyZWUgZ3Vlc3NlcyBob3cgd2UgZm91 bmQgdGhpcy4NCi0gICovDQotIGludA0KLS12dHB1dHMoY29uc3QgY2hhciAqcykNCi0rdnRwdXRz KGNvbnN0IGNoYXIgKnMsIGNvbnN0IHNpemVfdCBtYXhfYnl0ZXMsIGNvbnN0IHNpemVfdCBpbml0 aWFsX2NvbCkNCi0gew0KLS0JaW50IG4gPSAwOw0KLSsJY29uc3QgdW5zaWduZWQgY2hhciAqdXMg PSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBzOw0KLSsJc3RydWN0IHZpZGVvICp2cCA9IHZzY3Jl ZW5bdnRyb3ddOw0KLSsJc2l6ZV90IGJ5dGVzX2hhbmRsZWQgPSAwOw0KLSsJc2l6ZV90IGxhc3Rf ZnVsbF9ieXRlX3N0YXJ0ID0gdnRjb2w7DQotKwlzaXplX3Qgc3BhY2VfcHJpbnRlZCA9IDA7DQot Kw0KLSsJaWYgKCFzKSB7DQotKwkJcmV0dXJuICgwKTsNCi0rCX0NCi0rDQotKwl3aGlsZSAoKnVz ICYmICghbWF4X2J5dGVzIHx8IGJ5dGVzX2hhbmRsZWQgPCBtYXhfYnl0ZXMpKSB7DQotKwkJaWYg KHNwYWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCA+PSBuY29sKSB7DQotKwkJCWJyZWFrOw0KLSsJ CX0gZWxzZSBpZiAoKnVzID09ICdcdCcNCi0rI2lmZGVmCU5PVEFCDQotKwkJICAgICAgICAgICAm JiAhKGN1cmJwLT5iX2ZsYWcgJiBCRk5PVEFCKQ0KLSsjZW5kaWYNCi0rCQkgICAgICAgICAgICkg ew0KLSsJCQlsYXN0X2Z1bGxfYnl0ZV9zdGFydCA9IHZ0Y29sOw0KLSsJCQlkbyB7DQotKwkJCQlp ZiAodnRjb2wgPj0gMCkgew0KLSsJCQkJCWxhc3RfZnVsbF9ieXRlX3N0YXJ0ID0gdnRjb2w7DQot KwkJCQkJdnAtPnZfdGV4dFt2dGNvbF0gPSAnICc7DQotKwkJCQl9DQotKwkJCQl2dGNvbCsrOw0K LSsJCQkJc3BhY2VfcHJpbnRlZCsrOw0KLSsJCQl9IHdoaWxlIChzcGFjZV9wcmludGVkICsgaW5p dGlhbF9jb2wgPCBuY29sICYmDQotKwkJCSAgICAgICAgICgoc3BhY2VfcHJpbnRlZCArIGluaXRp YWxfY29sKSAmIDB4MDcpKTsNCi0rCQkJdXMrKzsNCi0rCQkJYnl0ZXNfaGFuZGxlZCsrOw0KLSsJ CX0gZWxzZSBpZiAoSVNDVFJMKCp1cykpIHsNCi0rCQkJbGFzdF9mdWxsX2J5dGVfc3RhcnQgPSB2 dGNvbDsNCi0rCQkJaWYgKHZ0Y29sID49IDApIHsNCi0rCQkJCXZwLT52X3RleHRbdnRjb2xdID0g J14nOw0KLSsJCQl9DQotKwkJCXZ0Y29sKys7DQotKwkJCWlmICh2dGNvbCA+PSAwKSB7DQotKwkJ CQl2cC0+dl90ZXh0W3Z0Y29sXSA9IENDSFIoKnVzKTsNCi0rCQkJfQ0KLSsJCQl2dGNvbCsrOw0K LSsJCQlieXRlc19oYW5kbGVkKys7DQotKwkJCXNwYWNlX3ByaW50ZWQgKz0gMjsNCi0rCQkJdXMr KzsNCi0rCQl9IGVsc2UgaWYgKGlzcHJpbnQoKnVzKSkgew0KLSsJCQlsYXN0X2Z1bGxfYnl0ZV9z dGFydCA9IHZ0Y29sOw0KLSsJCQlpZiAodnRjb2wgPj0gMCkgew0KLSsJCQkJdnAtPnZfdGV4dFt2 dGNvbF0gPSAqdXMrKzsNCi0rCQkJfQ0KLSsJCQl2dGNvbCsrOw0KLSsJCQlieXRlc19oYW5kbGVk Kys7DQotKwkJCXNwYWNlX3ByaW50ZWQrKzsNCi0rCQl9IGVsc2UgaWYgKCEoY3VyYnAtPmJfZmxh ZyAmIEJGU0hPV1JBVykpIHsNCi0rCQkJbWJzdGF0ZV90IG1icyA9IHsgMCB9Ow0KLSsJCQl3Y2hh cl90IHdjID0gMDsNCi0rCQkJc2l6ZV90IGNvbnN1bWFibGUgPSBtYXhfYnl0ZXMgPw0KLSsJCQkg ICAgICAgIChtYXhfYnl0ZXMgLSBieXRlc19oYW5kbGVkKSA6IC0xOw0KLSsJCQlzaXplX3QgY29u c3VtZWQgPSBtYnJ0b3djKCZ3YywgKGNvbnN0IGNoYXIgKil1cywNCi0rCQkJICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdW1hYmxlLCAmbWJzKTsNCi0rCQkJaW50IHdpZHRoID0gLTE7DQot KwkJCWxhc3RfZnVsbF9ieXRlX3N0YXJ0ID0gdnRjb2w7DQotKwkJCWlmIChjb25zdW1lZCA8IChz aXplX3QpIC0yKSB7DQotKwkJCQl3aWR0aCA9IHdjd2lkdGgod2MpOw0KLSsJCQl9DQotKwkJCWlm ICh3aWR0aCA+PSAwKSB7DQotKwkJCQlieXRlc19oYW5kbGVkICs9IGNvbnN1bWVkOw0KLSsJCQkJ c3BhY2VfcHJpbnRlZCArPSB3aWR0aDsNCi0rCQkJCWRvIHsNCi0rCQkJCQlpZiAodnRjb2wgPj0g MCkgew0KLSsJCQkJCQl2cC0+dl90ZXh0W3Z0Y29sXSA9ICp1cysrOw0KLSsJCQkJCX0NCi0rCQkJ CQl2dGNvbCsrOw0KLSsJCQkJfSB3aGlsZSAoLS1jb25zdW1lZCk7DQotKwkJCX0gZWxzZSB7DQot KwkJCQljaGFyIGJmWzVdOw0KLSsJCQkJc25wcmludGYoYmYsIHNpemVvZihiZiksICJcXCVvIiwg KnVzKTsNCi0rCQkJCWJ5dGVzX2hhbmRsZWQrKzsNCi0rCQkJCXNwYWNlX3ByaW50ZWQgKz0gdnRw dXRzKGJmLCAwLA0KLSsJCQkJICAgIHNwYWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCk7DQotKwkJ CQl1cysrOw0KLSsJCQl9DQotKwkJfSBlbHNlIHsNCi0rCQkJY2hhciBiZls1XTsNCi0rCQkJbGFz dF9mdWxsX2J5dGVfc3RhcnQgPSB2dGNvbDsNCi0rCQkJc25wcmludGYoYmYsIHNpemVvZihiZiks ICJcXCVvIiwgKnVzKTsNCi0rCQkJYnl0ZXNfaGFuZGxlZCsrOw0KLSsJCQlzcGFjZV9wcmludGVk ICs9IHZ0cHV0cyhiZiwgMCwNCi0rCQkJICAgIHNwYWNlX3ByaW50ZWQgKyBpbml0aWFsX2NvbCk7 DQotKwkJCXVzKys7DQotKwkJfQ0KLSsJfQ0KLSANCi0tCXdoaWxlICgqcyAhPSAnXDAnKSB7DQot LQkJdnRwdXRjKCpzKyspOw0KLS0JCSsrbjsNCi0rCWlmICgoc3BhY2VfcHJpbnRlZCArIGluaXRp YWxfY29sID4gbmNvbCkgfHwNCi0rCSAgICAoc3BhY2VfcHJpbnRlZCArIGluaXRpYWxfY29sID09 IG5jb2wgJiYNCi0rCSAgICAoKnVzICYmICghbWF4X2J5dGVzIHx8IGJ5dGVzX2hhbmRsZWQgPCBt YXhfYnl0ZXMpKSkpIHsNCi0rCQl2cC0+dl90ZXh0W2xhc3RfZnVsbF9ieXRlX3N0YXJ0XSA9ICck JzsNCi0rCQl3aGlsZSAoKytsYXN0X2Z1bGxfYnl0ZV9zdGFydCA8PSB2dGNvbCkgew0KLSsJCQl2 cC0+dl90ZXh0W2xhc3RfZnVsbF9ieXRlX3N0YXJ0XSA9ICcgJzsNCi0rCQl9DQotKwkJYnl0ZXNf aGFuZGxlZCsrOw0KLSsJCXNwYWNlX3ByaW50ZWQrKzsNCi0rCQl1cysrOw0KLSAJfQ0KLS0JcmV0 dXJuIChuKTsNCi0rDQotKwlyZXR1cm4gKHNwYWNlX3ByaW50ZWQpOw0KLSB9DQotIA0KLSAvKg0K LUBAIC04ODgsMTEgKzk4OSwxMSBAQCBoYXNoKHN0cnVjdCB2aWRlbyAqdnApDQotIAljaGFyICAg KnM7DQotIA0KLSAJaWYgKCh2cC0+dl9mbGFnICYgVkZIQkFEKSAhPSAwKSB7CS8qIEhhc2ggYmFk LgkJICovDQotLQkJcyA9ICZ2cC0+dl90ZXh0W25jb2wgLSAxXTsNCi0tCQlmb3IgKGkgPSBuY29s OyBpICE9IDA7IC0taSwgLS1zKQ0KLSsJCXMgPSAmdnAtPnZfdGV4dFtuY29sICogTUJfQ1VSX01B WCAtIDFdOw0KLSsJCWZvciAoaSA9IG5jb2wgKiBNQl9DVVJfTUFYOyBpICE9IDA7IC0taSwgLS1z KQ0KLSAJCQlpZiAoKnMgIT0gJyAnKQ0KLSAJCQkJYnJlYWs7DQotLQkJbiA9IG5jb2wgLSBpOwkJ CS8qIEVyYXNlIGNoZWFwZXI/CSAqLw0KLSsJCW4gPSBuY29sICogTUJfQ1VSX01BWCAtIGk7CQkJ LyogRXJhc2UgY2hlYXBlcj8JICovDQotIAkJaWYgKG4gPiB0Y2Vlb2wpDQotIAkJCW4gPSB0Y2Vl b2w7DQotIAkJdnAtPnZfY29zdCA9IGkgKyBuOwkJLyogQnl0ZXMgKyBibGFua3MuCSAqLw0KLWRp ZmYgLS1naXQgYS9lY2hvLmMgYi9lY2hvLmMNCi1pbmRleCA2OTY2YzAwLi4yMmI4MzMzIDEwMDY0 NA0KLS0tLSBhL2VjaG8uYw0KLSsrKyBiL2VjaG8uYw0KLUBAIC04NDQsOSArODQ0LDExIEBAIGV3 cHJpbnRmKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQ0KLSAgKiAlayBwcmludHMgdGhlIG5hbWUgb2Yg dGhlIGN1cnJlbnQga2V5IChhbmQgdGFrZXMgbm8gYXJndW1lbnRzKS4NCi0gICogJWQgcHJpbnRz IGEgZGVjaW1hbCBpbnRlZ2VyDQotICAqICVvIHByaW50cyBhbiBvY3RhbCBpbnRlZ2VyDQotKyAq ICV4IHByaW50cyBhIGhleGFkZWNpbWFsIGludGVnZXINCi0gICogJXAgcHJpbnRzIGEgcG9pbnRl cg0KLSAgKiAlcyBwcmludHMgYSBzdHJpbmcNCi0gICogJWxkIHByaW50cyBhIGxvbmcgd29yZA0K LSsgKiAlbHggcHJpbnRzIGEgaGV4YWRlY2ltYWwgbG9uZyB3b3JkDQotICAqIEFueXRoaW5nIGVs c2UgaXMgZWNob2VkIHZlcmJhdGltDQotICAqLw0KLSBzdGF0aWMgdm9pZA0KLUBAIC04ODUsNiAr ODg3LDEwIEBAIGVmb3JtYXQoY29uc3QgY2hhciAqZnAsIHZhX2xpc3QgYXApDQotIAkJCQllcHV0 aSh2YV9hcmcoYXAsIGludCksIDgpOw0KLSAJCQkJYnJlYWs7DQotIA0KLSsJCQljYXNlICd4JzoN Ci0rCQkJCWVwdXRpKHZhX2FyZyhhcCwgaW50KSwgMTYpOw0KLSsJCQkJYnJlYWs7DQotKw0KLSAJ CQljYXNlICdwJzoNCi0gCQkJCXNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlcCIsDQotIAkJ CQkgICAgdmFfYXJnKGFwLCB2b2lkICopKTsNCi1AQCAtOTAyLDYgKzkwOCw5IEBAIGVmb3JtYXQo Y29uc3QgY2hhciAqZnAsIHZhX2xpc3QgYXApDQotIAkJCQljYXNlICdkJzoNCi0gCQkJCQllcHV0 bCh2YV9hcmcoYXAsIGxvbmcpLCAxMCk7DQotIAkJCQkJYnJlYWs7DQotKwkJCQljYXNlICd4JzoN Ci0rCQkJCQllcHV0bCh2YV9hcmcoYXAsIGxvbmcpLCAxNik7DQotKwkJCQkJYnJlYWs7DQotIAkJ CQlkZWZhdWx0Og0KLSAJCQkJCWVwdXRjKGMpOw0KLSAJCQkJCWJyZWFrOw0KLUBAIC05MzksNiAr OTQ4LDcgQEAgc3RhdGljIHZvaWQNCi0gZXB1dGwobG9uZyBsLCBpbnQgcikNCi0gew0KLSAJbG9u ZwkgcTsNCi0rCWludAkgYzsNCi0gDQotIAlpZiAobCA8IDApIHsNCi0gCQllcHV0YygnLScpOw0K LUBAIC05NDYsNyArOTU2LDEwIEBAIGVwdXRsKGxvbmcgbCwgaW50IHIpDQotIAl9DQotIAlpZiAo KHEgPSBsIC8gcikgIT0gMCkNCi0gCQllcHV0bChxLCByKTsNCi0tCWVwdXRjKChpbnQpKGwgJSBy KSArICcwJyk7DQotKwljID0gKGludCkobCAlIHIpICsgJzAnOw0KLSsJaWYgKGMgPiAnOScpDQot KwkJYyArPSAnYScgLSAnOScgLSAxOw0KLSsJZXB1dGMoYyk7DQotIH0NCi0gDQotIC8qDQotZGlm ZiAtLWdpdCBhL2Z1bm1hcC5jIGIvZnVubWFwLmMNCi1pbmRleCBiZDU1NWQ2Li43ZDg4Yjc1IDEw MDY0NA0KLS0tLSBhL2Z1bm1hcC5jDQotKysrIGIvZnVubWFwLmMNCi1AQCAtMTE0LDYgKzExNCw3 IEBAIHN0YXRpYyBzdHJ1Y3QgZnVubWFwIGZ1bmN0bmFtZXNbXSA9IHsNCi0gCXtidWZmZXJpbnNl cnQsICJpbnNlcnQtYnVmZmVyIix9LA0KLSAJe2ZpbGVpbnNlcnQsICJpbnNlcnQtZmlsZSIsfSwN Ci0gCXtmaWxsd29yZCwgImluc2VydC13aXRoLXdyYXAiLH0sDQotKwl7aW5zZXJ0X2NoYXIsICJp bnNlcnQtY2hhciIsfSwNCi0gCXtiYWNraXNlYXJjaCwgImlzZWFyY2gtYmFja3dhcmQiLH0sDQot IAl7Zm9yd2lzZWFyY2gsICJpc2VhcmNoLWZvcndhcmQiLH0sDQotIAl7am9pbmxpbmUsICJqb2lu LWxpbmUiLH0sDQotQEAgLTE5MSw2ICsxOTIsNyBAQCBzdGF0aWMgc3RydWN0IGZ1bm1hcCBmdW5j dG5hbWVzW10gPSB7DQotIAl7c2hlbGxjb21tYW5kLCAic2hlbGwtY29tbWFuZCIsfSwNCi0gCXtw aXBlcmVnaW9uLCAic2hlbGwtY29tbWFuZC1vbi1yZWdpb24iLH0sDQotIAl7c2hyaW5rd2luZCwg InNocmluay13aW5kb3ciLH0sDQotKwl7c2hvd19yYXdfbW9kZSwgInNob3ctcmF3LW1vZGUiLH0s DQotICNpZmRlZiBOT1RBQg0KLSAJe3NwYWNlX3RvX3RhYnN0b3AsICJzcGFjZS10by10YWJzdG9w Iix9LA0KLSAjZW5kaWYgLyogTk9UQUIgKi8NCi1kaWZmIC0tZ2l0IGEva2JkLmMgYi9rYmQuYw0K LWluZGV4IDFkN2ExYTIuLmY2MTNiMTAgMTAwNjQ0DQotLS0tIGEva2JkLmMNCi0rKysgYi9rYmQu Yw0KLUBAIC05LDYgKzksOCBAQA0KLSAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+DQotICNpbmNsdWRl IDxzaWduYWwuaD4NCi0gI2luY2x1ZGUgPHN0ZGlvLmg+DQotKyNpbmNsdWRlIDxzdGRsaWIuaD4N Ci0rI2luY2x1ZGUgPHdjaGFyLmg+DQotIA0KLSAjaW5jbHVkZSAiZGVmLmgiDQotICNpbmNsdWRl ICJrYmQuaCINCi1AQCAtNDA2LDYgKzQwOCw0MyBAQCBxdW90ZShpbnQgZiwgaW50IG4pDQotIH0N Ci0gDQotIC8qDQotKyAqIFByb21wdCBmb3IgYSBjb2RlcG9pbnQgaW4gd2hhdGV2ZXIgdGhlIG5h dGl2ZSBzeXN0ZW0ncyBlbmNvZGluZyBpcywNCi0rICogaW5zZXJ0IGl0IGludG8gdGhlIGZpbGUN Ci0rICovDQotK2ludA0KLStpbnNlcnRfY2hhcihpbnQgZiwgaW50IG4pDQotK3sNCi0rCWNoYXIg KmJ1ZnA7DQotKwljaGFyIGlucGJ1ZlszMl07DQotKwl3Y2hhcl90IHdjOw0KLSsJY2hhciBtYltN Ql9DVVJfTUFYICsgMV07DQotKwltYnN0YXRlX3QgbWJzID0geyAwIH07DQotKwlzaXplX3QgbWJz bGVuOw0KLSsJc2l6ZV90IGk7DQotKw0KLSsJaWYgKChidWZwID0gZXJlYWQoIkluc2VydCBjaGFy YWN0ZXIgKGhleCk6ICIsIGlucGJ1Ziwgc2l6ZW9mIGlucGJ1ZiwNCi0rCSAgICAgRUZORVcpKSA9 PSBOVUxMKSB7DQotKwkJcmV0dXJuIChBQk9SVCk7DQotKwl9IGVsc2UgaWYgKGJ1ZnBbMF0gPT0g J1wwJykgew0KLSsJCXJldHVybiAoRkFMU0UpOw0KLSsJfQ0KLSsNCi0rCXdjID0gKHdjaGFyX3Qp IHN0cnRvbGwoYnVmcCwgTlVMTCwgMTYpOw0KLSsJbWJzbGVuID0gd2NydG9tYihtYiwgd2MsICZt YnMpOw0KLSsJaWYgKG1ic2xlbiA9PSAoc2l6ZV90KSAtMSkgew0KLSsJCXJldHVybiAoRkFMU0Up Ow0KLSsJfQ0KLSsNCi0rCWZvciAoaSA9IDA7IGkgPCBtYnNsZW47ICsraSkgew0KLSsJCWlmIChs aW5zZXJ0KDEsIG1iW2ldKSA9PSBGQUxTRSkgew0KLSsJCQlyZXR1cm4gKEZBTFNFKTsNCi0rCQl9 DQotKwl9DQotKw0KLSsJcmV0dXJuIChUUlVFKTsNCi0rfQ0KLSsNCi0rLyoNCi0gICogV3JhcGVy IGZ1bmN0aW9uIHRvIGNvdW50IGludm9jYXRpb24gcmVwZWF0cy4NCi0gICogV2UgaWdub3JlIGFu eSBmdW5jdGlvbiB3aG9zZSBzb2xlIHB1cnBvc2UgaXMgdG8gZ2V0IHVzDQotICAqIHRvIHRoZSBp bnRlbmRlZCBmdW5jdGlvbi4NCi1kaWZmIC0tZ2l0IGEva2V5bWFwLmMgYi9rZXltYXAuYw0KLWlu ZGV4IGVmNzFmODQuLmFiMjMxODIgMTAwNjQ0DQotLS0tIGEva2V5bWFwLmMNCi0rKysgYi9rZXlt YXAuYw0KLUBAIC0xMjAsNiArMTIwLDIxIEBAIHN0YXRpYyBzdHJ1Y3QgS0VZTUFQRSAoMikgY1g0 bWFwID0gew0KLSAJfQ0KLSB9Ow0KLSANCi0rc3RhdGljIFBGIGNYOEpbXSA9IHsNCi0rCWluc2Vy dF9jaGFyCQkvKiBeTSAqLw0KLSt9Ow0KLSsNCi0rc3RhdGljIHN0cnVjdCBLRVlNQVBFICgxKSBj WDhtYXAgPSB7DQotKwkxLA0KLSsJMSwNCi0rCXJlc2NhbiwNCi0rCXsNCi0rCQl7DQotKwkJCUND SFIoJ00nKSwgQ0NIUignTScpLCBjWDhKLCBOVUxMDQotKwkJfQ0KLSsJfQ0KLSt9Ow0KLSsNCi0g c3RhdGljIFBGIGNYY0JbXSA9IHsNCi0gCWxpc3RidWZmZXJzLAkJLyogXkIgKi8NCi0gCXF1aXQs CQkJLyogXkMgKi8NCi1AQCAtMTU4LDYgKzE3MywxMCBAQCBzdGF0aWMgUEYgY1gwW10gPSB7DQot IAlOVUxMCQkJLyogNCAqLw0KLSB9Ow0KLSANCi0rc3RhdGljIFBGIGNYOFtdID0gew0KLSsJTlVM TAkJCS8qIDQgKi8NCi0rfTsNCi0rDQotIHN0YXRpYyBQRiBjWGVxW10gPSB7DQotIAlzaG93Y3Bv cwkJLyogPSAqLw0KLSB9Ow0KLUBAIC0xODksOSArMjA4LDkgQEAgc3RhdGljIFBGIGNYY2FyW10g PSB7DQotIAl1bmRvCQkJLyogdSAqLw0KLSB9Ow0KLSANCi0tc3RydWN0IEtFWU1BUEUgKDYpIGNY bWFwID0gew0KLS0JNiwNCi0tCTYsDQotK3N0cnVjdCBLRVlNQVBFICg3KSBjWG1hcCA9IHsNCi0r CTcsDQotKwk3LA0KLSAJcmVzY2FuLA0KLSAJew0KLSAJCXsNCi1AQCAtMjA3LDYgKzIyNiw5IEBA IHN0cnVjdCBLRVlNQVBFICg2KSBjWG1hcCA9IHsNCi0gCQkJJzAnLCAnNCcsIGNYMCwgKEtFWU1B UCAqKSAmIGNYNG1hcA0KLSAJCX0sDQotIAkJew0KLSsJCQknOCcsICc4JywgY1g4LCAoS0VZTUFQ ICopICYgY1g4bWFwDQotKwkJfSwNCi0rCQl7DQotIAkJCSc9JywgJz0nLCBjWGVxLCBOVUxMDQot IAkJfSwNCi0gCQl7DQotQEAgLTQ5MSw2ICs1MTMsMTggQEAgc3RhdGljIHN0cnVjdCBLRVlNQVBF ICgxKSBvdmVyd21hcCA9IHsNCi0gCX0NCi0gfTsNCi0gDQotK3N0YXRpYyBzdHJ1Y3QgS0VZTUFQ RSAoMSkgcmF3bWFwID0gew0KLSsJMCwNCi0rCTEsCQkvKiAxIHRvIGF2b2lkIDAgc2l6ZWQgYXJy YXkgKi8NCi0rCXJlc2NhbiwNCi0rCXsNCi0rCQkvKiB1bnVzZWQgZHVtbXkgZW50cnkgZm9yIFZN UyBDICovDQotKwkJew0KLSsJCQkoS0NIQVIpMCwgKEtDSEFSKTAsIE5VTEwsIE5VTEwNCi0rCQl9 DQotKwl9DQotK307DQotKw0KLSANCi0gLyoNCi0gICogVGhlIGJhc2ljIChyb290KSBrZXlib2Fy ZCBtYXANCi1AQCAtNTEzLDYgKzU0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWFwc19zIG1hcF90YWJs ZVtdID0gew0KLSAJeyhLRVlNQVAgKikgJm5vdGFibWFwLCAibm90YWIiLH0sDQotICNlbmRpZiAv KiBOT1RBQiAqLw0KLSAJeyhLRVlNQVAgKikgJm92ZXJ3bWFwLCAib3ZlcndyaXRlIix9LA0KLSsJ eyhLRVlNQVAgKikgJnJhd21hcCwgInJhdyIsfSwNCi0gCXsoS0VZTUFQICopICZtZXRhbWFwLCAi ZXNjIHByZWZpeCIsfSwNCi0gCXsoS0VZTUFQICopICZjWG1hcCwgImMteCBwcmVmaXgiLH0sDQot IAl7KEtFWU1BUCAqKSAmY1g0bWFwLCAiYy14IDQgcHJlZml4Iix9LA0KLWRpZmYgLS1naXQgYS9t b2Rlcy5jIGIvbW9kZXMuYw0KLWluZGV4IDAyN2E1Y2QuLjIwMTNiY2IgMTAwNjQ0DQotLS0tIGEv bW9kZXMuYw0KLSsrKyBiL21vZGVzLmMNCi1AQCAtMTExLDYgKzExMSwyMyBAQCBvdmVyd3JpdGVf bW9kZShpbnQgZiwgaW50IG4pDQotIH0NCi0gDQotIGludA0KLStzaG93X3Jhd19tb2RlKGludCBm LCBpbnQgbikNCi0rew0KLSsJaWYgKGNoYW5nZW1vZGUoZiwgbiwgInJhdyIpID09IEZBTFNFKQ0K LSsJCXJldHVybiAoRkFMU0UpOw0KLSsJaWYgKGYgJiBGRkFSRykgew0KLSsJCWlmIChuIDw9IDAp DQotKwkJCWN1cmJwLT5iX2ZsYWcgJj0gfkJGU0hPV1JBVzsNCi0rCQllbHNlDQotKwkJCWN1cmJw LT5iX2ZsYWcgfD0gQkZTSE9XUkFXOw0KLSsJfSBlbHNlDQotKwkJY3VyYnAtPmJfZmxhZyBePSBC RlNIT1dSQVc7DQotKw0KLSsJc2dhcmJmID0gVFJVRTsNCi0rCXJldHVybiAoVFJVRSk7DQotK30N Ci0rDQotK2ludA0KLSBzZXRfZGVmYXVsdF9tb2RlKGludCBmLCBpbnQgbikNCi0gew0KLSAJaW50 CSBpOw0KLUBAIC0xNzAsNSArMTg3LDExIEBAIHNldF9kZWZhdWx0X21vZGUoaW50IGYsIGludCBu KQ0KLSAJCQlkZWZiX2ZsYWcgfD0gQkZOT1RBQjsNCi0gCX0NCi0gI2VuZGlmCS8qIE5PVEFCICov DQotKwlpZiAoc3RyY21wKG1vZGVidWYsICJyYXciKSA9PSAwKSB7DQotKwkJaWYgKG4gPD0gMCkN Ci0rCQkJZGVmYl9mbGFnICY9IH5CRlNIT1dSQVc7DQotKwkJZWxzZQ0KLSsJCQlkZWZiX2ZsYWcg fD0gQkZTSE9XUkFXOw0KLSsJfQ0KLSAJcmV0dXJuIChUUlVFKTsNCi0gfQ0KLWRpZmYgLS1naXQg YS91dGlsLmMgYi91dGlsLmMNCi1pbmRleCA5MzU3ZDRkLi5kYmZjMDU4IDEwMDY0NA0KLS0tLSBh L3V0aWwuYw0KLSsrKyBiL3V0aWwuYw0KLUBAIC0xMyw2ICsxMyw4IEBADQotICNpbmNsdWRlIDxj dHlwZS5oPg0KLSAjaW5jbHVkZSA8c2lnbmFsLmg+DQotICNpbmNsdWRlIDxzdGRpby5oPg0KLSsj aW5jbHVkZSA8c3RkbGliLmg+DQotKyNpbmNsdWRlIDx3Y2hhci5oPg0KLSANCi0gI2luY2x1ZGUg ImRlZi5oIg0KLSANCi1AQCAtMzMsNiArMzUsOSBAQCBzaG93Y3BvcyhpbnQgZiwgaW50IG4pDQot IAlpbnQJIG5saW5lLCByb3c7DQotIAlpbnQJIGNsaW5lLCBjYnl0ZTsJCS8qIEN1cnJlbnQgbGlu ZS9jaGFyL2J5dGUgKi8NCi0gCWludAkgcmF0aW87DQotKwljaGFyCSBpc21iID0gMDsNCi0rCXdj aGFyX3QJIHdjID0gMDsNCi0rCWNoYXIJIG1iY1tNQl9DVVJfTUFYICsgMV07DQotIA0KLSAJLyog Y29sbGVjdCB0aGUgZGF0YSAqLw0KLSAJY2xwID0gYmZpcnN0bHAoY3VyYnApOw0KLUBAIC02OSw4 ICs3NCw0MyBAQCBzaG93Y3BvcyhpbnQgZiwgaW50IG4pDQotIAkJY2xwID0gbGZvcncoY2xwKTsN Ci0gCX0NCi0gCXJhdGlvID0gbmNoYXIgPyAoMTAwTCAqIGNjaGFyKSAvIG5jaGFyIDogMTAwOw0K LS0JZXdwcmludGYoIkNoYXI6ICVjICgwJW8pICBwb2ludD0lbGQoJWQlJSkgIGxpbmU9JWQgIHJv dz0lZCAgY29sPSVkIiwNCi0tCSAgICBjYnl0ZSwgY2J5dGUsIGNjaGFyLCByYXRpbywgY2xpbmUs IHJvdywgZ2V0Y29scG9zKGN1cndwKSk7DQotKw0KLSsJaWYgKCEoY3VyYnAtPmJfZmxhZyAmIEJG U0hPV1JBVykpIHsNCi0rCQltYnN0YXRlX3QgbWJzID0geyAwIH07DQotKwkJc2l6ZV90IGNvbnN1 bWVkID0gMDsNCi0rCQlzaXplX3Qgb2Zmc2V0ID0gMDsNCi0rCQl3aGlsZSAoY2J5dGUgIT0gJ1xu JyAmJiBvZmZzZXQgPD0gY3Vyd3AtPndfZG90bykgew0KLSsJCQlpbnQgYyA9IGxnZXRjKGNscCwg Y3Vyd3AtPndfZG90byAtIG9mZnNldCk7DQotKwkJCWlmIChpc3ByaW50KGMpIHx8IChJU0NUUkwo YykgIT0gRkFMU0UpKSB7DQotKwkJCQlicmVhazsNCi0rCQkJfQ0KLSsJCQljb25zdW1lZCA9IG1i cnRvd2MoJndjLA0KLSsJCQkgICAgICAgICAgICAgICAgICAgJmNscC0+bF90ZXh0W2N1cndwLT53 X2RvdG8gLSBvZmZzZXRdLA0KLSsJCQkgICAgICAgICAgICAgICAgICAgbGxlbmd0aChjbHApIC0g Y3Vyd3AtPndfZG90byArIG9mZnNldCwNCi0rCQkJICAgICAgICAgICAgICAgICAgICZtYnMpOw0K LSsJCQlpZiAoY29uc3VtZWQgPCAoc2l6ZV90KSAtMikgew0KLSsJCQkJaXNtYiA9IChvZmZzZXQg PCBjb25zdW1lZCk7DQotKwkJCQlzbnByaW50ZihtYmMsIGNvbnN1bWVkICsgMSwgIiVzIiwNCi0r CQkJCSAgICAgICAgICZjbHAtPmxfdGV4dFtjdXJ3cC0+d19kb3RvIC0gb2Zmc2V0XSk7DQotKwkJ CQltYmNbY29uc3VtZWQgKyAxXSA9ICdcMCc7DQotKwkJCQlicmVhazsNCi0rCQkJfSBlbHNlIHsN Ci0rCQkJCW1lbXNldCgmbWJzLCAwLCBzaXplb2YgbWJzKTsNCi0rCQkJfQ0KLSsJCQlvZmZzZXQr KzsNCi0rCQl9DQotKwl9DQotKw0KLSsJaWYgKGlzbWIpIHsNCi0rCQlld3ByaW50ZigiQ2hhcjog JXMgKGNvZGVwb2ludCAweCVseCkgQnl0ZTogJWMgKDAlbykgICINCi0rCQkgICAgICAgICAicG9p bnQ9JWxkKCVkJSUpICBsaW5lPSVkICByb3c9JWQgY29sPSVkIiwgbWJjLA0KLSsJCSAgICAgICAg IChsb25nKSB3YywgY2J5dGUsIGNieXRlLCBjY2hhciwgcmF0aW8sIGNsaW5lLCByb3csDQotKwkJ ICAgICAgICAgZ2V0Y29scG9zKGN1cndwKSk7DQotKwl9IGVsc2Ugew0KLSsJCWV3cHJpbnRmKCJD aGFyOiAlYyAoMCVvKSAgcG9pbnQ9JWxkKCVkJSUpICBsaW5lPSVkICByb3c9JWQiDQotKwkJICAg ICAgICAgImNvbD0lZCIsIGNieXRlLCBjYnl0ZSwgY2NoYXIsIHJhdGlvLCBjbGluZSwgcm93LA0K LSsJCSAgICAgICAgIGdldGNvbHBvcyhjdXJ3cCkpOw0KLSsJfQ0KLSAJcmV0dXJuIChUUlVFKTsN Ci0gfQ0KLSANCi1AQCAtOTYsNiArMTM2LDIyIEBAIGdldGNvbHBvcyhzdHJ1Y3QgbWd3aW4gKndw KQ0KLSAJCQljb2wgKz0gMjsNCi0gCQllbHNlIGlmIChpc3ByaW50KGMpKSB7DQotIAkJCWNvbCsr Ow0KLSsJCX0gZWxzZSBpZiAoISh3cC0+d19idWZwLT5iX2ZsYWcgJiBCRlNIT1dSQVcpKSB7DQot KwkJCW1ic3RhdGVfdCBtYnMgPSB7IDAgfTsNCi0rCQkJd2NoYXJfdCB3YyA9IDA7DQotKwkJCXNp emVfdCBjb25zdW1lZCA9IG1icnRvd2MoJndjLCAmd3AtPndfZG90cC0+bF90ZXh0W2ldLA0KLSsJ CQkgICAgICAgICAgICAgICAgICAgICAgICAgIGxsZW5ndGgod3AtPndfZG90cCkgLSBpLA0KLSsJ CQkgICAgICAgICAgICAgICAgICAgICAgICAgICZtYnMpOw0KLSsJCQlpbnQgd2lkdGggPSAtMTsN Ci0rCQkJaWYgKGNvbnN1bWVkIDwgKHNpemVfdCkgLTIpIHsNCi0rCQkJCXdpZHRoID0gd2N3aWR0 aCh3Yyk7DQotKwkJCX0NCi0rCQkJaWYgKHdpZHRoID49IDApIHsNCi0rCQkJCWNvbCArPSB3aWR0 aDsNCi0rCQkJCWkgKz0gKGNvbnN1bWVkIC0gMSk7DQotKwkJCX0gZWxzZSB7DQotKwkJCQljb2wg Kz0gc25wcmludGYodG1wLCBzaXplb2YodG1wKSwgIlxcJW8iLCBjKTsNCi0rCQkJfQ0KLSAJCX0g ZWxzZSB7DQotIAkJCWNvbCArPSBzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiXFwlbyIsIGMp Ow0KLSAJCX0NCi0tIA0KMi4xNC4yDQoNCg0KDQoNCi0tLQ0KVW5zdWJzY3JpYmU6ICBhbHBpbmUt YXBvcnRzK3Vuc3Vic2NyaWJlQGxpc3RzLmFscGluZWxpbnV4Lm9yZw0KSGVscDogICAgICAgICBh bHBpbmUtYXBvcnRzK2hlbHBAbGlzdHMuYWxwaW5lbGludXgub3JnDQotLS0NCg==