From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=ALL_TRUSTED,URIBL_SBL_A autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 4F5F725A7E for ; Sat, 27 Apr 2024 01:13:47 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============5277843823751358552==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_audacity=3A_update_to_3=2E5=2E1=2E_Update_audacity_and_deps?= To: ml@inbox.vuxu.org From: iFoundSilentHouse Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 27 Apr 2024 01:13:47 +0200 List-Id: Message-Id: <20240426231347.4F5F725A7E@inbox.vuxu.org> GitHub notification mails are now in MIME to allow UTF8. --===============5277843823751358552== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgaUZvdW5kU2lsZW50SG91c2UgYWdh aW5zdCBtYXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRo dWIuY29tL2lGb3VuZFNpbGVudEhvdXNlL3ZvaWQtcGFja2FnZXMgYXVkYWNpdHktMy41Cmh0dHBz Oi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC81MDA0NwoKYXVkYWNp dHk6IHVwZGF0ZSB0byAzLjUuMS4gVXBkYXRlIGF1ZGFjaXR5IGFuZCBkZXBzCi0gSSB0ZXN0ZWQg dGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KLSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxs eSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKHg4Nl82NC1nbGliYykNCg0KTGlsdiBkeW4t bWFuaWZlc3QgY2hhbmdlOiBodHRwczovL2dpdGh1Yi5jb20vbHYyL2xpbHYvY29tbWl0LzE3ZjY3 MDVhZTZkMGU4YzcyMDJmNTk4ZjUyNzE3ODZhMDBhMDY1YmUNClBvcnRhdWRpbyBwYXRjaGVzOiBo dHRwczovL2dpdGh1Yi5jb20vUG9ydEF1ZGlvL3BvcnRhdWRpby9jb21taXQvNDVjMTJlOGQxOGFl NDQzNDAwMGVkMTUyMWU0OWQ5YjVlZjkxZGVkZg0KIG5ldyBhdWRhY2l0eSB3b3JrcyBmaW5lIHdp dGhvdXQgYGF1ZGFjaXR5LWNvbXBhdC5wYXRjaGANCgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzUwMDQ3LnBhdGNoIGlz IGF0dGFjaGVk --===============5277843823751358552== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-audacity-3.5-50047.patch" RnJvbSBjZGUzZDc4ZmFjYjczNmI4YzJlZDk0MWFkMzZmM2I0Njg2ODk3YTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBJRm91bmRTaWxlbnRIb3VzZSA8YWRlcHRzbGFiQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyNiBBcHIgMjAyNCAxOToxMTo0NyArMDYwMApTdWJqZWN0OiBbUEFUQ0gg MS82XSBhdWRhY2l0eTogdXBkYXRlIHRvIDMuNS4xLgoKLS0tCiBzcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlIHwgOCArKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlIGIvc3Jj cGtncy9hdWRhY2l0eS90ZW1wbGF0ZQppbmRleCA3YjgzODExOWFiMjYxMS4uNTYzOGNmMTliOGVm NmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F1 ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQotdmVyc2lvbj0zLjQuMgordmVyc2lvbj0zLjUuMQog cmV2aXNpb249MQogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hlbHBlcj0iY21ha2Utd3hXaWRn ZXRzLWd0azMgcWVtdSIKQEAgLTI1LDcgKzI1LDExIEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0 ZXIsIEdQTC0zLjAtb3ItbGF0ZXIsIENDLUJZLTMuMCIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5h dWRhY2l0eXRlYW0ub3JnIgogY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vYXVkYWNpdHkv YXVkYWNpdHkvcmF3L21hc3Rlci9DSEFOR0VMT0cudHh0IgogZGlzdGZpbGVzPSJodHRwczovL2dp dGh1Yi5jb20vYXVkYWNpdHkvYXVkYWNpdHkvcmVsZWFzZXMvZG93bmxvYWQvQXVkYWNpdHktJHt2 ZXJzaW9ufS9hdWRhY2l0eS1zb3VyY2VzLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZjI4 ZGQ3MThkMmM1YTJhYTlmMjA3YjgzNTE0NDNhOTBjMWYwMmI2NTM3OGNhOTRiY2M3ZmViZGE0MjYz NWU0OAorY2hlY2tzdW09ODc4NmExYmU4ZDYzZjQ3OTNmYzNmMmE1ZjFmNjFjNDQxZTBhNGI5YTdl ZDkxMzdkNTkyNzdhZDVmNzJiZDUxMgorCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4K KwlpNjg2KikgQ0ZMQUdTPSItbXNzZTIiOzsKK2VzYWMKIAogQ1hYRkxBR1M9Ii1EX0ZJTEVfT0ZG U0VUX0JJVFM9NjQiCiAKCkZyb20gYjFhYThhZTE1N2VjMWIzMTI3MGIxZWQ5NzYzZmE5MmM3YTcw YWQ4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFk ZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MDYgKzA2MDAK U3ViamVjdDogW1BBVENIIDIvNl0gbGlsdjogdXBkYXRlIHRvIDAuMjQuMjQuCgotLS0KIHNyY3Br Z3MvbGlsdi90ZW1wbGF0ZSB8IDE3ICsrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg OSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGls di90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlsdi90ZW1wbGF0ZQppbmRleCA1N2Y0YmMzMGI5NTAxYi4u YmYwMzQyOWY0MmMxZTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlsdi90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2xpbHYvdGVtcGxhdGUKQEAgLTEsMTggKzEsMTggQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2xpbHYnCiBwa2duYW1lPWxpbHYKLXZlcnNpb249MC4yNC4xMgotcmV2aXNpb249NAotYnVp bGRfc3R5bGU9d2FmMwotY29uZmlndXJlX2FyZ3M9Ii0tZHluLW1hbmlmZXN0IgordmVyc2lvbj0w LjI0LjI0CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgogbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgc2VyZC1kZXZlbCBzb3JkLWRl dmVsIHNyYXRvbS1kZXZlbCBsaWJzbmRmaWxlLWRldmVsCiAgbHYyIgogc2hvcnRfZGVzYz0iU2lt cGxlIHlldCBwb3dlcmZ1bCBDIEFQSSBmb3IgdXNpbmcgTFYyIHBsdWdpbnMiCiBtYWludGFpbmVy PSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iSVNDIgotaG9tZXBh Z2U9Imh0dHA6Ly9kcm9iaWxsYS5uZXQvc29mdHdhcmUvbGlsdi8iCi1kaXN0ZmlsZXM9Imh0dHA6 Ly9kb3dubG9hZC5kcm9iaWxsYS5uZXQvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCi1j aGVja3N1bT0yNmEzNzc5MDg5MGM5YzFmODM4MjAzYjQ3ZjViMjMyMDMzNGZlOTJjMDJhNGQyNmVi YmUyNjY5ZGJkNzY5MDYxCitob21lcGFnZT0iaHR0cHM6Ly9kcm9iaWxsYS5uZXQvc29mdHdhcmUv bGlsdi5odG1sIgorY2hhbmdlbG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20v bHYyL2xpbHYvbWFzdGVyL05FV1MiCitkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQuZHJvYmls bGEubmV0L2xpbHYtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT02YmI2YmU5Zjg4NTA0MTc2 ZDA2NDJmMTJkZTgwOWIyYjllMmRjNTU2MjFhNjhhZGI4YzdlZGI5OWFlZmFiYjRmCiAKIHBvc3Rf aW5zdGFsbCgpIHsKIAl2bGljZW5zZSBDT1BZSU5HCkBAIC0zMSw3ICszMSw4IEBAIGxpbHYtYmFz aC1jb21wbGV0aW9uX3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iYmFzaC1jb21wbGV0aW9uIGxpbHYi CiAJc2hvcnRfZGVzYys9IiAtIEJhc2ggY29tcGxldGlvbiBmb3IgTGlsdiIKIAlwa2dfaW5zdGFs bCgpIHsKLQkJdmNvbXBsZXRpb24gdXRpbHMvbGlsdi5iYXNoX2NvbXBsZXRpb24gYmFzaAorCQl2 Y29tcGxldGlvbiAke0RFU1RESVJ9L2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9saWx2IGJhc2gKKwkJ cm0gLXIgJHtERVNURElSfS9ldGMKIAl9CiB9CiAKCkZyb20gNjFiNjg5MWNkOWI1ODM1NjkxNmQw ZWViYjU2YjYwZTM4MDIyMjY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5k U2lsZW50SG91c2UgPGFkZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQg MjM6MTg6MTQgKzA2MDAKU3ViamVjdDogW1BBVENIIDMvNl0gcG9ydGF1ZGlvOiB1cGRhdGUgdG8g MTkwNzAwLjIwMjEwNDA2LgoKLS0tCiAuLi4vcG9ydGF1ZGlvL3BhdGNoZXMvYXVkYWNpdHktY29t cGF0LnBhdGNoICAgfCAzNDQgLS0tLS0tLQogc3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9zbmRp by5wYXRjaCAgICAgICAgIHwgODgzIC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9wb3J0YXVk aW8vdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgIHwgIDEyICstCiAzIGZpbGVzIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgMTIzNCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3BvcnRhdWRpby9wYXRjaGVzL2F1ZGFjaXR5LWNvbXBhdC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcG9ydGF1ZGlvL3BhdGNoZXMvc25kaW8ucGF0Y2gKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3BvcnRhdWRpby9wYXRjaGVzL2F1ZGFjaXR5LWNvbXBhdC5wYXRjaCBiL3Ny Y3BrZ3MvcG9ydGF1ZGlvL3BhdGNoZXMvYXVkYWNpdHktY29tcGF0LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBlYjg5ZjBhNjM0NmRiMi4uMDAwMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9hdWRhY2l0eS1jb21wYXQucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwzNDQgKzAsMCBAQAotU291cmNlOiBodHRwczovL2dpdC5zYXZhbm5haC5nbnUu b3JnL2NnaXQvZ3VpeC5naXQvdHJlZS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9wb3J0YXVkaW8tYXVk YWNpdHktY29tcGF0LnBhdGNoCi1VcHN0cmVhbTogTm8KLVJlYXNvbjogQXVkYWNpdHkgbmVlZHMg UGFfR2V0U3RyZWFtSG9zdEFwaVR5cGUgdG8gdXNlIHN5c3RlbSB3aWRlIHBvcnRhdWRpbwotCi0K LWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDEzODE2ZmIu LjgzYzIzOWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgot QEAgLTQyMCw2ICs0MjAsNyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgotICAgICAgICAgICAgICAg ICAgICBETExfTElCUz0iJERMTF9MSUJTIC1sb3NzYXVkaW8iCi0gICAgICAgICAgICAgICAgICAg IExJQlM9IiRMSUJTIC1sb3NzYXVkaW8iCi0gICAgICAgICAgICBmaQotKyAgICAgICAgICAgSU5D TFVERVM9IiRJTkNMVURFUyBwYV91bml4X29zcy5oIgotICAgICAgICAgICAgQUNfREVGSU5FKFBB X1VTRV9PU1MsMSkKLSAgICAgICAgIGZpCi0gCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9wYV91bml4 X29zcy5oIGIvaW5jbHVkZS9wYV91bml4X29zcy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uNjRlMDRjYgotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9wYV91bml4 X29zcy5oCi1AQCAtMCwwICsxLDEwNCBAQAotKyNpZm5kZWYgUEFfVU5JWF9PU1NfSAotKyNkZWZp bmUgUEFfVU5JWF9PU1NfSAotKwotKy8qCi0rICogJElkOiBwb3J0YXVkaW8ucGF0Y2gsdiAxLjEw IDIwMDktMDYtMzAgMDQ6NTI6NTkgbGx1Y2l1cyBFeHAgJAotKyAqIFBvcnRBdWRpbyBQb3J0YWJs ZSBSZWFsLVRpbWUgQXVkaW8gTGlicmFyeQotKyAqIE9TUy1zcGVjaWZpYyBleHRlbnNpb25zCi0r ICoKLSsgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMCBSb3NzIEJlbmNpbmEgYW5kIFBoaWwgQnVy awotKyAqCi0rICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0rICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcwotKyAqICh0aGUgIlNvZnR3YXJlIiksIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sCi0rICogaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwKLSsgKiBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLAotKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sCi0rICogc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotKyAqIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKyAqCi0rICog QW55IHBlcnNvbiB3aXNoaW5nIHRvIGRpc3RyaWJ1dGUgbW9kaWZpY2F0aW9ucyB0byB0aGUgU29m dHdhcmUgaXMKLSsgKiByZXF1ZXN0ZWQgdG8gc2VuZCB0aGUgbW9kaWZpY2F0aW9ucyB0byB0aGUg b3JpZ2luYWwgZGV2ZWxvcGVyIHNvIHRoYXQKLSsgKiB0aGV5IGNhbiBiZSBpbmNvcnBvcmF0ZWQg aW50byB0aGUgY2Fub25pY2FsIHZlcnNpb24uCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSsgKiBFWFBSRVNT IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YKLSsgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuCi0rICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GCi0rICogQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OCi0rICogV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCi0rICoKLSsgKi8KLSsKLSsvKiogQGZpbGUKLSsgKiBPU1Mtc3BlY2lm aWMgUG9ydEF1ZGlvIEFQSSBleHRlbnNpb24gaGVhZGVyIGZpbGUuCi0rICovCi0rCi0rI2lmZGVm IF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rY29uc3QgY2hhciAqUGFP U1NfR2V0U3RyZWFtSW5wdXREZXZpY2UoIFBhU3RyZWFtICpzICk7Ci0rCi0rY29uc3QgY2hhciAq UGFPU1NfR2V0U3RyZWFtT3V0cHV0RGV2aWNlKCBQYVN0cmVhbSAqcyApOwotKwotKyNpZmRlZiBf X2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYKLSsjaWZuZGVmIFBBX1VOSVhfT1NT X0gKLSsjZGVmaW5lIFBBX1VOSVhfT1NTX0gKLSsKLSsvKgotKyAqICRJZDogcG9ydGF1ZGlvLnBh dGNoLHYgMS4xMCAyMDA5LTA2LTMwIDA0OjUyOjU5IGxsdWNpdXMgRXhwICQKLSsgKiBQb3J0QXVk aW8gUG9ydGFibGUgUmVhbC1UaW1lIEF1ZGlvIExpYnJhcnkKLSsgKiBPU1Mtc3BlY2lmaWMgZXh0 ZW5zaW9ucwotKyAqCi0rICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDAgUm9zcyBCZW5jaW5hIGFu ZCBQaGlsIEJ1cmsKLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotKyAqIGEgY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMKLSsgKiAodGhlICJTb2Z0 d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLAotKyAq IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsCi0rICogcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwKLSsgKiBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLAotKyAqIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLSsgKiBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K LSsgKgotKyAqIEFueSBwZXJzb24gd2lzaGluZyB0byBkaXN0cmlidXRlIG1vZGlmaWNhdGlvbnMg dG8gdGhlIFNvZnR3YXJlIGlzCi0rICogcmVxdWVzdGVkIHRvIHNlbmQgdGhlIG1vZGlmaWNhdGlv bnMgdG8gdGhlIG9yaWdpbmFsIGRldmVsb3BlciBzbyB0aGF0Ci0rICogdGhleSBjYW4gYmUgaW5j b3Jwb3JhdGVkIGludG8gdGhlIGNhbm9uaWNhbCB2ZXJzaW9uLgotKyAqCi0rICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0r ICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRgot KyAqIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTgotKyAqIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotKyAqCi0rICovCi0rCi0rLyoqIEBmaWxlCi0rICog T1NTLXNwZWNpZmljIFBvcnRBdWRpbyBBUEkgZXh0ZW5zaW9uIGhlYWRlciBmaWxlLgotKyAqLwot KwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotK2NvbnN0 IGNoYXIgKlBhT1NTX0dldFN0cmVhbUlucHV0RGV2aWNlKCBQYVN0cmVhbSAqcyApOwotKwotK2Nv bnN0IGNoYXIgKlBhT1NTX0dldFN0cmVhbU91dHB1dERldmljZSggUGFTdHJlYW0gKnMgKTsKLSsK LSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0 IGEvaW5jbHVkZS9wYV93aW5fZHMuaCBiL2luY2x1ZGUvcGFfd2luX2RzLmgKLWluZGV4IDVkMzg2 NDEuLmJhMWMyNDUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3BhX3dpbl9kcy5oCi0rKysgYi9pbmNs dWRlL3BhX3dpbl9kcy5oCi1AQCAtODYsNiArODYsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFXaW5E aXJlY3RTb3VuZFN0cmVhbUluZm97Ci0gCi0gfVBhV2luRGlyZWN0U291bmRTdHJlYW1JbmZvOwot IAotKy8qKiBSZXRyaWV2ZSB0aGUgR1VJRCBvZiB0aGUgaW5wdXQgZGV2aWNlLgotKwotKyBAcGFy YW0gc3RyZWFtIFRoZSBzdHJlYW0gdG8gcXVlcnkuCi0rCi0rIEByZXR1cm4gQSBwb2ludGVyIHRv IHRoZSBHVUlELCBvciBOVUxMIGlmIG5vbmUuCi0rKi8KLStMUEdVSUQgUGFXaW5EU19HZXRTdHJl YW1JbnB1dEdVSUQoIFBhU3RyZWFtKiBzICk7Ci0rCi0rLyoqIFJldHJpZXZlIHRoZSBHVUlEIG9m IHRoZSBvdXRwdXQgZGV2aWNlLgotKwotKyBAcGFyYW0gc3RyZWFtIFRoZSBzdHJlYW0gdG8gcXVl cnkuCi0rCi0rIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBHVUlELCBvciBOVUxMIGlmIG5vbmUu Ci0rKi8KLStMUEdVSUQgUGFXaW5EU19HZXRTdHJlYW1PdXRwdXRHVUlEKCBQYVN0cmVhbSogcyAp OwotIAotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvcG9ydGF1 ZGlvLmggYi9pbmNsdWRlL3BvcnRhdWRpby5oCi1pbmRleCA4YTk0YWFmLi45YzhhMjk1IDEwMDY0 NAotLS0tIGEvaW5jbHVkZS9wb3J0YXVkaW8uaAotKysrIGIvaW5jbHVkZS9wb3J0YXVkaW8uaAot QEAgLTExOTcsNiArMTE5NywxNSBAQCBzaWduZWQgbG9uZyBQYV9HZXRTdHJlYW1SZWFkQXZhaWxh YmxlKCBQYVN0cmVhbSogc3RyZWFtICk7Ci0gc2lnbmVkIGxvbmcgUGFfR2V0U3RyZWFtV3JpdGVB dmFpbGFibGUoIFBhU3RyZWFtKiBzdHJlYW0gKTsKLSAKLSAKLSsvKiogUmV0cmlldmUgdGhlIGhv c3QgdHlwZSBoYW5kbGluZyBhbiBvcGVuIHN0cmVhbS4KLSsKLSsgQHJldHVybiBSZXR1cm5zIGEg bm9uLW5lZ2F0aXZlIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgaG9zdCBBUEkgdHlwZQotKyBoYW5k bGluZyBhbiBvcGVuIHN0cmVhbSBvciwgYSBQYUVycm9yQ29kZSAod2hpY2ggYXJlIGFsd2F5cyBu ZWdhdGl2ZSkKLSsgaWYgUG9ydEF1ZGlvIGlzIG5vdCBpbml0aWFsaXplZCBvciBhbiBlcnJvciBp cyBlbmNvdW50ZXJlZC4KLSsqLwotK1BhSG9zdEFwaVR5cGVJZCBQYV9HZXRTdHJlYW1Ib3N0QXBp VHlwZSggUGFTdHJlYW0qIHN0cmVhbSApOwotKwotKwotIC8qIE1pc2NlbGxhbmVvdXMgdXRpbGl0 aWVzICovCi0gCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9wYV9mcm9udC5jIGIvc3JjL2Nv bW1vbi9wYV9mcm9udC5jCi1pbmRleCAxODhjZWU5Li41MmY0NGE2IDEwMDY0NAotLS0tIGEvc3Jj L2NvbW1vbi9wYV9mcm9udC5jCi0rKysgYi9zcmMvY29tbW9uL3BhX2Zyb250LmMKLUBAIC0xMjU3 LDggKzEyNTcsMTAgQEAgUGFFcnJvciBQYV9PcGVuU3RyZWFtKCBQYVN0cmVhbSoqIHN0cmVhbSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9zdEFwaUlucHV0UGFyYW1ldGVy c1B0ciwgaG9zdEFwaU91dHB1dFBhcmFtZXRlcnNQdHIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNhbXBsZVJhdGUsIGZyYW1lc1BlckJ1ZmZlciwgc3RyZWFtRmxhZ3MsIHN0 cmVhbUNhbGxiYWNrLCB1c2VyRGF0YSApOwotIAotLSAgICBpZiggcmVzdWx0ID09IHBhTm9FcnJv ciApCi0rICAgIGlmKCByZXN1bHQgPT0gcGFOb0Vycm9yICkgewotICAgICAgICAgQWRkT3BlblN0 cmVhbSggKnN0cmVhbSApOwotKyAgICAgICAgUEFfU1RSRUFNX1JFUCgqc3RyZWFtKS0+aG9zdEFw aVR5cGUgPSBob3N0QXBpLT5pbmZvLnR5cGU7Ci0rICAgIH0KLSAKLSAKLSAgICAgUEFfTE9HQVBJ KCgiUGFfT3BlblN0cmVhbSByZXR1cm5lZDpcbiIgKSk7Ci1AQCAtMTc3MCw2ICsxNzcyLDMyIEBA IHNpZ25lZCBsb25nIFBhX0dldFN0cmVhbVdyaXRlQXZhaWxhYmxlKCBQYVN0cmVhbSogc3RyZWFt ICkKLSAgICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0rUGFIb3N0QXBpVHlwZUlkIFBhX0dldFN0 cmVhbUhvc3RBcGlUeXBlKCBQYVN0cmVhbSogc3RyZWFtICkKLSt7Ci0rICAgIFBhRXJyb3IgZXJy b3IgPSBQYVV0aWxfVmFsaWRhdGVTdHJlYW1Qb2ludGVyKCBzdHJlYW0gKTsKLSsgICAgUGFIb3N0 QXBpVHlwZUlkIHJlc3VsdDsKLSsKLSsjaWZkZWYgUEFfTE9HX0FQSV9DQUxMUwotKyAgICBQYVV0 aWxfRGVidWdQcmludCgiUGFfR2V0U3RyZWFtSG9zdEFwaVR5cGUgY2FsbGVkOlxuIiApOwotKyAg ICBQYVV0aWxfRGVidWdQcmludCgiXHRQYVN0cmVhbSogc3RyZWFtOiAweCVwXG4iLCBzdHJlYW0g KTsKLSsjZW5kaWYKLSsKLSsgICAgaWYoIGVycm9yID09IHBhTm9FcnJvciApCi0rICAgIHsKLSsg ICAgICAgIHJlc3VsdCA9IFBBX1NUUkVBTV9SRVAoc3RyZWFtKS0+aG9zdEFwaVR5cGU7Ci0rICAg IH0KLSsgICAgZWxzZQotKyAgICB7Ci0rICAgICAgICByZXN1bHQgPSAoUGFIb3N0QXBpVHlwZUlk KSBlcnJvcjsKLSsgICAgfQotKwotKyNpZmRlZiBQQV9MT0dfQVBJX0NBTExTCi0rICAgIFBhVXRp bF9EZWJ1Z1ByaW50KCJQYV9HZXRTdHJlYW1Ib3N0QXBpVHlwZSByZXR1cm5lZDpcbiIgKTsKLSsg ICAgUGFVdGlsX0RlYnVnUHJpbnQoIlx0UGFFcnJvcjogJWQgKCAlcyApXG5cbiIsIHJlc3VsdCwg UGFfR2V0RXJyb3JUZXh0KCByZXN1bHQgKSApOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gcmVz dWx0OwotK30KLSAKLSBQYUVycm9yIFBhX0dldFNhbXBsZVNpemUoIFBhU2FtcGxlRm9ybWF0IGZv cm1hdCApCi0gewotZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vcGFfc3RyZWFtLmMgYi9zcmMvY29t bW9uL3BhX3N0cmVhbS5jCi1pbmRleCAwM2EwZWU2Li5jNDM3NmY5IDEwMDY0NAotLS0tIGEvc3Jj L2NvbW1vbi9wYV9zdHJlYW0uYwotKysrIGIvc3JjL2NvbW1vbi9wYV9zdHJlYW0uYwotQEAgLTkz LDYgKzkzLDggQEAgdm9pZCBQYVV0aWxfSW5pdGlhbGl6ZVN0cmVhbVJlcHJlc2VudGF0aW9uKCBQ YVV0aWxTdHJlYW1SZXByZXNlbnRhdGlvbiAqc3RyZWFtUmUKLSAgICAgc3RyZWFtUmVwcmVzZW50 YXRpb24tPnN0cmVhbUluZm8uaW5wdXRMYXRlbmN5ID0gMC47Ci0gICAgIHN0cmVhbVJlcHJlc2Vu dGF0aW9uLT5zdHJlYW1JbmZvLm91dHB1dExhdGVuY3kgPSAwLjsKLSAgICAgc3RyZWFtUmVwcmVz ZW50YXRpb24tPnN0cmVhbUluZm8uc2FtcGxlUmF0ZSA9IDAuOwotKwotKyAgICBzdHJlYW1SZXBy ZXNlbnRhdGlvbi0+aG9zdEFwaVR5cGUgPSAwOwotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9zcmMv Y29tbW9uL3BhX3N0cmVhbS5oIGIvc3JjL2NvbW1vbi9wYV9zdHJlYW0uaAotaW5kZXggNjc4ZTJh ZC4uNzA1NzJjNyAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vcGFfc3RyZWFtLmgKLSsrKyBiL3Ny Yy9jb21tb24vcGFfc3RyZWFtLmgKLUBAIC0xNTIsNiArMTUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGFVdGlsU3RyZWFtUmVwcmVzZW50YXRpb24gewotICAgICBQYVN0cmVhbUZpbmlzaGVkQ2FsbGJh Y2sgKnN0cmVhbUZpbmlzaGVkQ2FsbGJhY2s7Ci0gICAgIHZvaWQgKnVzZXJEYXRhOwotICAgICBQ YVN0cmVhbUluZm8gc3RyZWFtSW5mbzsKLSsgICAgUGFIb3N0QXBpVHlwZUlkIGhvc3RBcGlUeXBl OwotIH0gUGFVdGlsU3RyZWFtUmVwcmVzZW50YXRpb247Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvc3Jj L2hvc3RhcGkvYWxzYS9wYV9saW51eF9hbHNhLmMgYi9zcmMvaG9zdGFwaS9hbHNhL3BhX2xpbnV4 X2Fsc2EuYwotaW5kZXggNTg0Y2RlOC4uNTU4ZmIzZCAxMDA2NDQKLS0tLSBhL3NyYy9ob3N0YXBp L2Fsc2EvcGFfbGludXhfYWxzYS5jCi0rKysgYi9zcmMvaG9zdGFwaS9hbHNhL3BhX2xpbnV4X2Fs c2EuYwotQEAgLTYyMSw2ICs2MjEsNyBAQCB0eXBlZGVmIHN0cnVjdAotICAgICBTdHJlYW1EaXJl Y3Rpb24gc3RyZWFtRGlyOwotIAotICAgICBzbmRfcGNtX2NoYW5uZWxfYXJlYV90ICpjaGFubmVs QXJlYXM7ICAvKiBOZWVkZWQgZm9yIGNoYW5uZWwgYWRhcHRpb24gKi8KLSsgICAgaW50IGNhcmQ7 Ci0gfSBQYUFsc2FTdHJlYW1Db21wb25lbnQ7Ci0gCi0gLyogSW1wbGVtZW50YXRpb24gc3BlY2lm aWMgc3RyZWFtIHN0cnVjdHVyZSAqLwotQEAgLTE4NzMsNiArMTg3NCw3IEBAIHN0YXRpYyBQYUVy cm9yIFBhQWxzYVN0cmVhbUNvbXBvbmVudF9Jbml0aWFsaXplKCBQYUFsc2FTdHJlYW1Db21wb25l bnQgKnNlbGYsIFBhCi0gewotICAgICBQYUVycm9yIHJlc3VsdCA9IHBhTm9FcnJvcjsKLSAgICAg UGFTYW1wbGVGb3JtYXQgdXNlclNhbXBsZUZvcm1hdCA9IHBhcmFtcy0+c2FtcGxlRm9ybWF0LCBo b3N0U2FtcGxlRm9ybWF0ID0gcGFOb0Vycm9yOwotKyAgICBzbmRfcGNtX2luZm9fdCogcGNtSW5m bzsKLSAgICAgYXNzZXJ0KCBwYXJhbXMtPmNoYW5uZWxDb3VudCA+IDAgKTsKLSAKLSAgICAgLyog TWFrZSBzdXJlIHRoaW5ncyBoYXZlIGFuIGluaXRpYWwgdmFsdWUgKi8KLUBAIC0xOTAwLDYgKzE5 MDIsOSBAQCBzdGF0aWMgUGFFcnJvciBQYUFsc2FTdHJlYW1Db21wb25lbnRfSW5pdGlhbGl6ZSgg UGFBbHNhU3RyZWFtQ29tcG9uZW50ICpzZWxmLCBQYQotICAgICBzZWxmLT5kZXZpY2UgPSBwYXJh bXMtPmRldmljZTsKLSAKLSAgICAgUEFfRU5TVVJFKCBBbHNhT3BlbiggJmFsc2FBcGktPmJhc2VI b3N0QXBpUmVwLCBwYXJhbXMsIHN0cmVhbURpciwgJnNlbGYtPnBjbSApICk7Ci0rCi0rICAgIHNu ZF9wY21faW5mb19hbGxvY2EoICZwY21JbmZvICk7Ci0rICAgIHNlbGYtPmNhcmQgPSBzbmRfcGNt X2luZm9fZ2V0X2NhcmQoIHBjbUluZm8gKTsKLSAgICAgc2VsZi0+bmZkcyA9IGFsc2Ffc25kX3Bj bV9wb2xsX2Rlc2NyaXB0b3JzX2NvdW50KCBzZWxmLT5wY20gKTsKLSAKLSAgICAgUEFfRU5TVVJF KCBob3N0U2FtcGxlRm9ybWF0ID0gUGFVdGlsX1NlbGVjdENsb3Nlc3RBdmFpbGFibGVGb3JtYXQo IEdldEF2YWlsYWJsZUZvcm1hdHMoIHNlbGYtPnBjbSApLCB1c2VyU2FtcGxlRm9ybWF0ICkgKTsK LUBAIC00NjA1LDkgKzQ2MTAsNyBAQCBQYUVycm9yIFBhQWxzYV9HZXRTdHJlYW1JbnB1dENhcmQo IFBhU3RyZWFtKiBzLCBpbnQqIGNhcmQgKQotICAgICAvKiBYWFg6IE1vcmUgZGVzY3JpcHRpdmUg ZXJyb3I/ICovCi0gICAgIFBBX1VOTEVTUyggc3RyZWFtLT5jYXB0dXJlLnBjbSwgcGFEZXZpY2VV bmF2YWlsYWJsZSApOwotIAotLSAgICBhbHNhX3NuZF9wY21faW5mb19hbGxvY2EoICZwY21JbmZv ICk7Ci0tICAgIFBBX0VOU1VSRSggYWxzYV9zbmRfcGNtX2luZm8oIHN0cmVhbS0+Y2FwdHVyZS5w Y20sIHBjbUluZm8gKSApOwotLSAgICAqY2FyZCA9IGFsc2Ffc25kX3BjbV9pbmZvX2dldF9jYXJk KCBwY21JbmZvICk7Ci0rICAgICpjYXJkID0gc3RyZWFtLT5jYXB0dXJlLmNhcmQ7Ci0gCi0gZXJy b3I6Ci0gICAgIHJldHVybiByZXN1bHQ7Ci1AQCAtNDYyNCw5ICs0NjI3LDcgQEAgUGFFcnJvciBQ YUFsc2FfR2V0U3RyZWFtT3V0cHV0Q2FyZCggUGFTdHJlYW0qIHMsIGludCogY2FyZCApCi0gICAg IC8qIFhYWDogTW9yZSBkZXNjcmlwdGl2ZSBlcnJvcj8gKi8KLSAgICAgUEFfVU5MRVNTKCBzdHJl YW0tPnBsYXliYWNrLnBjbSwgcGFEZXZpY2VVbmF2YWlsYWJsZSApOwotIAotLSAgICBhbHNhX3Nu ZF9wY21faW5mb19hbGxvY2EoICZwY21JbmZvICk7Ci0tICAgIFBBX0VOU1VSRSggYWxzYV9zbmRf cGNtX2luZm8oIHN0cmVhbS0+cGxheWJhY2sucGNtLCBwY21JbmZvICkgKTsKLS0gICAgKmNhcmQg PSBhbHNhX3NuZF9wY21faW5mb19nZXRfY2FyZCggcGNtSW5mbyApOwotKyAgICAqY2FyZCA9IHN0 cmVhbS0+cGxheWJhY2suY2FyZDsKLSAKLSBlcnJvcjoKLSAgICAgcmV0dXJuIHJlc3VsdDsKLWRp ZmYgLS1naXQgYS9zcmMvaG9zdGFwaS9jb3JlYXVkaW8vcGFfbWFjX2NvcmVfYmxvY2tpbmcuYyBi L3NyYy9ob3N0YXBpL2NvcmVhdWRpby9wYV9tYWNfY29yZV9ibG9ja2luZy5jCi1pbmRleCA2Nzlj NmJhLi5hNjllMDg1IDEwMDY0NAotLS0tIGEvc3JjL2hvc3RhcGkvY29yZWF1ZGlvL3BhX21hY19j b3JlX2Jsb2NraW5nLmMKLSsrKyBiL3NyYy9ob3N0YXBpL2NvcmVhdWRpby9wYV9tYWNfY29yZV9i bG9ja2luZy5jCi1AQCAtNjYsNiArNjYsOSBAQAotICNpZmRlZiBNT1NYX1VTRV9OT05fQVRPTUlD X0ZMQUdfQklUUwotICMgZGVmaW5lIE9TQXRvbWljT3IzMiggYSwgYiApICggKCooYikpIHw9IChh KSApCi0gIyBkZWZpbmUgT1NBdG9taWNBbmQzMiggYSwgYiApICggKCooYikpICY9IChhKSApCi0r I2VsaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8PSBNQUNfT1NfWF9WRVJTSU9OXzEw XzMKLSsjIGRlZmluZSBPU0F0b21pY09yMzIoIGEsIGIgKSBCaXRPckF0b21pYyggYSwgKFVJbnQz MiAqKSBiICkKLSsjIGRlZmluZSBPU0F0b21pY0FuZDMyKCBhLCBiICkgQml0QW5kQXRvbWljKCBh LCAoVUludDMyICopIGIgKQotICNlbHNlCi0gIyBpbmNsdWRlIDxsaWJrZXJuL09TQXRvbWljLmg+ Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL2hvc3RhcGkvb3NzL3BhX3VuaXhfb3NzLmMgYi9z cmMvaG9zdGFwaS9vc3MvcGFfdW5peF9vc3MuYwotaW5kZXggNTFlOTYzMC4uZjI1N2Q4MCAxMDA2 NDQKLS0tLSBhL3NyYy9ob3N0YXBpL29zcy9wYV91bml4X29zcy5jCi0rKysgYi9zcmMvaG9zdGFw aS9vc3MvcGFfdW5peF9vc3MuYwotQEAgLTIwNDMsMyArMjA0MywyNiBAQCBlcnJvcjoKLSAjZW5k aWYKLSB9Ci0gCi0rY29uc3QgY2hhciAqUGFPU1NfR2V0U3RyZWFtSW5wdXREZXZpY2UoIFBhU3Ry ZWFtKiBzICkKLSt7Ci0rICAgIFBhT3NzU3RyZWFtICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7 Ci0rCi0rICAgIGlmKCBzdHJlYW0tPmNhcHR1cmUgKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHN0 cmVhbS0+Y2FwdHVyZS0+ZGV2TmFtZTsKLSsgICAgfQotKwotKyAgIHJldHVybiBOVUxMOwotK30K LSsKLStjb25zdCBjaGFyICpQYU9TU19HZXRTdHJlYW1PdXRwdXREZXZpY2UoIFBhU3RyZWFtKiBz ICkKLSt7Ci0rICAgIFBhT3NzU3RyZWFtICpzdHJlYW0gPSAoUGFPc3NTdHJlYW0qKXM7Ci0rCi0r ICAgIGlmKCBzdHJlYW0tPnBsYXliYWNrICkKLSsgICAgewotKyAgICAgIHJldHVybiBzdHJlYW0t PnBsYXliYWNrLT5kZXZOYW1lOwotKyAgICB9Ci0rCi0rICAgcmV0dXJuIE5VTEw7Ci0rfQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9wb3J0YXVkaW8vcGF0Y2hlcy9zbmRpby5wYXRjaCBiL3NyY3BrZ3Mv cG9ydGF1ZGlvL3BhdGNoZXMvc25kaW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDlmYzIwOTYwZDU4NjIyLi4wMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3BvcnRhdWRp by9wYXRjaGVzL3NuZGlvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODgzICswLDAgQEAKLWRp ZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA1ZTFhNzY0Li4yNzQ3 ZjczIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDQs NyArNDQsNyBAQCBQQUxJQiA9IGxpYnBvcnRhdWRpby5sYQotIFBBSU5DID0gaW5jbHVkZS9wb3J0 YXVkaW8uaAotIAotIFBBX0xERkxBR1MgPSAkKExERkxBR1MpICQoU0hBUkVEX0ZMQUdTKSAtcnBh dGggJChsaWJkaXIpIC1uby11bmRlZmluZWQgXAotLQkgICAgIC1leHBvcnQtc3ltYm9scy1yZWdl eCAiKFBhfFBhTWFjQ29yZXxQYUphY2t8UGFBbHNhfFBhQXNpb3xQYU9TUylfLioiIFwKLSsJICAg ICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggIihQYXxQYU1hY0NvcmV8UGFKYWNrfFBhQWxzYXxQYUFz aW98UGFPU1N8UGFTbmRpbylfLioiIFwKLSAJICAgICAtdmVyc2lvbi1pbmZvICQoTFRfQ1VSUkVO VCk6JChMVF9SRVZJU0lPTik6JChMVF9BR0UpCi0gCi0gQ09NTU9OX09CSlMgPSBcCi1AQCAtMTQ2 LDYgKzE0Niw3IEBAIFNSQ19ESVJTID0gXAotIAlzcmMvaG9zdGFwaS9kc291bmQgXAotIAlzcmMv aG9zdGFwaS9qYWNrIFwKLSAJc3JjL2hvc3RhcGkvb3NzIFwKLSsJc3JjL2hvc3RhcGkvc25kaW8g XAotIAlzcmMvaG9zdGFwaS93YXNhcGkgXAotIAlzcmMvaG9zdGFwaS93ZG1rcyBcCi0gCXNyYy9o b3N0YXBpL3dtbWUgXAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgot aW5kZXggODNjMjM5YS4uZGIxMWQ2NSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIv Y29uZmlndXJlLmluCi1AQCAtMjQsNiArMjQsMTAgQEAgQUNfQVJHX1dJVEgoYWxzYSwKLSAgICAg ICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWFsc2FdLCBbRW5hYmxlIHN1cHBvcnQgZm9y IEFMU0EgQDw6QGF1dG9kZXRlY3RAOj5AXSksCi0gICAgICAgICAgICAgW3dpdGhfYWxzYT0kd2l0 aHZhbF0pCi0gCi0rQUNfQVJHX1dJVEgoc25kaW8sCi0rICAgICAgICAgICAgQVNfSEVMUF9TVFJJ TkcoWy0td2l0aC1zbmRpb10sIFtFbmFibGUgc3VwcG9ydCBmb3Igc25kaW8gQDw6QGF1dG9kZXRl Y3RAOj5AXSksCi0rICAgICAgICAgICAgW3dpdGhfc25kaW89JHdpdGh2YWxdKQotKwotIEFDX0FS R19XSVRIKGphY2ssCi0gICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1qYWNrXSwg W0VuYWJsZSBzdXBwb3J0IGZvciBKQUNLIEA8OkBhdXRvZGV0ZWN0QDo+QF0pLAotICAgICAgICAg ICAgIFt3aXRoX2phY2s9JHdpdGh2YWxdKQotQEAgLTEyMCw2ICsxMjQsMTAgQEAgaGF2ZV9hbHNh PW5vCi0gaWYgdGVzdCAieCR3aXRoX2Fsc2EiICE9ICJ4bm8iOyB0aGVuCi0gICAgIEFDX0NIRUNL X0xJQihhc291bmQsIHNuZF9wY21fb3BlbiwgaGF2ZV9hbHNhPXllcywgaGF2ZV9hbHNhPW5vKQot IGZpCi0raGF2ZV9zbmRpbz1ubwotK2lmIHRlc3QgIngkd2l0aF9zbmRpbyIgIT0gInhubyI7IHRo ZW4KLSsgICAgQUNfQ0hFQ0tfTElCKHNuZGlvLCBzaW9fb3BlbiwgaGF2ZV9zbmRpbz15ZXMsIGhh dmVfc25kaW89bm8pCi0rZmkKLSBoYXZlX2FzaWhwaT1ubwotIGlmIHRlc3QgIngkd2l0aF9hc2lo cGkiICE9ICJ4bm8iOyB0aGVuCi0gICAgIEFDX0NIRUNLX0xJQihocGksIEhQSV9TdWJTeXNDcmVh dGUsIGhhdmVfYXNpaHBpPXllcywgaGF2ZV9hc2locGk9bm8sIC1sbSkKLUBAIC00MDYsNiArNDE0 LDEzIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCi0gICAgICAgICAgICBBQ19ERUZJTkUoUEFfVVNF X0FMU0EsMSkKLSAgICAgICAgIGZpCi0gCi0rICAgICAgICBpZiBbWyAiJGhhdmVfc25kaW8iID0g InllcyIgLWEgIiR3aXRoX3NuZGlvIiAhPSAibm8iIF1dIDsgdGhlbgotKyAgICAgICAgICAgIERM TF9MSUJTPSIkRExMX0xJQlMgLWxzbmRpbyIKLSsgICAgICAgICAgICBMSUJTPSIkTElCUyAtbHNu ZGlvIgotKyAgICAgICAgICAgIE9USEVSX09CSlM9IiRPVEhFUl9PQkpTIHNyYy9ob3N0YXBpL3Nu ZGlvL3BhX3NuZGlvLm8iCi0rICAgICAgICAgICAgQUNfREVGSU5FKFBBX1VTRV9TTkRJTywxKQot KyAgICAgICAgZmkKLSsKLSAgICAgICAgIGlmIFtbICIkaGF2ZV9qYWNrIiA9ICJ5ZXMiIF0gJiYg WyAiJHdpdGhfamFjayIgIT0gIm5vIiBdXSA7IHRoZW4KLSAgICAgICAgICAgIERMTF9MSUJTPSIk RExMX0xJQlMgJEpBQ0tfTElCUyIKLSAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkSkFDS19D RkxBR1MiCi1AQCAtNTEwLDYgKzUyNSw3IEBAIGNhc2UgIiR0YXJnZXRfb3MiIGluCi0gICAgICAg ICA7OwotICAgICAgKikKLSAJQUNfTVNHX1JFU1VMVChbCi0rICBTbmRpbyAuLi4uLi4uLi4uLi4u Li4uLi4uLi4uLiAkaGF2ZV9zbmRpbwotICAgT1NTIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4g JGhhdmVfb3NzCi0gICBKQUNLIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAkaGF2ZV9qYWNrCi0g XSkKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3BvcnRhdWRpby5oIGIvaW5jbHVkZS9wb3J0YXVkaW8u aAotaW5kZXggOWM4YTI5NS4uZTUzNWEwMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvcG9ydGF1ZGlv LmgKLSsrKyBiL2luY2x1ZGUvcG9ydGF1ZGlvLmgKLUBAIC0yODcsNyArMjg3LDggQEAgdHlwZWRl ZiBlbnVtIFBhSG9zdEFwaVR5cGVJZAotICAgICBwYVdETUtTPTExLAotICAgICBwYUpBQ0s9MTIs Ci0gICAgIHBhV0FTQVBJPTEzLAotLSAgICBwYUF1ZGlvU2NpZW5jZUhQST0xNAotKyAgICBwYUF1 ZGlvU2NpZW5jZUhQST0xNCwKLSsgICAgcGFTbmRpbz0xNQotIH0gUGFIb3N0QXBpVHlwZUlkOwot IAotIAotZGlmZiAtLWdpdCBhL3NyYy9ob3N0YXBpL3NuZGlvL3BhX3NuZGlvLmMgYi9zcmMvaG9z dGFwaS9zbmRpby9wYV9zbmRpby5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uNzI1ZWY0NwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2hvc3RhcGkvc25kaW8vcGFfc25k aW8uYwotQEAgLTAsMCArMSw3NjggQEAKLSsvKgotKyAqIENvcHlyaWdodCAoYykgMjAwOSBBbGV4 YW5kcmUgUmF0Y2hvdiA8YWxleEBjYW91YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsg KiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVk IHRoYXQgdGhlIGFib3ZlCi0rICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwot KyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdB UlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1Qs IElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBX SEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdI RVRIRVIgSU4gQU4KLSsgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIg VE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPHBvbGwu aD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUg PHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzbmRpby5oPgotKwot KyNpbmNsdWRlICJwYV91dGlsLmgiCi0rI2luY2x1ZGUgInBhX2hvc3RhcGkuaCIKLSsjaW5jbHVk ZSAicGFfc3RyZWFtLmgiCi0rI2luY2x1ZGUgInBhX3Byb2Nlc3MuaCIKLSsjaW5jbHVkZSAicGFf YWxsb2NhdGlvbi5oIgotKwotKyNpZiAwCi0rI2RlZmluZSBEUFIoLi4uKSBkbyB7IGZwcmludGYo c3RkZXJyLCBfX1ZBX0FSR1NfXyk7IH0gd2hpbGUgKDApCi0rI2Vsc2UKLSsjZGVmaW5lIERQUigu Li4pIGRvIHt9IHdoaWxlICgwKQotKyNlbmRpZgotKwotKy8qCi0rICogcGVyLXN0cmVhbSBkYXRh Ci0rICovCi0rdHlwZWRlZiBzdHJ1Y3QgUGFTbmRpb1N0cmVhbQotK3sKLSsJUGFVdGlsU3RyZWFt UmVwcmVzZW50YXRpb24gYmFzZTsKLSsJUGFVdGlsQnVmZmVyUHJvY2Vzc29yIGJ1ZnByb2M7CS8q IGZvcm1hdCBjb252ZXJzaW9uICovCi0rCXN0cnVjdCBzaW9faGRsICpoZGw7CQkvKiBoYW5kbGUg Zm9yIGRldmljZSBpL28gKi8KLSsJc3RydWN0IHNpb19wYXIgcGFyOwkJLyogY3VycmVudCBkZXZp Y2UgcGFyYW1ldGVycyAqLwkKLSsJdW5zaWduZWQgbW9kZTsJCQkvKiBTSU9fUExBWSwgU0lPX1JF QyBvciBib3RoICovCi0rCWludCBzdG9wcGVkOwkJCS8qIHN0b3AgcmVxdWVzdGVkIG9yIG5vdCBz dGFydGVkICovCi0rCWludCBhY3RpdmU7CQkJLyogdGhyZWFkIGlzIHJ1bm5pbmcgKi8KLSsJdW5z aWduZWQgbG9uZyBsb25nIHJlYWxwb3M7CS8qIGZyYW1lIG51bWJlciBoL3cgaXMgcHJvY2Vzc2lu ZyAqLwotKwljaGFyICpyYnVmLCAqd2J1ZjsJCS8qIGJvdW5jZSBidWZmZXJzIGZvciBjb252ZXJz aW9ucyAqLwotKwl1bnNpZ25lZCBsb25nIGxvbmcgcnBvcywgd3BvczsJLyogYnl0ZXMgcmVhZC93 cml0dGVuICovCi0rCXB0aHJlYWRfdCB0aHJlYWQ7CQkvKiB0aHJlYWQgb2YgdGhlIGNhbGxiYWNr IGludGVyZmFjZSAqLwotK30gUGFTbmRpb1N0cmVhbTsKLSsKLSsvKgotKyAqIGFwaSAiY2xhc3Mi IGRhdGEsIGNvbW1vbiB0byBhbGwgc3RyZWFtcwotKyAqLwotK3R5cGVkZWYgc3RydWN0IFBhU25k aW9Ib3N0QXBpUmVwcmVzZW50YXRpb24KLSt7Ci0rCVBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlv biBiYXNlOwotKwlQYVV0aWxTdHJlYW1JbnRlcmZhY2UgY2FsbGJhY2s7Ci0rCVBhVXRpbFN0cmVh bUludGVyZmFjZSBibG9ja2luZzsKLSsJLyoKLSsJICogc25kaW8gaGFzIG5vIGRldmljZSBkaXNj b3ZlcnkgbWVjaGFuaXNtIGFuZCBQb3J0QXVkaW8gaGFzCi0rCSAqIG5vIHdheSBvZiBhY2NlcHRp bmcgcmF3IGRldmljZSBzdHJpbmdzIGZyb20gdXNlcnMuCi0rCSAqIE5vcm1hbGx5IHdlIGp1c3Qg ZXhwb3NlIHRoZSBkZWZhdWx0IGRldmljZSwgd2hpY2ggY2FuIGJlCi0rCSAqIGNoYW5nZWQgdmlh IHRoZSBBVURJT0RFVklDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHdlCi0rCSAqIGFsc28g YWxsb3cgc3BlY2lmeWluZyBhIGxpc3Qgb2YgdXAgdG8gMTYgZGV2aWNlcyB2aWEgdGhlCi0rCSAq IFBBX1NORElPX0FVRElPREVWSUNFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsJICoKLSsJICog RXhhbXBsZToKLSsJICogUEFfU05ESU9fQVVESU9ERVZJQ0VTPWRlZmF1bHQ6c25kLzAubW9uaXRv cjpzbmRAcmVtb3RlLzAKLSsJICovCi0rI2RlZmluZSBQQV9TTkRJT19BVURJT0RFVklDRVNfTUFY CTE2Ci0rCVBhRGV2aWNlSW5mbyBkZXZpY2VfaW5mb1tQQV9TTkRJT19BVURJT0RFVklDRVNfTUFY XTsKLSsJUGFEZXZpY2VJbmZvICppbmZvc1tQQV9TTkRJT19BVURJT0RFVklDRVNfTUFYXTsKLSsJ Y2hhciAqYXVkaW9kZXZpY2VzOwotK30gUGFTbmRpb0hvc3RBcGlSZXByZXNlbnRhdGlvbjsKLSsK LSsvKgotKyAqIGNhbGxiYWNrIGludm9rZWQgd2hlbiBibG9ja3MgYXJlIHByb2Nlc3NlZCBieSB0 aGUgaGFyZHdhcmUKLSsgKi8KLStzdGF0aWMgdm9pZAotK3NuZGlvT25Nb3ZlKHZvaWQgKmFkZHIs IGludCBkZWx0YSkKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRpb1N0cmVhbSAqKWFk ZHI7Ci0rCi0rCXMtPnJlYWxwb3MgKz0gZGVsdGE7Ci0rfQotKwotKy8qCi0rICogY29udmVydCBQ QSBlbmNvZGluZyB0byBzbmRpbyBlbmNvZGluZywgcmV0dXJuIHRydWUgb24gc3VjY2VzcwotKyAq LwotK3N0YXRpYyBpbnQKLStzbmRpb1NldEZtdChzdHJ1Y3Qgc2lvX3BhciAqc2lvLCBQYVNhbXBs ZUZvcm1hdCBmbXQpCi0rewotKwlzd2l0Y2ggKGZtdCAmIH5wYU5vbkludGVybGVhdmVkKSB7Ci0r CWNhc2UgcGFJbnQzMjoKLSsJCXNpby0+c2lnID0gMTsKLSsJCXNpby0+Yml0cyA9IDMyOwotKwkJ YnJlYWs7Ci0rCWNhc2UgcGFJbnQyNDoKLSsJCXNpby0+c2lnID0gMTsKLSsJCXNpby0+Yml0cyA9 IDI0OwotKwkJc2lvLT5icHMgPSAzOwkvKiBwYUludDI0IGlzIHBhY2tlZCBmb3JtYXQgKi8KLSsJ CWJyZWFrOwotKwljYXNlIHBhSW50MTY6Ci0rCWNhc2UgcGFGbG9hdDMyOgotKwkJc2lvLT5zaWcg PSAxOwotKwkJc2lvLT5iaXRzID0gMTY7Ci0rCQlicmVhazsKLSsJY2FzZSBwYUludDg6Ci0rCQlz aW8tPnNpZyA9IDE7Ci0rCQlzaW8tPmJpdHMgPSA4OwotKwkJYnJlYWs7Ci0rCWNhc2UgcGFVSW50 ODoKLSsJCXNpby0+c2lnID0gMDsKLSsJCXNpby0+Yml0cyA9IDg7Ci0rCQlicmVhazsKLSsJZGVm YXVsdDoKLSsJCURQUigic25kaW9TZXRGbXQ6ICV4OiB1bnN1cHBvcnRlZFxuIiwgZm10KTsKLSsJ CXJldHVybiAwOwotKwl9Ci0rCXNpby0+bGUgPSBTSU9fTEVfTkFUSVZFOwotKwlyZXR1cm4gMTsK LSt9Ci0rCi0rLyoKLSsgKiBjb252ZXJ0IHNuZGlvIGVuY29kaW5nIHRvIFBBIGVuY29kaW5nLCBy ZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzCi0rICovCi0rc3RhdGljIGludAotK3NuZGlvR2V0Rm10KHN0 cnVjdCBzaW9fcGFyICpzaW8sIFBhU2FtcGxlRm9ybWF0ICpmbXQpCi0rewotKwlpZiAoKHNpby0+ YnBzICogOCAhPSBzaW8tPmJpdHMgJiYgIXNpby0+bXNiKSB8fAotKwkgICAgKHNpby0+YnBzID4g MSAmJiBzaW8tPmxlICE9IFNJT19MRV9OQVRJVkUpKSB7Ci0rCQlEUFIoInNuZGlvR2V0Rm10OiBi aXRzID0gJXUsIGxlID0gJXUsIG1zYiA9ICV1LCBicHMgPSAldVxuIiwKLSsJCSAgICBzaW8tPmJp dHMsIHNpby0+bGUsIHNpby0+bXNiLCBzaW8tPmJwcyk7Ci0rCQlyZXR1cm4gMDsKLSsJfQotKwot Kwlzd2l0Y2ggKHNpby0+Yml0cykgewotKwljYXNlIDMyOgotKwkJaWYgKCFzaW8tPnNpZykKLSsJ CQlyZXR1cm4gMDsKLSsJCSpmbXQgPSBwYUludDMyOwotKwkJYnJlYWs7Ci0rCWNhc2UgMjQ6Ci0r CQlpZiAoIXNpby0+c2lnKQotKwkJCXJldHVybiAwOwotKwkJKmZtdCA9IChzaW8tPmJwcyA9PSAz KSA/IHBhSW50MjQgOiBwYUludDMyOwotKwkJYnJlYWs7Ci0rCWNhc2UgMTY6Ci0rCQlpZiAoIXNp by0+c2lnKQotKwkJCXJldHVybiAwOwotKwkJKmZtdCA9IHBhSW50MTY7Ci0rCQlicmVhazsKLSsJ Y2FzZSA4OgotKwkJKmZtdCA9IHNpby0+c2lnID8gcGFJbnQ4IDogcGFVSW50ODsKLSsJCWJyZWFr OwotKwlkZWZhdWx0OgotKwkJRFBSKCJzbmRpb0dldEZtdDogJXU6IHVuc3VwcG9ydGVkXG4iLCBz aW8tPmJpdHMpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsJcmV0dXJuIDE7Ci0rfQotKwotKy8qCi0r ICogSS9PIGxvb3AgZm9yIGNhbGxiYWNrIGludGVyZmFjZQotKyAqLwotK3N0YXRpYyB2b2lkICoK LStzbmRpb1RocmVhZCh2b2lkICphcmcpCi0rewotKwlQYVNuZGlvU3RyZWFtICpzID0gKFBhU25k aW9TdHJlYW0gKilhcmc7Ci0rCVBhU3RyZWFtQ2FsbGJhY2tUaW1lSW5mbyB0aTsKLSsJdW5zaWdu ZWQgY2hhciAqZGF0YTsKLSsJdW5zaWduZWQgdG9kbywgcmJsa3N6LCB3Ymxrc3o7Ci0rCWludCBu LCByZXN1bHQ7Ci0rCQotKwlyYmxrc3ogPSBzLT5wYXIucm91bmQgKiBzLT5wYXIucmNoYW4gKiBz LT5wYXIuYnBzOwotKwl3Ymxrc3ogPSBzLT5wYXIucm91bmQgKiBzLT5wYXIucGNoYW4gKiBzLT5w YXIuYnBzOwotKwkKLSsJRFBSKCJzbmRpb1RocmVhZDogbW9kZSA9ICV4LCByb3VuZCA9ICV1LCBy Ymxrc3ogPSAldSwgd2Jsa3N6ID0gJXVcbiIsCi0rCSAgICBzLT5tb2RlLCBzLT5wYXIucm91bmQs IHJibGtzeiwgd2Jsa3N6KTsKLSsJCi0rCXdoaWxlICghcy0+c3RvcHBlZCkgewotKwkJaWYgKHMt Pm1vZGUgJiBTSU9fUkVDKSB7Ci0rCQkJdG9kbyA9IHJibGtzejsKLSsJCQlkYXRhID0gcy0+cmJ1 ZjsKLSsJCQl3aGlsZSAodG9kbyA+IDApIHsKLSsJCQkJbiA9IHNpb19yZWFkKHMtPmhkbCwgZGF0 YSwgdG9kbyk7Ci0rCQkJCWlmIChuID09IDApIHsKLSsJCQkJCURQUigic25kaW9UaHJlYWQ6IHNp b19yZWFkIGZhaWxlZFxuIik7Ci0rCQkJCQlnb3RvIGZhaWxlZDsKLSsJCQkJfQotKwkJCQl0b2Rv IC09IG47Ci0rCQkJCWRhdGEgKz0gbjsKLSsJCQl9Ci0rCQkJcy0+cnBvcyArPSBzLT5wYXIucm91 bmQ7Ci0rCQkJdGkuaW5wdXRCdWZmZXJBZGNUaW1lID0gCi0rCQkJICAgIChkb3VibGUpcy0+cmVh bHBvcyAvIHMtPnBhci5yYXRlOwotKwkJfQotKwkJaWYgKHMtPm1vZGUgJiBTSU9fUExBWSkgewot KwkJCXRpLm91dHB1dEJ1ZmZlckRhY1RpbWUgPQotKwkJCSAgICAoZG91YmxlKShzLT5yZWFscG9z ICsgcy0+cGFyLmJ1ZnN6KSAvIHMtPnBhci5yYXRlOwotKwkJfQotKwkJdGkuY3VycmVudFRpbWUg PSBzLT5yZWFscG9zIC8gKGRvdWJsZSlzLT5wYXIucmF0ZTsKLSsJCVBhVXRpbF9CZWdpbkJ1ZmZl clByb2Nlc3NpbmcoJnMtPmJ1ZnByb2MsICZ0aSwgMCk7Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19Q TEFZKSB7Ci0rCQkJUGFVdGlsX1NldE91dHB1dEZyYW1lQ291bnQoJnMtPmJ1ZnByb2MsIHMtPnBh ci5yb3VuZCk7Ci0rCQkJUGFVdGlsX1NldEludGVybGVhdmVkT3V0cHV0Q2hhbm5lbHMoJnMtPmJ1 ZnByb2MsCi0rCQkJICAgIDAsIHMtPndidWYsIHMtPnBhci5wY2hhbik7Ci0rCQl9Ci0rCQlpZiAo cy0+bW9kZSAmIFNJT19SRUMpIHsKLSsJCQlQYVV0aWxfU2V0SW5wdXRGcmFtZUNvdW50KCZzLT5i dWZwcm9jLCBzLT5wYXIucm91bmQpOwotKwkJCVBhVXRpbF9TZXRJbnRlcmxlYXZlZElucHV0Q2hh bm5lbHMoJnMtPmJ1ZnByb2MsCi0rCQkJICAgIDAsIHMtPnJidWYsIHMtPnBhci5yY2hhbik7Ci0r CQl9Ci0rCQlyZXN1bHQgPSBwYUNvbnRpbnVlOwotKwkJbiA9IFBhVXRpbF9FbmRCdWZmZXJQcm9j ZXNzaW5nKCZzLT5idWZwcm9jLCAmcmVzdWx0KTsKLSsJCWlmIChuICE9IHMtPnBhci5yb3VuZCkg ewotKwkJCURQUigic25kaW9UaHJlYWQ6ICVkIDwgJXUgZnJhbWVzLCByZXN1bHQgPSAlZFxuIiwK LSsJCQkgICAgbiwgcy0+cGFyLnJvdW5kLCByZXN1bHQpOwotKwkJfQotKwkJaWYgKHJlc3VsdCAh PSBwYUNvbnRpbnVlKSB7Ci0rCQkJYnJlYWs7Ci0rCQl9Ci0rCQlpZiAocy0+bW9kZSAmIFNJT19Q TEFZKSB7Ci0rCQkJbiA9IHNpb193cml0ZShzLT5oZGwsIHMtPndidWYsIHdibGtzeik7Ci0rCQkJ aWYgKG4gPCB3Ymxrc3opIHsKLSsJCQkJRFBSKCJzbmRpb1RocmVhZDogc2lvX3dyaXRlIGZhaWxl ZFxuIik7Ci0rCQkJCWdvdG8gZmFpbGVkOwotKwkJCX0KLSsJCQlzLT53cG9zICs9IHMtPnBhci5y b3VuZDsKLSsJCX0KLSsJfQotKyBmYWlsZWQ6Ci0rCXMtPmFjdGl2ZSA9IDA7Ci0rCURQUigic25k aW9UaHJlYWQ6IGRvbmVcbiIpOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgotK09wZW5TdHJlYW0o c3RydWN0IFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqaG9zdEFwaSwKLSsgICAgUGFTdHJl YW0gKipzdHJlYW0sCi0rICAgIGNvbnN0IFBhU3RyZWFtUGFyYW1ldGVycyAqaW5wdXRQYXIsCi0r ICAgIGNvbnN0IFBhU3RyZWFtUGFyYW1ldGVycyAqb3V0cHV0UGFyLAotKyAgICBkb3VibGUgc2Ft cGxlUmF0ZSwKLSsgICAgdW5zaWduZWQgbG9uZyBmcmFtZXNQZXJCdWZmZXIsCi0rICAgIFBhU3Ry ZWFtRmxhZ3Mgc3RyZWFtRmxhZ3MsCi0rICAgIFBhU3RyZWFtQ2FsbGJhY2sgKnN0cmVhbUNhbGxi YWNrLAotKyAgICB2b2lkICp1c2VyRGF0YSkKLSt7Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50 YXRpb24gKnNuZGlvSG9zdEFwaSA9IChQYVNuZGlvSG9zdEFwaVJlcHJlc2VudGF0aW9uICopaG9z dEFwaTsKLSsJUGFTbmRpb1N0cmVhbSAqczsKLSsJUGFFcnJvciBlcnI7Ci0rCXN0cnVjdCBzaW9f aGRsICpoZGw7Ci0rCXN0cnVjdCBzaW9fcGFyIHBhcjsKLSsJdW5zaWduZWQgbW9kZTsKLSsJaW50 IGluY2gsIG9uY2g7Ci0rCVBhU2FtcGxlRm9ybWF0IGlmbXQsIG9mbXQsIHNpb2ZtdDsKLSsJY29u c3QgY2hhciAqZGV2OwotKwotKwlEUFIoIk9wZW5TdHJlYW06XG4iKTsKLSsKLSsJbW9kZSA9IDA7 Ci0rCWluY2ggPSBvbmNoID0gMDsKLSsJaWZtdCA9IG9mbXQgPSAwOwotKwlzaW9faW5pdHBhcigm cGFyKTsKLSsKLSsJaWYgKG91dHB1dFBhciAmJiBvdXRwdXRQYXItPmNoYW5uZWxDb3VudCA+IDAp IHsKLSsJCWlmIChvdXRwdXRQYXItPmRldmljZSA+PSBzbmRpb0hvc3RBcGktPmJhc2UuaW5mby5k ZXZpY2VDb3VudCkgewotKwkJCURQUigiT3BlblN0cmVhbTogJWQ6IGJhZCBvdXRwdXQgZGV2aWNl XG4iLCBvdXRwdXRQYXItPmRldmljZSk7Ci0rCQkJcmV0dXJuIHBhSW52YWxpZERldmljZTsKLSsJ CX0KLSsJCWlmIChvdXRwdXRQYXItPmhvc3RBcGlTcGVjaWZpY1N0cmVhbUluZm8pIHsKLSsJCQlE UFIoIk9wZW5TdHJlYW06IG91dHB1dCBzcGVjaWZpYyBpbmZvXG4iKTsKLSsJCQlyZXR1cm4gcGFJ bmNvbXBhdGlibGVIb3N0QXBpU3BlY2lmaWNTdHJlYW1JbmZvOwotKwkJfQotKwkJaWYgKCFzbmRp b1NldEZtdCgmcGFyLCBvdXRwdXRQYXItPnNhbXBsZUZvcm1hdCkpIHsKLSsJCQlyZXR1cm4gcGFT YW1wbGVGb3JtYXROb3RTdXBwb3J0ZWQ7Ci0rCQl9Ci0rCQlvZm10ID0gb3V0cHV0UGFyLT5zYW1w bGVGb3JtYXQ7Ci0rCQlvbmNoID0gcGFyLnBjaGFuID0gb3V0cHV0UGFyLT5jaGFubmVsQ291bnQ7 Ci0rCQltb2RlIHw9IFNJT19QTEFZOwotKwl9Ci0rCWlmIChpbnB1dFBhciAmJiBpbnB1dFBhci0+ Y2hhbm5lbENvdW50ID4gMCkgewotKwkJaWYgKGlucHV0UGFyLT5kZXZpY2UgPj0gc25kaW9Ib3N0 QXBpLT5iYXNlLmluZm8uZGV2aWNlQ291bnQpIHsKLSsJCQlEUFIoIk9wZW5TdHJlYW06ICVkOiBi YWQgaW5wdXQgZGV2aWNlXG4iLCBpbnB1dFBhci0+ZGV2aWNlKTsKLSsJCQlyZXR1cm4gcGFJbnZh bGlkRGV2aWNlOwotKwkJfQotKwkJaWYgKGlucHV0UGFyLT5ob3N0QXBpU3BlY2lmaWNTdHJlYW1J bmZvKSB7Ci0rCQkJRFBSKCJPcGVuU3RyZWFtOiBpbnB1dCBzcGVjaWZpYyBpbmZvXG4iKTsKLSsJ CQlyZXR1cm4gcGFJbmNvbXBhdGlibGVIb3N0QXBpU3BlY2lmaWNTdHJlYW1JbmZvOwotKwkJfQot KwkJaWYgKCFzbmRpb1NldEZtdCgmcGFyLCBpbnB1dFBhci0+c2FtcGxlRm9ybWF0KSkgewotKwkJ CXJldHVybiBwYVNhbXBsZUZvcm1hdE5vdFN1cHBvcnRlZDsKLSsJCX0KLSsJCWlmbXQgPSBpbnB1 dFBhci0+c2FtcGxlRm9ybWF0OwotKwkJaW5jaCA9IHBhci5yY2hhbiA9IGlucHV0UGFyLT5jaGFu bmVsQ291bnQ7Ci0rCQltb2RlIHw9IFNJT19SRUM7Ci0rCX0KLSsJcGFyLnJhdGUgPSBzYW1wbGVS YXRlOwotKwlpZiAoZnJhbWVzUGVyQnVmZmVyICE9IHBhRnJhbWVzUGVyQnVmZmVyVW5zcGVjaWZp ZWQpCi0rCQlwYXIucm91bmQgPSBmcmFtZXNQZXJCdWZmZXI7Ci0rCi0rCURQUigiT3BlblN0cmVh bTogbW9kZSA9ICV4LCB0cnlpbmcgcmF0ZSA9ICV1XG4iLCBtb2RlLCBwYXIucmF0ZSk7Ci0rCi0r CWlmIChvdXRwdXRQYXIpIHsKLSsJCWRldiA9IHNuZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9bb3V0 cHV0UGFyLT5kZXZpY2VdLm5hbWU7Ci0rCX0gZWxzZSBpZiAoaW5wdXRQYXIpIHsKLSsJCWRldiA9 IHNuZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9baW5wdXRQYXItPmRldmljZV0ubmFtZTsKLSsJfSBl bHNlIHsKLSsJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCX0KLSsJaGRsID0g c2lvX29wZW4oZGV2LCBtb2RlLCAwKTsKLSsJaWYgKGhkbCA9PSBOVUxMKQotKwkJcmV0dXJuIHBh VW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikpIHsK LSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsK LSsJfQotKwlpZiAoIXNpb19nZXRwYXIoaGRsLCAmcGFyKSkgewotKwkJc2lvX2Nsb3NlKGhkbCk7 Ci0rCQlyZXR1cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwotKwl9Ci0rCWlmICghc25kaW9H ZXRGbXQoJnBhciwgJnNpb2ZtdCkpIHsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBh U2FtcGxlRm9ybWF0Tm90U3VwcG9ydGVkOwotKwl9Ci0rCWlmICgobW9kZSAmIFNJT19SRUMpICYm IHBhci5yY2hhbiAhPSBpbnB1dFBhci0+Y2hhbm5lbENvdW50KSB7Ci0rCQlEUFIoIk9wZW5TdHJl YW06IHJjaGFuKCV1KSAhPSAlZFxuIiwgcGFyLnJjaGFuLCBpbnB1dFBhci0+Y2hhbm5lbENvdW50 KTsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJuIHBhSW52YWxpZENoYW5uZWxDb3VudDsK LSsJfQotKwlpZiAoKG1vZGUgJiBTSU9fUExBWSkgJiYgcGFyLnBjaGFuICE9IG91dHB1dFBhci0+ Y2hhbm5lbENvdW50KSB7Ci0rCQlEUFIoIk9wZW5TdHJlYW06IHBjaGFuKCV1KSAhPSAlZFxuIiwg cGFyLnBjaGFuLCBvdXRwdXRQYXItPmNoYW5uZWxDb3VudCk7Ci0rCQlzaW9fY2xvc2UoaGRsKTsK LSsJCXJldHVybiBwYUludmFsaWRDaGFubmVsQ291bnQ7Ci0rCX0KLSsJaWYgKChkb3VibGUpcGFy LnJhdGUgPCBzYW1wbGVSYXRlICogMC45OTUgfHwKLSsJICAgIChkb3VibGUpcGFyLnJhdGUgPiBz YW1wbGVSYXRlICogMS4wMDUpIHsKLSsJCURQUigiT3BlblN0cmVhbTogcmF0ZSgldSkgIT0gJWdc biIsIHBhci5yYXRlLCBzYW1wbGVSYXRlKTsKLSsJCXNpb19jbG9zZShoZGwpOwotKwkJcmV0dXJu IHBhSW52YWxpZFNhbXBsZVJhdGU7Ci0rCX0KLSsJCi0rCXMgPSAoUGFTbmRpb1N0cmVhbSAqKVBh VXRpbF9BbGxvY2F0ZU1lbW9yeShzaXplb2YoUGFTbmRpb1N0cmVhbSkpOwotKwlpZiAocyA9PSBO VUxMKSB7Ci0rCQlzaW9fY2xvc2UoaGRsKTsKLSsJCXJldHVybiBwYUluc3VmZmljaWVudE1lbW9y eTsKLSsJfQotKwlQYVV0aWxfSW5pdGlhbGl6ZVN0cmVhbVJlcHJlc2VudGF0aW9uKCZzLT5iYXNl LCAKLSsJICAgIHN0cmVhbUNhbGxiYWNrID8gJnNuZGlvSG9zdEFwaS0+Y2FsbGJhY2sgOiAmc25k aW9Ib3N0QXBpLT5ibG9ja2luZywKLSsJICAgIHN0cmVhbUNhbGxiYWNrLCB1c2VyRGF0YSk7Ci0r CURQUigiaW5jaCA9ICVkLCBvbmNoID0gJWQsIGlmbXQgPSAleCwgb2ZtdCA9ICV4XG4iLCAKLSsJ ICAgIGluY2gsIG9uY2gsIGlmbXQsIG9mbXQpOwotKwllcnIgPSBQYVV0aWxfSW5pdGlhbGl6ZUJ1 ZmZlclByb2Nlc3Nvcigmcy0+YnVmcHJvYywKLSsJICAgIGluY2gsIGlmbXQsIHNpb2ZtdCwKLSsJ ICAgIG9uY2gsIG9mbXQsIHNpb2ZtdCwKLSsJICAgIHNhbXBsZVJhdGUsCi0rCSAgICBzdHJlYW1G bGFncywKLSsJICAgIGZyYW1lc1BlckJ1ZmZlciwKLSsJICAgIHBhci5yb3VuZCwKLSsJICAgIHBh VXRpbEZpeGVkSG9zdEJ1ZmZlclNpemUsIAotKwkgICAgc3RyZWFtQ2FsbGJhY2ssIHVzZXJEYXRh KTsKLSsJaWYgKGVycikgewotKwkJRFBSKCJPcGVuU3RyZWFtOiBQYVV0aWxfSW5pdGlhbGl6ZUJ1 ZmZlclByb2Nlc3NvciBmYWlsZWRcbiIpOwotKwkJUGFVdGlsX0ZyZWVNZW1vcnkocyk7Ci0rCQlz aW9fY2xvc2UoaGRsKTsKLSsJCXJldHVybiBlcnI7Ci0rCX0KLSsJaWYgKG1vZGUgJiBTSU9fUkVD KSB7Ci0rCQlzLT5yYnVmID0gbWFsbG9jKHBhci5yb3VuZCAqIHBhci5yY2hhbiAqIHBhci5icHMp OwotKwkJaWYgKHMtPnJidWYgPT0gTlVMTCkgewotKwkJCURQUigiT3BlblN0cmVhbTogZmFpbGVk IHRvIGFsbG9jYXRlIHJidWZcbiIpOwotKwkJCVBhVXRpbF9GcmVlTWVtb3J5KHMpOwotKwkJCXNp b19jbG9zZShoZGwpOwotKwkJCXJldHVybiBwYUluc3VmZmljaWVudE1lbW9yeTsKLSsJCX0KLSsJ fQotKwlpZiAobW9kZSAmIFNJT19QTEFZKSB7Ci0rCQlzLT53YnVmID0gbWFsbG9jKHBhci5yb3Vu ZCAqIHBhci5wY2hhbiAqIHBhci5icHMpOwotKwkJaWYgKHMtPndidWYgPT0gTlVMTCkgewotKwkJ CURQUigiT3BlblN0cmVhbTogZmFpbGVkIHRvIGFsbG9jYXRlIHdidWZcbiIpOwotKwkJCWZyZWUo cy0+cmJ1Zik7Ci0rCQkJUGFVdGlsX0ZyZWVNZW1vcnkocyk7Ci0rCQkJc2lvX2Nsb3NlKGhkbCk7 Ci0rCQkJcmV0dXJuIHBhSW5zdWZmaWNpZW50TWVtb3J5OwotKwkJfQotKwl9CQotKwlzLT5iYXNl LnN0cmVhbUluZm8uaW5wdXRMYXRlbmN5ID0gMDsKLSsJcy0+YmFzZS5zdHJlYW1JbmZvLm91dHB1 dExhdGVuY3kgPSAobW9kZSAmIFNJT19QTEFZKSA/Ci0rCSAgICAoZG91YmxlKShwYXIuYnVmc3og KyBQYVV0aWxfR2V0QnVmZmVyUHJvY2Vzc29yT3V0cHV0TGF0ZW5jeUZyYW1lcygmcy0+YnVmcHJv YykpIC8gKGRvdWJsZSlwYXIucmF0ZSA6IDA7Ci0rCXMtPmJhc2Uuc3RyZWFtSW5mby5zYW1wbGVS YXRlID0gcGFyLnJhdGU7Ci0rCXMtPmFjdGl2ZSA9IDA7Ci0rCXMtPnN0b3BwZWQgPSAxOwotKwlz LT5tb2RlID0gbW9kZTsKLSsJcy0+aGRsID0gaGRsOwotKwlzLT5wYXIgPSBwYXI7Ci0rCSpzdHJl YW0gPSBzOwkKLSsJRFBSKCJPcGVuU3RyZWFtOiBkb25lXG4iKTsKLSsJcmV0dXJuIHBhTm9FcnJv cjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStCbG9ja2luZ1JlYWRTdHJlYW0oUGFTdHJlYW0g KnN0cmVhbSwgdm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBudW1GcmFtZXMpCi0rewotKwlQYVNu ZGlvU3RyZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCXVuc2lnbmVkIG4sIHJl cywgdG9kbzsKLSsJdm9pZCAqYnVmOwotKwkKLSsJd2hpbGUgKG51bUZyYW1lcyA+IDApIHsKLSsJ CW4gPSBzLT5wYXIucm91bmQ7Ci0rCQlpZiAobiA+IG51bUZyYW1lcykKLSsJCQluID0gbnVtRnJh bWVzOwotKwkJYnVmID0gcy0+cmJ1ZjsKLSsJCXRvZG8gPSBuICogcy0+cGFyLnJjaGFuICogcy0+ cGFyLmJwczsKLSsJCXdoaWxlICh0b2RvID4gMCkgewotKwkJCXJlcyA9IHNpb19yZWFkKHMtPmhk bCwgYnVmLCB0b2RvKTsKLSsJCQlpZiAocmVzID09IDApCi0rCQkJCXJldHVybiBwYVVuYW50aWNp cGF0ZWRIb3N0RXJyb3I7Ci0rCQkJYnVmID0gKGNoYXIgKilidWYgKyByZXM7Ci0rCQkJdG9kbyAt PSByZXM7Ci0rCQl9Ci0rCQlzLT5ycG9zICs9IG47Ci0rCQlQYVV0aWxfU2V0SW5wdXRGcmFtZUNv dW50KCZzLT5idWZwcm9jLCBuKTsKLSsJCVBhVXRpbF9TZXRJbnRlcmxlYXZlZElucHV0Q2hhbm5l bHMoJnMtPmJ1ZnByb2MsIDAsIHMtPnJidWYsIHMtPnBhci5yY2hhbik7Ci0rCQlyZXMgPSBQYVV0 aWxfQ29weUlucHV0KCZzLT5idWZwcm9jLCAmZGF0YSwgbik7Ci0rCQlpZiAocmVzICE9IG4pIHsK LSsJCQlEUFIoIkJsb2NraW5nUmVhZFN0cmVhbTogY29weUlucHV0OiAldSAhPSAldVxuIik7Ci0r CQkJcmV0dXJuIHBhVW5hbnRpY2lwYXRlZEhvc3RFcnJvcjsKLSsJCX0KLSsJCW51bUZyYW1lcyAt PSBuOwotKwl9Ci0rCXJldHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0r QmxvY2tpbmdXcml0ZVN0cmVhbShQYVN0cmVhbSogc3RyZWFtLCBjb25zdCB2b2lkICpkYXRhLCB1 bnNpZ25lZCBsb25nIG51bUZyYW1lcykKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAoUGFTbmRp b1N0cmVhbSAqKXN0cmVhbTsKLSsJdW5zaWduZWQgbiwgcmVzOwotKwotKwl3aGlsZSAobnVtRnJh bWVzID4gMCkgewotKwkJbiA9IHMtPnBhci5yb3VuZDsKLSsJCWlmIChuID4gbnVtRnJhbWVzKQot KwkJCW4gPSBudW1GcmFtZXM7Ci0rCQlQYVV0aWxfU2V0T3V0cHV0RnJhbWVDb3VudCgmcy0+YnVm cHJvYywgbik7Ci0rCQlQYVV0aWxfU2V0SW50ZXJsZWF2ZWRPdXRwdXRDaGFubmVscygmcy0+YnVm cHJvYywgMCwgcy0+d2J1Ziwgcy0+cGFyLnBjaGFuKTsKLSsJCXJlcyA9IFBhVXRpbF9Db3B5T3V0 cHV0KCZzLT5idWZwcm9jLCAmZGF0YSwgbik7Ci0rCQlpZiAocmVzICE9IG4pIHsKLSsJCQlEUFIo IkJsb2NraW5nV3JpdGVTdHJlYW06IGNvcHlPdXRwdXQ6ICV1ICE9ICV1XG4iKTsKLSsJCQlyZXR1 cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwotKwkJfQotKwkJcmVzID0gc2lvX3dyaXRlKHMt PmhkbCwgcy0+d2J1ZiwgbiAqIHMtPnBhci5wY2hhbiAqIHMtPnBhci5icHMpOwotKwkJaWYgKHJl cyA9PSAwKQotKwkJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7CQkKLSsJCXMtPndw b3MgKz0gbjsKLSsJCW51bUZyYW1lcyAtPSBuOwotKwl9Ci0rCXJldHVybiBwYU5vRXJyb3I7Ci0r fQotKwotK3N0YXRpYyBzaWduZWQgbG9uZwotK0Jsb2NraW5nR2V0U3RyZWFtUmVhZEF2YWlsYWJs ZShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3Ry ZWFtICopc3RyZWFtOwotKwlzdHJ1Y3QgcG9sbGZkIHBmZDsKLSsJaW50IG4sIGV2ZW50czsKLSsK LSsJbiA9IHNpb19wb2xsZmQocy0+aGRsLCAmcGZkLCBQT0xMSU4pOwotKwl3aGlsZSAocG9sbCgm cGZkLCBuLCAwKSA8IDApIHsKLSsJCWlmIChlcnJubyA9PSBFSU5UUikKLSsJCQljb250aW51ZTsK LSsJCXBlcnJvcigicG9sbCIpOwotKwkJYWJvcnQoKTsKLSsJfQotKwlldmVudHMgPSBzaW9fcmV2 ZW50cyhzLT5oZGwsICZwZmQpOwotKwlpZiAoIShldmVudHMgJiBQT0xMSU4pKQotKwkJcmV0dXJu IDA7Ci0rCi0rCXJldHVybiBzLT5yZWFscG9zIC0gcy0+cnBvczsKLSt9Ci0rCi0rc3RhdGljIHNp Z25lZCBsb25nCi0rQmxvY2tpbmdHZXRTdHJlYW1Xcml0ZUF2YWlsYWJsZShQYVN0cmVhbSAqc3Ry ZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwot KwlzdHJ1Y3QgcG9sbGZkIHBmZDsKLSsJaW50IG4sIGV2ZW50czsKLSsKLSsJbiA9IHNpb19wb2xs ZmQocy0+aGRsLCAmcGZkLCBQT0xMT1VUKTsKLSsJd2hpbGUgKHBvbGwoJnBmZCwgbiwgMCkgPCAw KSB7Ci0rCQlpZiAoZXJybm8gPT0gRUlOVFIpCi0rCQkJY29udGludWU7Ci0rCQlwZXJyb3IoInBv bGwiKTsKLSsJCWFib3J0KCk7Ci0rCX0KLSsJZXZlbnRzID0gc2lvX3JldmVudHMocy0+aGRsLCAm cGZkKTsKLSsJaWYgKCEoZXZlbnRzICYgUE9MTE9VVCkpCi0rCQlyZXR1cm4gMDsKLSsKLSsJcmV0 dXJuIHMtPnBhci5idWZzeiAtIChzLT53cG9zIC0gcy0+cmVhbHBvcyk7Ci0rfQotKwotK3N0YXRp YyBQYUVycm9yCi0rQmxvY2tpbmdXYWl0RW1wdHkoIFBhU3RyZWFtICpzdHJlYW0gKQotK3sKLSsJ UGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwotKwkvKgotKwkg KiBkcmFpbiBwbGF5YmFjayBidWZmZXJzOyBzbmRpbyBhbHdheXMgZG9lcyBpdCBpbiBiYWNrZ3Jv dW5kCi0rCSAqIGFuZCB0aGVyZSBpcyBubyB3YXkgdG8gd2FpdCBmb3IgY29tcGxldGlvbgotKwkg Ki8KLSsJRFBSKCJCbG9ja2luZ1dhaXRFbXB0eTogcz0lZCwgYT0lZFxuIiwgcy0+c3RvcHBlZCwg cy0+YWN0aXZlKTsKLSsKLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJy b3IKLStTdGFydFN0cmVhbShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAq cyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwl1bnNpZ25lZCBwcmltZXMsIHdibGtzejsK LSsJaW50IGVycjsKLSsKLSsJRFBSKCJTdGFydFN0cmVhbTogcz0lZCwgYT0lZFxuIiwgcy0+c3Rv cHBlZCwgcy0+YWN0aXZlKTsKLSsKLSsJaWYgKCFzLT5zdG9wcGVkKSB7Ci0rCQlEUFIoIlN0YXJ0 U3RyZWFtOiBhbHJlYWR5IHN0YXJ0ZWRcbiIpOwotKwkJcmV0dXJuIHBhTm9FcnJvcjsKLSsJfQot KwlzLT5zdG9wcGVkID0gMDsKLSsJcy0+YWN0aXZlID0gMTsKLSsJcy0+cmVhbHBvcyA9IDA7Ci0r CXMtPndwb3MgPSAwOwotKwlzLT5ycG9zID0gMDsKLSsJUGFVdGlsX1Jlc2V0QnVmZmVyUHJvY2Vz c29yKCZzLT5idWZwcm9jKTsKLSsJaWYgKCFzaW9fc3RhcnQocy0+aGRsKSkKLSsJCXJldHVybiBw YVVuYW50aWNpcGF0ZWRIb3N0RXJyb3I7Ci0rCi0rCS8qCi0rCSAqIHNlbmQgYSBjb21wbGV0ZSBi dWZmZXIgb2Ygc2lsZW5jZQotKwkgKi8KLSsJaWYgKHMtPm1vZGUgJiBTSU9fUExBWSkgewotKwkJ d2Jsa3N6ID0gcy0+cGFyLnJvdW5kICogcy0+cGFyLnBjaGFuICogcy0+cGFyLmJwczsKLSsJCW1l bXNldChzLT53YnVmLCAwLCB3Ymxrc3opOwotKwkJZm9yIChwcmltZXMgPSBzLT5wYXIuYnVmc3og LyBzLT5wYXIucm91bmQ7IHByaW1lcyA+IDA7IHByaW1lcy0tKQotKwkJCXMtPndwb3MgKz0gc2lv X3dyaXRlKHMtPmhkbCwgcy0+d2J1Ziwgd2Jsa3N6KTsKLSsJfQotKwlpZiAocy0+YmFzZS5zdHJl YW1DYWxsYmFjaykgewotKwkJZXJyID0gcHRocmVhZF9jcmVhdGUoJnMtPnRocmVhZCwgTlVMTCwg c25kaW9UaHJlYWQsIHMpOwotKwkJaWYgKGVycikgewotKwkJCURQUigiU25kaW9TdGFydFN0cmVh bTogY291bGRuJ3QgY3JlYXRlIHRocmVhZFxuIik7Ci0rCQkJcmV0dXJuIHBhVW5hbnRpY2lwYXRl ZEhvc3RFcnJvcjsKLSsJCX0KLSsJCURQUigiU3RhcnRTdHJlYW06IHN0YXJ0ZWQuLi5cbiIpOwot Kwl9Ci0rCXJldHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0rU3RvcFN0 cmVhbShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlv U3RyZWFtICopc3RyZWFtOwotKwl2b2lkICpyZXQ7Ci0rCWludCBlcnI7Ci0rCi0rCURQUigiU3Rv cFN0cmVhbTogcz0lZCwgYT0lZFxuIiwgcy0+c3RvcHBlZCwgcy0+YWN0aXZlKTsKLSsKLSsJaWYg KHMtPnN0b3BwZWQpIHsKLSsJCURQUigiU3RhcnRTdHJlYW06IGFscmVhZHkgc3RhcnRlZFxuIik7 Ci0rCQlyZXR1cm4gcGFOb0Vycm9yOwotKwl9Ci0rCXMtPnN0b3BwZWQgPSAxOwotKwlpZiAocy0+ YmFzZS5zdHJlYW1DYWxsYmFjaykgewotKwkJZXJyID0gcHRocmVhZF9qb2luKHMtPnRocmVhZCwg JnJldCk7Ci0rCQlpZiAoZXJyKSB7Ci0rCQkJRFBSKCJTbmRpb1N0b3A6IGNvdWxkbid0IGpvaW4g dGhyZWFkXG4iKTsKLSsJCQlyZXR1cm4gcGFVbmFudGljaXBhdGVkSG9zdEVycm9yOwotKwkJfQot Kwl9Ci0rCWlmICghc2lvX3N0b3Aocy0+aGRsKSkKLSsJCXJldHVybiBwYVVuYW50aWNpcGF0ZWRI b3N0RXJyb3I7Ci0rCXJldHVybiBwYU5vRXJyb3I7Ci0rfQotKwotK3N0YXRpYyBQYUVycm9yCi0r Q2xvc2VTdHJlYW0oUGFTdHJlYW0gKnN0cmVhbSkKLSt7Ci0rCVBhU25kaW9TdHJlYW0gKnMgPSAo UGFTbmRpb1N0cmVhbSAqKXN0cmVhbTsKLSsKLSsJRFBSKCJDbG9zZVN0cmVhbTpcbiIpOwotKwot KwlpZiAoIXMtPnN0b3BwZWQpCi0rCQlTdG9wU3RyZWFtKHN0cmVhbSk7Ci0rCi0rCWlmIChzLT5t b2RlICYgU0lPX1JFQykKLSsJCWZyZWUocy0+cmJ1Zik7Ci0rCWlmIChzLT5tb2RlICYgU0lPX1BM QVkpCi0rCQlmcmVlKHMtPndidWYpOwotKwlzaW9fY2xvc2Uocy0+aGRsKTsKLSsgICAgICAgIFBh VXRpbF9UZXJtaW5hdGVTdHJlYW1SZXByZXNlbnRhdGlvbigmcy0+YmFzZSk7Ci0rCVBhVXRpbF9U ZXJtaW5hdGVCdWZmZXJQcm9jZXNzb3IoJnMtPmJ1ZnByb2MpOwotKwlQYVV0aWxfRnJlZU1lbW9y eShzKTsKLSsJcmV0dXJuIHBhTm9FcnJvcjsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStBYm9y dFN0cmVhbShQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJRFBSKCJBYm9ydFN0cmVhbTpcbiIpOwot KwotKwlyZXR1cm4gU3RvcFN0cmVhbShzdHJlYW0pOwotK30KLSsKLStzdGF0aWMgUGFFcnJvcgot K0lzU3RyZWFtU3RvcHBlZChQYVN0cmVhbSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAq cyA9IChQYVNuZGlvU3RyZWFtICopc3RyZWFtOwotKwotKwkvL0RQUigiSXNTdHJlYW1TdG9wcGVk OiBzPSVkLCBhPSVkXG4iLCBzLT5zdG9wcGVkLCBzLT5hY3RpdmUpOwotKwotKwlyZXR1cm4gcy0+ c3RvcHBlZDsKLSt9Ci0rCi0rc3RhdGljIFBhRXJyb3IKLStJc1N0cmVhbUFjdGl2ZShQYVN0cmVh bSAqc3RyZWFtKQotK3sKLSsJUGFTbmRpb1N0cmVhbSAqcyA9IChQYVNuZGlvU3RyZWFtICopc3Ry ZWFtOwotKwotKwkvL0RQUigiSXNTdHJlYW1BY3RpdmU6IHM9JWQsIGE9JWRcbiIsIHMtPnN0b3Bw ZWQsIHMtPmFjdGl2ZSk7Ci0rCi0rCXJldHVybiBzLT5hY3RpdmU7Ci0rfQotKwotK3N0YXRpYyBQ YVRpbWUKLStHZXRTdHJlYW1UaW1lKFBhU3RyZWFtICpzdHJlYW0pCi0rewotKwlQYVNuZGlvU3Ry ZWFtICpzID0gKFBhU25kaW9TdHJlYW0gKilzdHJlYW07Ci0rCi0rCXJldHVybiAoZG91YmxlKXMt PnJlYWxwb3MgLyBzLT5iYXNlLnN0cmVhbUluZm8uc2FtcGxlUmF0ZTsKLSt9Ci0rCi0rc3RhdGlj IFBhRXJyb3IKLStJc0Zvcm1hdFN1cHBvcnRlZChzdHJ1Y3QgUGFVdGlsSG9zdEFwaVJlcHJlc2Vu dGF0aW9uICpob3N0QXBpLAotKyAgICBjb25zdCBQYVN0cmVhbVBhcmFtZXRlcnMgKmlucHV0UGFy LAotKyAgICBjb25zdCBQYVN0cmVhbVBhcmFtZXRlcnMgKm91dHB1dFBhciwKLSsgICAgZG91Ymxl IHNhbXBsZVJhdGUpCi0rewotKwlyZXR1cm4gcGFGb3JtYXRJc1N1cHBvcnRlZDsKLSt9Ci0rCi0r c3RhdGljIHZvaWQKLStUZXJtaW5hdGUoc3RydWN0IFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlv biAqaG9zdEFwaSkKLSt7Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKnNuZGlvSG9z dEFwaTsKLSsJc25kaW9Ib3N0QXBpID0gKFBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKilo b3N0QXBpOwotKwlmcmVlKHNuZGlvSG9zdEFwaS0+YXVkaW9kZXZpY2VzKTsKLSsJUGFVdGlsX0Zy ZWVNZW1vcnkoaG9zdEFwaSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rSW5pdERldmljZUluZm8o UGFEZXZpY2VJbmZvICppbmZvLCBQYUhvc3RBcGlJbmRleCBob3N0QXBpSW5kZXgsIGNvbnN0IGNo YXIgKm5hbWUpCi0rewotKwlpbmZvLT5zdHJ1Y3RWZXJzaW9uID0gMjsKLSsJaW5mby0+bmFtZSA9 IG5hbWU7Ci0rCWluZm8tPmhvc3RBcGkgPSBob3N0QXBpSW5kZXg7Ci0rCWluZm8tPm1heElucHV0 Q2hhbm5lbHMgPSAxMjg7Ci0rCWluZm8tPm1heE91dHB1dENoYW5uZWxzID0gMTI4OwotKwlpbmZv LT5kZWZhdWx0TG93SW5wdXRMYXRlbmN5ID0gMC4wMTsKLSsJaW5mby0+ZGVmYXVsdExvd091dHB1 dExhdGVuY3kgPSAwLjAxOwotKwlpbmZvLT5kZWZhdWx0SGlnaElucHV0TGF0ZW5jeSA9IDAuNTsK LSsJaW5mby0+ZGVmYXVsdEhpZ2hPdXRwdXRMYXRlbmN5ID0gMC41OwotKwlpbmZvLT5kZWZhdWx0 U2FtcGxlUmF0ZSA9IDQ4MDAwOwotK30KLSsKLStQYUVycm9yCi0rUGFTbmRpb19Jbml0aWFsaXpl KFBhVXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGhv c3RBcGlJbmRleCkKLSt7Ci0rCVBhU25kaW9Ib3N0QXBpUmVwcmVzZW50YXRpb24gKnNuZGlvSG9z dEFwaTsKLSsJUGFEZXZpY2VJbmZvICppbmZvOwotKwlzdHJ1Y3Qgc2lvX2hkbCAqaGRsOwotKwlj aGFyICphdWRpb2RldmljZXM7Ci0rCWNoYXIgKmRldmljZTsKLSsJc2l6ZV90IGRldmljZUNvdW50 OwotKwotKwlEUFIoIlBhU25kaW9fSW5pdGlhbGl6ZTogaW5pdGlhbGl6aW5nLi4uXG4iKTsKLSsK LSsJaWYgKChoZGw9c2lvX29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDEpKSA9PSBOVUxMKQot KwkJcmV0dXJuIHBhTm9FcnJvcjsKLSsJc2lvX2Nsb3NlKGhkbCk7Ci0rCS8qIHVudXNhYmxlIEFQ SXMgc2hvdWxkIHJldHVybiBwYU5vRXJyb3IgYW5kIGEgTlVMTCBob3N0QXBpICovCi0rCSpob3N0 QXBpID0gTlVMTDsKLSsKLSsJc25kaW9Ib3N0QXBpID0gUGFVdGlsX0FsbG9jYXRlTWVtb3J5KHNp emVvZihQYVNuZGlvSG9zdEFwaVJlcHJlc2VudGF0aW9uKSk7Ci0rCWlmIChzbmRpb0hvc3RBcGkg PT0gTlVMTCkKLSsJCXJldHVybiBwYU5vRXJyb3I7Ci0rCi0rCS8vIEFkZCBkZWZhdWx0IGRldmlj ZQotKwlpbmZvID0gJnNuZGlvSG9zdEFwaS0+ZGV2aWNlX2luZm9bMF07Ci0rCUluaXREZXZpY2VJ bmZvKGluZm8sIGhvc3RBcGlJbmRleCwgU0lPX0RFVkFOWSk7Ci0rCXNuZGlvSG9zdEFwaS0+aW5m b3NbMF0gPSBpbmZvOwotKwlkZXZpY2VDb3VudCA9IDE7Ci0rCi0rCS8vIEFkZCBhZGRpdGlvbmFs IGRldmljZXMgYXMgc3BlY2lmaWVkIGluIHRoZSBQQV9TTkRJT19BVURJT0RFVklDRVMKLSsJLy8g ZW52aXJvbm1lbnQgdmFyaWFibGUgYXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdAotKwlzbmRpb0hv c3RBcGktPmF1ZGlvZGV2aWNlcyA9IE5VTEw7Ci0rCWF1ZGlvZGV2aWNlcyA9IGdldGVudigiUEFf U05ESU9fQVVESU9ERVZJQ0VTIik7Ci0rCWlmIChhdWRpb2RldmljZXMgIT0gTlVMTCkgewotKwkJ c25kaW9Ib3N0QXBpLT5hdWRpb2RldmljZXMgPSBzdHJkdXAoYXVkaW9kZXZpY2VzKTsKLSsJCWlm IChzbmRpb0hvc3RBcGktPmF1ZGlvZGV2aWNlcyA9PSBOVUxMKQotKwkJCXJldHVybiBwYU5vRXJy b3I7Ci0rCi0rCQlhdWRpb2RldmljZXMgPSBzbmRpb0hvc3RBcGktPmF1ZGlvZGV2aWNlczsKLSsJ CXdoaWxlICgoZGV2aWNlID0gc3Ryc2VwKCZhdWRpb2RldmljZXMsICI6IikpICE9IE5VTEwgJiYK LSsJCQlkZXZpY2VDb3VudCA8IFBBX1NORElPX0FVRElPREVWSUNFU19NQVgpIHsKLSsJCQlpZiAo KmRldmljZSA9PSAnXDAnKQotKwkJCQljb250aW51ZTsKLSsJCQlpbmZvID0gJnNuZGlvSG9zdEFw aS0+ZGV2aWNlX2luZm9bZGV2aWNlQ291bnRdOwotKwkJCUluaXREZXZpY2VJbmZvKGluZm8sIGhv c3RBcGlJbmRleCwgZGV2aWNlKTsKLSsJCQlzbmRpb0hvc3RBcGktPmluZm9zW2RldmljZUNvdW50 XSA9IGluZm87Ci0rCQkJZGV2aWNlQ291bnQrKzsKLSsJCX0KLSsJfQotKwotKwkqaG9zdEFwaSA9 ICZzbmRpb0hvc3RBcGktPmJhc2U7Ci0rCSgqaG9zdEFwaSktPmluZm8uc3RydWN0VmVyc2lvbiA9 IDE7Ci0rCSgqaG9zdEFwaSktPmluZm8udHlwZSA9IHBhU25kaW87Ci0rCSgqaG9zdEFwaSktPmlu Zm8ubmFtZSA9ICJzbmRpbyI7Ci0rCSgqaG9zdEFwaSktPmluZm8uZGV2aWNlQ291bnQgPSBkZXZp Y2VDb3VudDsKLSsJKCpob3N0QXBpKS0+aW5mby5kZWZhdWx0SW5wdXREZXZpY2UgPSAwOwotKwko Kmhvc3RBcGkpLT5pbmZvLmRlZmF1bHRPdXRwdXREZXZpY2UgPSAwOwotKwkoKmhvc3RBcGkpLT5k ZXZpY2VJbmZvcyA9IHNuZGlvSG9zdEFwaS0+aW5mb3M7Ci0rCSgqaG9zdEFwaSktPlRlcm1pbmF0 ZSA9IFRlcm1pbmF0ZTsKLSsJKCpob3N0QXBpKS0+T3BlblN0cmVhbSA9IE9wZW5TdHJlYW07Ci0r CSgqaG9zdEFwaSktPklzRm9ybWF0U3VwcG9ydGVkID0gSXNGb3JtYXRTdXBwb3J0ZWQ7Ci0rCQot KwlQYVV0aWxfSW5pdGlhbGl6ZVN0cmVhbUludGVyZmFjZSgmc25kaW9Ib3N0QXBpLT5ibG9ja2lu ZywKLSsJICAgIENsb3NlU3RyZWFtLAotKwkgICAgU3RhcnRTdHJlYW0sCi0rCSAgICBTdG9wU3Ry ZWFtLAotKwkgICAgQWJvcnRTdHJlYW0sCi0rCSAgICBJc1N0cmVhbVN0b3BwZWQsCi0rCSAgICBJ c1N0cmVhbUFjdGl2ZSwKLSsJICAgIEdldFN0cmVhbVRpbWUsCi0rCSAgICBQYVV0aWxfRHVtbXlH ZXRDcHVMb2FkLAotKwkgICAgQmxvY2tpbmdSZWFkU3RyZWFtLAotKwkgICAgQmxvY2tpbmdXcml0 ZVN0cmVhbSwKLSsJICAgIEJsb2NraW5nR2V0U3RyZWFtUmVhZEF2YWlsYWJsZSwKLSsJICAgIEJs b2NraW5nR2V0U3RyZWFtV3JpdGVBdmFpbGFibGUpOwotKwotKwlQYVV0aWxfSW5pdGlhbGl6ZVN0 cmVhbUludGVyZmFjZSgmc25kaW9Ib3N0QXBpLT5jYWxsYmFjaywKLSsJICAgIENsb3NlU3RyZWFt LAotKwkgICAgU3RhcnRTdHJlYW0sCi0rCSAgICBTdG9wU3RyZWFtLAotKwkgICAgQWJvcnRTdHJl YW0sCi0rCSAgICBJc1N0cmVhbVN0b3BwZWQsCi0rCSAgICBJc1N0cmVhbUFjdGl2ZSwKLSsJICAg IEdldFN0cmVhbVRpbWUsCi0rCSAgICBQYVV0aWxfRHVtbXlHZXRDcHVMb2FkLAotKwkgICAgUGFV dGlsX0R1bW15UmVhZCwKLSsJICAgIFBhVXRpbF9EdW1teVdyaXRlLAotKwkgICAgUGFVdGlsX0R1 bW15R2V0UmVhZEF2YWlsYWJsZSwKLSsJICAgIFBhVXRpbF9EdW1teUdldFdyaXRlQXZhaWxhYmxl KTsKLSsKLSsJRFBSKCJQYVNuZGlvX0luaXRpYWxpemU6IGRvbmVcbiIpOwotKwlyZXR1cm4gcGFO b0Vycm9yOwotK30KLWRpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMg Yi9zcmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMKLWluZGV4IGE5YjRhMDUuLmYxMGNlZDEg MTAwNjQ0Ci0tLS0gYS9zcmMvb3MvdW5peC9wYV91bml4X2hvc3RhcGlzLmMKLSsrKyBiL3NyYy9v cy91bml4L3BhX3VuaXhfaG9zdGFwaXMuYwotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAKLSBQYUVycm9y IFBhSmFja19Jbml0aWFsaXplKCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBp LCBQYUhvc3RBcGlJbmRleCBpbmRleCApOwotIFBhRXJyb3IgUGFBbHNhX0luaXRpYWxpemUoIFBh VXRpbEhvc3RBcGlSZXByZXNlbnRhdGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGluZGV4 ICk7Ci0rUGFFcnJvciBQYVNuZGlvX0luaXRpYWxpemUoIFBhVXRpbEhvc3RBcGlSZXByZXNlbnRh dGlvbiAqKmhvc3RBcGksIFBhSG9zdEFwaUluZGV4IGluZGV4ICk7Ci0gUGFFcnJvciBQYU9TU19J bml0aWFsaXplKCBQYVV0aWxIb3N0QXBpUmVwcmVzZW50YXRpb24gKipob3N0QXBpLCBQYUhvc3RB cGlJbmRleCBpbmRleCApOwotIC8qIEFkZGVkIGZvciBJUklYLCBQaWV0ZXIsIG9jdCAyLCAyMDAz OiAqLwotIFBhRXJyb3IgUGFTR0lfSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0 aW9uICoqaG9zdEFwaSwgUGFIb3N0QXBpSW5kZXggaW5kZXggKTsKLUBAIC01Nyw2ICs1OCwxMCBA QCBQYUVycm9yIFBhU2tlbGV0b25fSW5pdGlhbGl6ZSggUGFVdGlsSG9zdEFwaVJlcHJlc2VudGF0 aW9uICoqaG9zdEFwaSwgUGFIb3N0QXBpSQotIAotIFBhVXRpbEhvc3RBcGlJbml0aWFsaXplciAq cGFIb3N0QXBpSW5pdGlhbGl6ZXJzW10gPQotICAgICB7Ci0rI2lmZGVmIFBBX1VTRV9TTkRJTwot KwkgICAgUGFTbmRpb19Jbml0aWFsaXplLAotKyNlbmRpZgotKwotICNpZmRlZiBfX2xpbnV4X18K LSAKLSAjaWYgUEFfVVNFX0FMU0EKLS0tIAotMi4yNy4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cG9ydGF1ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy9wb3J0YXVkaW8vdGVtcGxhdGUKaW5kZXggNTRk Y2Q5YTcyMTU1MDQuLjI5YmIwYzUzNjIyYzkzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3BvcnRhdWRp by90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BvcnRhdWRpby90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3BvcnRhdWRpbycKIHBrZ25hbWU9cG9ydGF1ZGlvCi12 ZXJzaW9uPTE5MDYwMC4yMDE2MTAzMAotcmV2aXNpb249NgordmVyc2lvbj0xOTA3MDAuMjAyMTA0 MDYKK3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdz PSItLWVuYWJsZS1jeHggLS13aXRoLWphY2sgJCh2b3B0X2VuYWJsZSBzbmRpbykiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCkBAIC05LDE0ICs5LDEyIEBAIG1ha2VkZXBlbmRzPSJhbHNh LWxpYi1kZXZlbCBqYWNrLWRldmVsICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkiCiBzaG9y dF9kZXNjPSJQb3J0YWJsZSBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBJL08gbGlicmFyeSIKIG1haW50 YWluZXI9IsOJcmljbyBOb2d1ZWlyYSA8ZXJpY29uckBkaXNyb290Lm9yZz4iCiBsaWNlbnNlPSJN SVQiCi1ob21lcGFnZT0iaHR0cDovL3d3dy5wb3J0YXVkaW8uY29tIgotZGlzdGZpbGVzPSJodHRw Oi8vd3d3LiR7cGtnbmFtZX0uY29tL2FyY2hpdmVzL3BhX3N0YWJsZV92JHt2ZXJzaW9uJS4qfV8k e3ZlcnNpb24jKi59LnRneiIKLWNoZWNrc3VtPWY1YTIxZDdkY2Q2ZWU4NDM5NzQ0NmZhMWZhMWEw Njc1YmIyZThhNGE2ZGNlYjQzMDVhODQwNDY5OGQ4ZDE1MTMKK2hvbWVwYWdlPSJodHRwczovL3d3 dy5wb3J0YXVkaW8uY29tIgorZGlzdGZpbGVzPSJodHRwczovL2ZpbGVzLiR7cGtnbmFtZX0uY29t L2FyY2hpdmVzL3BhX3N0YWJsZV92JHt2ZXJzaW9uJS4qfV8ke3ZlcnNpb24jKi59LnRneiIKK2No ZWNrc3VtPTQ3ZWZiZjQyYzc3YzE5YTA1ZDIyZTYyN2Q0Mjg3M2U5OTFlYzBjMTM1NzIxOWMwZDc0 Y2U2YTI5NDhjYjJkZWYKIGRpc2FibGVfcGFyYWxsZWxfYnVpbGQ9eWVzCiAKLSMgc25kaW8gZGlz YWJsZWQgYnkgZGVmYXVsdDogbm9uLXVwc3RyZWFtIHBhdGNoCiBidWlsZF9vcHRpb25zPSJzbmRp byIKLWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0iIgogCiBwb3N0X2luc3RhbGwoKSB7CiAJdmxpY2Vu c2UgTElDRU5TRS50eHQKCkZyb20gYTAzZWVmZmI3OGVkM2Y4YjljYzZlNTZmNTMwZjdhMDY5MzE5 ZGU1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFk ZXB0c2xhYkBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MjcgKzA2MDAK U3ViamVjdDogW1BBVENIIDQvNl0gc3FsaXRlOiB1cGRhdGUgdG8gMy40NS4zLgoKLS0tCiBzcmNw a2dzL3NxbGl0ZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NxbGl0ZS90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvc3FsaXRlL3RlbXBsYXRlCmluZGV4IDFkNTQ4ZWI0Nzk1NjBiLi40YWU4ZmQ0 ZDI4MTQ2NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zcWxpdGUvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zcWxpdGUvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdz cWxpdGUnCiBwa2duYW1lPXNxbGl0ZQotdmVyc2lvbj0zLjQ1LjIKK3ZlcnNpb249My40NS4zCiBy ZXZpc2lvbj0xCiBfYW1hbGdhbWF0aW9udmVyPSQocHJpbnRmICIlZCUwMmQlMDJkMDBcbiIgJHt2 ZXJzaW9uLy8uLyB9KQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQpAQCAtMTIsNyArMTIsNyBA QCBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgogaG9tZXBhZ2U9Imh0dHBzOi8vc3FsaXRlLm9yZy8i CiBjaGFuZ2Vsb2c9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvY2hhbmdlcy5odG1sIgogZGlzdGZp bGVzPSJodHRwczovL3NxbGl0ZS5vcmcvMjAyNC9zcWxpdGUtYXV0b2NvbmYtJHtfYW1hbGdhbWF0 aW9udmVyfS50YXIuZ3oiCi1jaGVja3N1bT1iYzkwNjc0NDJlZWRmM2RkMzk5ODliNWM1Y2ZiZmZm MzdhZTY2Y2M5Yzk5Mjc0ZTBjMzA1MmRjNGQ0YThmNmFlCitjaGVja3N1bT1iMjgwOWNhNTMxMjRj MTljNjBmNDJiZjYyNzczNmVhZTAxMWFmZGNjMjA1YmI0ODI3MGE1ZWU5YTM4MTkxNTMxCiAKIENG TEFHUz0iLURTUUxJVEVfRU5BQkxFX0RCU1RBVF9WVEFCIC1EU1FMSVRFX0VOQUJMRV9DT0xVTU5f TUVUQURBVEEgXAogIC1EU1FMSVRFX0VOQUJMRV9VTkxPQ0tfTk9USUZZIC1EU1FMSVRFX1NFQ1VS RV9ERUxFVEUgXAoKRnJvbSBjOTdlMTBlOWNiOTk4OWZhYzZjY2ZiNjg4MjY4MGY1YmUwYzY4MjBj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJRm91bmRTaWxlbnRIb3VzZSA8YWRlcHRz bGFiQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAyNiBBcHIgMjAyNCAyMzoxODozMiArMDYwMApTdWJq ZWN0OiBbUEFUQ0ggNS82XSBzdWlsOiB1cGRhdGUgdG8gMC4xMC4yMC4KCi0tLQogc3JjcGtncy9z dWlsL3RlbXBsYXRlIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N1aWwvdGVtcGxhdGUgYi9z cmNwa2dzL3N1aWwvdGVtcGxhdGUKaW5kZXggNjgwZTE5NzJjZDQzNzEuLjU4ZDdkNGFjZWVlMDUy IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1aWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdWlsL3Rl bXBsYXRlCkBAIC0xLDggKzEsOCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VpbCcKIHBrZ25h bWU9c3VpbAotdmVyc2lvbj0wLjEwLjEyCit2ZXJzaW9uPTAuMTAuMjAKIHJldmlzaW9uPTEKLWJ1 aWxkX3N0eWxlPXdhZjMKK2J1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWcgbHYyIgogbWFrZWRlcGVuZHM9Imd0aystZGV2ZWwgcXQ1LWRldmVsIGd0ayszLWRldmVs Igogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgQyBsaWJyYXJ5IGZvciBsb2FkaW5nIGFuZCB3cmFw cGluZyBMVjIgcGx1Z2luIFVJcyIKQEAgLTEwLDggKzEwLDggQEAgbWFpbnRhaW5lcj0iT3JwaGFu ZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRw czovL2Ryb2JpbGxhLm5ldC9zb2Z0d2FyZS9zdWlsLmh0bWwiCiBjaGFuZ2Vsb2c9Imh0dHBzOi8v Z2l0bGFiLmNvbS9sdjIvc3VpbC8tL3Jhdy9tYXN0ZXIvTkVXUyIKLWRpc3RmaWxlcz0iaHR0cDov L2Rvd25sb2FkLmRyb2JpbGxhLm5ldC8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKLWNo ZWNrc3VtPWRhYTc2M2IyMzFiMjJhMWY1MzI1MzBkM2UwNGMxZmFlNDhkMWUxZTAzNzg1ZTIzYzlh YzEzOGYyMDdiODdlY2QKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5kcm9iaWxsYS5uZXQv c3VpbC0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPTMzNGEzZWQzZTczZDVlMTdmZjQwMGIz ZGI5ODAxZjYzODA5MTU1YjBmYWE4YjFiOTA0NmY5ZGQzZmZlZjkzNGUKIAogaWYgWyAiJENST1NT X0JVSUxEIiBdOyB0aGVuCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1ob3N0LXRvb2xzIHF0NS1k ZXZlbCIKCkZyb20gNTY1OGI3MDk0ZGE3N2E3MjcyODk3MmYzMmEzYjRlNzQ5NWEzNDMwOSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSUZvdW5kU2lsZW50SG91c2UgPGFkZXB0c2xhYkBn bWFpbC5jb20+CkRhdGU6IEZyaSwgMjYgQXByIDIwMjQgMjM6MTg6MzkgKzA2MDAKU3ViamVjdDog W1BBVENIIDYvNl0gd2F2cGFjazogdXBkYXRlIHRvIDUuNy4wLgoKLS0tCiBzcmNwa2dzL3dhdnBh Y2svdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93YXZwYWNrL3RlbXBsYXRlIGIvc3Jj cGtncy93YXZwYWNrL3RlbXBsYXRlCmluZGV4IGQ5YjBmNjhmMDE0YmRhLi5jNmM2NTc3MGYwZDdm YyAxMDA2NDQKLS0tIGEvc3JjcGtncy93YXZwYWNrL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2F2 cGFjay90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dhdnBh Y2snCiBwa2duYW1lPXdhdnBhY2sKLXZlcnNpb249NS42LjAKK3ZlcnNpb249NS43LjAKIHJldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJs ZS1zdGF0aWMiCkBAIC0xMCw3ICsxMCw3IEBAIGxpY2Vuc2U9IkJTRC0zLUNsYXVzZSIKIGhvbWVw YWdlPSJodHRwczovL3d3dy53YXZwYWNrLmNvbS8iCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3Lmdp dGh1YnVzZXJjb250ZW50LmNvbS9kYnJ5L1dhdlBhY2svbWFzdGVyL05FV1MiCiBkaXN0ZmlsZXM9 Imh0dHBzOi8vd3d3LndhdnBhY2suY29tL3dhdnBhY2stJHt2ZXJzaW9ufS50YXIuYnoyIgotY2hl Y2tzdW09OGNiZmExNTkyN2QyOWJjZjk1M2RiMzVjMGNmY2E3NDI0MzQ0ZmY0M2ViZTQwODNkYWYx NjE1NzdmYjgzOWNjMQorY2hlY2tzdW09ODk0NGIyMzc5NjhhMWIzOTc2YTFlYjQ3Y2Q1NTY5MTZl MDQxYTJhYTg5MTc0OTVkYjY1ZjgyYzNmY2MyYTIyNQogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFD SElORSIgaW4KIAlhcm12NSopIGNvbmZpZ3VyZV9hcmdzKz0iIC0tZGlzYWJsZS1hc20iOzsK --===============5277843823751358552==--