From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF32E88E8E for ; Mon, 8 Apr 2019 11:20:40 +0000 (UTC) From: Simon Ser Date: Mon, 8 Apr 2019 14:20:42 +0300 Message-Id: <20190408112042.7951-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2] tests/kms_chamelium: add dp-audio test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: VGhpcyBuZXcgdGVzdCBlbnN1cmVzIERpc3BsYXlQb3J0IGF1ZGlvIHdvcmtzIGJ5IHVzaW5nIHRo ZSBDaGFtZWxpdW0uCgpJdCBlbmFibGVzIHRoZSBEaXNwbGF5UG9ydCBvdXRwdXQgYW5kIHNlbmRz IGFuIGF1ZGlvIHNpZ25hbCBjb250YWluaW5nIGEgc2V0IG9mCmZyZXF1ZW5jaWVzIHdlIGNob29z ZSB0byBhbGwgSERNSS9EaXNwbGF5UG9ydCBhdWRpbyBkZXZpY2VzLiBJdCBzdGFydHMKcmVjb3Jk aW5nIGF1ZGlvIG9uIHRoZSBDaGFtZWxpdW0gZGV2aWNlIGFuZCB1c2VzIHRoZSBzdHJlYW0gc2Vy dmVyIHRvIHJldHJpZXZlCmNhcHR1cmVkIGF1ZGlvIHBhZ2VzLiBJdCB0aGVuIGNoZWNrcyB0aGF0 IHRoZSBjYXB0dXJlIGF1ZGlvIHNpZ25hbCBjb250YWlucyB0aGUKZnJlcXVlbmNpZXMgd2Ugc2Vu dCwgYW5kIG9ubHkgdGhvc2UsIGJ5IGNvbXB1dGluZyBhIEZGVC4KCkEgbmV3IGxpYnJhcnkgaGFz IGJlZW4gYWRkZWQgdG8gbGliaWd0IHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHN0cmVhbSBzZXJ2 ZXIuCkl0IGltcGxlbWVudHMgYSBzaW1wbGUgY3VzdG9tIFRDUCBwcm90b2NvbC4KCkluIGNhc2Ug dGhlIHRlc3QgZmFpbHMsIGEgV0FWIGZpbGUgd2l0aCB0aGUgY2FwdHVyZWQgZGF0YSBpcyBzYXZl ZCBvbiBkaXNrLgoKUmlnaHQgbm93IHRoZSB0ZXN0IGhhcyBhIGZldyBsaW1pdGF0aW9uczoKCi0g T25seSB0aGUgZmlyc3QgY2hhbm5lbCBpcyBjaGVja2VkCi0gSUdUIG9ubHkgZ2VuZXJhdGVzIGF1 ZGlvIHdpdGggYSBzaW5nbGUgc2FtcGxpbmcgcmF0ZSAoNDggS0h6KQotIEF1ZGlvIGRhdGEgaXMg bm90IGNhcHR1cmVkIGluIHJlYWwtdGltZQoKVGhlc2UgbGltaXRhdGlvbnMgd2lsbCBiZSBsaWZ0 ZWQgaW4gZnV0dXJlIHBhdGNoZXMuCgpQdWxzZUF1ZGlvIG11c3Qgbm90IHJ1biBkdXJpbmcgdGhl IHRlc3RzIHNpbmNlIEFMU0EgaXMgdXNlZCBkaXJlY3RseS4gVG8gZW5zdXJlCnRoaXMsIGVkaXQg L2V0Yy9wdWxzZS9jbGllbnQuY29uZiBhbmQgYWRkIGBhdXRvc3Bhd249bm9gLiBUaGVuIHJ1bgpg cHVsc2VhdWRpbyAtLWtpbGxgLgoKVGhpcyBjb21taXQgZGVsZXRlcyB0aGUgZXhpc3RpbmcgYXVk aW8gdGVzdHMuIFRoZXkgd2VyZW4ndCBydW4gYW5kIHJlcXVpcmVkIGFuCmV4b3RpYyBjb25maWd1 cmF0aW9uIChIRE1JIGF1ZGlvIHNwbGl0dGVyLCBkdW1teSBIRE1JIHNpbmsgYW5kIGEgbGluZS1p biBwb3J0Cm9uIHRoZSBEVVQpLgoKU2lnbmVkLW9mZi1ieTogU2ltb24gU2VyIDxzaW1vbi5zZXJA aW50ZWwuY29tPgotLS0KCkNoYW5nZXMgZnJvbSB2MSB0byB2MjoKCi0gRml4IGJ1aWxkIHdoZW4g YWxzYSBpcyBub3QgZm91bmQuIFRoZSB3YXkgQ2hhbWVsaXVtIGRlcGVuZGVuY2llcyBhcmUgY2hl Y2tlZAogIGluIG1hc3RlciBkb2Vzbid0IHdvcms6IGRlY2xhcmluZyBhIGRlcGVuZGVuY3kgd2l0 aCBhIGxpc3Qgb2YgY2hpbGQKICBkZXBlbmRlbmNpZXMgYW5kIHRoZW4gdXNpbmcgZm91bmQoKSB3 aWxsIGFsd2F5cyByZXR1cm4gdHJ1ZSwgcmVnYXJkbGVzcyBvZgogIHdoZXRoZXIgY2hpbGQgZGVw ZW5kZW5jaWVzIHdlcmUgZm91bmQuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHNpbXBsaWZ5IGFsbCBv ZgogIHRoaXMgd2l0aCBkaXNhYmxlciBvYmplY3RzIG9uY2Ugd2UgYnVtcCB0aGUgbWluaW11bSBy ZXF1aXJlZCBNZXNvbiB2ZXJzaW9uLgotIFNraXAgYXVkaW8gdGVzdHMgaWYgUHVsc2VBdWRpbyBp cyBydW5uaW5nLiBBZGQgaW5zdHJ1Y3Rpb25zIHRvIG1ha2Ugc3VyZQogIFB1bHNlQXVkaW8gaXNu J3QgcnVubmluZy4KLSBVcGRhdGUgZG9jcywgYWRkIG1vcmUgQVBJIGRvY3MKCiBkb2NzL2F1ZGlv LnR4dCAgICAgICAgICAgICB8ICA0NSAtLS0KIGRvY3MvY2hhbWVsaXVtLnR4dCAgICAgICAgIHwg IDMyICstCiBsaWIvaWd0LmggICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvaWd0X2Fsc2Eu YyAgICAgICAgICAgICB8ICA0MiArKy0KIGxpYi9pZ3RfYWxzYS5oICAgICAgICAgICAgIHwgICAx ICsKIGxpYi9pZ3RfYXVkaW8uYyAgICAgICAgICAgIHwgMjg1ICsrKysrKysrKysrKy0tLS0tLQog bGliL2lndF9hdWRpby5oICAgICAgICAgICAgfCAgMTIgKy0KIGxpYi9pZ3RfYXV4LmMgICAgICAg ICAgICAgIHwgIDMxICsrCiBsaWIvaWd0X2F1eC5oICAgICAgICAgICAgICB8ICAgMSArCiBsaWIv aWd0X2NoYW1lbGl1bS5jICAgICAgICB8IDEwMSArKysrKysrCiBsaWIvaWd0X2NoYW1lbGl1bS5o ICAgICAgICB8ICAxMSArCiBsaWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uYyB8IDU5MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0u aCB8ICA1MiArKysrCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgNSArLQogbWVzb24u YnVpbGQgICAgICAgICAgICAgICAgfCAgNTIgKystLQogbWVzb25fb3B0aW9ucy50eHQgICAgICAg ICAgfCAgIDYgLQogdGVzdHMvYXVkaW8uYyAgICAgICAgICAgICAgfCAxOTMgLS0tLS0tLS0tLS0t CiB0ZXN0cy9rbXNfY2hhbWVsaXVtLmMgICAgICB8IDI3NiArKysrKysrKysrKysrKysrLQogdGVz dHMvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDkgKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDEzNTgg aW5zZXJ0aW9ucygrKSwgMzg5IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGRvY3Mv YXVkaW8udHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2NoYW1lbGl1bV9zdHJlYW0uaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL2F1ZGlvLmMKCmRpZmYgLS1naXQgYS9kb2NzL2F1ZGlvLnR4dCBiL2Rv Y3MvYXVkaW8udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNThhZDVkMS4uMDAw MDAwMDAKLS0tIGEvZG9jcy9hdWRpby50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBA Ci1BdWRpbyBTdXBwb3J0IGluIElHVAotPT09PT09PT09PT09PT09PT09PT0KLQotVGhpcyBkb2N1 bWVudCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhbmQgaW5zdHJ1Y3Rpb25zIGFib3V0IGF1ZGlvIHN1 cHBvcnQgaW4gSUdULgotCi1JbnRyb2R1Y3Rpb24KLS0tLS0tLS0tLS0tLQotCi1UaGUgYXVkaW8g dGVzdCBpcyBhaW1lZCBhdCB0ZXN0aW5nIHRoZSBhdWRpbyBmZWF0dXJlcyBvZiBkaXNwbGF5IGNv bm5lY3RvcnMsCi1zdWNoIGFzIEhETUkuCi0KLVRlc3Qgc2V0dXAKLS0tLS0tLS0tLS0KLQotVGhl IHNldHVwIHJlcXVpcmVkIGZvciB0aGUgYXVkaW8gdGVzdCBjb25zaXN0cyBvZiB1c2luZyBhbiBI RE1JLVZHQSBhZGFwdGVyIHdpdGgKLWFuIGF1ZGlvLW91dCAzLjUgbW0gamFjayB0byBleHRyYWN0 IHRoZSBhdWRpbyBmcm9tIHRoZSBIRE1JIGludGVyZmFjZS4KLVRoZSBhdWRpby1vdXQgamFjayBp cyBjb25uZWN0ZWQgYmFjayB0byB0aGUgZGV2aWNlLXVuZGVyLXRlc3QncyBsaW5lLWluLgotCi1E ZXBlbmRpbmcgb24gdGhlIGJlaGF2aW9yIG9mIHRoZSBhZGFwdGVyLCBpdCBtYXkgYmUgbmVjZXNz YXJ5IHRvIGNvbm5lY3QgYQotZ2hvc3QgVkdBIGRvbmdsZSB0byBpdCAoaW4gb3JkZXIgdG8gZW11 bGF0ZSBhIGNvbm5lY3RlZCBkaXNwbGF5KSB0byBlbmFibGUgdGhlCi1hdWRpbyBvdXRwdXQuIFRo ZXJlIGFyZSBndWlkZXMgYXZhaWxhYmxlIGRldGFpbGluZyBob3cgdG8gYnVpbGQgdGhlc2UuCi0K LVdoZW4gZXhlY3V0ZWQsIHRoZSB0ZXN0IHdpbGwgYXV0b21hdGljYWxseSBzZW5kIHRoZSB0ZXN0 IGF1ZGlvIHNpZ25hbCB0byBhbGwKLUFMU0EgYXVkaW8gSERNSSBvdXRwdXRzIGFuZCByZWNvcmQg ZnJvbSB0aGUgc3RhbmRhcmQgQUxTQSBjYXB0dXJlIGRldmljZS4KLQotQ29uZmlndXJhdGlvbgot LS0tLS0tLS0tLS0tLQotCi1JbiBvcmRlciB0byBkZXBsb3kgdGhlIHRlc3QsIEFMU0EgY29udHJv bHMgaGF2ZSB0byBiZSBjb25maWd1cmVkIHRvIHNldCB0aGUKLUFMU0EgY2FwdHVyZSBzb3VyY2Ug dG8gbGluZS1pbi4gT24gSW50ZWwgeDg2IHN5c3RlbXMsIHRoaXMgY2FuIGJlIGFjaGlldmVkCi13 aXRoIHRoZSBmb2xsb3dpbmcgY2FsbHMgdG8gdGhlIGFtaXhlciB1dGlsaXR5OgotIyBhbWl4ZXIg c3NldCBMaW5lIDMxIG9uCi0jIGFtaXhlciBzc2V0ICJJbnB1dCBTb3VyY2UiIExpbmUKLQotSXQg aXMgdGhlbiB1c2VmdWwgdG8gc3RvcmUgdGhlIEFMU0Egc3RhdGUgcGVybWFuZW50bHkgd2l0aCB0 aGUgYWxzYWN0bCB1dGlsaXR5OgotIyBhbHNhY3RsIHN0b3JlCi0KLVRoZXNlIHNldHRpbmdzIGNh biBiZSByZXN0b3JlZCB3aXRoIHRoZSBhbHNhY3RsIHV0aWxpdHk6Ci0jIGFsc2FjdGwgcmVzdG9y ZQotCi1JdCBpcyBkZXNpcmFibGUgdG8gZW5zdXJlIHRoYXQgdGhlIGFsc2EtcmVzdG9yZSBhbmQg YWxzYS1zdGF0ZSBzeXN0ZW1kIHNlcnZpY2VzCi1hcmUgZW5hYmxlZCB0byBkbyB0aGlzIGpvYiBh dXRvbWF0aWNhbGx5LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIGFuCi1hdXRvbWF0ZWQgdGVz dGluZyBzeXN0ZW06Ci0jIHN5c3RlbWN0bCBlbmFibGUgYWxzYS1yZXN0b3JlCi0jIHN5c3RlbWN0 bCBlbmFibGUgYWxzYS1zdGF0ZQpkaWZmIC0tZ2l0IGEvZG9jcy9jaGFtZWxpdW0udHh0IGIvZG9j cy9jaGFtZWxpdW0udHh0CmluZGV4IDBjYWJjZGM2Li4zMTZkZDYwNyAxMDA2NDQKLS0tIGEvZG9j cy9jaGFtZWxpdW0udHh0CisrKyBiL2RvY3MvY2hhbWVsaXVtLnR4dApAQCAtMTM5LDYgKzEzOSwy MyBAQCAkIG1ha2UgcmVtb3RlLWluc3RhbGwgQ0hBTUVMRU9OX0hPU1Q9MTkyLjE2OC43Mi4xCiAK IFRoZSBwcm9jZXNzIHJlcXVpcmVzIHRoZSBDaGFtZWxpdW0gdG8gYmUgY29ubmVjdGVkIHRvIHRo ZSBJbnRlcm5ldCB0byBzdWNjZWVkLgogCitBdWRpbyBDYXB0dXJlCistLS0tLS0tLS0tLS0tCisK K1RoZSBDaGFtZWxpdW0gc3VwcG9ydHMgYXVkaW8gY2FwdHVyZS4gSUdUIHRlc3RzIHRha2UgYWR2 YW50YWdlIG9mIHRoZQorQ2hhbWVsaXVtIHN0cmVhbWluZyBzZXJ2ZXIgdG8gZG93bmxvYWQgYXVk aW8gc2FtcGxlcyBmcm9tIHRoZSBDaGFtZWxpdW0uCisKK0lHVCBuZWVkcyBkaXJlY3QgYWNjZXNz IHRvIGF1ZGlvIGRldmljZXMgdGhyb3VnaCBBTFNBLCBzbyBQdWxzZUF1ZGlvIG5lZWRzIHRvCiti ZSBzdG9wcGVkIChvdGhlcndpc2UgYXVkaW8gdGVzdHMgd2lsbCBhdXRvbWF0aWNhbGx5IGdldCBz a2lwcGVkKS4gVG8gbWFrZSBzdXJlCitQdWxzZUF1ZGlvIGlzbid0IHJ1bm5pbmc6CisKKy0gRWRp dCAvZXRjL3B1bHNlL2NsaWVudC5jb25mIGFuZCBhZGQgYXV0b3NwYXduPW5vCistIFJ1biBgcHVs c2VhdWRpbyAtLWtpbGxgIChpZiBpdCBzdWNjZWVkcywgaXQgbWVhbnMgUHVsc2VBdWRpbyB3YXMg cnVubmluZykKKy0gTWFrZSBzdXJlIGEgREUgdGhhdCBhdXRvbWF0aWNhbGx5IHNwYXducyBQdWxz ZUF1ZGlvIGlzbid0IHJ1bm5pbmcKKworSW4gY2FzZSBhIHRlc3QgZmFpbHMsIHRoZSByYXcgY2Fw dHVyZWQgYXVkaW8gZmlsZXMgd2lsbCBiZSBkdW1wZWQgaW4gYSBXQVYKK2ZpbGUuCisKIENvbnRy aWJ1dGluZyBDaGFuZ2VzIHRvIHRoZSBEYWVtb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIApAQCAtMTQ2LDEwICsxNjMsMTEgQEAgQ29udHJpYnV0aW9ucyB0byB0aGUgQ2hh bWVsaXVtIGRhZW1vbiwganVzdCBsaWtlIGFueSBjb250cmlidXRpb24gdG8gQ2hyb21pdW1PUywK IGFyZSBzdWJtaXR0ZWQgYW5kIHJldmlld2VkIGF0OiBodHRwczovL2Nocm9taXVtLXJldmlldy5n b29nbGVzb3VyY2UuY29tLwogCiBUaGUgQ2hyb21pdW1PUyBwcm9qZWN0IHByb3ZpZGVzIGFuIGV4 dGVuc2l2ZSBkZXZlbG9wZXIgZ3VpZGU6Ci1odHRwczovL3d3dy5jaHJvbWl1bS5vcmcvY2hyb21p dW0tb3MvZGV2ZWxvcGVyLWd1aWRlIHRoYXQgYXNzdW1lcyBydW5uaW5nIHdpdGhpbgotdGhlIENo cm9taXVtT1MgYnVpbGQgc3lzdGVtLiBTaW5jZSB0aGlzIGlzIGxpa2VseSBub3QgdGhlIGNhc2Ug Zm9yIGNvbnRyaWJ1dGluZwotdG8gdGhlIENoYW1lbGl1bSBkYWVtb24sIG9ubHkgdGhlIHBhcnQg YWJvdXQgdXBsb2FkaW5nIGNoYW5nZXMgaXMgcmVsZXZhbnQ6Ci1odHRwczovL3d3dy5jaHJvbWl1 bS5vcmcvY2hyb21pdW0tb3MvZGV2ZWxvcGVyLWd1aWRlI1RPQy1VcGxvYWQteW91ci1jaGFuZ2Vz LWFuZC1nZXQtYS1jb2RlLXJldmlldworaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t L2Nocm9taXVtb3MvZG9jcy8rL21hc3Rlci9kZXZlbG9wZXJfZ3VpZGUubWQKK0l0IHRoYXQgYXNz dW1lcyBydW5uaW5nIHdpdGhpbiB0aGUgQ2hyb21pdW1PUyBidWlsZCBzeXN0ZW0uIFNpbmNlIHRo aXMgaXMKK2xpa2VseSBub3QgdGhlIGNhc2UgZm9yIGNvbnRyaWJ1dGluZyB0byB0aGUgQ2hhbWVs aXVtIGRhZW1vbiwgb25seSB0aGUgcGFydAorYWJvdXQgdXBsb2FkaW5nIGNoYW5nZXMgaXMgcmVs ZXZhbnQ6CitodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW1vcy9kb2Nz LysvbWFzdGVyL2RldmVsb3Blcl9ndWlkZS5tZCNVcGxvYWQteW91ci1jaGFuZ2VzLWFuZC1nZXQt YS1jb2RlLXJldmlldwogCiBNb3N0IG9mIHRoZSBwcm9jZXNzIGlzIGFib3V0IHVzaW5nIHRoZSBH ZXJyaXQgd2ViIGludGVyZmFjZSBmb3Igc3VibWl0dGluZyBhbmQKIGhhdmluZyB0aGUgY2hhbmdl IHJldmlld2VkIGFuZCBub3QgZm9yZ2V0dGluZyB0aGUgQ2hhbmdlLUlkLCBURVNUPSBhbmQgQlVH PQpAQCAtMTYyLDcgKzE4MCw3IEBAIFN1cHBvcnQgZm9yIHRoZSBDaGFtZWxpdW0gcGxhdGZvcm0g aW4gSUdUIGlzIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgogKiBsaWIvaWd0X2NoYW1l bGl1bS5jOiBsaWJyYXJ5IHdpdGggQ2hhbWVsaXVtLXJlbGF0ZWQgaGVscGVycwogKiB0ZXN0cy9r bXNfY2hhbWVsaXVtLmM6IHN1Yi10ZXN0cyB1c2luZyB0aGUgQ2hhbWVsaXVtCiAKLUFzIG9mIGxh dGUgQXVndXN0IDIwMTcsIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHRlc3RlZCBieSBJR1Q6 CitBcyBvZiBlYXJseSBBcHJpbCAyMDE5LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSB0ZXN0 ZWQgYnkgSUdUOgogKiBQaXhlbC1ieS1waXhlbCBmcmFtZSBpbnRlZ3JpdHkgdGVzdHMgZm9yIERQ IGFuZCBIRE1JCiAqIEVycm9yLXRyZW5kLWJhc2VkIGZyYW1lIGludGVncml0eSB0ZXN0cyBmb3Ig VkdBCiAqIENSQy1iYXNlZCBmcmFtZSBpbnRlZ3JpdHkgdGVzdHMgZm9yIERQIGFuZCBIRE1JCkBA IC0xNzMsNiArMTkxLDcgQEAgQXMgb2YgbGF0ZSBBdWd1c3QgMjAxNywgdGhlIGZvbGxvd2luZyBm ZWF0dXJlcyBhcmUgdGVzdGVkIGJ5IElHVDoKICAgZWFjaCBpbnRlcmZhY2Ugb3IgY29tYmluZWQK ICogRURJRCBkaXNwbGF5IGlkZW50aWZpZXIgaW50ZWdyaXR5IGNoZWNrIGZvciBhbGwgaW50ZXJm YWNlcwogKiBFRElEIGRpc3BsYXkgaWRlbnRpZmllciBjaGFuZ2UgZHVyaW5nIHN1c3BlbmQgZm9y IGFsbCBpbnRlcmZhY2VzCisqIEF1ZGlvIEZvdXJpZXItYmFzZWQgdGVzdHMgZm9yIERQIGF0IDQ4 S0h6CiAKIEZ1dHVyZSBEZXZlbG9wbWVudHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4MCw3 ICsxOTksOCBAQCBGdXR1cmUgRGV2ZWxvcG1lbnRzCiBXaXRoIHRoZSBjdXJyZW50IGdlbmVyYXRp b24gb2YgdGhlIGhhcmR3YXJlIHBsYXRmb3JtLCBzdXBwb3J0IGZvciB0ZXN0aW5nIGEKIG51bWJl ciBvZiBhZGRpdGlvbmFsIGRpc3BsYXkgZmVhdHVyZXMgY291bGQgYmUgaW5jbHVkZWQgYXMgZnV0 dXJlIGRldmVsb3BtZW50cywKIGluY2x1ZGluZzoKLSogQXVkaW8gY2FwdHVyZSBmcm9tIEhETUkg YW5kIERQCisqIEF1ZGlvIGNhcHR1cmUgZnJvbSBIRE1JLCB3aXRoIG11bHRpcGxlIGNoYW5uZWxz IGFuZCB3aXRoIG90aGVyIHBsYXliYWNrCisgIHNhbXBsaW5nIHJhdGVzCiAqIEhpZ2gtYmFuZHdp ZHRoIERpZ2l0YWwgQ29udGVudCBQcm90ZWN0aW9uIChIRENQKSBzdHJlYW1pbmcgdG8gdGhlIGRp c3BsYXkKICogUmVtb3RlIGNvbnRyb2wgZm9yd2FyZGluZyAoQ0VDKSBzZW50IGZyb20gdGhlIGRp c3BsYXkKICogWVVWIGNvbG9yc3BhY2UgZm9yIEhETUksIGluc3RlYWQgb2YgUkdCCmRpZmYgLS1n aXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKaW5kZXggNjY1NGE2NTkuLjU4NTJkNTU3IDEwMDY0 NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j bHVkZSAiaWd0X3N0YXRzLmgiCiAjaWZkZWYgSEFWRV9DSEFNRUxJVU0KICNpbmNsdWRlICJpZ3Rf Y2hhbWVsaXVtLmgiCisjaW5jbHVkZSAiaWd0X2NoYW1lbGl1bV9zdHJlYW0uaCIKICNlbmRpZgog I2luY2x1ZGUgImluc3Rkb25lLmgiCiAjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKZGlm ZiAtLWdpdCBhL2xpYi9pZ3RfYWxzYS5jIGIvbGliL2lndF9hbHNhLmMKaW5kZXggYmI2NjgyY2Mu LjQ1NmMwYzg1IDEwMDY0NAotLS0gYS9saWIvaWd0X2Fsc2EuYworKysgYi9saWIvaWd0X2Fsc2Eu YwpAQCAtMjYsOSArMjYsMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSA8 bGltaXRzLmg+CiAjaW5jbHVkZSA8YWxzYS9hc291bmRsaWIuaD4KIAogI2luY2x1ZGUgImlndF9h bHNhLmgiCisjaW5jbHVkZSAiaWd0X2F1eC5oIgogI2luY2x1ZGUgImlndF9jb3JlLmgiCiAKICNk ZWZpbmUgSEFORExFU19NQVgJOApAQCAtNjEsNiArNjMsMjUgQEAgc3RydWN0IGFsc2EgewogCWlu dCBpbnB1dF9zYW1wbGVzX3RyaWdnZXI7CiB9OwogCisvKioKKyAqIGFsc2FfaGFzX2V4Y2x1c2l2 ZV9hY2Nlc3M6CisgKiBDaGVjayB3aGV0aGVyIEFMU0EgaGFzIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8g YXVkaW8gZGV2aWNlcy4gRmFpbHMgaWYKKyAqIFB1bHNlQXVkaW8gaXMgcnVubmluZy4KKyAqLwor Ym9vbCBhbHNhX2hhc19leGNsdXNpdmVfYWNjZXNzKHZvaWQpCit7CisJaWYgKGlndF9pc19wcm9j ZXNzX3J1bm5pbmcoInB1bHNlYXVkaW8iKSkgeworCQlpZ3Rfd2FybigiSXQgc2VlbXMgdGhhdCBQ dWxzZUF1ZGlvIGlzIHJ1bm5pbmcuIEF1ZGlvIHRlc3RzICIKKwkJCSAibmVlZCBkaXJlY3QgYWNj ZXNzIHRvIGF1ZGlvIGRldmljZXMsIHNvIFB1bHNlQXVkaW8gIgorCQkJICJuZWVkcyB0byBiZSBz dG9wcGVkLiBZb3UgY2FuIGRvIHNvIGJ5IHJ1bm5pbmcgIgorCQkJICJgcHVsc2VhdWRpbyAtLWtp bGxgLiBBbHNvIG1ha2Ugc3VyZSB0byBhZGQgIgorCQkJICJhdXRvc3Bhd249bm8gdG8gL2V0Yy9w dWxzZS9jbGllbnQuY29uZlxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKwogc3RhdGljIHZvaWQgYWxzYV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmZpbGUs IGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jdGlvbiwKIAkJCSAgICAgICBpbnQgZXJyLCBjb25z dCBjaGFyICpmbXQsIC4uLikKIHsKQEAgLTc4LDYgKzk5LDExIEBAIHN0cnVjdCBhbHNhICphbHNh X2luaXQodm9pZCkKIHsKIAlzdHJ1Y3QgYWxzYSAqYWxzYTsKIAorCWlmICghYWxzYV9oYXNfZXhj bHVzaXZlX2FjY2VzcygpKSB7CisJCWlndF93YXJuKCJhbHNhIGRvZXNuJ3QgaGF2ZSBleGNsdXNp dmUgYWNjZXNzIHRvIGF1ZGlvIGRldmljZXNcbiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKIAlh bHNhID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYWxzYSkpOwogCW1lbXNldChhbHNhLCAwLCBzaXpl b2Yoc3RydWN0IGFsc2EpKTsKIApAQCAtNTUzLDE2ICs1NzksMjAgQEAgaW50IGFsc2FfcnVuKHN0 cnVjdCBhbHNhICphbHNhLCBpbnQgZHVyYXRpb25fbXMpCiAJCQkJCWlmIChyZXQgPCAwKSB7CiAJ CQkJCQlyZXQgPSBzbmRfcGNtX3JlY292ZXIoaGFuZGxlLAogCQkJCQkJCQkgICAgICByZXQsIDAp OwotCQkJCQkJaWYgKHJldCA8IDApCisJCQkJCQlpZiAocmV0IDwgMCkgeworCQkJCQkJCWlndF9k ZWJ1Zygic25kX3BjbV9yZWNvdmVyIGFmdGVyIHNuZF9wY21fd3JpdGVpIGZhaWxlZCIpOwogCQkJ CQkJCWdvdG8gY29tcGxldGU7CisJCQkJCQl9CiAJCQkJCX0KIAogCQkJCQlvdXRwdXRfY291bnRz W2ldICs9IHJldDsKIAkJCQl9IGVsc2UgaWYgKG91dHB1dF9jb3VudHNbaV0gPCBvdXRwdXRfdHJp Z2dlciAmJgogCQkJCQkgICByZXQgPCAwKSB7CiAJCQkJCXJldCA9IHNuZF9wY21fcmVjb3Zlciho YW5kbGUsIHJldCwgMCk7Ci0JCQkJCWlmIChyZXQgPCAwKQorCQkJCQlpZiAocmV0IDwgMCkgewor CQkJCQkJaWd0X2RlYnVnKCJzbmRfcGNtX3JlY292ZXIgZmFpbGVkIik7CiAJCQkJCQlnb3RvIGNv bXBsZXRlOworCQkJCQl9CiAJCQkJfQogCQkJfQogCkBAIC02MDksMTYgKzYzOSwyMCBAQCBpbnQg YWxzYV9ydW4oc3RydWN0IGFsc2EgKmFsc2EsIGludCBkdXJhdGlvbl9tcykKIAkJCQkJcmV0ID0g MDsKIAkJCQl9IGVsc2UgaWYgKHJldCA8IDApIHsKIAkJCQkJcmV0ID0gc25kX3BjbV9yZWNvdmVy KGhhbmRsZSwgcmV0LCAwKTsKLQkJCQkJaWYgKHJldCA8IDApCisJCQkJCWlmIChyZXQgPCAwKSB7 CisJCQkJCQlpZ3RfZGVidWcoInNuZF9wY21fcmVjb3ZlciBhZnRlciBzbmRfcGNtX3JlYWRpIGZh aWxlZCIpOwogCQkJCQkJZ290byBjb21wbGV0ZTsKKwkJCQkJfQogCQkJCX0KIAogCQkJCWlucHV0 X2NvdW50ICs9IHJldDsKIAkJCQlpbnB1dF90b3RhbCArPSByZXQ7CiAJCQl9IGVsc2UgaWYgKGlu cHV0X2NvdW50IDwgaW5wdXRfdHJpZ2dlciAmJiByZXQgPCAwKSB7CiAJCQkJcmV0ID0gc25kX3Bj bV9yZWNvdmVyKGhhbmRsZSwgcmV0LCAwKTsKLQkJCQlpZiAocmV0IDwgMCkKKwkJCQlpZiAocmV0 IDwgMCkgeworCQkJCQlpZ3RfZGVidWcoInNuZF9wY21fcmVjb3ZlciBmYWlsZWQiKTsKIAkJCQkJ Z290byBjb21wbGV0ZTsKKwkJCQl9CiAJCQl9CiAJCX0KIAl9IHdoaWxlICghcmVhY2hlZCk7CmRp ZmYgLS1naXQgYS9saWIvaWd0X2Fsc2EuaCBiL2xpYi9pZ3RfYWxzYS5oCmluZGV4IDUwNzk1MTMw Li41YzgwNGI0NiAxMDA2NDQKLS0tIGEvbGliL2lndF9hbHNhLmgKKysrIGIvbGliL2lndF9hbHNh LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogc3RydWN0IGFsc2E7CiAKK2Jvb2wgYWxzYV9oYXNfZXhj bHVzaXZlX2FjY2Vzcyh2b2lkKTsKIHN0cnVjdCBhbHNhICphbHNhX2luaXQodm9pZCk7CiBpbnQg YWxzYV9vcGVuX291dHB1dChzdHJ1Y3QgYWxzYSAqYWxzYSwgY29uc3QgY2hhciAqZGV2aWNlX25h bWUpOwogaW50IGFsc2Ffb3Blbl9pbnB1dChzdHJ1Y3QgYWxzYSAqYWxzYSwgY29uc3QgY2hhciAq ZGV2aWNlX25hbWUpOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9hdWRpby5jIGIvbGliL2lndF9hdWRp by5jCmluZGV4IGEwNTkyZDUzLi40Y2M5YmRmMCAxMDA2NDQKLS0tIGEvbGliL2lndF9hdWRpby5j CisrKyBiL2xpYi9pZ3RfYXVkaW8uYwpAQCAtMjYsOCArMjYsMTEgQEAKIAogI2luY2x1ZGUgImNv bmZpZy5oIgogCi0jaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVk ZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxnc2wvZ3NsX2ZmdF9yZWFsLmg+CisjaW5jbHVkZSA8bWF0 aC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiaWd0X2F1ZGlvLmgiCiAjaW5j bHVkZSAiaWd0X2NvcmUuaCIKQEAgLTEyOCw3ICsxMzEsNyBAQCBpbnQgYXVkaW9fc2lnbmFsX2Fk ZF9mcmVxdWVuY3koc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBpbnQgZnJlcXVlbmN5KQog ICovCiB2b2lkIGF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNp Z25hbCkKIHsKLQlzaG9ydCAqcGVyaW9kOworCWludDE2X3QgKnBlcmlvZDsKIAlkb3VibGUgdmFs dWU7CiAJaW50IGZyYW1lczsKIAlpbnQgZnJlcTsKQEAgLTE0NSw5ICsxNDgsOSBAQCB2b2lkIGF1 ZGlvX3NpZ25hbF9zeW50aGVzaXplKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCkKIAogCQlm b3IgKGogPSAwOyBqIDwgZnJhbWVzOyBqKyspIHsKIAkJCXZhbHVlID0gMi4wICogTV9QSSAqIGZy ZXEgLyBzaWduYWwtPnNhbXBsaW5nX3JhdGUgKiBqOwotCQkJdmFsdWUgPSBzaW4odmFsdWUpICog U0hSVF9NQVggLyBzaWduYWwtPmZyZXFzX2NvdW50OworCQkJdmFsdWUgPSBzaW4odmFsdWUpICog SU5UMTZfTUFYIC8gc2lnbmFsLT5mcmVxc19jb3VudDsKIAotCQkJcGVyaW9kW2pdID0gKHNob3J0 KSB2YWx1ZTsKKwkJCXBlcmlvZFtqXSA9IChpbnQxNl90KSB2YWx1ZTsKIAkJfQogCiAJCXNpZ25h bC0+ZnJlcXNbaV0ucGVyaW9kID0gcGVyaW9kOwpAQCAtMTg2LDE3ICsxODksMTYgQEAgdm9pZCBh dWRpb19zaWduYWxfY2xlYW4oc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsKQogICogc2lnbmFs IGRhdGEgKGluIGludGVybGVhdmVkIFMxNl9MRSBmb3JtYXQpLCBhdCB0aGUgcmVxdWVzdGVkIHNh bXBsaW5nIHJhdGUKICAqIGFuZCBudW1iZXIgb2YgY2hhbm5lbHMuCiAgKi8KLXZvaWQgYXVkaW9f c2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsLCBzaG9ydCAqYnVmZmVyLCBp bnQgZnJhbWVzKQordm9pZCBhdWRpb19zaWduYWxfZmlsbChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpz aWduYWwsIGludDE2X3QgKmJ1ZmZlciwgaW50IGZyYW1lcykKIHsKLQlzaG9ydCAqZGVzdGluYXRp b247Ci0Jc2hvcnQgKnNvdXJjZTsKKwlpbnQxNl90ICpkZXN0aW5hdGlvbiwgKnNvdXJjZTsKIAlp bnQgdG90YWw7CiAJaW50IGZyZXFfZnJhbWVzOwogCWludCBmcmVxX29mZnNldDsKIAlpbnQgY291 bnQ7CiAJaW50IGksIGosIGs7CiAKLQltZW1zZXQoYnVmZmVyLCAwLCBzaXplb2Yoc2hvcnQpICog c2lnbmFsLT5jaGFubmVscyAqIGZyYW1lcyk7CisJbWVtc2V0KGJ1ZmZlciwgMCwgc2l6ZW9mKGlu dDE2X3QpICogc2lnbmFsLT5jaGFubmVscyAqIGZyYW1lcyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwg c2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKSB7CiAJCXRvdGFsID0gMDsKQEAgLTIyOSw5NyArMjMx LDIxNCBAQCB2b2lkIGF1ZGlvX3NpZ25hbF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25h bCwgc2hvcnQgKmJ1ZmZlciwgaW50IGZyYW1lcykKIH0KIAogLyoqCi0gKiBhdWRpb19zaWduYWxf ZGV0ZWN0OgotICogQHNpZ25hbDogVGhlIHRhcmdldCBzaWduYWwgc3RydWN0dXJlCi0gKiBAY2hh bm5lbHM6IFRoZSBpbnB1dCBkYXRhJ3MgbnVtYmVyIG9mIGNoYW5uZWxzCi0gKiBAc2FtcGxpbmdf cmF0ZTogVGhlIGlucHV0IGRhdGEncyBzYW1wbGluZyByYXRlCi0gKiBAYnVmZmVyOiBUaGUgaW5w dXQgZGF0YSdzIGJ1ZmZlcgotICogQGZyYW1lczogVGhlIGlucHV0IGRhdGEncyBudW1iZXIgb2Yg ZnJhbWVzCi0gKgotICogRGV0ZWN0IHRoYXQgdGhlIGZyZXF1ZW5jaWVzIHNwZWNpZmllZCBpbiBA c2lnbmFsLCBhbmQgb25seSB0aG9zZSwgYXJlCi0gKiBwcmVzZW50IGluIHRoZSBpbnB1dCBkYXRh LiBUaGUgaW5wdXQgZGF0YSdzIGZvcm1hdCBpcyByZXF1aXJlZCB0byBiZSBTMTZfTEUuCisgKiBD aGVja3MgdGhhdCBmcmVxdWVuY2llcyBzcGVjaWZpZWQgaW4gc2lnbmFsLCBhbmQgb25seSB0aG9z ZSwgYXJlIGluY2x1ZGVkCisgKiBpbiB0aGUgaW5wdXQgZGF0YS4KICAqCi0gKiBSZXR1cm5zOiBB IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkZXRlY3Rpb24gd2FzIHN1Y2Nlc3NmdWwK KyAqIHNhbXBsaW5nX3JhdGUgaXMgZ2l2ZW4gaW4gSHouIGRhdGFfbGVuIGlzIHRoZSBudW1iZXIg b2YgZWxlbWVudHMgaW4gZGF0YS4KICAqLwotYm9vbCBhdWRpb19zaWduYWxfZGV0ZWN0KHN0cnVj dCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IGNoYW5uZWxzLAotCQkJIGludCBzYW1wbGluZ19y YXRlLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKQorYm9vbCBhdWRpb19zaWduYWxfZGV0ZWN0 KHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50IHNhbXBsaW5nX3JhdGUsCisJCQkgZG91 YmxlICpkYXRhLCBzaXplX3QgZGF0YV9sZW4pCiB7Ci0JZG91YmxlIGRhdGFbZnJhbWVzXTsKLQlp bnQgYW1wbGl0dWRlW2ZyYW1lcyAvIDJdOworCXNpemVfdCBhbXBsaXR1ZGVfbGVuID0gZGF0YV9s ZW4gLyAyICsgMTsKKwlkb3VibGUgYW1wbGl0dWRlW2FtcGxpdHVkZV9sZW5dOwogCWJvb2wgZGV0 ZWN0ZWRbc2lnbmFsLT5mcmVxc19jb3VudF07Ci0JaW50IHRocmVzaG9sZDsKLQlib29sIGFib3Zl OwotCWludCBlcnJvcjsKLQlpbnQgZnJlcSA9IDA7Ci0JaW50IG1heDsKLQlpbnQgYywgaSwgajsK LQotCS8qIEFsbG93ZWQgZXJyb3IgaW4gSHogZHVlIHRvIEZGVCBzdGVwLiAqLwotCWVycm9yID0g c2FtcGxpbmdfcmF0ZSAvIGZyYW1lczsKKwlpbnQgcmV0LCBlcHNpbG9uLCBmcmVxLCBtYXhfZnJl cTsKKwlkb3VibGUgbWF4LCB0aHJlc2hvbGQ7CisJc2l6ZV90IGksIGo7CisJYm9vbCBhYm92ZSwg c3VjY2VzczsKKworCS8qIEFsbG93ZWQgZXJyb3IgaW4gSHogZHVlIHRvIEZGVCBzdGVwICovCisJ ZXBzaWxvbiA9IHNhbXBsaW5nX3JhdGUgLyBkYXRhX2xlbjsKKwlpZ3RfZGVidWcoImFsbG93ZWQg ZnJlcS4gZXJyb3I6ICVkIEh6XG4iLCBlcHNpbG9uKTsKKworCXJldCA9IGdzbF9mZnRfcmVhbF9y YWRpeDJfdHJhbnNmb3JtKGRhdGEsIDEsIGRhdGFfbGVuKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAw KTsKKworCS8qIEZvciBpIDwgZGF0YV9sZW4gLyAyLCB0aGUgcmVhbCBwYXJ0IG9mIHRoZSBpLXRo IHRlcm0gaXMgc3RvcmVkIGF0CisJICogZGF0YVtpXSBhbmQgaXRzIGltYWdpbmFyeSBwYXJ0IGlz IHN0b3JlZCBhdCBkYXRhW2RhdGFfbGVuIC0gaV0uCisJICogaSA9IDAgYW5kIGkgPSBkYXRhX2xl biAvIDIgYXJlIHNwZWNpYWwgY2FzZXMsIHRoZXkgYXJlIHB1cmVseSByZWFsCisJICogc28gdGhl aXIgaW1hZ2luYXJ5IHBhcnQgaXNuJ3Qgc3RvcmVkLgorCSAqCisJICogVGhlIGFtcGxpdHVkZSBp cyBlbmNvZGVkIGFzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGNvbXBsZXggbnVtYmVyIGFuZAorCSAq IHRoZSBwaGFzZSBpcyBlbmNvZGVkIGFzIGl0cyBhbmdsZS4KKwkgKi8KKwltYXggPSAwOworCWFt cGxpdHVkZVswXSA9IGRhdGFbMF07CisJZm9yIChpID0gMTsgaSA8IGFtcGxpdHVkZV9sZW4gLSAx OyBpKyspIHsKKwkJYW1wbGl0dWRlW2ldID0gaHlwb3QoZGF0YVtpXSwgZGF0YVtkYXRhX2xlbiAt IGldKTsKKwkJaWYgKGFtcGxpdHVkZVtpXSA+IG1heCkKKwkJCW1heCA9IGFtcGxpdHVkZVtpXTsK Kwl9CisJYW1wbGl0dWRlW2FtcGxpdHVkZV9sZW4gLSAxXSA9IGRhdGFbZGF0YV9sZW4gLyAyXTsK IAotCWZvciAoYyA9IDA7IGMgPCBjaGFubmVsczsgYysrKSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBm cmFtZXM7IGkrKykKLQkJCWRhdGFbaV0gPSAoZG91YmxlKSBidWZmZXJbaSAqIGNoYW5uZWxzICsg Y107CisJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJlcXNfY291bnQ7IGkrKykKKwkJZGV0ZWN0 ZWRbaV0gPSBmYWxzZTsKIAotCQlnc2xfZmZ0X3JlYWxfcmFkaXgyX3RyYW5zZm9ybShkYXRhLCAx LCBmcmFtZXMpOworCS8qIFdlIHdhbnQgdG8gZGV0ZWN0IHBlYWtzIGFib3ZlIGEgZ2l2ZW4gdGhy ZXNob2xkLiAqLworCXRocmVzaG9sZCA9IG1heCAvIDI7CisJc3VjY2VzcyA9IHRydWU7CisJYWJv dmUgPSBmYWxzZTsKKwltYXggPSAwOworCW1heF9mcmVxID0gLTE7CisJZm9yIChpID0gMDsgaSA8 IGFtcGxpdHVkZV9sZW47IGkrKykgeworCQlmcmVxID0gc2FtcGxpbmdfcmF0ZSAqIGkgLyBkYXRh X2xlbjsKIAotCQltYXggPSAwOworCQlpZiAoYW1wbGl0dWRlW2ldID4gdGhyZXNob2xkKQorCQkJ YWJvdmUgPSB0cnVlOwogCi0JCWZvciAoaSA9IDA7IGkgPCBmcmFtZXMgLyAyOyBpKyspIHsKLQkJ CWFtcGxpdHVkZVtpXSA9IGh5cG90KGRhdGFbaV0sIGRhdGFbZnJhbWVzIC0gaV0pOwotCQkJaWYg KGFtcGxpdHVkZVtpXSA+IG1heCkKLQkJCQltYXggPSBhbXBsaXR1ZGVbaV07CisJCWlmICghYWJv dmUpIHsKKwkJCWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yIChpID0gMDsgaSA8IHNpZ25hbC0+ZnJl cXNfY291bnQ7IGkrKykKLQkJCWRldGVjdGVkW2ldID0gZmFsc2U7Ci0KLQkJdGhyZXNob2xkID0g bWF4IC8gMjsKLQkJYWJvdmUgPSBmYWxzZTsKLQkJbWF4ID0gMDsKLQotCQlmb3IgKGkgPSAwOyBp IDwgZnJhbWVzIC8gMjsgaSsrKSB7Ci0JCQlpZiAoYW1wbGl0dWRlW2ldID4gdGhyZXNob2xkKQot CQkJCWFib3ZlID0gdHJ1ZTsKLQotCQkJaWYgKGFib3ZlKSB7Ci0JCQkJaWYgKGFtcGxpdHVkZVtp XSA8IHRocmVzaG9sZCkgewotCQkJCQlhYm92ZSA9IGZhbHNlOwotCQkJCQltYXggPSAwOwotCi0J CQkJCWZvciAoaiA9IDA7IGogPCBzaWduYWwtPmZyZXFzX2NvdW50OyBqKyspIHsKLQkJCQkJCWlm IChzaWduYWwtPmZyZXFzW2pdLmZyZXEgPgotCQkJCQkJICAgIGZyZXEgLSBlcnJvciAmJgotCQkJ CQkJICAgIHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA8Ci0JCQkJCQkgICAgZnJlcSArIGVycm9yKSB7 Ci0JCQkJCQkJZGV0ZWN0ZWRbal0gPSB0cnVlOwotCQkJCQkJCWJyZWFrOwotCQkJCQkJfQotCQkJ CQl9Ci0KLQkJCQkJLyogRGV0ZWN0ZWQgZnJlcXVlbmN5IHdhcyBub3QgZ2VuZXJhdGVkLiAqLwot CQkJCQlpZiAoaiA9PSBzaWduYWwtPmZyZXFzX2NvdW50KSB7Ci0JCQkJCQlpZ3RfZGVidWcoIkRl dGVjdGVkIGFkZGl0aW9uYWwgZnJlcXVlbmN5OiAlZFxuIiwKLQkJCQkJCQkgIGZyZXEpOwotCQkJ CQkJcmV0dXJuIGZhbHNlOwotCQkJCQl9CisJCS8qIElmIHdlIHdlcmUgYWJvdmUgdGhlIHRocmVz aG9sZCBhbmQgd2UncmUgbm90IGFueW1vcmUsIGl0J3MKKwkJICogdGltZSB0byBkZWNpZGUgd2hl dGhlciB0aGUgcGVhayBmcmVxdWVuY3kgaXMgY29ycmVjdCBvcgorCQkgKiBpbnZhbGlkLiAqLwor CQlpZiAoYW1wbGl0dWRlW2ldIDwgdGhyZXNob2xkKSB7CisJCQlmb3IgKGogPSAwOyBqIDwgc2ln bmFsLT5mcmVxc19jb3VudDsgaisrKSB7CisJCQkJaWYgKHNpZ25hbC0+ZnJlcXNbal0uZnJlcSA+ CisJCQkJICAgIG1heF9mcmVxIC0gZXBzaWxvbiAmJgorCQkJCSAgICBzaWduYWwtPmZyZXFzW2pd LmZyZXEgPAorCQkJCSAgICBtYXhfZnJlcSArIGVwc2lsb24pIHsKKwkJCQkJZGV0ZWN0ZWRbal0g PSB0cnVlOworCQkJCQlpZ3RfZGVidWcoIkZyZXF1ZW5jeSAlZCBkZXRlY3RlZFxuIiwKKwkJCQkJ CSAgbWF4X2ZyZXEpOworCQkJCQlicmVhazsKIAkJCQl9CisJCQl9CiAKLQkJCQlpZiAoYW1wbGl0 dWRlW2ldID4gbWF4KSB7Ci0JCQkJCW1heCA9IGFtcGxpdHVkZVtpXTsKLQkJCQkJZnJlcSA9IHNh bXBsaW5nX3JhdGUgKiBpIC8gZnJhbWVzOwotCQkJCX0KKwkJCS8qIFdlIGhhdmVuJ3QgZ2VuZXJh dGVkIHRoaXMgZnJlcXVlbmN5LCBidXQgd2UgZGV0ZWN0ZWQKKwkJCSAqIGl0LiAqLworCQkJaWYg KGogPT0gc2lnbmFsLT5mcmVxc19jb3VudCkgeworCQkJCWlndF9kZWJ1ZygiRGV0ZWN0ZWQgYWRk aXRpb25hbCBmcmVxdWVuY3k6ICVkXG4iLAorCQkJCQkgIG1heF9mcmVxKTsKKwkJCQlzdWNjZXNz ID0gZmFsc2U7CiAJCQl9CisKKwkJCWFib3ZlID0gZmFsc2U7CisJCQltYXggPSAwOworCQkJbWF4 X2ZyZXEgPSAtMTsKIAkJfQogCi0JCWZvciAoaSA9IDA7IGkgPCBzaWduYWwtPmZyZXFzX2NvdW50 OyBpKyspIHsKLQkJCWlmICghZGV0ZWN0ZWRbaV0pIHsKLQkJCQlpZ3RfZGVidWcoIk1pc3Npbmcg ZnJlcXVlbmN5OiAlZFxuIiwKLQkJCQkJICBzaWduYWwtPmZyZXFzW2ldLmZyZXEpOwotCQkJCXJl dHVybiBmYWxzZTsKLQkJCX0KKwkJaWYgKGFtcGxpdHVkZVtpXSA+IG1heCkgeworCQkJbWF4ID0g YW1wbGl0dWRlW2ldOworCQkJbWF4X2ZyZXEgPSBmcmVxOworCQl9CisJfQorCisJLyogQ2hlY2sg dGhhdCBhbGwgZnJlcXVlbmNpZXMgd2UgZ2VuZXJhdGVkIGhhdmUgYmVlbiBkZXRlY3RlZC4gKi8K Kwlmb3IgKGkgPSAwOyBpIDwgc2lnbmFsLT5mcmVxc19jb3VudDsgaSsrKSB7CisJCWlmICghZGV0 ZWN0ZWRbaV0pIHsKKwkJCWlndF9kZWJ1ZygiTWlzc2luZyBmcmVxdWVuY3k6ICVkXG4iLAorCQkJ CSAgc2lnbmFsLT5mcmVxc1tpXS5mcmVxKTsKKwkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJfQogCX0K IAotCXJldHVybiB0cnVlOworCXJldHVybiBzdWNjZXNzOworfQorCisvKioKKyAqIEV4dHJhY3Rz IGEgc2luZ2xlIGNoYW5uZWwgZnJvbSBhIG11bHRpLWNoYW5uZWwgUzMyX0xFIGlucHV0IGJ1ZmZl ci4KKyAqLworc2l6ZV90IGF1ZGlvX2V4dHJhY3RfY2hhbm5lbF9zMzJfbGUoZG91YmxlICpkc3Qs IHNpemVfdCBkc3RfY2FwLAorCQkJCSAgICBpbnQzMl90ICpzcmMsIHNpemVfdCBzcmNfbGVuLAor CQkJCSAgICBpbnQgbl9jaGFubmVscywgaW50IGNoYW5uZWwpCit7CisJc2l6ZV90IGRzdF9sZW4s IGk7CisKKwlpZ3RfYXNzZXJ0KGNoYW5uZWwgPCBuX2NoYW5uZWxzKTsKKwlpZ3RfYXNzZXJ0KHNy Y19sZW4gJSBuX2NoYW5uZWxzID09IDApOworCWRzdF9sZW4gPSBzcmNfbGVuIC8gbl9jaGFubmVs czsKKwlpZ3RfYXNzZXJ0KGRzdF9sZW4gPD0gZHN0X2NhcCk7CisJZm9yIChpID0gMDsgaSA8IGRz dF9sZW47IGkrKykKKwkJZHN0W2ldID0gKGRvdWJsZSkgc3JjW2kgKiBuX2NoYW5uZWxzICsgY2hh bm5lbF07CisKKwlyZXR1cm4gZHN0X2xlbjsKK30KKworI2RlZmluZSBSSUZGX1RBRyAiUklGRiIK KyNkZWZpbmUgV0FWRV9UQUcgIldBVkUiCisjZGVmaW5lIEZNVF9UQUcgImZtdCAiCisjZGVmaW5l IERBVEFfVEFHICJkYXRhIgorCitzdGF0aWMgdm9pZAorYXBwZW5kX3RvX2J1ZmZlcihjaGFyICpk c3QsIHNpemVfdCAqaSwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUpCit7CisJbWVt Y3B5KCZkc3RbKmldLCBzcmMsIHNyY19zaXplKTsKKwkqaSArPSBzcmNfc2l6ZTsKK30KKworLyoq CisgKiBDcmVhdGVzIGEgbmV3IFdBViBmaWxlLiBzYW1wbGVfcmF0ZSBpcyBpbiBIei4gSWYgcGF0 aCBpcyBub3QgTlVMTCwgaXQgd2lsbAorICogYmUgc2V0IHRvIHRoZSBuZXcgZmlsZSBwYXRoICh0 aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlLWluZyBpdCkuCisgKgorICogQWZ0ZXIg Y2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHdyaXRlIFMz Ml9MRSBQQ00gZGF0YQorICogdG8gdGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvci4KKyAqCisg KiBTZWUgaHR0cDovL3d3dy1tbXNwLmVjZS5tY2dpbGwuY2EvRG9jdW1lbnRzL0F1ZGlvRm9ybWF0 cy9XQVZFL1dBVkUuaHRtbCBmb3IKKyAqIGEgV0FWIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24u CisgKi8KK2ludCBhdWRpb19jcmVhdGVfd2F2X2ZpbGVfczMyX2xlKGNvbnN0IGNoYXIgKnF1YWxp ZmllciwgdWludDMyX3Qgc2FtcGxlX3JhdGUsCisJCQkJIHVpbnQxNl90IGNoYW5uZWxzLCBjaGFy ICoqcGF0aCkKK3sKKwljaGFyIF9wYXRoW1BBVEhfTUFYXTsKKwljb25zdCBjaGFyICp0ZXN0X25h bWUsICpzdWJ0ZXN0X25hbWU7CisJaW50IGZkOworCWNoYXIgaGVhZGVyWzQ0XTsKKwlzaXplX3Qg aSA9IDA7CisJdWludDMyX3QgZmlsZV9zaXplLCBjaHVua19zaXplLCBieXRlX3JhdGU7CisJdWlu dDE2X3QgZm9ybWF0LCBibG9ja19hbGlnbiwgYml0c19wZXJfc2FtcGxlOworCisJdGVzdF9uYW1l ID0gaWd0X3Rlc3RfbmFtZSgpOworCXN1YnRlc3RfbmFtZSA9IGlndF9zdWJ0ZXN0X25hbWUoKTsK KworCWlndF9hc3NlcnQoaWd0X2ZyYW1lX2R1bXBfcGF0aCk7CisJc25wcmludGYoX3BhdGgsIHNp emVvZihfcGF0aCksICIlcy9hdWRpby0lcy0lcy0lcy53YXYiLAorCQkgaWd0X2ZyYW1lX2R1bXBf cGF0aCwgdGVzdF9uYW1lLCBzdWJ0ZXN0X25hbWUsIHF1YWxpZmllcik7CisKKwlpZiAocGF0aCkK KwkJKnBhdGggPSBzdHJkdXAoX3BhdGgpOworCisJaWd0X2RlYnVnKCJEdW1waW5nICVzIGF1ZGlv IHRvICVzXG4iLCBxdWFsaWZpZXIsIF9wYXRoKTsKKwlmZCA9IG9wZW4oX3BhdGgsIE9fV1JPTkxZ IHwgT19DUkVBVCB8IE9fVFJVTkMpOworCWlmIChmZCA8IDApIHsKKwkJaWd0X3dhcm4oIm9wZW4g ZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8q IEZpbGUgaGVhZGVyICovCisJZmlsZV9zaXplID0gVUlOVDMyX01BWDsgLyogdW5rbm93biBmaWxl IHNpemUgKi8KKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksIFJJRkZfVEFHLCBzdHJsZW4o UklGRl9UQUcpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksICZmaWxlX3NpemUsIHNp emVvZihmaWxlX3NpemUpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmksIFdBVkVfVEFH LCBzdHJsZW4oV0FWRV9UQUcpKTsKKworCS8qIEZvcm1hdCBjaHVuayAqLworCWNodW5rX3NpemUg PSAxNjsKKwlmb3JtYXQgPSAxOyAvKiBQQ00gKi8KKwliaXRzX3Blcl9zYW1wbGUgPSAzMjsgLyog UzMyX0xFICovCisJYnl0ZV9yYXRlID0gc2FtcGxlX3JhdGUgKiBjaGFubmVscyAqIGJpdHNfcGVy X3NhbXBsZSAvIDg7CisJYmxvY2tfYWxpZ24gPSBjaGFubmVscyAqIGJpdHNfcGVyX3NhbXBsZSAv IDg7CisJYXBwZW5kX3RvX2J1ZmZlcihoZWFkZXIsICZpLCBGTVRfVEFHLCBzdHJsZW4oRk1UX1RB RykpOworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJmNodW5rX3NpemUsIHNpemVvZihj aHVua19zaXplKSk7CisJYXBwZW5kX3RvX2J1ZmZlcihoZWFkZXIsICZpLCAmZm9ybWF0LCBzaXpl b2YoZm9ybWF0KSk7CisJYXBwZW5kX3RvX2J1ZmZlcihoZWFkZXIsICZpLCAmY2hhbm5lbHMsIHNp emVvZihjaGFubmVscykpOworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJnNhbXBsZV9y YXRlLCBzaXplb2Yoc2FtcGxlX3JhdGUpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRlciwgJmks ICZieXRlX3JhdGUsIHNpemVvZihieXRlX3JhdGUpKTsKKwlhcHBlbmRfdG9fYnVmZmVyKGhlYWRl ciwgJmksICZibG9ja19hbGlnbiwgc2l6ZW9mKGJsb2NrX2FsaWduKSk7CisJYXBwZW5kX3RvX2J1 ZmZlcihoZWFkZXIsICZpLCAmYml0c19wZXJfc2FtcGxlLCBzaXplb2YoYml0c19wZXJfc2FtcGxl KSk7CisKKwkvKiBEYXRhIGNodW5rICovCisJY2h1bmtfc2l6ZSA9IFVJTlQzMl9NQVg7IC8qIHVu a25vd24gY2h1bmsgc2l6ZSAqLworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgREFUQV9U QUcsIHN0cmxlbihEQVRBX1RBRykpOworCWFwcGVuZF90b19idWZmZXIoaGVhZGVyLCAmaSwgJmNo dW5rX3NpemUsIHNpemVvZihjaHVua19zaXplKSk7CisKKwlpZ3RfYXNzZXJ0KGkgPT0gc2l6ZW9m KGhlYWRlcikpOworCisJaWYgKHdyaXRlKGZkLCBoZWFkZXIsIHNpemVvZihoZWFkZXIpKSAhPSBz aXplb2YoaGVhZGVyKSkgeworCQlpZ3Rfd2Fybigid3JpdGUgZmFpbGVkOiAlcyduIiwgc3RyZXJy b3IoZXJybm8pKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIGZk OwogfQpkaWZmIC0tZ2l0IGEvbGliL2lndF9hdWRpby5oIGIvbGliL2lndF9hdWRpby5oCmluZGV4 IGIzYjY1OGE0Li40YWE0M2U2OSAxMDA2NDQKLS0tIGEvbGliL2lndF9hdWRpby5oCisrKyBiL2xp Yi9pZ3RfYXVkaW8uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj aW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgogCiBzdHJ1Y3QgYXVkaW9f c2lnbmFsOwogCkBAIC0zNyw4ICszOCwxMyBAQCBzdHJ1Y3QgYXVkaW9fc2lnbmFsICphdWRpb19z aWduYWxfaW5pdChpbnQgY2hhbm5lbHMsIGludCBzYW1wbGluZ19yYXRlKTsKIGludCBhdWRpb19z aWduYWxfYWRkX2ZyZXF1ZW5jeShzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBmcmVx dWVuY3kpOwogdm9pZCBhdWRpb19zaWduYWxfc3ludGhlc2l6ZShzdHJ1Y3QgYXVkaW9fc2lnbmFs ICpzaWduYWwpOwogdm9pZCBhdWRpb19zaWduYWxfY2xlYW4oc3RydWN0IGF1ZGlvX3NpZ25hbCAq c2lnbmFsKTsKLXZvaWQgYXVkaW9fc2lnbmFsX2ZpbGwoc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2ln bmFsLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKTsKLWJvb2wgYXVkaW9fc2lnbmFsX2RldGVj dChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpzaWduYWwsIGludCBjaGFubmVscywKLQkJCSBpbnQgc2Ft cGxpbmdfcmF0ZSwgc2hvcnQgKmJ1ZmZlciwgaW50IGZyYW1lcyk7Cit2b2lkIGF1ZGlvX3NpZ25h bF9maWxsKHN0cnVjdCBhdWRpb19zaWduYWwgKnNpZ25hbCwgaW50MTZfdCAqYnVmZmVyLCBpbnQg ZnJhbWVzKTsKK2Jvb2wgYXVkaW9fc2lnbmFsX2RldGVjdChzdHJ1Y3QgYXVkaW9fc2lnbmFsICpz aWduYWwsIGludCBzYW1wbGluZ19yYXRlLAorCQkJIGRvdWJsZSAqZGF0YSwgc2l6ZV90IGRhdGFf bGVuKTsKK3NpemVfdCBhdWRpb19leHRyYWN0X2NoYW5uZWxfczMyX2xlKGRvdWJsZSAqZHN0LCBz aXplX3QgZHN0X2NhcCwKKwkJCQkgICAgaW50MzJfdCAqc3JjLCBzaXplX3Qgc3JjX2xlbiwKKwkJ CQkgICAgaW50IG5fY2hhbm5lbHMsIGludCBjaGFubmVsKTsKK2ludCBhdWRpb19jcmVhdGVfd2F2 X2ZpbGVfczMyX2xlKGNvbnN0IGNoYXIgKnF1YWxpZmllciwgdWludDMyX3Qgc2FtcGxlX3JhdGUs CisJCQkJIHVpbnQxNl90IGNoYW5uZWxzLCBjaGFyICoqcGF0aCk7CiAKICNlbmRpZgpkaWZmIC0t Z2l0IGEvbGliL2lndF9hdXguYyBiL2xpYi9pZ3RfYXV4LmMKaW5kZXggNmVhZjU0NmUuLmYwNmE0 ODQyIDEwMDY0NAotLS0gYS9saWIvaWd0X2F1eC5jCisrKyBiL2xpYi9pZ3RfYXV4LmMKQEAgLTEy NTIsNiArMTI1MiwzNyBAQCB2b2lkIGlndF9zZXRfbW9kdWxlX3BhcmFtX2ludChjb25zdCBjaGFy ICpuYW1lLCBpbnQgdmFsKQogCWlndF9zZXRfbW9kdWxlX3BhcmFtKG5hbWUsIHN0cik7CiB9CiAK Ky8qKgorICogaWd0X2lzX3Byb2Nlc3NfcnVubmluZzoKKyAqIEBjb21tOiBOYW1lIG9mIHByb2Nl c3MgaW4gdGhlIGZvcm0gZm91bmQgaW4gL3Byb2MvcGlkL2NvbW0gKGxpbWl0ZWQgdG8gMTUKKyAq IGNoYXJzKQorICoKKyAqIFJldHVybnM6IHRydWUgaW4gY2FzZSB0aGUgcHJvY2VzcyBoYXMgYmVl biBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlu IHRoZSBwcm9jZXNzIHRhYmxlIGZvciBhbiBlbnRyeSB3aXRoIHRoZSBuYW1lIEBjb21tLgorICov CitpbnQgaWd0X2lzX3Byb2Nlc3NfcnVubmluZyhjb25zdCBjaGFyICpjb21tKQoreworCVBST0NU QUIgKnByb2M7CisJcHJvY190ICpwcm9jX2luZm87CisJYm9vbCBmb3VuZCA9IGZhbHNlOworCisJ cHJvYyA9IG9wZW5wcm9jKFBST0NfRklMTENPTSB8IFBST0NfRklMTFNUQVQgfCBQUk9DX0ZJTExB UkcpOworCWlndF9hc3NlcnQocHJvYyAhPSBOVUxMKTsKKworCXdoaWxlICgocHJvY19pbmZvID0g cmVhZHByb2MocHJvYywgTlVMTCkpKSB7CisJCWlmICghc3RybmNhc2VjbXAocHJvY19pbmZvLT5j bWQsIGNvbW0sIHNpemVvZihwcm9jX2luZm8tPmNtZCkpKSB7CisJCQlmcmVlcHJvYyhwcm9jX2lu Zm8pOworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwkJZnJlZXByb2MocHJvY19p bmZvKTsKKwl9CisKKwljbG9zZXByb2MocHJvYyk7CisJcmV0dXJuIGZvdW5kOworfQorCiAvKioK ICAqIGlndF90ZXJtaW5hdGVfcHJvY2VzczoKICAqIEBzaWc6IFNpZ25hbCB0byBzZW5kCmRpZmYg LS1naXQgYS9saWIvaWd0X2F1eC5oIGIvbGliL2lndF9hdXguaAppbmRleCAwOWI2MjQ2Yi4uODU2 Nzc3OGIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXV4LmgKKysrIGIvbGliL2lndF9hdXguaApAQCAt Mjc3LDYgKzI3Nyw3IEBAIGRvdWJsZSBpZ3Rfc3RvcF9zaWdsYXRlbmN5KHN0cnVjdCBpZ3RfbWVh biAqcmVzdWx0KTsKIHZvaWQgaWd0X3NldF9tb2R1bGVfcGFyYW0oY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqdmFsKTsKIHZvaWQgaWd0X3NldF9tb2R1bGVfcGFyYW1faW50KGNvbnN0IGNo YXIgKm5hbWUsIGludCB2YWwpOwogCitpbnQgaWd0X2lzX3Byb2Nlc3NfcnVubmluZyhjb25zdCBj aGFyICpjb21tKTsKIGludCBpZ3RfdGVybWluYXRlX3Byb2Nlc3MoaW50IHNpZywgY29uc3QgY2hh ciAqY29tbSk7CiB2b2lkIGlndF9sc29mKGNvbnN0IGNoYXIgKmRwYXRoKTsKIApkaWZmIC0tZ2l0 IGEvbGliL2lndF9jaGFtZWxpdW0uYyBiL2xpYi9pZ3RfY2hhbWVsaXVtLmMKaW5kZXggMDJjYzli MmMuLjdjOTAzMGQxIDEwMDY0NAotLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5jCisrKyBiL2xpYi9p Z3RfY2hhbWVsaXVtLmMKQEAgLTIxOCw2ICsyMTgsMTIgQEAgdm9pZCBjaGFtZWxpdW1fZGVzdHJv eV9mcmFtZV9kdW1wKHN0cnVjdCBjaGFtZWxpdW1fZnJhbWVfZHVtcCAqZHVtcCkKIAlmcmVlKGR1 bXApOwogfQogCit2b2lkIGNoYW1lbGl1bV9kZXN0cm95X2F1ZGlvX2ZpbGUoc3RydWN0IGNoYW1l bGl1bV9hdWRpb19maWxlICphdWRpb19maWxlKQoreworCWZyZWUoYXVkaW9fZmlsZS0+cGF0aCk7 CisJZnJlZShhdWRpb19maWxlKTsKK30KKwogc3RydWN0IGZzbV9tb25pdG9yX2FyZ3MgewogCXN0 cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bTsKIAlzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQ7 CkBAIC05MjQsNiArOTMwLDEwMSBAQCBpbnQgY2hhbWVsaXVtX2dldF9jYXB0dXJlZF9mcmFtZV9j b3VudChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pCiAJcmV0dXJuIHJldDsKIH0KIAorLyoq CisgKiBjaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvOgorICogQGNoYW1lbGl1bTogdGhl IENoYW1lbGl1bSBpbnN0YW5jZQorICogQHBvcnQ6IHRoZSBwb3J0IHRvIGNhcHR1cmUgYXVkaW8g ZnJvbSAoaXQgbXVzdCBzdXBwb3J0IGF1ZGlvKQorICogQHNhdmVfdG9fZmlsZTogd2hldGhlciB0 aGUgY2FwdHVyZWQgYXVkaW8gZGF0YSBzaG91bGQgYmUgc2F2ZWQgdG8gYSBmaWxlIG9uCisgKiB0 aGUgQ2hhbWVsaXVtIGRldmljZQorICoKKyAqIFN0YXJ0cyBjYXB0dXJpbmcgYXVkaW8gZnJvbSBh IENoYW1lbGl1bSBwb3J0LiBUbyBzdG9wIHRoZSBjYXB0dXJlLCB1c2UKKyAqICNjaGFtZWxpdW1f c3RvcF9jYXB0dXJpbmdfYXVkaW8uIFRvIHJldHJpZXZlIHRoZSBhdWRpbyBkYXRhLCBlaXRoZXIg dXNlIHRoZQorICogc3RyZWFtIHNlcnZlciBvciBlbmFibGUgQHNhdmVfdG9fZmlsZSAodGhlIGxh dHRlciBpcyBtYWlubHkgdXNlZnVsIGZvcgorICogZGVidWdnaW5nIHB1cnBvc2VzKS4KKyAqCisg KiBJdCBpc24ndCBwb3NzaWJsZSB0byBjYXB0dXJlIGF1ZGlvIGZyb20gbXVsdGlwbGUgcG9ydHMg YXQgdGhlIHNhbWUgdGltZS4KKyAqLwordm9pZCBjaGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1 ZGlvKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKKwkJCQkgICAgc3RydWN0IGNoYW1lbGl1 bV9wb3J0ICpwb3J0LAorCQkJCSAgICBib29sIHNhdmVfdG9fZmlsZSkKK3sKKwl4bWxycGNfdmFs dWUgKnJlczsKKworCXJlcyA9IGNoYW1lbGl1bV9ycGMoY2hhbWVsaXVtLCBwb3J0LCAiU3RhcnRD YXB0dXJpbmdBdWRpbyIsICIoaWIpIiwKKwkJCSAgICBwb3J0LT5pZCwgc2F2ZV90b19maWxlKTsK Kwl4bWxycGNfREVDUkVGKHJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIGF1ZGlvX2Zvcm1hdF9mcm9t X3htbChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCisJCQkJICB4bWxycGNfdmFsdWUgKnJl cywgaW50ICpyYXRlLCBpbnQgKmNoYW5uZWxzKQoreworCXhtbHJwY192YWx1ZSAqcmVzX3R5cGUs ICpyZXNfcmF0ZSwgKnJlc19zYW1wbGVfZm9ybWF0LCAqcmVzX2NoYW5uZWw7CisJY2hhciAqdHlw ZSwgKnNhbXBsZV9mb3JtYXQ7CisKKwl4bWxycGNfc3RydWN0X2ZpbmRfdmFsdWUoJmNoYW1lbGl1 bS0+ZW52LCByZXMsICJmaWxlX3R5cGUiLCAmcmVzX3R5cGUpOworCXhtbHJwY19zdHJ1Y3RfZmlu ZF92YWx1ZSgmY2hhbWVsaXVtLT5lbnYsIHJlcywgInJhdGUiLCAmcmVzX3JhdGUpOworCXhtbHJw Y19zdHJ1Y3RfZmluZF92YWx1ZSgmY2hhbWVsaXVtLT5lbnYsIHJlcywgInNhbXBsZV9mb3JtYXQi LCAmcmVzX3NhbXBsZV9mb3JtYXQpOworCXhtbHJwY19zdHJ1Y3RfZmluZF92YWx1ZSgmY2hhbWVs aXVtLT5lbnYsIHJlcywgImNoYW5uZWwiLCAmcmVzX2NoYW5uZWwpOworCisJeG1scnBjX3JlYWRf c3RyaW5nKCZjaGFtZWxpdW0tPmVudiwgcmVzX3R5cGUsIChjb25zdCBjaGFyICoqKSAmdHlwZSk7 CisJaWd0X2Fzc2VydChzdHJjbXAodHlwZSwgInJhdyIpID09IDApOworCWZyZWUodHlwZSk7CisK Kwl4bWxycGNfcmVhZF9zdHJpbmcoJmNoYW1lbGl1bS0+ZW52LCByZXNfc2FtcGxlX2Zvcm1hdCwg KGNvbnN0IGNoYXIgKiopICZzYW1wbGVfZm9ybWF0KTsKKwlpZ3RfYXNzZXJ0KHN0cmNtcChzYW1w bGVfZm9ybWF0LCAiUzMyX0xFIikgPT0gMCk7CisJZnJlZShzYW1wbGVfZm9ybWF0KTsKKworCXht bHJwY19yZWFkX2ludCgmY2hhbWVsaXVtLT5lbnYsIHJlc19yYXRlLCByYXRlKTsKKwl4bWxycGNf cmVhZF9pbnQoJmNoYW1lbGl1bS0+ZW52LCByZXNfY2hhbm5lbCwgY2hhbm5lbHMpOworCisJeG1s cnBjX0RFQ1JFRihyZXNfY2hhbm5lbCk7CisJeG1scnBjX0RFQ1JFRihyZXNfc2FtcGxlX2Zvcm1h dCk7CisJeG1scnBjX0RFQ1JFRihyZXNfcmF0ZSk7CisJeG1scnBjX0RFQ1JFRihyZXNfdHlwZSk7 Cit9CisKKy8qKgorICogY2hhbWVsaXVtX3N0b3BfY2FwdHVyaW5nX2F1ZGlvOgorICogQGNoYW1l bGl1bTogdGhlIENoYW1lbGl1bSBpbnN0YW5jZQorICogQHBvcnQ6IHRoZSBwb3J0IGZyb20gd2hp Y2ggYXVkaW8gaXMgYmVpbmcgY2FwdHVyZWQKKyAqCisgKiBTdG9wcyBjYXB0dXJpbmcgYXVkaW8g ZnJvbSBhIENoYW1lbGl1bSBwb3J0LiBJZgorICogI2NoYW1lbGl1bV9zdGFydF9jYXB0dXJpbmdf YXVkaW8gaGFzIGJlZW4gY2FsbGVkIHdpdGggQHNhdmVfdG9fZmlsZSBlbmFibGVkLAorICogdGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiBhICNjaGFtZWxpdW1fYXVkaW9fZmlsZSBzdHJ1Y3QgY29u dGFpbmluZyBkZXRhaWxzCisgKiBhYm91dCB0aGUgYXVkaW8gZmlsZS4gT25jZSB0aGUgY2FsbGVy IGlzIGRvbmUgd2l0aCB0aGUgc3RydWN0LCB0aGV5IHNob3VsZAorICogcmVsZWFzZSBpdCB3aXRo ICNjaGFtZWxpdW1fZGVzdHJveV9hdWRpb19maWxlLgorICovCitzdHJ1Y3QgY2hhbWVsaXVtX2F1 ZGlvX2ZpbGUgKmNoYW1lbGl1bV9zdG9wX2NhcHR1cmluZ19hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVt ICpjaGFtZWxpdW0sCisJCQkJCQkJICAgIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCkKK3sK Kwl4bWxycGNfdmFsdWUgKnJlcywgKnJlc19wYXRoLCAqcmVzX3Byb3BzOworCXN0cnVjdCBjaGFt ZWxpdW1fYXVkaW9fZmlsZSAqZmlsZSA9IE5VTEw7CisJY2hhciAqcGF0aDsKKworCXJlcyA9IGNo YW1lbGl1bV9ycGMoY2hhbWVsaXVtLCBOVUxMLCAiU3RvcENhcHR1cmluZ0F1ZGlvIiwgIihpKSIs CisJCQkgICAgcG9ydC0+aWQpOworCXhtbHJwY19hcnJheV9yZWFkX2l0ZW0oJmNoYW1lbGl1bS0+ ZW52LCByZXMsIDAsICZyZXNfcGF0aCk7CisJeG1scnBjX2FycmF5X3JlYWRfaXRlbSgmY2hhbWVs aXVtLT5lbnYsIHJlcywgMSwgJnJlc19wcm9wcyk7CisKKwl4bWxycGNfcmVhZF9zdHJpbmcoJmNo YW1lbGl1bS0+ZW52LCByZXNfcGF0aCwgKGNvbnN0IGNoYXIgKiopICZwYXRoKTsKKworCWlmIChz dHJsZW4ocGF0aCkgPiAwKSB7CisJCWZpbGUgPSBjYWxsb2MoMSwgc2l6ZW9mKCpmaWxlKSk7CisJ CWZpbGUtPnBhdGggPSBwYXRoOworCisJCWF1ZGlvX2Zvcm1hdF9mcm9tX3htbChjaGFtZWxpdW0s IHJlc19wcm9wcywKKwkJCQkgICAgICAmZmlsZS0+cmF0ZSwgJmZpbGUtPmNoYW5uZWxzKTsKKwl9 IGVsc2UgeworCQlmcmVlKHBhdGgpOworCX0KKworCXhtbHJwY19ERUNSRUYocmVzX3Byb3BzKTsK Kwl4bWxycGNfREVDUkVGKHJlc19wYXRoKTsKKwl4bWxycGNfREVDUkVGKHJlcyk7CisKKwlyZXR1 cm4gZmlsZTsKK30KKwogc3RhdGljIHBpeG1hbl9pbWFnZV90ICpjb252ZXJ0X2ZyYW1lX2Zvcm1h dChwaXhtYW5faW1hZ2VfdCAqc3JjLAogCQkJCQkgICAgaW50IGZvcm1hdCkKIHsKZGlmZiAtLWdp dCBhL2xpYi9pZ3RfY2hhbWVsaXVtLmggYi9saWIvaWd0X2NoYW1lbGl1bS5oCmluZGV4IDIzM2Vh ZDg1Li4wNDdmOGM1ZCAxMDA2NDQKLS0tIGEvbGliL2lndF9jaGFtZWxpdW0uaAorKysgYi9saWIv aWd0X2NoYW1lbGl1bS5oCkBAIC01Myw2ICs1MywxMiBAQCBlbnVtIGNoYW1lbGl1bV9jaGVjayB7 CiAJQ0hBTUVMSVVNX0NIRUNLX0NSQywKIH07CiAKK3N0cnVjdCBjaGFtZWxpdW1fYXVkaW9fZmls ZSB7CisJY2hhciAqcGF0aDsKKwlpbnQgcmF0ZTsgLyogSHogKi8KKwlpbnQgY2hhbm5lbHM7Cit9 OworCiBzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW1faW5pdChpbnQgZHJtX2ZkKTsKIHZvaWQg Y2hhbWVsaXVtX2RlaW5pdChzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0pOwogdm9pZCBjaGFt ZWxpdW1fcmVzZXQoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtKTsKQEAgLTEwMCw2ICsxMDYs MTAgQEAgdm9pZCBjaGFtZWxpdW1fc3RhcnRfY2FwdHVyZShzdHJ1Y3QgY2hhbWVsaXVtICpjaGFt ZWxpdW0sCiB2b2lkIGNoYW1lbGl1bV9zdG9wX2NhcHR1cmUoc3RydWN0IGNoYW1lbGl1bSAqY2hh bWVsaXVtLCBpbnQgZnJhbWVfY291bnQpOwogdm9pZCBjaGFtZWxpdW1fY2FwdHVyZShzdHJ1Y3Qg Y2hhbWVsaXVtICpjaGFtZWxpdW0sIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAkJICAg ICAgIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBpbnQgZnJhbWVfY291bnQpOwordm9pZCBj aGFtZWxpdW1fc3RhcnRfY2FwdHVyaW5nX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW0gKmNoYW1lbGl1 bSwKKwkJCQkgICAgc3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LCBib29sIHNhdmVfdG9fZmls ZSk7CitzdHJ1Y3QgY2hhbWVsaXVtX2F1ZGlvX2ZpbGUgKmNoYW1lbGl1bV9zdG9wX2NhcHR1cmlu Z19hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCisJCQkJCQkJICAgIHN0cnVjdCBj aGFtZWxpdW1fcG9ydCAqcG9ydCk7CiBpZ3RfY3JjX3QgKmNoYW1lbGl1bV9yZWFkX2NhcHR1cmVk X2NyY3Moc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogCQkJCQlpbnQgKmZyYW1lX2NvdW50 KTsKIHN0cnVjdCBjaGFtZWxpdW1fZnJhbWVfZHVtcCAqY2hhbWVsaXVtX3JlYWRfY2FwdHVyZWRf ZnJhbWUoc3RydWN0IGNoYW1lbGl1bSAqY2hhbWVsaXVtLApAQCAtMTMxLDUgKzE0MSw2IEBAIHZv aWQgY2hhbWVsaXVtX2Fzc2VydF9mcmFtZV9tYXRjaF9vcl9kdW1wKHN0cnVjdCBjaGFtZWxpdW0g KmNoYW1lbGl1bSwKIHZvaWQgY2hhbWVsaXVtX2Nyb3BfYW5hbG9nX2ZyYW1lKHN0cnVjdCBjaGFt ZWxpdW1fZnJhbWVfZHVtcCAqZHVtcCwgaW50IHdpZHRoLAogCQkJCSBpbnQgaGVpZ2h0KTsKIHZv aWQgY2hhbWVsaXVtX2Rlc3Ryb3lfZnJhbWVfZHVtcChzdHJ1Y3QgY2hhbWVsaXVtX2ZyYW1lX2R1 bXAgKmR1bXApOwordm9pZCBjaGFtZWxpdW1fZGVzdHJveV9hdWRpb19maWxlKHN0cnVjdCBjaGFt ZWxpdW1fYXVkaW9fZmlsZSAqYXVkaW9fZmlsZSk7CiAKICNlbmRpZiAvKiBJR1RfQ0hBTUVMSVVN X0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY2hhbWVsaXVtX3N0cmVhbS5jIGIvbGliL2lndF9j aGFtZWxpdW1fc3RyZWFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjll MWJhMWNhCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmMKQEAg LTAsMCArMSw1OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBB dXRob3JzOiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+CisgKi8KKworI2luY2x1ZGUg ImNvbmZpZy5oIgorCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4K KyNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisK KyNpbmNsdWRlICJpZ3RfY2hhbWVsaXVtX3N0cmVhbS5oIgorI2luY2x1ZGUgImlndF9jb3JlLmgi CisjaW5jbHVkZSAiaWd0X3JjLmgiCisKKyNkZWZpbmUgU1RSRUFNX1BPUlQgOTk5NAorI2RlZmlu ZSBTVFJFQU1fVkVSU0lPTl9NQUpPUiAxCisjZGVmaW5lIFNUUkVBTV9WRVJTSU9OX01JTk9SIDAK KworZW51bSBzdHJlYW1fZXJyb3IgeworCVNUUkVBTV9FUlJPUl9OT05FID0gMCwKKwlTVFJFQU1f RVJST1JfQ09NTUFORCA9IDEsCisJU1RSRUFNX0VSUk9SX0FSR1VNRU5UID0gMiwKKwlTVFJFQU1f RVJST1JfRVhJU1RTID0gMywKKwlTVFJFQU1fRVJST1JfVklERU9fTUVNX09WRVJGTE9XX1NUT1Ag PSA0LAorCVNUUkVBTV9FUlJPUl9WSURFT19NRU1fT1ZFUkZMT1dfRFJPUCA9IDUsCisJU1RSRUFN X0VSUk9SX0FVRElPX01FTV9PVkVSRkxPV19TVE9QID0gNiwKKwlTVFJFQU1fRVJST1JfQVVESU9f TUVNX09WRVJGTE9XX0RST1AgPSA3LAorCVNUUkVBTV9FUlJPUl9OT19NRU0gPSA4LAorfTsKKwor ZW51bSBzdHJlYW1fbWVzc2FnZV9raW5kIHsKKwlTVFJFQU1fTUVTU0FHRV9SRVFVRVNUID0gMCwK KwlTVFJFQU1fTUVTU0FHRV9SRVNQT05TRSA9IDEsCisJU1RSRUFNX01FU1NBR0VfREFUQSA9IDIs Cit9OworCitlbnVtIHN0cmVhbV9tZXNzYWdlX3R5cGUgeworCVNUUkVBTV9NRVNTQUdFX1JFU0VU ID0gMCwKKwlTVFJFQU1fTUVTU0FHRV9HRVRfVkVSU0lPTiA9IDEsCisJU1RSRUFNX01FU1NBR0Vf VklERU9fU1RSRUFNID0gMiwKKwlTVFJFQU1fTUVTU0FHRV9TSFJJTktfVklERU8gPSAzLAorCVNU UkVBTV9NRVNTQUdFX1ZJREVPX0ZSQU1FID0gNCwKKwlTVFJFQU1fTUVTU0FHRV9EVU1QX1JFQUxU SU1FX1ZJREVPID0gNSwKKwlTVFJFQU1fTUVTU0FHRV9TVE9QX0RVTVBfVklERU8gPSA2LAorCVNU UkVBTV9NRVNTQUdFX0RVTVBfUkVBTFRJTUVfQVVESU8gPSA3LAorCVNUUkVBTV9NRVNTQUdFX1NU T1BfRFVNUF9BVURJTyA9IDgsCit9OworCitzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSB7CisJY2hh ciAqaG9zdDsKKwl1bnNpZ25lZCBpbnQgcG9ydDsKKworCWludCBmZDsKK307CisKK3N0YXRpYyBj b25zdCBjaGFyICpzdHJlYW1fZXJyb3Jfc3RyKGVudW0gc3RyZWFtX2Vycm9yIGVycikKK3sKKwlz d2l0Y2ggKGVycikgeworCWNhc2UgU1RSRUFNX0VSUk9SX05PTkU6CisJCXJldHVybiAibm8gZXJy b3IiOworCWNhc2UgU1RSRUFNX0VSUk9SX0NPTU1BTkQ6CisJCXJldHVybiAiaW52YWxpZCBjb21t YW5kIjsKKwljYXNlIFNUUkVBTV9FUlJPUl9BUkdVTUVOVDoKKwkJcmV0dXJuICJpbnZhbGlkIGFy Z3VtZW50cyI7CisJY2FzZSBTVFJFQU1fRVJST1JfRVhJU1RTOgorCQlyZXR1cm4gImR1bXAgYWxy ZWFkeSBzdGFydGVkIjsKKwljYXNlIFNUUkVBTV9FUlJPUl9WSURFT19NRU1fT1ZFUkZMT1dfU1RP UDoKKwkJcmV0dXJuICJ2aWRlbyBkdW1wIHN0b3BwZWQgYWZ0ZXIgb3ZlcmZsb3ciOworCWNhc2Ug U1RSRUFNX0VSUk9SX1ZJREVPX01FTV9PVkVSRkxPV19EUk9QOgorCQlyZXR1cm4gInZpZGVvIGZy YW1lIGRyb3BwZWQgYWZ0ZXIgb3ZlcmZsb3ciOworCWNhc2UgU1RSRUFNX0VSUk9SX0FVRElPX01F TV9PVkVSRkxPV19TVE9QOgorCQlyZXR1cm4gImF1ZGlvIGR1bXAgc3RvcHByZWQgYWZ0ZXIgb3Zl cmZsb3ciOworCWNhc2UgU1RSRUFNX0VSUk9SX0FVRElPX01FTV9PVkVSRkxPV19EUk9QOgorCQly ZXR1cm4gImF1ZGlvIHBhZ2UgZHJvcHBlZCBhZnRlciBvdmVyZmxvdyI7CisJY2FzZSBTVFJFQU1f RVJST1JfTk9fTUVNOgorCQlyZXR1cm4gIm91dCBvZiBtZW1vcnkiOworCX0KKwlyZXR1cm4gInVu a25vd24gZXJyb3IiOworfQorCisvKioKKyAqIFRoZSBDaGFtZWxpdW0gVVJMIGlzIHNwZWNpZmll ZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLiBXZSBuZWVkIHRvIGV4dHJhY3QKKyAqIHRoZSBo b3N0IHRvIGNvbm5lY3QgdG8gdGhlIHN0cmVhbSBzZXJ2ZXIuCisgKi8KK3N0YXRpYyBjaGFyICpw YXJzZV91cmxfaG9zdChjb25zdCBjaGFyICp1cmwpCit7CisJc3RhdGljIGNvbnN0IGNoYXIgcHJl Zml4W10gPSAiaHR0cDovLyI7CisJY2hhciAqY29sb247CisKKwlpZiAoc3Ryc3RyKHVybCwgcHJl Zml4KSAhPSB1cmwpCisJCXJldHVybiBOVUxMOworCXVybCArPSBzdHJsZW4ocHJlZml4KTsKKwor CWNvbG9uID0gc3RyY2hyKHVybCwgJzonKTsKKwlpZiAoIWNvbG9uKQorCQlyZXR1cm4gTlVMTDsK KworCXJldHVybiBzdHJuZHVwKHVybCwgY29sb24gLSB1cmwpOworfQorCitzdGF0aWMgYm9vbCBj aGFtZWxpdW1fc3RyZWFtX3JlYWRfY29uZmlnKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGll bnQpCit7CisJR0Vycm9yICplcnJvciA9IE5VTEw7CisJZ2NoYXIgKmNoYW1lbGl1bV91cmw7CisK KwlpZiAoIWlndF9rZXlfZmlsZSkgeworCQlpZ3Rfd2FybigiTm8gY29uZmlndXJhdGlvbiBmaWxl IGF2YWlsYWJsZSBmb3IgY2hhbWVsaXVtXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWNo YW1lbGl1bV91cmwgPSBnX2tleV9maWxlX2dldF9zdHJpbmcoaWd0X2tleV9maWxlLCAiQ2hhbWVs aXVtIiwgIlVSTCIsCisJCQkJCSAgICAgICZlcnJvcik7CisJaWYgKCFjaGFtZWxpdW1fdXJsKSB7 CisJCWlndF93YXJuKCJDb3VsZG4ndCByZWFkIENoYW1lbGl1bSBVUkwgZnJvbSBjb25maWcgZmls ZTogJXNcbiIsCisJCQkgZXJyb3ItPm1lc3NhZ2UpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ Y2xpZW50LT5ob3N0ID0gcGFyc2VfdXJsX2hvc3QoY2hhbWVsaXVtX3VybCk7CisJaWYgKCFjbGll bnQtPmhvc3QpIHsKKwkJaWd0X3dhcm4oIkludmFsaWQgQ2hhbWVsaXVtIFVSTCBpbiBjb25maWcg ZmlsZTogJXNcbiIsCisJCQkgY2hhbWVsaXVtX3VybCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisJ Y2xpZW50LT5wb3J0ID0gU1RSRUFNX1BPUlQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IGJvb2wgY2hhbWVsaXVtX3N0cmVhbV9jb25uZWN0KHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpj bGllbnQpCit7CisJaW50IHJldDsKKwljaGFyIHBvcnRfc3RyWzE2XTsKKwlzdHJ1Y3QgYWRkcmlu Zm8gaGludHMgPSB7fTsKKwlzdHJ1Y3QgYWRkcmluZm8gKnJlc3VsdHMsICphaTsKKwlzdHJ1Y3Qg dGltZXZhbCB0diA9IHt9OworCisJaWd0X2RlYnVnKCJDb25uZWN0aW5nIHRvIENoYW1lbGl1bSBz dHJlYW0gc2VydmVyOiB0Y3A6Ly8lczoldVxuIiwKKwkJICBjbGllbnQtPmhvc3QsIGNsaWVudC0+ cG9ydCk7CisKKwlzbnByaW50Zihwb3J0X3N0ciwgc2l6ZW9mKHBvcnRfc3RyKSwgIiV1IiwgY2xp ZW50LT5wb3J0KTsKKworCWhpbnRzLmFpX2ZhbWlseSA9IEFGX1VOU1BFQzsKKwloaW50cy5haV9z b2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworCXJldCA9IGdldGFkZHJpbmZvKGNsaWVudC0+aG9zdCwg cG9ydF9zdHIsICZoaW50cywgJnJlc3VsdHMpOworCWlmIChyZXQgIT0gMCkgeworCQlpZ3Rfd2Fy bigiZ2V0YWRkcmluZm8gZmFpbGVkOiAlc1xuIiwgZ2FpX3N0cmVycm9yKHJldCkpOworCQlyZXR1 cm4gZmFsc2U7CisJfQorCisJY2xpZW50LT5mZCA9IC0xOworCWZvciAoYWkgPSByZXN1bHRzOyBh aSAhPSBOVUxMOyBhaSA9IGFpLT5haV9uZXh0KSB7CisJCWNsaWVudC0+ZmQgPSBzb2NrZXQoYWkt PmFpX2ZhbWlseSwgYWktPmFpX3NvY2t0eXBlLAorCQkJCSAgICBhaS0+YWlfcHJvdG9jb2wpOwor CQlpZiAoY2xpZW50LT5mZCA9PSAtMSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChjb25uZWN0KGNs aWVudC0+ZmQsIGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbikgPT0gLTEpIHsKKwkJCWNsb3Nl KGNsaWVudC0+ZmQpOworCQkJY2xpZW50LT5mZCA9IC0xOworCQkJY29udGludWU7CisJCX0KKwor CQlicmVhazsKKwl9CisKKwlmcmVlYWRkcmluZm8ocmVzdWx0cyk7CisKKwlpZiAoY2xpZW50LT5m ZCA8IDApIHsKKwkJaWd0X3dhcm4oIkZhaWxlZCB0byBjb25uZWN0IHRvIENoYW1lbGl1bSBzdHJl YW0gc2VydmVyXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIFNldCBhIHJlYWQgYW5k IHdyaXRlIHRpbWVvdXQgb2YgNSBzZWNvbmRzLiAqLworCXR2LnR2X3NlYyA9IDU7CisJc2V0c29j a29wdChjbGllbnQtPmZkLCBTT0xfU09DS0VULCBTT19SQ1ZUSU1FTywgJnR2LCBzaXplb2YodHYp KTsKKwlzZXRzb2Nrb3B0KGNsaWVudC0+ZmQsIFNPTF9TT0NLRVQsIFNPX1NORFRJTUVPLCAmdHYs IHNpemVvZih0dikpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHJlYWRfd2hv bGUoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKQoreworCXNzaXplX3QgcmV0Owor CXNpemVfdCBuID0gMDsKKwljaGFyICpwdHI7CisKKwl3aGlsZSAobiA8IGJ1Zl9sZW4pIHsKKwkJ cHRyID0gKGNoYXIgKikgYnVmICsgbjsKKwkJcmV0ID0gcmVhZChmZCwgcHRyLCBidWZfbGVuIC0g bik7CisJCWlmIChyZXQgPCAwKSB7CisJCQlpZ3Rfd2FybigicmVhZCBmYWlsZWQ6ICVzXG4iLCBz dHJlcnJvcihlcnJubykpOworCQkJcmV0dXJuIGZhbHNlOworCQl9IGVsc2UgaWYgKHJldCA9PSAw KSB7CisJCQlpZ3Rfd2Fybigic2hvcnQgcmVhZFxuIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0K KwkJbiArPSByZXQ7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHdyaXRl X3dob2xlKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmX2xlbikKK3sKKwlzc2l6ZV90IHJl dDsKKwlzaXplX3QgbiA9IDA7CisJY2hhciAqcHRyOworCisJd2hpbGUgKG4gPCBidWZfbGVuKSB7 CisJCXB0ciA9IChjaGFyICopIGJ1ZiArIG47CisJCXJldCA9IHdyaXRlKGZkLCBwdHIsIGJ1Zl9s ZW4gLSBuKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlndF93YXJuKCJ3cml0ZSBmYWlsZWQ6ICVz XG4iLCBzdHJlcnJvcihlcnJubykpOworCQkJcmV0dXJuIGZhbHNlOworCQl9IGVsc2UgaWYgKHJl dCA9PSAwKSB7CisJCQlpZ3Rfd2Fybigic2hvcnQgd3JpdGVcbiIpOworCQkJcmV0dXJuIGZhbHNl OworCQl9CisJCW4gKz0gcmV0OworCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v bCByZWFkX2FuZF9kaXNjYXJkKGludCBmZCwgc2l6ZV90IGxlbikKK3sKKwljaGFyIGJ1ZlsxMDI0 XTsKKwlzaXplX3QgbjsKKworCXdoaWxlIChsZW4gPiAwKSB7CisJCW4gPSBsZW47CisJCWlmIChu ID4gc2l6ZW9mKGJ1ZikpCisJCQluID0gc2l6ZW9mKGJ1Zik7CisKKwkJaWYgKCFyZWFkX3dob2xl KGZkLCBidWYsIG4pKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWxlbiAtPSBuOworCX0KKworCXJl dHVybiB0cnVlOworfQorCisvKiogUmVhZCBhIG1lc3NhZ2UgaGVhZGVyIGZyb20gdGhlIHNvY2tl dC4KKyAqCisgKiBUaGUgaGVhZGVyIGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CisgKiAtIHUxNjog bWVzc2FnZSB0eXBlCisgKiAtIHUxNjogZXJyb3IgY29kZQorICogLSB1MzI6IG1lc3NhZ2UgbGVu Z3RoCisgKi8KK3N0YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9oZWFkZXIoc3RydWN0 IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCwKKwkJCQkJIGVudW0gc3RyZWFtX21lc3NhZ2Vfa2lu ZCAqa2luZCwKKwkJCQkJIGVudW0gc3RyZWFtX21lc3NhZ2VfdHlwZSAqdHlwZSwKKwkJCQkJIGVu dW0gc3RyZWFtX2Vycm9yICplcnIsCisJCQkJCSBzaXplX3QgKmxlbikKK3sKKwl1aW50MTZfdCBf dHlwZTsKKwljaGFyIGJ1Zls4XTsKKworCWlmICghcmVhZF93aG9sZShjbGllbnQtPmZkLCBidWYs IHNpemVvZihidWYpKSkKKwkJcmV0dXJuIGZhbHNlOworCisJX3R5cGUgPSBudG9ocygqKHVpbnQx Nl90ICopICZidWZbMF0pOworCSp0eXBlID0gX3R5cGUgJiAweEZGOworCSpraW5kID0gX3R5cGUg Pj4gODsKKwkqZXJyID0gbnRvaHMoKih1aW50MTZfdCAqKSAmYnVmWzJdKTsKKwkqbGVuID0gbnRv aGwoKih1aW50MzJfdCAqKSAmYnVmWzRdKTsKKworCS8vaWd0X2RlYnVnKCJyZWNlaXZlZCBtZXNz YWdlOiBraW5kPSVkIHR5cGU9JWQgZXJyPSVkIGxlbj0lenVcbiIsCisJLy8JICAqa2luZCwgKnR5 cGUsICplcnIsICpsZW4pOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNoYW1l bGl1bV9zdHJlYW1fd3JpdGVfaGVhZGVyKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQs CisJCQkJCSAgZW51bSBzdHJlYW1fbWVzc2FnZV90eXBlIHR5cGUsCisJCQkJCSAgZW51bSBzdHJl YW1fZXJyb3IgZXJyLAorCQkJCQkgIHNpemVfdCBsZW4pCit7CisJY2hhciBidWZbOF07CisJdWlu dDE2X3QgX3R5cGU7CisKKwlfdHlwZSA9IHR5cGUgfCAoU1RSRUFNX01FU1NBR0VfUkVRVUVTVCA8 PCA4KTsKKworCSoodWludDE2X3QgKikgJmJ1ZlswXSA9IGh0b25zKF90eXBlKTsKKwkqKHVpbnQx Nl90ICopICZidWZbMl0gPSBodG9ucyhlcnIpOworCSoodWludDMyX3QgKikgJmJ1Zls0XSA9IGh0 b25sKGxlbik7CisKKwlyZXR1cm4gd3JpdGVfd2hvbGUoY2xpZW50LT5mZCwgYnVmLCBzaXplb2Yo YnVmKSk7Cit9CisKK3N0YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1fcmVhZF9yZXNwb25zZShz dHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgICBlbnVtIHN0cmVhbV9tZXNz YWdlX3R5cGUgdHlwZSwKKwkJCQkJICAgdm9pZCAqYnVmLCBzaXplX3QgYnVmX2xlbikKK3sKKwll bnVtIHN0cmVhbV9tZXNzYWdlX2tpbmQgcmVhZF9raW5kOworCWVudW0gc3RyZWFtX21lc3NhZ2Vf dHlwZSByZWFkX3R5cGU7CisJZW51bSBzdHJlYW1fZXJyb3IgcmVhZF9lcnI7CisJc2l6ZV90IHJl YWRfbGVuOworCisJaWYgKCFjaGFtZWxpdW1fc3RyZWFtX3JlYWRfaGVhZGVyKGNsaWVudCwgJnJl YWRfa2luZCwgJnJlYWRfdHlwZSwKKwkJCQkJICAmcmVhZF9lcnIsICZyZWFkX2xlbikpCisJCXJl dHVybiBmYWxzZTsKKworCWlmIChyZWFkX2tpbmQgIT0gU1RSRUFNX01FU1NBR0VfUkVTUE9OU0Up IHsKKwkJaWd0X3dhcm4oIkV4cGVjdGVkIGEgcmVzcG9uc2UsIGdvdCBraW5kICVkXG4iLCByZWFk X2tpbmQpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCWlmIChyZWFkX3R5cGUgIT0gdHlwZSkgewor CQlpZ3Rfd2FybigiRXhwZWN0ZWQgbWVzc2FnZSB0eXBlICVkLCBnb3QgJWRcbiIsCisJCQkgdHlw ZSwgcmVhZF90eXBlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlpZiAocmVhZF9lcnIgIT0gU1RS RUFNX0VSUk9SX05PTkUpIHsKKwkJaWd0X3dhcm4oIlJlY2VpdmVkIGVycm9yOiAlcyAoJWQpXG4i LAorCQkJIHN0cmVhbV9lcnJvcl9zdHIocmVhZF9lcnIpLCByZWFkX2Vycik7CisJCXJldHVybiBm YWxzZTsKKwl9CisJaWYgKGJ1Zl9sZW4gIT0gcmVhZF9sZW4pIHsKKwkJaWd0X3dhcm4oIlJlY2Vp dmVkIGludmFsaWQgbWVzc2FnZSBib2R5IHNpemUgIgorCQkJICIoZ290ICV6dSBieXRlcywgd2Fu dCAlenUgYnl0ZXMpXG4iLAorCQkJIHJlYWRfbGVuLCBidWZfbGVuKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KKworCXJldHVybiByZWFkX3dob2xlKGNsaWVudC0+ZmQsIGJ1ZiwgYnVmX2xlbik7Cit9 CisKK3N0YXRpYyBib29sIGNoYW1lbGl1bV9zdHJlYW1fd3JpdGVfcmVxdWVzdChzdHJ1Y3QgY2hh bWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgICBlbnVtIHN0cmVhbV9tZXNzYWdlX3R5cGUg dHlwZSwKKwkJCQkJICAgdm9pZCAqYnVmLCBzaXplX3QgYnVmX2xlbikKK3sKKwlpZiAoIWNoYW1l bGl1bV9zdHJlYW1fd3JpdGVfaGVhZGVyKGNsaWVudCwgdHlwZSwgU1RSRUFNX0VSUk9SX05PTkUs CisJCQkJCSAgIGJ1Zl9sZW4pKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoYnVmX2xlbiA9PSAw KQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiB3cml0ZV93aG9sZShjbGllbnQtPmZkLCBidWYs IGJ1Zl9sZW4pOworfQorCitzdGF0aWMgYm9vbCBjaGFtZWxpdW1fc3RyZWFtX2NhbGwoc3RydWN0 IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCwKKwkJCQkgIGVudW0gc3RyZWFtX21lc3NhZ2VfdHlw ZSB0eXBlLAorCQkJCSAgdm9pZCAqcmVxX2J1Ziwgc2l6ZV90IHJlcV9sZW4sCisJCQkJICB2b2lk ICpyZXNwX2J1Ziwgc2l6ZV90IHJlc3BfbGVuKQoreworCWlmICghY2hhbWVsaXVtX3N0cmVhbV93 cml0ZV9yZXF1ZXN0KGNsaWVudCwgdHlwZSwgcmVxX2J1ZiwgcmVxX2xlbikpCisJCXJldHVybiBm YWxzZTsKKworCXJldHVybiBjaGFtZWxpdW1fc3RyZWFtX3JlYWRfcmVzcG9uc2UoY2xpZW50LCB0 eXBlLCByZXNwX2J1ZiwgcmVzcF9sZW4pOworfQorCitzdGF0aWMgYm9vbCBjaGFtZWxpdW1fc3Ry ZWFtX2NoZWNrX3ZlcnNpb24oc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNsaWVudCkKK3sKKwlj aGFyIHJlc3BbMl07CisJdWludDhfdCBtYWpvciwgbWlub3I7CisKKwlpZiAoIWNoYW1lbGl1bV9z dHJlYW1fY2FsbChjbGllbnQsIFNUUkVBTV9NRVNTQUdFX0dFVF9WRVJTSU9OLAorCQkJCSAgIE5V TEwsIDAsIHJlc3AsIHNpemVvZihyZXNwKSkpCisJCXJldHVybiBmYWxzZTsKKworCW1ham9yID0g cmVzcFswXTsKKwltaW5vciA9IHJlc3BbMV07CisJaWYgKG1ham9yICE9IFNUUkVBTV9WRVJTSU9O X01BSk9SIHx8IG1pbm9yIDwgU1RSRUFNX1ZFUlNJT05fTUlOT1IpIHsKKwkJaWd0X3dhcm4oIlZl cnNpb24gbWlzbWF0Y2ggKHdhbnQgJWQuJWQsIGdvdCAlZC4lZClcbiIsCisJCQkgU1RSRUFNX1ZF UlNJT05fTUFKT1IsIFNUUkVBTV9WRVJTSU9OX01JTk9SLAorCQkJIG1ham9yLCBtaW5vcik7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoqCisgKiBjaGFtZWxp dW1fc3RyZWFtX2R1bXBfcmVhbHRpbWVfYXVkaW86CisgKgorICogU3RhcnRzIGF1ZGlvIGNhcHR1 cmUuIFRoZSBjYWxsZXIgY2FuIHRoZW4gY2FsbAorICogI2NoYW1lbGl1bV9zdHJlYW1fcmVjZWl2 ZV9yZWFsdGltZV9hdWRpbyB0byByZWNlaXZlIGF1ZGlvIHBhZ2VzLgorICovCitib29sIGNoYW1l bGl1bV9zdHJlYW1fZHVtcF9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAq Y2xpZW50LAorCQkJCQkgIGVudW0gY2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9tb2RlIG1vZGUp Cit7CisJY2hhciByZXFbMV07CisKKwlpZ3RfZGVidWcoIlN0YXJ0aW5nIHJlYWwtdGltZSBhdWRp byBjYXB0dXJlXG4iKTsKKworCXJlcVswXSA9IG1vZGU7CisJcmV0dXJuIGNoYW1lbGl1bV9zdHJl YW1fY2FsbChjbGllbnQsIFNUUkVBTV9NRVNTQUdFX0RVTVBfUkVBTFRJTUVfQVVESU8sCisJCQkJ ICAgICByZXEsIHNpemVvZihyZXEpLCBOVUxMLCAwKTsKK30KKworLyoqCisgKiBjaGFtZWxpdW1f c3RyZWFtX3JlY2VpdmVfcmVhbHRpbWVfYXVkaW86CisgKiBAcGFnZV9jb3VudDogaWYgbm9uLU5V TEwsIHdpbGwgYmUgc2V0IHRvIHRoZSBkdW1wZWQgcGFnZSBudW1iZXIKKyAqIEBidWY6IG11c3Qg ZWl0aGVyIHBvaW50IHRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeSByZWdpb24gb3Ig TlVMTAorICogQGJ1Zl9sZW46IG51bWJlciBvZiBlbGVtZW50cyBvZiAqQGJ1ZiwgZm9yIHplcm8g aWYgQGJ1ZiBpcyBOVUxMCisgKgorICogUmVjZWl2ZXMgb25lIGF1ZGlvIHBhZ2UgZnJvbSB0aGUg c3RyZWFtaW5nIHNlcnZlci4KKyAqCisgKiBJbiAiYmVzdCBlZmZvcnQiIG1vZGUsIHNvbWUgcGFn ZXMgY2FuIGJlIGRyb3BwZWQuIFRoaXMgY2FuIGJlIGRldGVjdGVkIHZpYQorICogdGhlIHBhZ2Ug Y291bnQuCisgKgorICogYnVmX2xlbiB3aWxsIGJlIHNldCB0byB0aGUgc2l6ZSBvZiB0aGUgcGFn ZS4gVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKKyAqIGNhbGxpbmcgZnJlZSgzKSBvbiAq YnVmLgorICovCitib29sIGNoYW1lbGl1bV9zdHJlYW1fcmVjZWl2ZV9yZWFsdGltZV9hdWRpbyhz dHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xpZW50LAorCQkJCQkgICAgIHNpemVfdCAqcGFnZV9j b3VudCwKKwkJCQkJICAgICBpbnQzMl90ICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4pCit7CisJZW51 bSBzdHJlYW1fbWVzc2FnZV9raW5kIGtpbmQ7CisJZW51bSBzdHJlYW1fbWVzc2FnZV90eXBlIHR5 cGU7CisJZW51bSBzdHJlYW1fZXJyb3IgZXJyOworCXNpemVfdCBib2R5X2xlbjsKKwljaGFyIHBh Z2VfY291bnRfYnVmWzRdOworCWludDMyX3QgKnB0cjsKKworCXdoaWxlICh0cnVlKSB7CisJCWlm ICghY2hhbWVsaXVtX3N0cmVhbV9yZWFkX2hlYWRlcihjbGllbnQsICZraW5kLCAmdHlwZSwKKwkJ CQkJCSAgJmVyciwgJmJvZHlfbGVuKSkKKwkJCXJldHVybiBmYWxzZTsKKworCQlpZiAoa2luZCAh PSBTVFJFQU1fTUVTU0FHRV9EQVRBKSB7CisJCQlpZ3Rfd2FybigiRXhwZWN0ZWQgYSBkYXRhIG1l c3NhZ2UsIGdvdCBraW5kICVkXG4iLCBraW5kKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlp ZiAodHlwZSAhPSBTVFJFQU1fTUVTU0FHRV9EVU1QX1JFQUxUSU1FX0FVRElPKSB7CisJCQlpZ3Rf d2FybigiRXhwZWN0ZWQgcmVhbC10aW1lIGF1ZGlvIGR1bXAgbWVzc2FnZSwgIgorCQkJCSAiZ290 IHR5cGUgJWRcbiIsIHR5cGUpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWYgKGVyciA9 PSBTVFJFQU1fRVJST1JfTk9ORSkKKwkJCWJyZWFrOworCQllbHNlIGlmIChlcnIgIT0gU1RSRUFN X0VSUk9SX0FVRElPX01FTV9PVkVSRkxPV19EUk9QKSB7CisJCQlpZ3Rfd2FybigiUmVjZWl2ZWQg ZXJyb3I6ICVzICglZClcbiIsCisJCQkJIHN0cmVhbV9lcnJvcl9zdHIoZXJyKSwgZXJyKTsKKwkJ CXJldHVybiBmYWxzZTsKKwkJfQorCisJCWlndF9kZWJ1ZygiRHJvcHBlZCBhbiBhdWRpbyBwYWdl IGJlY2F1c2Ugb2YgYW4gb3ZlcmZsb3dcbiIpOworCQlpZ3RfYXNzZXJ0KGJvZHlfbGVuID09IDAp OworCX0KKworCWlndF9hc3NlcnQoYm9keV9sZW4gPj0gc2l6ZW9mKHBhZ2VfY291bnRfYnVmKSk7 CisKKwlpZiAoIXJlYWRfd2hvbGUoY2xpZW50LT5mZCwgcGFnZV9jb3VudF9idWYsIHNpemVvZihw YWdlX2NvdW50X2J1ZikpKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKHBhZ2VfY291bnQpCisJCSpw YWdlX2NvdW50ID0gbnRvaGwoKih1aW50MzJfdCAqKSAmcGFnZV9jb3VudF9idWZbMF0pOworCWJv ZHlfbGVuIC09IHNpemVvZihwYWdlX2NvdW50X2J1Zik7CisKKwlpZ3RfYXNzZXJ0KGJvZHlfbGVu ICUgc2l6ZW9mKGludDMyX3QpID09IDApOworCWlmICgqYnVmX2xlbiAqIHNpemVvZihpbnQzMl90 KSAhPSBib2R5X2xlbikgeworCQlwdHIgPSByZWFsbG9jKCpidWYsIGJvZHlfbGVuKTsKKwkJaWYg KCFwdHIpIHsKKwkJCWlndF93YXJuKCJyZWFsbG9jIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVy cm5vKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJKmJ1ZiA9IHB0cjsKKwkJKmJ1Zl9sZW4g PSBib2R5X2xlbiAvIHNpemVvZihpbnQzMl90KTsKKwl9CisKKwlyZXR1cm4gcmVhZF93aG9sZShj bGllbnQtPmZkLCAqYnVmLCBib2R5X2xlbik7Cit9CisKKy8qKgorICogY2hhbWVsaXVtX3N0cmVh bV9zdG9wX3JlYWx0aW1lX2F1ZGlvOgorICoKKyAqIFN0b3BzIHJlYWwtdGltZSBhdWRpbyBjYXB0 dXJlLiBUaGlzIGFsc28gZHJvcHMgYW55IGJ1ZmZlcmVkIGF1ZGlvIHBhZ2VzLgorICogVGhlIGNh bGxlciBzaG91bGRuJ3QgY2FsbCAjY2hhbWVsaXVtX3N0cmVhbV9yZWNlaXZlX3JlYWx0aW1lX2F1 ZGlvIGFmdGVyCisgKiBzdG9wcGluZyBhdWRpbyBjYXB0dXJlLgorICovCitib29sIGNoYW1lbGl1 bV9zdHJlYW1fc3RvcF9yZWFsdGltZV9hdWRpbyhzdHJ1Y3QgY2hhbWVsaXVtX3N0cmVhbSAqY2xp ZW50KQoreworCWVudW0gc3RyZWFtX21lc3NhZ2Vfa2luZCBraW5kOworCWVudW0gc3RyZWFtX21l c3NhZ2VfdHlwZSB0eXBlOworCWVudW0gc3RyZWFtX2Vycm9yIGVycjsKKwlzaXplX3QgbGVuOwor CisJaWd0X2RlYnVnKCJTdG9wcGluZyByZWFsLXRpbWUgYXVkaW8gY2FwdHVyZVxuIik7CisKKwlp ZiAoIWNoYW1lbGl1bV9zdHJlYW1fd3JpdGVfcmVxdWVzdChjbGllbnQsCisJCQkJCSAgICBTVFJF QU1fTUVTU0FHRV9TVE9QX0RVTVBfQVVESU8sCisJCQkJCSAgICBOVUxMLCAwKSkKKwkJcmV0dXJu IGZhbHNlOworCisJd2hpbGUgKHRydWUpIHsKKwkJaWYgKCFjaGFtZWxpdW1fc3RyZWFtX3JlYWRf aGVhZGVyKGNsaWVudCwgJmtpbmQsICZ0eXBlLAorCQkJCQkJICAmZXJyLCAmbGVuKSkKKwkJCXJl dHVybiBmYWxzZTsKKworCQlpZiAoa2luZCA9PSBTVFJFQU1fTUVTU0FHRV9SRVNQT05TRSkKKwkJ CWJyZWFrOworCisJCWlmICghcmVhZF9hbmRfZGlzY2FyZChjbGllbnQtPmZkLCBsZW4pKQorCQkJ cmV0dXJuIGZhbHNlOworCX0KKworCWlmICh0eXBlICE9IFNUUkVBTV9NRVNTQUdFX1NUT1BfRFVN UF9BVURJTykgeworCQlpZ3Rfd2FybigiVW5leHBlY3RlZCByZXNwb25zZSB0eXBlICVkXG4iLCB0 eXBlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwlpZiAoZXJyICE9IFNUUkVBTV9FUlJPUl9OT05F KSB7CisJCWlndF93YXJuKCJSZWNlaXZlZCBlcnJvcjogJXMgKCVkKVxuIiwKKwkJCSBzdHJlYW1f ZXJyb3Jfc3RyKGVyciksIGVycik7CisJCXJldHVybiBmYWxzZTsKKwl9CisJaWYgKGxlbiAhPSAw KSB7CisJCWlndF93YXJuKCJFeHBlY3RlZCBhbiBlbXB0eSByZXNwb25zZSwgZ290ICV6dSBieXRl c1xuIiwgbGVuKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQorCisv KioKKyAqIGNoYW1lbGl1bV9zdHJlYW1fYXVkaW9fZm9ybWF0OgorICoKKyAqIEdldHMgdGhlIGZv cm1hdCB1c2VkIGZvciBhdWRpbyBwYWdlcy4KKyAqCisgKiBEYXRhIHdpbGwgYWx3YXlzIGJlIGNh cHR1cmVkIGluIHJhdyBwYWdlcyBvZiBTMzJfTEUgZWxlbWVudHMuIFRoaXMgZnVuY3Rpb24KKyAq IGV4cG9zZXMgdGhlIHNhbXBsaW5nIHJhdGUgYW5kIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisg Ki8KK3ZvaWQgY2hhbWVsaXVtX3N0cmVhbV9hdWRpb19mb3JtYXQoc3RydWN0IGNoYW1lbGl1bV9z dHJlYW0gKnN0cmVhbSwKKwkJCQkgICBpbnQgKnJhdGUsIGludCAqY2hhbm5lbHMpCit7CisJLyog VE9ETzogdGhlIENoYW1lbGl1bSBzdHJlYW1pbmcgc2VydmVyIGRvZXNuJ3QgZXhwb3NlIHRob3Nl IHlldC4KKwkgKiBKdXN0IGhhcmRjb2RlIHRoZSB2YWx1ZXMgZm9yIG5vdy4gKi8KKwkqcmF0ZSA9 IDQ4MDAwOworCSpjaGFubmVscyA9IDg7Cit9CisKKy8qKgorICogY2hhbWVsaXVtX3N0cmVhbV9p bml0OgorICoKKyAqIENvbm5lY3RzIHRvIHRoZSBDaGFtZWxpdW0gc3RyZWFtaW5nIHNlcnZlci4K KyAqLworc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNoYW1lbGl1bV9zdHJlYW1faW5pdCh2b2lk KQoreworCXN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQ7CisKKwljbGllbnQgPSBjYWxs b2MoMSwgc2l6ZW9mKCpjbGllbnQpKTsKKworCWlmICghY2hhbWVsaXVtX3N0cmVhbV9yZWFkX2Nv bmZpZyhjbGllbnQpKQorCQlnb3RvIGVycm9yX2NsaWVudDsKKwlpZiAoIWNoYW1lbGl1bV9zdHJl YW1fY29ubmVjdChjbGllbnQpKQorCQlnb3RvIGVycm9yX2NsaWVudDsKKwlpZiAoIWNoYW1lbGl1 bV9zdHJlYW1fY2hlY2tfdmVyc2lvbihjbGllbnQpKQorCQlnb3RvIGVycm9yX2ZkOworCisJcmV0 dXJuIGNsaWVudDsKKworZXJyb3JfZmQ6CisJY2xvc2UoY2xpZW50LT5mZCk7CitlcnJvcl9jbGll bnQ6CisJZnJlZShjbGllbnQpOworCXJldHVybiBOVUxMOworfQorCit2b2lkIGNoYW1lbGl1bV9z dHJlYW1fZGVpbml0KHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQpCit7CisJaWYgKGNs b3NlKGNsaWVudC0+ZmQpICE9IDApCisJCWlndF93YXJuKCJjbG9zZSBmYWlsZWQ6ICVzXG4iLCBz dHJlcnJvcihlcnJubykpOworCWZyZWUoY2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf Y2hhbWVsaXVtX3N0cmVhbS5oIGIvbGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmRlNGU5OTMxCi0tLSAvZGV2L251bGwKKysrIGIv bGliL2lndF9jaGFtZWxpdW1fc3RyZWFtLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IFNpbW9uIFNlciA8c2ltb24uc2Vy QGludGVsLmNvbT4KKyAqLworCisjaWZuZGVmIElHVF9DSEFNRUxJVU1fU1RSRUFNX0gKKyNkZWZp bmUgSUdUX0NIQU1FTElVTV9TVFJFQU1fSAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKK2VudW0g Y2hhbWVsaXVtX3N0cmVhbV9yZWFsdGltZV9tb2RlIHsKKwlDSEFNRUxJVU1fU1RSRUFNX1JFQUxU SU1FX05PTkUgPSAwLAorCS8qIHN0b3AgZHVtcGluZyB3aGVuIG92ZXJmbG93ICovCisJQ0hBTUVM SVVNX1NUUkVBTV9SRUFMVElNRV9TVE9QX1dIRU5fT1ZFUkZMT1cgPSAxLAorCS8qIGRyb3AgZGF0 YSBvbiBvdmVyZmxvdyAqLworCUNIQU1FTElVTV9TVFJFQU1fUkVBTFRJTUVfQkVTVF9FRkZPUlQg PSAyLAorfTsKKworc3RydWN0IGNoYW1lbGl1bV9zdHJlYW07CisKK3N0cnVjdCBjaGFtZWxpdW1f c3RyZWFtICpjaGFtZWxpdW1fc3RyZWFtX2luaXQodm9pZCk7Cit2b2lkIGNoYW1lbGl1bV9zdHJl YW1fZGVpbml0KHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQpOworYm9vbCBjaGFtZWxp dW1fc3RyZWFtX2R1bXBfcmVhbHRpbWVfYXVkaW8oc3RydWN0IGNoYW1lbGl1bV9zdHJlYW0gKmNs aWVudCwKKwkJCQkJICBlbnVtIGNoYW1lbGl1bV9zdHJlYW1fcmVhbHRpbWVfbW9kZSBtb2RlKTsK K3ZvaWQgY2hhbWVsaXVtX3N0cmVhbV9hdWRpb19mb3JtYXQoc3RydWN0IGNoYW1lbGl1bV9zdHJl YW0gKnN0cmVhbSwKKwkJCQkgICBpbnQgKnJhdGUsIGludCAqY2hhbm5lbHMpOworYm9vbCBjaGFt ZWxpdW1fc3RyZWFtX3JlY2VpdmVfcmVhbHRpbWVfYXVkaW8oc3RydWN0IGNoYW1lbGl1bV9zdHJl YW0gKmNsaWVudCwKKwkJCQkJICAgICBzaXplX3QgKnBhZ2VfY291bnQsCisJCQkJCSAgICAgaW50 MzJfdCAqKmJ1Ziwgc2l6ZV90ICpidWZfbGVuKTsKK2Jvb2wgY2hhbWVsaXVtX3N0cmVhbV9zdG9w X3JlYWx0aW1lX2F1ZGlvKHN0cnVjdCBjaGFtZWxpdW1fc3RyZWFtICpjbGllbnQpOworCisjZW5k aWYKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZAppbmRleCA4 OWRlMDZlNi4uODE3ODVkZGMgMTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIv bWVzb24uYnVpbGQKQEAgLTkxLDcgKzkxLDcgQEAgaWYgdmFsZ3JpbmQuZm91bmQoKQogZW5kaWYK IAogaWYgZ3NsLmZvdW5kKCkKLQlsaWJfZGVwcyArPSBbIGdzbCBdCisJbGliX2RlcHMgKz0gZ3Ns CiAJbGliX3NvdXJjZXMgKz0gWyAnaWd0X2ZyYW1lLmMnLCAnaWd0X2F1ZGlvLmMnIF0KIGVuZGlm CiAKQEAgLTEwMCw5ICsxMDAsMTAgQEAgaWYgYWxzYS5mb3VuZCgpCiAJbGliX3NvdXJjZXMgKz0g J2lndF9hbHNhLmMnCiBlbmRpZgogCi1pZiBjaGFtZWxpdW0uZm91bmQoKQoraWYgY2hhbWVsaXVt X2ZvdW5kCiAJbGliX2RlcHMgKz0gY2hhbWVsaXVtCiAJbGliX3NvdXJjZXMgKz0gJ2lndF9jaGFt ZWxpdW0uYycKKwlsaWJfc291cmNlcyArPSAnaWd0X2NoYW1lbGl1bV9zdHJlYW0uYycKIGVuZGlm CiAKIHNyY2RpciA9IGpvaW5fcGF0aHMobWVzb24uc291cmNlX3Jvb3QoKSwgJ3Rlc3RzJykKZGlm ZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKaW5kZXggNTU3NDAwYTUuLmJlNmRm ZjlkIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtNjQsOCAr NjQsNiBAQCBfYnVpbGRfb3ZlcmxheSA9IGZhbHNlCiBfb3ZlcmxheV9yZXF1aXJlZCA9IGZhbHNl CiBfYnVpbGRfbWFuID0gZmFsc2UKIF9tYW5fcmVxdWlyZWQgPSBmYWxzZQotX2J1aWxkX2F1ZGlv ID0gZmFsc2UKLV9hdWRpb19yZXF1aXJlZCA9IGZhbHNlCiBfYnVpbGRfY2hhbWVsaXVtID0gZmFs c2UKIF9jaGFtZWxpdW1fcmVxdWlyZWQgPSBmYWxzZQogX2J1aWxkX2RvY3MgPSBmYWxzZQpAQCAt NzksNyArNzcsNiBAQCBidWlsZF9vdmVybGF5ID0gZ2V0X29wdGlvbignYnVpbGRfb3ZlcmxheScp CiBvdmVybGF5X2JhY2tlbmRzID0gZ2V0X29wdGlvbignb3ZlcmxheV9iYWNrZW5kcycpCiBidWls ZF9tYW4gPSBnZXRfb3B0aW9uKCdidWlsZF9tYW4nKQogd2l0aF92YWxncmluZCA9IGdldF9vcHRp b24oJ3dpdGhfdmFsZ3JpbmQnKQotYnVpbGRfYXVkaW8gPSBnZXRfb3B0aW9uKCdidWlsZF9hdWRp bycpCiBidWlsZF9jaGFtZWxpdW0gPSBnZXRfb3B0aW9uKCdidWlsZF9jaGFtZWxpdW0nKQogYnVp bGRfZG9jcyA9IGdldF9vcHRpb24oJ2J1aWxkX2RvY3MnKQogYnVpbGRfdGVzdHMgPSBnZXRfb3B0 aW9uKCdidWlsZF90ZXN0cycpCkBAIC05MSw4ICs4OCw2IEBAIF9idWlsZF9vdmVybGF5ID0gYnVp bGRfb3ZlcmxheSAhPSAnZmFsc2UnCiBfb3ZlcmxheV9yZXF1aXJlZCA9IGJ1aWxkX292ZXJsYXkg PT0gJ3RydWUnCiBfYnVpbGRfbWFuID0gYnVpbGRfbWFuICE9ICdmYWxzZScKIF9tYW5fcmVxdWly ZWQgPSBidWlsZF9tYW4gPT0gJ3RydWUnCi1fYnVpbGRfYXVkaW8gPSBidWlsZF9hdWRpbyAhPSAn ZmFsc2UnCi1fYXVkaW9fcmVxdWlyZWQgPSBidWlsZF9hdWRpbyA9PSAndHJ1ZScKIF9idWlsZF9j aGFtZWxpdW0gPSBidWlsZF9jaGFtZWxpdW0gIT0gJ2ZhbHNlJwogX2NoYW1lbGl1bV9yZXF1aXJl ZCA9IGJ1aWxkX2NoYW1lbGl1bSA9PSAndHJ1ZScKIF9idWlsZF9kb2NzID0gYnVpbGRfZG9jcyAh PSAnZmFsc2UnCkBAIC0xNjYsMjYgKzE2MSw2IEBAIGNhaXJvID0gZGVwZW5kZW5jeSgnY2Fpcm8n LCB2ZXJzaW9uIDogJz4xLjEyLjAnLCByZXF1aXJlZCA6IHRydWUpCiBsaWJ1ZGV2ID0gZGVwZW5k ZW5jeSgnbGlidWRldicsIHJlcXVpcmVkIDogdHJ1ZSkKIGdsaWIgPSBkZXBlbmRlbmN5KCdnbGli LTIuMCcsIHJlcXVpcmVkIDogdHJ1ZSkKIAotZ3NsID0gbnVsbF9kZXAKLWFsc2EgPSBudWxsX2Rl cAotaWYgX2J1aWxkX2F1ZGlvIG9yIF9idWlsZF9jaGFtZWxpdW0KLQlnc2wgPSBkZXBlbmRlbmN5 KCdnc2wnLCByZXF1aXJlZCA6IF9hdWRpb19yZXF1aXJlZCBvciBfY2hhbWVsaXVtX3JlcXVpcmVk KQotZW5kaWYKLWlmIF9idWlsZF9hdWRpbwotCWFsc2EgPSBkZXBlbmRlbmN5KCdhbHNhJywgcmVx dWlyZWQgOiBfYXVkaW9fcmVxdWlyZWQpCi1lbmRpZgotCi1hdWRpb2luZm8gPSAnTm8nCi1pZiBf YnVpbGRfYXVkaW8gYW5kIGFsc2EuZm91bmQoKSBhbmQgZ3NsLmZvdW5kKCkKLQlhdWRpb2luZm8g PSAnWWVzJwotZWxzZQotCWlmIF9hdWRpb19yZXF1aXJlZAotCQllcnJvcignQ2Fubm90IGJ1aWxk IGF1ZGlvIHRlc3QgZHVlIHRvIG1pc3NpbmcgZGVwZW5kZW5jaWVzJykKLQllbmRpZgotCV9idWls ZF9hdWRpbyA9IGZhbHNlCi1lbmRpZgotYnVpbGRfaW5mbyArPSAnQnVpbGQgYXVkaW8gdGVzdDog JyArIGF1ZGlvaW5mbwotCiB4bWxycGMgPSBkZXBlbmRlbmN5KCd4bWxycGMnLCByZXF1aXJlZCA6 IGZhbHNlKQogeG1scnBjX3V0aWwgPSBkZXBlbmRlbmN5KCd4bWxycGNfdXRpbCcsIHJlcXVpcmVk IDogZmFsc2UpCiB4bWxycGNfY2xpZW50ID0gZGVwZW5kZW5jeSgneG1scnBjX2NsaWVudCcsIHJl cXVpcmVkIDogZmFsc2UpCkBAIC0xOTcsMjEgKzE3MiwzMiBAQCBpZiBub3QgeG1scnBjLmZvdW5k KCkgYW5kIHhtbHJwY19jbWQuZm91bmQoKQogCiAJaWYgbGlic19jbWQucmV0dXJuY29kZSgpID09 IDAgYW5kIGNmbGFnc19jbWQucmV0dXJuY29kZSgpID09IDAKIAkJeG1scnBjID0gZGVjbGFyZV9k ZXBlbmRlbmN5KGNvbXBpbGVfYXJnczogY2ZsYWdzX2NtZC5zdGRvdXQoKS5zdHJpcCgpLnNwbGl0 KCksCi0JCQkJCSAgIGxpbmtfYXJncyA6IGxpYnNfY21kLnN0ZG91dCgpLnN0cmlwKCkuc3BsaXQo KSkKKwkJCQkJICAgIGxpbmtfYXJncyA6IGxpYnNfY21kLnN0ZG91dCgpLnN0cmlwKCkuc3BsaXQo KSkKIAkJeG1scnBjX3V0aWwgPSBkZWNsYXJlX2RlcGVuZGVuY3koKQogCQl4bWxycGNfY2xpZW50 ID0gZGVjbGFyZV9kZXBlbmRlbmN5KCkKIAllbmRpZgogZW5kaWYKIAorZ3NsID0gbnVsbF9kZXAK K2Fsc2EgPSBudWxsX2RlcAogY2hhbWVsaXVtID0gbnVsbF9kZXAKK2NoYW1lbGl1bV9mb3VuZCA9 IGZhbHNlICMgVE9ETzogdXNlIGEgZGlzYWJsZXIgb2JqZWN0IGluc3RlYWQKIGNoYW1lbGl1bWlu Zm8gPSAnTm8nCi1pZiBfYnVpbGRfY2hhbWVsaXVtIGFuZCBnc2wuZm91bmQoKSBhbmQgeG1scnBj LmZvdW5kKCkgYW5kIHhtbHJwY191dGlsLmZvdW5kKCkgYW5kIHhtbHJwY19jbGllbnQuZm91bmQo KQotCWNoYW1lbGl1bSA9IGRlY2xhcmVfZGVwZW5kZW5jeShkZXBlbmRlbmNpZXMgOiBbIHhtbHJw YywKLQkJCQkJCQl4bWxycGNfdXRpbCwgeG1scnBjX2NsaWVudF0pCi0JY29uZmlnLnNldCgnSEFW RV9DSEFNRUxJVU0nLCAxKQotCWNoYW1lbGl1bWluZm8gPSAnWWVzJwotZWxpZiBfY2hhbWVsaXVt X3JlcXVpcmVkCi0JZXJyb3IoJ0Nhbm5vdCBidWlsZCBjaGFtZWxpdW0gdGVzdCBkdWUgdG8gbWlz c2luZyBkZXBlbmRlbmNpZXMnKQoraWYgX2J1aWxkX2NoYW1lbGl1bQorCWdzbCA9IGRlcGVuZGVu Y3koJ2dzbCcsIHJlcXVpcmVkIDogX2NoYW1lbGl1bV9yZXF1aXJlZCkKKwlhbHNhID0gZGVwZW5k ZW5jeSgnYWxzYScsIHJlcXVpcmVkIDogX2NoYW1lbGl1bV9yZXF1aXJlZCkKKwljaGFtZWxpdW0g PSBkZWNsYXJlX2RlcGVuZGVuY3koZGVwZW5kZW5jaWVzIDogWworCQl4bWxycGMsCisJCXhtbHJw Y191dGlsLAorCQl4bWxycGNfY2xpZW50LAorCQlnc2wsCisJCWFsc2EsCisJXSwgcmVxdWlyZWQg OiBfY2hhbWVsaXVtX3JlcXVpcmVkKQorCWlmIHhtbHJwYy5mb3VuZCgpIGFuZCB4bWxycGNfdXRp bC5mb3VuZCgpIGFuZCB4bWxycGNfY2xpZW50LmZvdW5kKCkgYW5kIGdzbC5mb3VuZCgpIGFuZCBh bHNhLmZvdW5kKCkKKwkJY29uZmlnLnNldCgnSEFWRV9DSEFNRUxJVU0nLCAxKQorCQljaGFtZWxp dW1pbmZvID0gJ1llcycKKwkJY2hhbWVsaXVtX2ZvdW5kID0gdHJ1ZQorCWVuZGlmCiBlbmRpZgog YnVpbGRfaW5mbyArPSAnQnVpbGQgQ2hhbWVsaXVtIHRlc3Q6ICcgKyBjaGFtZWxpdW1pbmZvCiAK ZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKaW5kZXgg MGNkM2IzNTAuLjg4OGVmZTU2IDEwMDY0NAotLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysgYi9t ZXNvbl9vcHRpb25zLnR4dApAQCAtMTAsMTIgKzEwLDYgQEAgb3B0aW9uKCdvdmVybGF5X2JhY2tl bmRzJywKICAgICAgICBjaG9pY2VzIDogWyAnYXV0bycsICd4JywgJ3h2JyBdLAogICAgICAgIGRl c2NyaXB0aW9uIDogJ092ZXJsYXkgYmFja2VuZHMgdG8gZW5hYmxlJykKIAotb3B0aW9uKCdidWls ZF9hdWRpbycsCi0gICAgICAgdHlwZSA6ICdjb21ibycsCi0gICAgICAgdmFsdWUgOiAnYXV0bycs Ci0gICAgICAgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCi0gICAgICAgZGVz Y3JpcHRpb24gOiAnQnVpbGQgYXVkaW8gdGVzdCcpCi0KIG9wdGlvbignYnVpbGRfY2hhbWVsaXVt JywKICAgICAgICB0eXBlIDogJ2NvbWJvJywKICAgICAgICB2YWx1ZSA6ICdhdXRvJywKZGlmZiAt LWdpdCBhL3Rlc3RzL2F1ZGlvLmMgYi90ZXN0cy9hdWRpby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1NjA4NzZhMy4uMDAwMDAwMDAKLS0tIGEvdGVzdHMvYXVkaW8uYworKysgL2Rl di9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwg Q29ycG9yYXRpb24KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK LSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Ci0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKLSAqIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCi0gKiBJTiBUSEUgU09GVFdBUkUu Ci0gKgotICogQXV0aG9yczoKLSAqICBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dz a2lAbGludXguaW50ZWwuY29tPgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl ICJpZ3QuaCIKLQotI2RlZmluZSBQTEFZQkFDS19DSEFOTkVMUwkyCi0jZGVmaW5lIFBMQVlCQUNL X0ZSQU1FUwkJMTAyNAotCi0jZGVmaW5lIENBUFRVUkVfU0FNUExFX1JBVEUJNDgwMDAKLSNkZWZp bmUgQ0FQVFVSRV9DSEFOTkVMUwkyCi0jZGVmaW5lIENBUFRVUkVfREVWSUNFX05BTUUJImRlZmF1 bHQiCi0jZGVmaW5lIENBUFRVUkVfRlJBTUVTCQkyMDQ4Ci0KLSNkZWZpbmUgUlVOX1RJTUVPVVQJ CTIwMDAKLQotc3RydWN0IHRlc3RfZGF0YSB7Ci0Jc3RydWN0IGFsc2EgKmFsc2E7Ci0Jc3RydWN0 IGF1ZGlvX3NpZ25hbCAqc2lnbmFsOwotCi0JaW50IHN0cmVhazsKLX07Ci0KLXN0YXRpYyBpbnQg c2FtcGxpbmdfcmF0ZXNbXSA9IHsKLQkzMjAwMCwKLQk0NDEwMCwKLQk0ODAwMCwKLQk4ODIwMCwK LQk5NjAwMCwKLQkxNzY0MDAsCi0JMTkyMDAwLAotfTsKLQotc3RhdGljIGludCBzYW1wbGluZ19y YXRlc19jb3VudCA9IHNpemVvZihzYW1wbGluZ19yYXRlcykgLyBzaXplb2YoaW50KTsKLQotc3Rh dGljIGludCB0ZXN0X2ZyZXF1ZW5jaWVzW10gPSB7Ci0JMzAwLAotCTYwMCwKLQkxMjAwLAotCTgw MDAwLAotCTEwMDAwLAotfTsKLQotc3RhdGljIGludCB0ZXN0X2ZyZXF1ZW5jaWVzX2NvdW50ID0g c2l6ZW9mKHRlc3RfZnJlcXVlbmNpZXMpIC8gc2l6ZW9mKGludCk7Ci0KLXN0YXRpYyBpbnQgb3V0 cHV0X2NhbGxiYWNrKHZvaWQgKmRhdGEsIHNob3J0ICpidWZmZXIsIGludCBmcmFtZXMpCi17Ci0J c3RydWN0IHRlc3RfZGF0YSAqdGVzdF9kYXRhID0gKHN0cnVjdCB0ZXN0X2RhdGEgKikgZGF0YTsK LQotCWF1ZGlvX3NpZ25hbF9maWxsKHRlc3RfZGF0YS0+c2lnbmFsLCBidWZmZXIsIGZyYW1lcyk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBpbnB1dF9jYWxsYmFjayh2b2lkICpkYXRh LCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKQotewotCXN0cnVjdCB0ZXN0X2RhdGEgKnRlc3Rf ZGF0YSA9IChzdHJ1Y3QgdGVzdF9kYXRhICopIGRhdGE7Ci0JYm9vbCBkZXRlY3Q7Ci0KLQlkZXRl Y3QgPSBhdWRpb19zaWduYWxfZGV0ZWN0KHRlc3RfZGF0YS0+c2lnbmFsLCBDQVBUVVJFX0NIQU5O RUxTLAotCQkJCSAgICAgQ0FQVFVSRV9TQU1QTEVfUkFURSwgYnVmZmVyLCBmcmFtZXMpOwotCWlm IChkZXRlY3QpCi0JCXRlc3RfZGF0YS0+c3RyZWFrKys7Ci0JZWxzZQotCQl0ZXN0X2RhdGEtPnN0 cmVhayA9IDA7Ci0KLQkvKiBBIHN0cmVhayBvZiAzIGdpdmVzIGNvbmZpZGVuY2UgdGhhdCB0aGUg c2lnbmFsIGlzIGdvb2QuICovCi0JaWYgKHRlc3RfZGF0YS0+c3RyZWFrID09IDMpCi0JCXJldHVy biAxOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlc3RfaW50ZWdyaXR5KGNvbnN0 IGNoYXIgKmRldmljZV9uYW1lKQotewotCXN0cnVjdCB0ZXN0X2RhdGEgZGF0YTsKLQlpbnQgc2Ft cGxpbmdfcmF0ZTsKLQlib29sIHJ1biA9IGZhbHNlOwotCWJvb2wgdGVzdDsKLQlpbnQgaSwgajsK LQlpbnQgcmV0OwotCi0JZGF0YS5hbHNhID0gYWxzYV9pbml0KCk7Ci0JaWd0X2Fzc2VydChkYXRh LmFsc2EpOwotCi0JcmV0ID0gYWxzYV9vcGVuX2lucHV0KGRhdGEuYWxzYSwgQ0FQVFVSRV9ERVZJ Q0VfTkFNRSk7Ci0JaWd0X2Fzc2VydChyZXQgPj0gMCk7Ci0KLQlhbHNhX2NvbmZpZ3VyZV9pbnB1 dChkYXRhLmFsc2EsIENBUFRVUkVfQ0hBTk5FTFMsCi0JCQkgICAgIENBUFRVUkVfU0FNUExFX1JB VEUpOwotCi0JYWxzYV9yZWdpc3Rlcl9pbnB1dF9jYWxsYmFjayhkYXRhLmFsc2EsIGlucHV0X2Nh bGxiYWNrLCAmZGF0YSwKLQkJCQkgICAgIENBUFRVUkVfRlJBTUVTKTsKLQotCWZvciAoaSA9IDA7 IGkgPCBzYW1wbGluZ19yYXRlc19jb3VudDsgaSsrKSB7Ci0JCXJldCA9IGFsc2Ffb3Blbl9vdXRw dXQoZGF0YS5hbHNhLCBkZXZpY2VfbmFtZSk7Ci0JCWlndF9hc3NlcnQocmV0ID49IDApOwotCi0J CXNhbXBsaW5nX3JhdGUgPSBzYW1wbGluZ19yYXRlc1tpXTsKLQotCQl0ZXN0ID0gYWxzYV90ZXN0 X291dHB1dF9jb25maWd1cmF0aW9uKGRhdGEuYWxzYSwKLQkJCQkJCSAgICAgIFBMQVlCQUNLX0NI QU5ORUxTLAotCQkJCQkJICAgICAgc2FtcGxpbmdfcmF0ZSk7Ci0JCWlmICghdGVzdCkgewotCQkJ YWxzYV9jbG9zZV9vdXRwdXQoZGF0YS5hbHNhKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJaWd0 X2RlYnVnKCJUZXN0aW5nIHdpdGggc2FtcGxpbmcgcmF0ZSAlZFxuIiwgc2FtcGxpbmdfcmF0ZSk7 Ci0KLQkJYWxzYV9jb25maWd1cmVfb3V0cHV0KGRhdGEuYWxzYSwgUExBWUJBQ0tfQ0hBTk5FTFMs Ci0JCQkJICAgICAgIHNhbXBsaW5nX3JhdGUpOwotCi0JCWRhdGEuc2lnbmFsID0gYXVkaW9fc2ln bmFsX2luaXQoUExBWUJBQ0tfQ0hBTk5FTFMsCi0JCQkJCQlzYW1wbGluZ19yYXRlKTsKLQkJaWd0 X2Fzc2VydChkYXRhLnNpZ25hbCk7Ci0KLQkJZm9yIChqID0gMDsgaiA8IHRlc3RfZnJlcXVlbmNp ZXNfY291bnQ7IGorKykKLQkJCWF1ZGlvX3NpZ25hbF9hZGRfZnJlcXVlbmN5KGRhdGEuc2lnbmFs LAotCQkJCQkJICAgdGVzdF9mcmVxdWVuY2llc1tqXSk7Ci0KLQkJYXVkaW9fc2lnbmFsX3N5bnRo ZXNpemUoZGF0YS5zaWduYWwpOwotCi0JCWFsc2FfcmVnaXN0ZXJfb3V0cHV0X2NhbGxiYWNrKGRh dGEuYWxzYSwgb3V0cHV0X2NhbGxiYWNrLAotCQkJCQkgICAgICAmZGF0YSwgUExBWUJBQ0tfRlJB TUVTKTsKLQotCQlkYXRhLnN0cmVhayA9IDA7Ci0KLQkJcmV0ID0gYWxzYV9ydW4oZGF0YS5hbHNh LCBSVU5fVElNRU9VVCk7Ci0JCWlndF9hc3NlcnQocmV0ID4gMCk7Ci0KLQkJYXVkaW9fc2lnbmFs X2NsZWFuKGRhdGEuc2lnbmFsKTsKLQkJZnJlZShkYXRhLnNpZ25hbCk7Ci0KLQkJYWxzYV9jbG9z ZV9vdXRwdXQoZGF0YS5hbHNhKTsKLQotCQlydW4gPSB0cnVlOwotCX0KLQotCS8qIE1ha2Ugc3Vy ZSB3ZSB0ZXN0ZWQgYXQgbGVhc3Qgb25lIGZyZXF1ZW5jeSAqLwotCWlndF9hc3NlcnQocnVuKTsK LQotCWFsc2FfY2xvc2VfaW5wdXQoZGF0YS5hbHNhKTsKLQlmcmVlKGRhdGEuYWxzYSk7Ci19Ci0K LXN0YXRpYyB2b2lkIHRlc3Rfc3VzcGVuZF9yZXN1bWVfaW50ZWdyaXR5KGNvbnN0IGNoYXIgKmRl dmljZV9uYW1lLAotCQkJCQkgIGVudW0gaWd0X3N1c3BlbmRfc3RhdGUgc3RhdGUsCi0JCQkJCSAg ZW51bSBpZ3Rfc3VzcGVuZF90ZXN0IHRlc3QpCi17Ci0JdGVzdF9pbnRlZ3JpdHkoZGV2aWNlX25h bWUpOwotCi0JaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoc3RhdGUsIHRlc3QpOwotCi0J dGVzdF9pbnRlZ3JpdHkoZGV2aWNlX25hbWUpOwotfQotCi1pZ3RfbWFpbgotewotCWlndF9zdWJ0 ZXN0KCJoZG1pLWludGVncml0eSIpCi0JCXRlc3RfaW50ZWdyaXR5KCJIRE1JIik7Ci0KLQlpZ3Rf c3VidGVzdCgiaGRtaS1pbnRlZ3JpdHktYWZ0ZXItc3VzcGVuZCIpCi0JCXRlc3Rfc3VzcGVuZF9y ZXN1bWVfaW50ZWdyaXR5KCJIRE1JIiwgU1VTUEVORF9TVEFURV9NRU0sCi0JCQkJCSAgICAgIFNV U1BFTkRfVEVTVF9OT05FKTsKLQotCWlndF9zdWJ0ZXN0KCJoZG1pLWludGVncml0eS1hZnRlci1o aWJlcm5hdGUiKQotCQl0ZXN0X3N1c3BlbmRfcmVzdW1lX2ludGVncml0eSgiSERNSSIsIFNVU1BF TkRfU1RBVEVfRElTSywKLQkJCQkJICAgICAgU1VTUEVORF9URVNUX0RFVklDRVMpOwotfQpkaWZm IC0tZ2l0IGEvdGVzdHMva21zX2NoYW1lbGl1bS5jIGIvdGVzdHMva21zX2NoYW1lbGl1bS5jCmlu ZGV4IDJkYzEwNDlkLi4yOTc0ZmY2OSAxMDA2NDQKLS0tIGEvdGVzdHMva21zX2NoYW1lbGl1bS5j CisrKyBiL3Rlc3RzL2ttc19jaGFtZWxpdW0uYwpAQCAtNDEzLDcgKzQxMyw3IEBAIHRlc3Rfc3Vz cGVuZF9yZXN1bWVfZWRpZF9jaGFuZ2UoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3Bv cnQgKnBvcnQsCiAKIHN0YXRpYyBpZ3Rfb3V0cHV0X3QgKgogcHJlcGFyZV9vdXRwdXQoZGF0YV90 ICpkYXRhLAotCSAgICAgICBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCisJICAgICAgIHN0 cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwgYm9vbCBzZXRfZWRpZCkKIHsKIAlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CiAJaWd0X291dHB1dF90ICpvdXRwdXQ7CkBA IC00MjgsNyArNDI4LDggQEAgcHJlcGFyZV9vdXRwdXQoZGF0YV90ICpkYXRhLAogCS8qIFRoZSBj aGFtZWxpdW0ncyBkZWZhdWx0IEVESUQgaGFzIGEgbG90IG9mIHJlc29sdXRpb25zLCB3YXkgbW9y ZSB0aGVuCiAJICogd2UgbmVlZCB0byB0ZXN0CiAJICovCi0JY2hhbWVsaXVtX3BvcnRfc2V0X2Vk aWQoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LCBkYXRhLT5lZGlkX2lkKTsKKwlpZiAoc2V0X2VkaWQp CisJCWNoYW1lbGl1bV9wb3J0X3NldF9lZGlkKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwgZGF0YS0+ ZWRpZF9pZCk7CiAKIAljaGFtZWxpdW1fcGx1ZyhkYXRhLT5jaGFtZWxpdW0sIHBvcnQpOwogCXdh aXRfZm9yX2Nvbm5lY3RvcihkYXRhLCBwb3J0LCBEUk1fTU9ERV9DT05ORUNURUQpOwpAQCAtNjEz LDcgKzYxNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfZGlzcGxheV9vbmVfbW9kZShkYXRhX3QgKmRh dGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKIAogCXJlc2V0X3N0YXRlKGRhdGEsIHBv cnQpOwogCi0Jb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCk7CisJb3V0cHV0ID0g cHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCwgdHJ1ZSk7CiAJY29ubmVjdG9yID0gY2hhbWVsaXVt X3BvcnRfZ2V0X2Nvbm5lY3RvcihkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGZhbHNlKTsKIAlwcmlt YXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BS SU1BUlkpOwogCWlndF9hc3NlcnQocHJpbWFyeSk7CkBAIC02NDQsNyArNjQ1LDcgQEAgc3RhdGlj IHZvaWQgdGVzdF9kaXNwbGF5X2FsbF9tb2RlcyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxp dW1fcG9ydCAqcG9ydCwKIAogCXJlc2V0X3N0YXRlKGRhdGEsIHBvcnQpOwogCi0Jb3V0cHV0ID0g cHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCk7CisJb3V0cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0 YSwgcG9ydCwgdHJ1ZSk7CiAJY29ubmVjdG9yID0gY2hhbWVsaXVtX3BvcnRfZ2V0X2Nvbm5lY3Rv cihkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGZhbHNlKTsKIAlwcmltYXJ5ID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwogCWlndF9hc3Nl cnQocHJpbWFyeSk7CkBAIC02NzksNyArNjgwLDcgQEAgdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVsaXVtX3BvcnQgKnBvcnQpCiAKIAlyZXNldF9zdGF0 ZShkYXRhLCBwb3J0KTsKIAotCW91dHB1dCA9IHByZXBhcmVfb3V0cHV0KGRhdGEsIHBvcnQpOwor CW91dHB1dCA9IHByZXBhcmVfb3V0cHV0KGRhdGEsIHBvcnQsIHRydWUpOwogCWNvbm5lY3RvciA9 IGNoYW1lbGl1bV9wb3J0X2dldF9jb25uZWN0b3IoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LCBmYWxz ZSk7CiAJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExB TkVfVFlQRV9QUklNQVJZKTsKIAlpZ3RfYXNzZXJ0KHByaW1hcnkpOwpAQCAtNzEwLDYgKzcxMSwy NjYgQEAgdGVzdF9kaXNwbGF5X2ZyYW1lX2R1bXAoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgY2hhbWVs aXVtX3BvcnQgKnBvcnQpCiAJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKIH0KIAor CisvKiBQbGF5YmFjayBwYXJhbWV0ZXJzIGNvbnRyb2wgdGhlIGF1ZGlvIHNpZ25hbCB3ZSBzeW50 aGVzaXplIGFuZCBzZW5kICovCisjZGVmaW5lIFBMQVlCQUNLX0NIQU5ORUxTIDIKKyNkZWZpbmUg UExBWUJBQ0tfU0FNUExFUyAxMDI0CisKKy8qIENhcHR1cmUgcGFyZW1ldGVycyBjb250cm9sIHRo ZSBhdWRpbyBzaWduYWwgd2UgcmVjZWl2ZSAqLworI2RlZmluZSBDQVBUVVJFX1NBTVBMRVMgMjA0 OAorCisjZGVmaW5lIEFVRElPX0RVUkFUSU9OIDIwMDAgLyogbXMgKi8KKy8qIEEgc3RyZWFrIG9m IDMgZ2l2ZXMgY29uZmlkZW5jZSB0aGF0IHRoZSBzaWduYWwgaXMgZ29vZC4gKi8KKyNkZWZpbmUg TUlOX1NUUkVBSyAzCisKKy8qIFRPRE86IENoYW1lbGl1bSBvbmx5IHN1cHBvcnRzIDQ4S0h6IGZv ciBub3cgKi8KK3N0YXRpYyBpbnQgc2FtcGxpbmdfcmF0ZXNbXSA9IHsKKy8qCTMyMDAwLCAqLwor LyoJNDQxMDAsICovCisJNDgwMDAsCisvKgk4ODIwMCwgKi8KKy8qCTk2MDAwLCAqLworLyoJMTc2 NDAwLCAqLworLyoJMTkyMDAwLCAqLworfTsKKworc3RhdGljIGludCBzYW1wbGluZ19yYXRlc19j b3VudCA9IHNpemVvZihzYW1wbGluZ19yYXRlcykgLyBzaXplb2YoaW50KTsKKworc3RhdGljIGlu dCB0ZXN0X2ZyZXF1ZW5jaWVzW10gPSB7CisJMzAwLAorCTYwMCwKKwkxMjAwLAorCTgwMDAwLAor CTEwMDAwLAorfTsKKworc3RhdGljIGludCB0ZXN0X2ZyZXF1ZW5jaWVzX2NvdW50ID0gc2l6ZW9m KHRlc3RfZnJlcXVlbmNpZXMpIC8gc2l6ZW9mKGludCk7CisKK3N0YXRpYyBpbnQKK291dHB1dF9j YWxsYmFjayh2b2lkICpkYXRhLCBzaG9ydCAqYnVmZmVyLCBpbnQgZnJhbWVzKQoreworCXN0cnVj dCBhdWRpb19zaWduYWwgKnNpZ25hbCA9IChzdHJ1Y3QgYXVkaW9fc2lnbmFsICopIGRhdGE7CisK KwlhdWRpb19zaWduYWxfZmlsbChzaWduYWwsIGJ1ZmZlciwgZnJhbWVzKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgYm9vbAorZG9fdGVzdF9kaXNwbGF5X2F1ZGlvKGRhdGFfdCAqZGF0YSwg c3RydWN0IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAorCQkgICAgICBzdHJ1Y3QgYWxzYSAqYWxzYSwg aW50IHBsYXliYWNrX2NoYW5uZWxzLAorCQkgICAgICBpbnQgcGxheWJhY2tfcmF0ZSkKK3sKKwlp bnQgcmV0LCBjYXB0dXJlX3JhdGUsIGNhcHR1cmVfY2hhbm5lbHMsIG1zZWM7CisJc3RydWN0IGNo YW1lbGl1bV9hdWRpb19maWxlICphdWRpb19maWxlOworCXN0cnVjdCBjaGFtZWxpdW1fc3RyZWFt ICpzdHJlYW07CisJZW51bSBjaGFtZWxpdW1fc3RyZWFtX3JlYWx0aW1lX21vZGUgc3RyZWFtX21v ZGU7CisJc3RydWN0IGF1ZGlvX3NpZ25hbCAqc2lnbmFsOworCWludDMyX3QgKnJlY3YsICpidWY7 CisJZG91YmxlICpjaGFubmVsOworCXNpemVfdCBpLCBzdHJlYWssIHBhZ2VfY291bnQ7CisJc2l6 ZV90IHJlY3ZfbGVuLCBidWZfbGVuLCBidWZfY2FwLCBidWZfc2l6ZSwgY2hhbm5lbF9sZW47CisJ Ym9vbCBvazsKKwljaGFyIGR1bXBfc3VmZml4WzY0XTsKKwljaGFyICpkdW1wX3BhdGggPSBOVUxM OworCWludCBkdW1wX2ZkID0gLTE7CisKKwlpZiAoIWFsc2FfdGVzdF9vdXRwdXRfY29uZmlndXJh dGlvbihhbHNhLCBwbGF5YmFja19jaGFubmVscywKKwkJCQkJICAgIHBsYXliYWNrX3JhdGUpKQor CQlyZXR1cm4gZmFsc2U7CisKKwlpZ3RfZGVidWcoIlRlc3Rpbmcgd2l0aCBwbGF5YmFjayBzYW1w bGluZyByYXRlICVkXG4iLCBwbGF5YmFja19yYXRlKTsKKwlhbHNhX2NvbmZpZ3VyZV9vdXRwdXQo YWxzYSwgcGxheWJhY2tfY2hhbm5lbHMsIHBsYXliYWNrX3JhdGUpOworCisJY2hhbWVsaXVtX3N0 YXJ0X2NhcHR1cmluZ19hdWRpbyhkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGZhbHNlKTsKKworCXN0 cmVhbSA9IGNoYW1lbGl1bV9zdHJlYW1faW5pdCgpOworCWlndF9hc3NlcnQoc3RyZWFtKTsKKwor CXN0cmVhbV9tb2RlID0gQ0hBTUVMSVVNX1NUUkVBTV9SRUFMVElNRV9TVE9QX1dIRU5fT1ZFUkZM T1c7CisJb2sgPSBjaGFtZWxpdW1fc3RyZWFtX2R1bXBfcmVhbHRpbWVfYXVkaW8oc3RyZWFtLCBz dHJlYW1fbW9kZSk7CisJaWd0X2Fzc2VydChvayk7CisKKwljaGFtZWxpdW1fc3RyZWFtX2F1ZGlv X2Zvcm1hdChzdHJlYW0sICZjYXB0dXJlX3JhdGUsICZjYXB0dXJlX2NoYW5uZWxzKTsKKworCWlm IChpZ3RfZnJhbWVfZHVtcF9pc19lbmFibGVkKCkpIHsKKwkJc25wcmludGYoZHVtcF9zdWZmaXgs IHNpemVvZihkdW1wX3N1ZmZpeCksICJjYXB0dXJlLSVkY2gtJWQiLAorCQkJIHBsYXliYWNrX2No YW5uZWxzLCBwbGF5YmFja19yYXRlKTsKKworCQlkdW1wX2ZkID0gYXVkaW9fY3JlYXRlX3dhdl9m aWxlX3MzMl9sZShkdW1wX3N1ZmZpeCwKKwkJCQkJCSAgICAgICBjYXB0dXJlX3JhdGUsCisJCQkJ CQkgICAgICAgY2FwdHVyZV9jaGFubmVscywKKwkJCQkJCSAgICAgICAmZHVtcF9wYXRoKTsKKwkJ aWd0X2Fzc2VydChkdW1wX2ZkID49IDApOworCX0KKworCXNpZ25hbCA9IGF1ZGlvX3NpZ25hbF9p bml0KHBsYXliYWNrX2NoYW5uZWxzLCBwbGF5YmFja19yYXRlKTsKKwlpZ3RfYXNzZXJ0KHNpZ25h bCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgdGVzdF9mcmVxdWVuY2llc19jb3VudDsgaSsrKQorCQlh dWRpb19zaWduYWxfYWRkX2ZyZXF1ZW5jeShzaWduYWwsIHRlc3RfZnJlcXVlbmNpZXNbaV0pOwor CWF1ZGlvX3NpZ25hbF9zeW50aGVzaXplKHNpZ25hbCk7CisKKwlhbHNhX3JlZ2lzdGVyX291dHB1 dF9jYWxsYmFjayhhbHNhLCBvdXRwdXRfY2FsbGJhY2ssIHNpZ25hbCwKKwkJCQkgICAgICBQTEFZ QkFDS19TQU1QTEVTKTsKKworCS8qIFRPRE86IGRldGVjdCBzaWduYWwgaW4gcmVhbC10aW1lICov CisJcmV0ID0gYWxzYV9ydW4oYWxzYSwgQVVESU9fRFVSQVRJT04pOworCWlndF9hc3NlcnQocmV0 ID09IDApOworCisJYWxzYV9jbG9zZV9vdXRwdXQoYWxzYSk7CisKKwkvKiBOZWVkcyB0byBiZSBh IG11bHRpcGxlIG9mIDEyOCwgYmVjYXVzZSB0aGF0J3MgdGhlIG51bWJlciBvZiBzYW1wbGVzCisJ ICogd2UgZ2V0IHBlciBjaGFubmVsIGVhY2ggdGltZSB3ZSByZWNlaXZlIGFuIGF1ZGlvIHBhZ2Ug ZnJvbSB0aGUKKwkgKiBDaGFtZWxpdW0gZGV2aWNlLiAqLworCWNoYW5uZWxfbGVuID0gQ0FQVFVS RV9TQU1QTEVTOworCWNoYW5uZWwgPSBtYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiBjaGFubmVsX2xl bik7CisKKwlidWZfY2FwID0gY2FwdHVyZV9jaGFubmVscyAqIGNoYW5uZWxfbGVuOworCWJ1ZiA9 IG1hbGxvYyhzaXplb2YoaW50MzJfdCkgKiBidWZfY2FwKTsKKwlidWZfbGVuID0gMDsKKworCXJl Y3YgPSBOVUxMOworCXJlY3ZfbGVuID0gMDsKKworCXN0cmVhayA9IDA7CisJbXNlYyA9IDA7CisJ aSA9IDA7CisJd2hpbGUgKHN0cmVhayA8IE1JTl9TVFJFQUsgJiYgbXNlYyA8IEFVRElPX0RVUkFU SU9OKSB7CisJCW9rID0gY2hhbWVsaXVtX3N0cmVhbV9yZWNlaXZlX3JlYWx0aW1lX2F1ZGlvKHN0 cmVhbSwKKwkJCQkJCQkgICAgICZwYWdlX2NvdW50LAorCQkJCQkJCSAgICAgJnJlY3YsICZyZWN2 X2xlbik7CisJCWlndF9hc3NlcnQob2spOworCisJCW1lbWNweSgmYnVmW2J1Zl9sZW5dLCByZWN2 LCByZWN2X2xlbiAqIHNpemVvZihpbnQzMl90KSk7CisJCWJ1Zl9sZW4gKz0gcmVjdl9sZW47CisK KwkJaWYgKGJ1Zl9sZW4gPCBidWZfY2FwKQorCQkJY29udGludWU7CisJCWlndF9hc3NlcnQoYnVm X2xlbiA9PSBidWZfY2FwKTsKKworCQlpZiAoZHVtcF9mZCA+PSAwKSB7CisJCQlidWZfc2l6ZSA9 IGJ1Zl9sZW4gKiBzaXplb2YoaW50MzJfdCk7CisJCQlpZ3RfYXNzZXJ0KHdyaXRlKGR1bXBfZmQs IGJ1ZiwgYnVmX3NpemUpID09IGJ1Zl9zaXplKTsKKwkJfQorCisJCS8qIFRPRE86IGNoZWNrIG90 aGVyIGNoYW5uZWxzIHRvbywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZSAqLworCQlhdWRpb19leHRy YWN0X2NoYW5uZWxfczMyX2xlKGNoYW5uZWwsIGNoYW5uZWxfbGVuLCBidWYsIGJ1Zl9sZW4sCisJ CQkJCSAgICAgY2FwdHVyZV9jaGFubmVscywgMCk7CisKKwkJbXNlYyA9IGkgKiBjaGFubmVsX2xl biAvIChkb3VibGUpIGNhcHR1cmVfcmF0ZSAqIDEwMDA7CisJCWlndF9kZWJ1ZygiRGV0ZWN0aW5n IGF1ZGlvIHNpZ25hbCwgdD0lZCBtc2VjXG4iLCBtc2VjKTsKKworCQlpZiAoYXVkaW9fc2lnbmFs X2RldGVjdChzaWduYWwsIGNhcHR1cmVfcmF0ZSwgY2hhbm5lbCwKKwkJCQkJY2hhbm5lbF9sZW4p KQorCQkJc3RyZWFrKys7CisJCWVsc2UKKwkJCXN0cmVhayA9IDA7CisKKwkJYnVmX2xlbiA9IDA7 CisJCWkrKzsKKwl9CisKKwlpZiAoZHVtcF9mZCA+PSAwKSB7CisJCWNsb3NlKGR1bXBfZmQpOwor CQlpZiAoc3RyZWFrID09IE1JTl9TVFJFQUspIHsKKwkJCS8qIFRlc3Qgc3VjY2VlZGVkLCBubyBu ZWVkIHRvIGtlZXAgdGhlIGNhcHR1cmVkIGRhdGEgKi8KKwkJCXVubGluayhkdW1wX3BhdGgpOwor CQl9IGVsc2UKKwkJCWlndF9kZWJ1ZygiU2F2ZWQgY2FwdHVyZWQgYXVkaW8gZGF0YSB0byAlc1xu IiwgZHVtcF9wYXRoKTsKKwkJZnJlZShkdW1wX3BhdGgpOworCX0KKworCWZyZWUocmVjdik7CisJ ZnJlZShidWYpOworCWZyZWUoY2hhbm5lbCk7CisKKwlvayA9IGNoYW1lbGl1bV9zdHJlYW1fc3Rv cF9yZWFsdGltZV9hdWRpbyhzdHJlYW0pOworCWlndF9hc3NlcnQob2spOworCisJYXVkaW9fZmls ZSA9IGNoYW1lbGl1bV9zdG9wX2NhcHR1cmluZ19hdWRpbyhkYXRhLT5jaGFtZWxpdW0sCisJCQkJ CQkgICAgcG9ydCk7CisJaWYgKGF1ZGlvX2ZpbGUpIHsKKwkJaWd0X2RlYnVnKCJBdWRpbyBmaWxl IHNhdmVkIG9uIHRoZSBDaGFtZWxpdW0gaW4gJXNcbiIsCisJCQkgIGF1ZGlvX2ZpbGUtPnBhdGgp OworCQljaGFtZWxpdW1fZGVzdHJveV9hdWRpb19maWxlKGF1ZGlvX2ZpbGUpOworCX0KKworCWF1 ZGlvX3NpZ25hbF9jbGVhbihzaWduYWwpOworCWZyZWUoc2lnbmFsKTsKKworCWNoYW1lbGl1bV9z dHJlYW1fZGVpbml0KHN0cmVhbSk7CisKKwlpZ3RfYXNzZXJ0KHN0cmVhayA9PSBNSU5fU1RSRUFL KTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfZGlzcGxheV9hdWRpbyhk YXRhX3QgKmRhdGEsIHN0cnVjdCBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKKwkJICAgY29uc3QgY2hh ciAqYXVkaW9fZGV2aWNlKQoreworCWJvb2wgcnVuID0gZmFsc2U7CisJc3RydWN0IGFsc2EgKmFs c2E7CisJaW50IHJldDsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpZ3RfcGxhbmVfdCAqcHJp bWFyeTsKKwlzdHJ1Y3QgaWd0X2ZiIGZiOworCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKKwlkcm1N b2RlQ29ubmVjdG9yICpjb25uZWN0b3I7CisJaW50IGZiX2lkLCBpOworCisJaWd0X3JlcXVpcmUo YWxzYV9oYXNfZXhjbHVzaXZlX2FjY2VzcygpKTsKKworCWFsc2EgPSBhbHNhX2luaXQoKTsKKwlp Z3RfYXNzZXJ0KGFsc2EpOworCisJcmVzZXRfc3RhdGUoZGF0YSwgcG9ydCk7CisKKwkvKiBVc2Ug dGhlIGRlZmF1bHQgQ2hhbWVsaXVtIEVESUQgZm9yIHRoaXMgdGVzdCwgYXMgdGhlIGJhc2UgSUdU IEVESUQKKwkgKiBkb2Vzbid0IGFkdmVydGlzZSBhdWRpbyBzdXBwb3J0IChzZWUgZHJtX2RldGVj dF9tb25pdG9yX2F1ZGlvIGluCisJICogdGhlIGtlcm5lbCB0cmVlKS4gKi8KKwlvdXRwdXQgPSBw cmVwYXJlX291dHB1dChkYXRhLCBwb3J0LCBmYWxzZSk7CisJY29ubmVjdG9yID0gY2hhbWVsaXVt X3BvcnRfZ2V0X2Nvbm5lY3RvcihkYXRhLT5jaGFtZWxpdW0sIHBvcnQsIGZhbHNlKTsKKwlwcmlt YXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BS SU1BUlkpOworCWlndF9hc3NlcnQocHJpbWFyeSk7CisKKwlpZ3RfYXNzZXJ0KGNvbm5lY3Rvci0+ Y291bnRfbW9kZXMgPiAwKTsKKwltb2RlID0gJmNvbm5lY3Rvci0+bW9kZXNbMF07CisKKwlmYl9p ZCA9IGlndF9jcmVhdGVfY29sb3JfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsCisJCQkJCSAgICBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCQkJCSAgICBEUk1fRk9STUFUX1hSR0I4 ODg4LAorCQkJCQkgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCQkJICAgIDAsIDAs IDAsICZmYik7CisJaWd0X2Fzc2VydChmYl9pZCA+IDApOworCisJLyogRW5hYmxlIHRoZSBvdXRw dXQgYmVjYXVzZSB0aGUgcmVjZWl2ZXIgd29uJ3QgdHJ5IHRvIHJlY2VpdmUgYXVkaW8gaWYKKwkg KiBpdCBkb2Vzbid0IHJlY2VpdmUgdmlkZW8uICovCisJZW5hYmxlX291dHB1dChkYXRhLCBwb3J0 LCBvdXRwdXQsIG1vZGUsICZmYik7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2FtcGxpbmdfcmF0ZXNf Y291bnQ7IGkrKykgeworCQlyZXQgPSBhbHNhX29wZW5fb3V0cHV0KGFsc2EsIGF1ZGlvX2Rldmlj ZSk7CisJCWlndF9hc3NlcnQocmV0ID49IDApOworCisJCS8qIFRPRE86IHBsYXliYWNrIG9uIGFs bCA4IGF2YWlsYWJsZSBjaGFubmVscyAqLworCQlydW4gfD0gZG9fdGVzdF9kaXNwbGF5X2F1ZGlv KGRhdGEsIHBvcnQsIGFsc2EsCisJCQkJCSAgICAgUExBWUJBQ0tfQ0hBTk5FTFMsCisJCQkJCSAg ICAgc2FtcGxpbmdfcmF0ZXNbaV0pOworCisJCWFsc2FfY2xvc2Vfb3V0cHV0KGFsc2EpOworCX0K KworCS8qIE1ha2Ugc3VyZSB3ZSB0ZXN0ZWQgYXQgbGVhc3Qgb25lIGZyZXF1ZW5jeS4gKi8KKwlp Z3RfYXNzZXJ0KHJ1bik7CisKKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiKTsKKwor CWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7CisKKwlmcmVlKGFsc2EpOworfQorCisK IHN0YXRpYyB2b2lkIHNlbGVjdF90aWxlZF9tb2RpZmllcihpZ3RfcGxhbmVfdCAqcGxhbmUsIHVp bnQzMl90IHdpZHRoLAogCQkJCSAgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsCiAJ CQkJICB1aW50NjRfdCAqbW9kaWZpZXIpCkBAIC0xMDM3LDcgKzEyOTgsNyBAQCBzdGF0aWMgdm9p ZCB0ZXN0X2Rpc3BsYXlfcGxhbmVzX3JhbmRvbShkYXRhX3QgKmRhdGEsCiAJcmVzZXRfc3RhdGUo ZGF0YSwgcG9ydCk7CiAKIAkvKiBGaW5kIHRoZSBjb25uZWN0b3IgYW5kIHBpcGUuICovCi0Jb3V0 cHV0ID0gcHJlcGFyZV9vdXRwdXQoZGF0YSwgcG9ydCk7CisJb3V0cHV0ID0gcHJlcGFyZV9vdXRw dXQoZGF0YSwgcG9ydCwgdHJ1ZSk7CiAKIAltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRw dXQpOwogCkBAIC0xMzA4LDYgKzE1NjksOSBAQCBpZ3RfbWFpbgogCiAJCWNvbm5lY3Rvcl9zdWJ0 ZXN0KCJkcC1mcmFtZS1kdW1wIiwgRGlzcGxheVBvcnQpCiAJCQl0ZXN0X2Rpc3BsYXlfZnJhbWVf ZHVtcCgmZGF0YSwgcG9ydCk7CisKKwkJY29ubmVjdG9yX3N1YnRlc3QoImRwLWF1ZGlvIiwgRGlz cGxheVBvcnQpCisJCQl0ZXN0X2Rpc3BsYXlfYXVkaW8oJmRhdGEsIHBvcnQsICJIRE1JIik7CiAJ fQogCiAJaWd0X3N1YnRlc3RfZ3JvdXAgewpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQg Yi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCA1MTY3YTZjYy4uNWQzZWVkODIgMTAwNjQ0Ci0tLSBh L3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCkBAIC0yMzgsMjAgKzIz OCwxMyBAQCBpZiBsaWJkcm1fbm91dmVhdS5mb3VuZCgpCiAJdGVzdF9kZXBzICs9IGxpYmRybV9u b3V2ZWF1CiBlbmRpZgogCi1pZiBfYnVpbGRfY2hhbWVsaXVtIGFuZCBjaGFtZWxpdW0uZm91bmQo KQoraWYgY2hhbWVsaXVtX2ZvdW5kCiAJdGVzdF9wcm9ncyArPSBbCiAJCSdrbXNfY2hhbWVsaXVt JywKIAldCiAJdGVzdF9kZXBzICs9IGNoYW1lbGl1bQogZW5kaWYKIAotaWYgX2J1aWxkX2F1ZGlv IGFuZCBhbHNhLmZvdW5kKCkgYW5kIGdzbC5mb3VuZCgpCi0JdGVzdF9wcm9ncyArPSBbCi0JCSdh dWRpbycsCi0JXQotCXRlc3RfZGVwcyArPSBhbHNhCi1lbmRpZgotCiB0ZXN0X2V4ZWN1dGFibGVz ID0gW10KIHRlc3RfbGlzdCA9IFtdCiAKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pZ3QtZGV2