From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20578 invoked from network); 28 Jul 2020 07:24:36 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 28 Jul 2020 07:24:36 -0000 Content-Type: multipart/mixed; boundary="===============3405950206756528908==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_bash=3A_stop_vendoring_patch?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 28 Jul 2020 09:24:34 +0200 List-Id: Message-ID: <20200728072434.8fp315P4i3uawjl0ydq-69GaGikN_q4e7XNMXxHIfNk@z> GitHub notification mails are now in MIME to allow UTF8. --===============3405950206756528908== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgc2duIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9zZ24vdm9p ZC1wYWNrYWdlcyBiYXNoLW5vLXZlbmRvcgpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYKCmJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCi0gY2Fy cnkgdGhlbSBhbG9uZyB3b24ndCBnZXQgdXMgYW55d2hlcmUNCi0gdmVyaWZ5IGNoZWNrc3VtIGZv ciBsaWJyZWFkbGluZTgNCg0KY29uZmxpY3Qgd2l0aCAjMjM4MTUgCgpBIHBhdGNoIGZpbGUgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYu cGF0Y2ggaXMgYXR0YWNoZWQ= --===============3405950206756528908== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-bash-no-vendor-23826.patch" RnJvbSBmMDNhMTYyNzQ3MDQwM2QyZjk4YWU3N2RiNGY1NDhhODljMDM5NGViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1B N249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAyNSBKdWwgMjAyMCAxMDoxNzowMSArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS82XSBnaXRhdHRy aWJ1dGVzOiBkb24ndCBzaG93IHdoaXRlc3BhY2UgZXJyb3Igb24gcGF0Y2hlcwoKLS0tCiAuZ2l0 YXR0cmlidXRlcyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS8uZ2l0YXR0cmlidXRlcyBiLy5naXRhdHRyaWJ1dGVzCmluZGV4IDdmMjRhOGY4MWQw Li44ZGRhZTZmY2U0NSAxMDA2NDQKLS0tIGEvLmdpdGF0dHJpYnV0ZXMKKysrIGIvLmdpdGF0dHJp YnV0ZXMKQEAgLTEsMiArMSw0IEBACiB0ZW1wbGF0ZSBsaW5ndWlzdC1sYW5ndWFnZT1iYXNoCiBj b21tb24vc2hsaWJzIG1lcmdlPXVuaW9uCisqLnBhdGNoIHdoaXRlc3BhY2U9LXNwYWNlLWJlZm9y ZS10YWIsLXRyYWlsaW5nLXNwYWNlCisqLmRpZmYgd2hpdGVzcGFjZT0tc3BhY2UtYmVmb3JlLXRh YiwtdHJhaWxpbmctc3BhY2UKCkZyb20gNzA3NDk0ZjNkODQ5NTYyMWVlNzRkZjdmMDc1MTg5MWRi OTAwNDczMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89 QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTA6Mjg6NTcgKzA3MDAKU3ViamVjdDog W1BBVENIIDIvNl0gY2hyb290LWJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCgotLS0KIHNyY3Br Z3MvY2hyb290LWJhc2gvdGVtcGxhdGUgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlIGIvc3JjcGtncy9j aHJvb3QtYmFzaC90ZW1wbGF0ZQppbmRleCA5N2I4YTliZTgxZi4uMTFiMjQxNGJhNDEgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvb3Qt YmFzaC90ZW1wbGF0ZQpAQCAtMSw5ICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjaHJv b3QtYmFzaCcKIHBrZ25hbWU9Y2hyb290LWJhc2gKLV9iYXNoX2Rpc3R2ZXI9NS4wCi1fYmFzaF9w YXRjaGxldmVsPTAxNgotdmVyc2lvbj0iJHtfYmFzaF9kaXN0dmVyfS4ke19iYXNoX3BhdGNobGV2 ZWx9IgordmVyc2lvbj01LjAuMDE2CiByZXZpc2lvbj0xCitfYmFzaF9kaXN0dmVyPSR7dmVyc2lv biUuKn0KK19iYXNoX3BhdGNobGV2ZWw9JHt2ZXJzaW9uIyMqLn0KK19wYXRjaHByZWZpeD0iYmFz aCR7X2Jhc2hfZGlzdHZlci8uL30iCiB3cmtzcmM9ImJhc2gtJHtfYmFzaF9kaXN0dmVyfSIKIGJ1 aWxkX3N0eWxlPWdudS1jb25maWd1cmUKICMgbmVlZCAnYmFzaF9jdl90ZXJtY2FwX2xpYj1nbnV0 ZXJtY2FwJyBpbiBvcmRlciB0byBmb3JjZSBiYXNoIHRvIHVzZSB0aGUKQEAgLTE1LDE4ICsxNiw0 MyBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vd3d3LmdudS5vcmcvc29m dHdhcmUvYmFzaC9iYXNoLmh0bWwiCiBkaXN0ZmlsZXM9IiR7R05VX1NJVEV9L2Jhc2gvYmFzaC0k e19iYXNoX2Rpc3R2ZXJ9LnRhci5neiIKLWNoZWNrc3VtPWI0YTgwZjJhYzY2MTcwYjI5MTNlZmJm YjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKKworX3VybD0iJHtHTlVf U0lURX0vYmFzaC9iYXNoLSR7X2Jhc2hfZGlzdHZlcn0tcGF0Y2hlcyIKK2ZvciBfcCBpbiAkKHNl cSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCisJZGlzdGZpbGVzKz0iICR7X3VybH0v JHtfcGF0Y2hwcmVmaXh9LSR7X3B9IgorCXNraXBfZXh0cmFjdGlvbis9IiAke19wYXRjaHByZWZp eH0tJHtfcH0iCitkb25lCit1bnNldCBfdXJsCit1bnNldCBfcAorCitjaGVja3N1bT0iYjRhODBm MmFjNjYxNzBiMjkxM2VmYmZiOWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0 ZAorIGYyZmU5ZTFmMGZhZGRmMTRhYjliZmE4OGQ0NTBhNzVlNWQwMjhmZWRhZmFkMjNiODg3MTZi ZDY1N2M3MzcyODkKKyA4N2U4N2QzNTQyZTU5ODc5OWFkYjNlN2UwMWM4MTY1YmM3NDNlMTM2YTQw MGVkMGRlMDE1ODQ1ZjdmZjY4NzA3CisgNGVlYmNkYzM3YjEzNzkzYTIzMmM1ZjJmNDk4YTVmY2Jm N2RhMGVjYjNkYTIwNTkzOTFjMDk2ZGI2MjBlYzg1YgorIDE0NDQ3YWQ4MzJhZGQ4ZWNmYWZkY2U1 Mzg0YmFkZDkzMzY5N2I1NTljNDY4OGQ2YjllM2QzNmZmMzZjNjJmMDgKKyA1YmY1NGRkOWJkMmMy MTFkMmJmYjM0YTQ5ZTJjNzQxZjJlZDVlMzM4NzY3ZTljZTlmNGQ0MTI1NGJmOWY4Mjc2CisgZDY4 NTI5YTZmZjIwMWI2ZmY1OTE1MzE4YWIxMmZjMTZiOGEwZWJiNzdmZGEzMzA4MzAzZmNjMWUxMzM5 ODQyMAorIDE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0 MWZhZDcwZGYxOWFmOWIKKyBlZWM2NDU4ODYyMmE4MmE1MDI5YjI3NzZlMjE4YTc1YTM2NDBiZWY0 OTUzZjA5ZDZlZTFmNDE5OTY3MGFkN2UzCisgZWQzY2EyMTc2NzMwM2ZjM2RlOTM5MzRhYTUyNGMy ZTkyMDc4N2M1MDZiNjAxY2M0MGE0ODk3ZDRiMDk0ZDkwMworIGQ2ZmJjMzI1ZjBiNWRjNTRkZGJl OGVlNDMwMjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEKKyAyYzRkZTMzMmI5 MWVhZjc5N2FiYmJkNmM3OTcwOTY5MGI1Y2JkNDhiMTJlOGRmZTc0ODA5NmRiZDdiZjQ3NGVhCisg Mjk0M2VlMTk2ODgwMTgyOTZmMmEwNGRiZmUzMGI3MTM4Yjg4OTcwMGVmYThmZjFjMDUyNGFmMjcx ZTBlZTIzMworIGY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRh ZDNiOTI3ZjNmM2ViNzA5OWEKKyA1ZDZlZWU2NTE0ZWU2ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBh ZTExOTI0NmYxYzVhOWEzNWRiMWY3MmFmNTg5CisgYTUxN2RmMmRkYTkzYjI2ZDVjYmYwMGVmZmVm ZWE5M2UzYTRjY2Q2NjUyZjE1MmY0MTA5MTcwNTQ0ZWJmYTA1ZQorIGZmZDFkN2E1NGE5OWZhN2Y1 YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQiCiAKIGJvb3Rz dHJhcD15ZXMKIHByb3ZpZGVzPSJiYXNoLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi1jb25mbGlj dHM9ImJhc2g+PTAgZGFzaD49MCIKK2NvbmZsaWN0cz0iYmFzaD49MCBkYXNoPj0wIGJ1c3lib3g+ PTAgbG9rc2g+PTAgbWtzaD49MCBva3NoPj0wIHlhc2g+PTAiCiAKLXByZV9jb25maWd1cmUoKSB7 Ci0JbG9jYWwgdmVyPSR7X2Jhc2hfZGlzdHZlci8vLi99IHAKK3Bvc3RfcGF0Y2goKSB7CisJbG9j YWwgX3AKIAljZCAke3dya3NyY30KLQlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRj aGxldmVsfSk7IGRvCi0JCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHt2ZXJ9LSRw LlxuIgotCQlwYXRjaCAtc05wMCAtaSAke1hCUFNfU1JDUEtHRElSfS9iYXNoL2ZpbGVzL2Jhc2gk e3Zlcn0tJHtwfQorCWZvciBfcCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7 IGRvCisJCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCAke19wYXRjaHByZWZpeH0tJHtfcH0u XG4iCisJCXBhdGNoIC1zTnAwIC1pICR7WEJQU19TUkNESVNURElSfS9jaHJvb3QtYmFzaC0kdmVy c2lvbi8ke19wYXRjaHByZWZpeH0tJHtfcH0KIAlkb25lCiB9CiAKCkZyb20gMDc3NTI2NWI2NTc5 ZTIwZDhkMjZmNzg2NDQ5ZmQ5ODUyZmY5MzE1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogPT9VVEYtOD9xPz1DND05MG89QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIw RGFuaD89CiA8Y29uZ2RhbmhxeEBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjggSnVsIDIwMjAgMDY6 NTk6NTQgKzA3MDAKU3ViamVjdDogW1BBVENIIDMvNl0gY2hyb290LWJhc2g6IHVwZGF0ZSB0byA1 LjAuMDE4LgoKLS0tCiBzcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlIHwgNiArKysrLS0KIDEg ZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9jaHJvb3QtYmFzaC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVt cGxhdGUKaW5kZXggMTFiMjQxNGJhNDEuLjI5ZTQ5NzIwMzA0IDEwMDY0NAotLS0gYS9zcmNwa2dz L2Nocm9vdC1iYXNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjaHJvb3QtYmFzaCcKIHBrZ25h bWU9Y2hyb290LWJhc2gKLXZlcnNpb249NS4wLjAxNgordmVyc2lvbj01LjAuMDE4CiByZXZpc2lv bj0xCiBfYmFzaF9kaXN0dmVyPSR7dmVyc2lvbiUuKn0KIF9iYXNoX3BhdGNobGV2ZWw9JHt2ZXJz aW9uIyMqLn0KQEAgLTQxLDcgKzQxLDkgQEAgY2hlY2tzdW09ImI0YTgwZjJhYzY2MTcwYjI5MTNl ZmJmYjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKICBmNWQ3MTc4ZDhk YTMwNzk5ZTAxYjgzYTA4MDIwMThkOTEzZDZhYTk3MmRkMmRkYWQzYjkyN2YzZjNlYjcwOTlhCiAg NWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFm NzJhZjU4OQogIGE1MTdkZjJkZGE5M2IyNmQ1Y2JmMDBlZmZlZmVhOTNlM2E0Y2NkNjY1MmYxNTJm NDEwOTE3MDU0NGViZmEwNWUKLSBmZmQxZDdhNTRhOTlmYTdmNWIxODI1ZTRmN2U5NWQ4Yzg4NzZi YzJjYTE1MWYxNTBlNzUxZDQyOWM2NTBiMDZkIgorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3 ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2NmQ0 MTFkZDVmYzkxMjAwMzI1MzNhNDAxMmRmMWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxCisgN2MzMTRl Mzc1YTEwNWE2NjQyZThlZDQ0ZjM4MDhiOWRlZjg5ZDE1Zjc0OTJmZTIwMjlhMjFiYTljMGRlODFk MyIKIAogYm9vdHN0cmFwPXllcwogcHJvdmlkZXM9ImJhc2gtJHt2ZXJzaW9ufV8ke3JldmlzaW9u fSIKCkZyb20gMzMzOGRiYThkODE1ZTUzZDJiYzA4NmQ0YTdiODlmNDdlYzFjMzg3MCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89QzM9QTBuPTIwVHI9RTE9 QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMjUgSnVsIDIwMjAgMTU6Mjg6NTMgKzA3MDAKU3ViamVjdDogW1BBVENIIDQvNl0gYmFz aDogc3RvcCB2ZW5kb3JpbmcgcGF0Y2hlcwoKLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAwMSAgICAgICAgICAgICB8IDE2NyAtLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAwMiAgICAgICAgICAgICB8IDExMyAtLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDAzICAgICAgICAgICAgIHwgMjM5IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDQgICAgICAgICAgICAgfCAgNTMgLS0tLQogc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDUgICAgICAgICAgICAgfCAxMTAgLS0tLS0tLS0KIHNyY3BrZ3Mv YmFzaC9maWxlcy9iYXNoNTAtMDA2ICAgICAgICAgICAgIHwgIDQ3IC0tLS0KIHNyY3BrZ3MvYmFz aC9maWxlcy9iYXNoNTAtMDA3ICAgICAgICAgICAgIHwgIDYyIC0tLS0tCiBzcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwOCAgICAgICAgICAgICB8ICA2OCAtLS0tLQogc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMDkgICAgICAgICAgICAgfCAgNDIgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTAgICAgICAgICAgICAgfCAxNzIgLS0tLS0tLS0tLS0tLQogc3JjcGtncy9iYXNo L2ZpbGVzL2Jhc2g1MC0wMTEgICAgICAgICAgICAgfCAgNTkgLS0tLS0KIHNyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDEyICAgICAgICAgICAgIHwgIDY0IC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxMyAgICAgICAgICAgICB8ICA3MyAtLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDE0ICAgICAgICAgICAgIHwgIDUyIC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDE1ICAgICAgICAgICAgIHwgIDc4IC0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMTYgICAgICAgICAgICAgfCAgNTggLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDE3ICAgICAgICAgICAgIHwgMjg5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mv YmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoIHwgICA3IC0KIHNyY3BrZ3MvYmFzaC90 ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDQ4ICsrKy0KIDE5IGZpbGVzIGNoYW5nZWQs IDM3IGluc2VydGlvbnMoKyksIDE3NjQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwMgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDAzCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMDQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAw NQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA2CiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwOAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTAKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAxMQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9i YXNoNTAtMDEyCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE1CiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNwogZGVsZXRlIG1vZGUgMTAwNzU1IHNyY3Br Z3MvYmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMQpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3YmQ4MmNmNzIuLjAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxCisrKyAvZGV2L251bGwKQEAgLTEsMTY3 ICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09 PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDAxCi0KLUJ1Zy1S ZXBvcnRlZC1ieToJYXhlbEBmcmVha291dC5kZQotQnVnLVJlZmVyZW5jZS1JRDoJPDIwMTkwMTA4 MjA1MC54MDhLb1NoUzAwNjczMUBib25nby5mcmVha291dC5kZT4KLUJ1Zy1SZWZlcmVuY2UtVVJM OglodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cw MDA3OS5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotVW5kZXIgY2VydGFpbiBjaXJjdW1zdGFu Y2VzLCB0aGUgZ2xvYiBleHBhbnNpb24gY29kZSBkaWQgbm90IHJlbW92ZQotYmFja3NsYXNoZXMg ZXNjYXBpbmcgY2hhcmFjdGVycyBpbiBkaXJlY3RvcnkgbmFtZXMgKG9yIHBvcnRpb25zIG9mIGEK LXBhdHRlcm4gcHJlY2VkaW5nIGEgc2xhc2gpLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2gg LXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC9iYXNobGluZS5jCTIwMTgtMTEtMjcgMTM6MjA6MTYu MDAwMDAwMDAwIC0wNTAwCi0tLS0gYmFzaGxpbmUuYwkyMDE5LTAxLTE2IDE2OjA2OjAzLjAwMDAw MDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMjMyLDIzNSAqKioqCi0tLS0gMjMyLDIz NiAtLS0tCi0gIHN0YXRpYyBpbnQgYmFzaF9wb3NzaWJsZV9jb21tYW5kX2NvbXBsZXRpb25zIF9f UCgoaW50LCBpbnQpKTsKLSAgCi0rIHN0YXRpYyBpbnQgY29tcGxldGlvbl9nbG9iX3BhdHRlcm4g X19QKChjaGFyICopKTsKLSAgc3RhdGljIGNoYXIgKmdsb2JfY29tcGxldGVfd29yZCBfX1AoKGNv bnN0IGNoYXIgKiwgaW50KSk7Ci0gIHN0YXRpYyBpbnQgYmFzaF9nbG9iX2NvbXBsZXRpb25faW50 ZXJuYWwgX19QKChpbnQpKTsKLSoqKioqKioqKioqKioqKgotKioqIDE3NDIsMTc0NiAqKioqCi0g ICAgLyogVGhpcyBjb3VsZCBiZSBhIGdsb2JiaW5nIHBhdHRlcm4sIHNvIHRyeSB0byBleHBhbmQg aXQgdXNpbmcgcGF0aG5hbWUKLSAgICAgICBleHBhbnNpb24uICovCi0hICAgaWYgKCFtYXRjaGVz ICYmIGdsb2JfcGF0dGVybl9wICh0ZXh0KSkKLSAgICAgIHsKLSAgICAgICAgbWF0Y2hlcyA9IHJs X2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgZ2xvYl9jb21wbGV0ZV93b3JkKTsKLS0tLSAxNzQz LDE3NDcgLS0tLQotICAgIC8qIFRoaXMgY291bGQgYmUgYSBnbG9iYmluZyBwYXR0ZXJuLCBzbyB0 cnkgdG8gZXhwYW5kIGl0IHVzaW5nIHBhdGhuYW1lCi0gICAgICAgZXhwYW5zaW9uLiAqLwotISAg IGlmICghbWF0Y2hlcyAmJiBjb21wbGV0aW9uX2dsb2JfcGF0dGVybiAoKGNoYXIgKil0ZXh0KSkK LSAgICAgIHsKLSAgICAgICAgbWF0Y2hlcyA9IHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwg Z2xvYl9jb21wbGV0ZV93b3JkKTsKLSoqKioqKioqKioqKioqKgotKioqIDE4NTEsMTg1NSAqKioq Ci0gIAl9Ci0gIAotISAgICAgICBnbG9icGF0ID0gZ2xvYl9wYXR0ZXJuX3AgKGhpbnRfdGV4dCk7 Ci0gIAotICAgICAgICAvKiBJZiB0aGlzIGlzIGFuIGFic29sdXRlIHByb2dyYW0gbmFtZSwgZG8g bm90IGNoZWNrIGl0IGFnYWluc3QKLS0tLSAxODUyLDE4NTYgLS0tLQotICAJfQotICAKLSEgICAg ICAgZ2xvYnBhdCA9IGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuICgoY2hhciAqKWhpbnRfdGV4dCk7 Ci0gIAotICAgICAgICAvKiBJZiB0aGlzIGlzIGFuIGFic29sdXRlIHByb2dyYW0gbmFtZSwgZG8g bm90IGNoZWNrIGl0IGFnYWluc3QKLSoqKioqKioqKioqKioqKgotKioqIDM3MTQsMzcxNyAqKioq Ci0tLS0gMzcxNSwzNzczIC0tLS0KLSAgfQotICAKLSsgc3RhdGljIGludAotKyBjb21wbGV0aW9u X2dsb2JfcGF0dGVybiAoc3RyaW5nKQotKyAgICAgIGNoYXIgKnN0cmluZzsKLSsgewotKyAgIHJl Z2lzdGVyIGludCBjOwotKyAgIGNoYXIgKnNlbmQ7Ci0rICAgaW50IG9wZW47Ci0rIAotKyAgIERF Q0xBUkVfTUJTVEFURTsKLSsgCi0rICAgb3BlbiA9IDA7Ci0rICAgc2VuZCA9IHN0cmluZyArIHN0 cmxlbiAoc3RyaW5nKTsKLSsgCi0rICAgd2hpbGUgKGMgPSAqc3RyaW5nKyspCi0rICAgICB7Ci0r ICAgICAgIHN3aXRjaCAoYykKLSsgCXsKLSsgCWNhc2UgJz8nOgotKyAJY2FzZSAnKic6Ci0rIAkg IHJldHVybiAoMSk7Ci0rIAotKyAJY2FzZSAnWyc6Ci0rIAkgIG9wZW4rKzsKLSsgCSAgY29udGlu dWU7Ci0rIAotKyAJY2FzZSAnXSc6Ci0rIAkgIGlmIChvcGVuKQotKyAJICAgIHJldHVybiAoMSk7 Ci0rIAkgIGNvbnRpbnVlOwotKyAKLSsgCWNhc2UgJysnOgotKyAJY2FzZSAnQCc6Ci0rIAljYXNl ICchJzoKLSsgCSAgaWYgKCpzdHJpbmcgPT0gJygnKQkvKikqLwotKyAJICAgIHJldHVybiAoMSk7 Ci0rIAkgIGNvbnRpbnVlOwotKyAKLSsgCWNhc2UgJ1xcJzoKLSsgCSAgaWYgKCpzdHJpbmcgPT0g MCkKLSsgCSAgICByZXR1cm4gKDApOwkgCSAgCi0rIAl9Ci0rIAotKyAgICAgICAvKiBBZHZhbmNl IG9uZSBmZXdlciBieXRlIHRoYW4gYW4gZW50aXJlIG11bHRpYnl0ZSBjaGFyYWN0ZXIgdG8KLSsg CSBhY2NvdW50IGZvciB0aGUgYXV0by1pbmNyZW1lbnQgaW4gdGhlIGxvb3AgYWJvdmUuICovCi0r ICNpZmRlZiBIQU5ETEVfTVVMVElCWVRFCi0rICAgICAgIHN0cmluZy0tOwotKyAgICAgICBBRFZB TkNFX0NIQVJfUCAoc3RyaW5nLCBzZW5kIC0gc3RyaW5nKTsKLSsgICAgICAgc3RyaW5nKys7Ci0r ICNlbHNlCi0rICAgICAgIEFEVkFOQ0VfQ0hBUl9QIChzdHJpbmcsIHNlbmQgLSBzdHJpbmcpOwot KyAjZW5kaWYKLSsgICAgIH0KLSsgICByZXR1cm4gKDApOwotKyB9Ci0rIAotICBzdGF0aWMgY2hh ciAqZ2xvYnRleHQ7Ci0gIHN0YXRpYyBjaGFyICpnbG9ib3JpZzsKLSoqKioqKioqKioqKioqKgot KioqIDM4NzgsMzg4MiAqKioqCi0gICAgICB9ICAgICAgCi0gIAotISAgIGlmICh0ICYmIGdsb2Jf cGF0dGVybl9wICh0KSA9PSAwKQotICAgICAgcmxfZXhwbGljaXRfYXJnID0gMTsJLyogWFhYIC0g Zm9yY2UgZ2xvYl9jb21wbGV0ZV93b3JkIHRvIGFwcGVuZCBgKicgKi8KLSAgICBGUkVFICh0KTsK LS0tLSAzOTM0LDM5MzggLS0tLQotICAgICAgfSAgICAgIAotICAKLSEgICBpZiAodCAmJiBjb21w bGV0aW9uX2dsb2JfcGF0dGVybiAodCkgPT0gMCkKLSAgICAgIHJsX2V4cGxpY2l0X2FyZyA9IDE7 CS8qIFhYWCAtIGZvcmNlIGdsb2JfY29tcGxldGVfd29yZCB0byBhcHBlbmQgYConICovCi0gICAg RlJFRSAodCk7Ci0qKiogLi4vYmFzaC01LjAvbGliL2dsb2IvZ2xvYl9sb29wLmMJMjAxOC0xMi0z MSAxMzozNToxNS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBsaWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE5 LTAxLTA5IDA5OjQ0OjM2LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNTUs NTkgKioqKgotICAKLSAgICAgICAgY2FzZSBMKCdcXCcpOgotLSAjaWYgMAotICAJLyogRG9uJ3Qg bGV0IHRoZSBwYXR0ZXJuIGVuZCBpbiBhIGJhY2tzbGFzaCAoR01BVENIIHJldHVybnMgbm8gbWF0 Y2gKLSAgCSAgIGlmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBiYWNrc2xhc2ggYW55d2F5KSwgYnV0 IG90aGVyd2lzZSByZXR1cm4gMSwKLS0tLSA1NSw1OCAtLS0tCi0qKioqKioqKioqKioqKioKLSoq KiA2MSw2OSAqKioqCi0gIAkgICBhbmQgaXQgY2FuIGJlIHJlbW92ZWQuICovCi0gIAlyZXR1cm4g KCpwICE9IEwoJ1wwJykpOwotLSAjZWxzZQotLSAJLyogVGhlIHBhdHRlcm4gbWF5IG5vdCBlbmQg d2l0aCBhIGJhY2tzbGFzaC4gKi8KLS0gCWlmICgqcCsrID09IEwoJ1wwJykpCi0tIAkgIHJldHVy biAwOwotLSAjZW5kaWYKLSAgICAgICAgfQotICAKLS0tLSA2MCw2MyAtLS0tCi0qKiogLi4vYmFz aC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0t LS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioq KioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBw YXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZp bmUgUEFUQ0hMRVZFTCAwCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAy NiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRo ZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxCi0g IAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDIgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMgpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZjODI3MmY4NGEuLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAyCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICsw LDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09 PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDAyCi0KLUJ1Zy1SZXBv cnRlZC1ieToJQW50ZSBQZXJpYyA8c3ludGhtZWF0QGdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2Ut SUQ6CTxCN0UzQjU2Ny0yNDY3LTRGN0ItQjZCOS1DQTRFNzVBOUM5M0ZAZ21haWwuY29tPgotQnVn LVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFz aC8yMDE5LTAxL21zZzAwMDk1Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1XaGVuIGFuIGFs aWFzIHZhbHVlIGVuZHMgd2l0aCBhbiB1bnF1b3RlZCBsaXRlcmFsIHRhYiAobm90IHBhcnQgb2Yg YSBxdW90ZWQKLXN0cmluZyBvciBjb21tZW50KSwgYWxpYXMgZXhwYW5zaW9uIGNhbm5vdCBjb3Jy ZWN0bHkgZGV0ZWN0IHRoZSBlbmQgb2YgdGhlCi1hbGlhcyB2YWx1ZSBhZnRlciBleHBhbmRpbmcg aXQuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4w L3BhcnNlci5oCTIwMTgtMTItMjggMTk6MTE6MTguMDAwMDAwMDAwIC0wNTAwCi0tLS0gcGFyc2Vy LmgJMjAxOS0wMS0xMSAxNToxMzowMy4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgot KioqIDQ4LDUxICoqKioKLS0tLSA0OCw1MiAtLS0tCi0gICNkZWZpbmUgUFNUX1JFRElSTElTVAkw eDA4MDAwMAkvKiBwYXJzaW5nIGEgbGlzdCBvZiByZWRpcmVjdGlvbnMgcHJlY2VkaW5nIGEgc2lt cGxlIGNvbW1hbmQgbmFtZSAqLwotICAjZGVmaW5lIFBTVF9DT01NRU5UCTB4MTAwMDAwCS8qIHBh cnNpbmcgYSBzaGVsbCBjb21tZW50OyB1c2VkIGJ5IGFsaWFzZXMgKi8KLSsgI2RlZmluZSBQU1Rf RU5EQUxJQVMJMHgyMDAwMDAJLyoganVzdCBmaW5pc2hlZCBleHBhbmRpbmcgYW5kIGNvbnN1bWlu ZyBhbiBhbGlhcyAqLwotICAKLSAgLyogRGVmaW5pdGlvbiBvZiB0aGUgZGVsaW1pdGVyIHN0YWNr LiAgTmVlZGVkIGJ5IHBhcnNlLnkgYW5kIGJhc2hoaXN0LmMuICovCi0qKiogLi4vYmFzaC01LjAv cGFyc2UueQkyMDE5LTAxLTAyIDEzOjU3OjM0LjAwMDAwMDAwMCAtMDUwMAotLS0tIHBhcnNlLnkJ MjAxOS0wMS0xNCAwODoyMzozMS4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioq IDI1NTgsMjU2NyAqKioqCi0gICAgICAgIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNI X0RQQVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYgUFNUX0NPTU1FTlQpID09IDAgJiYK LSAgICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRleCA+IDAgJiYKLSEgICAgICAgc2hlbGxfaW5w dXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICcgJyAmJgotICAgICAgICBzaGVs bF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAg ICBzaGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkg PT0gMCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBj dXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotICAgICAgICByZXR1 cm4gJyAnOwkvKiBFTkRfQUxJQVMgKi8KLSAgICAgIH0KLS0tLSAyNTU4LDI1NjkgLS0tLQotICAg ICAgICBwdXNoZWRfc3RyaW5nX2xpc3QtPmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAg KHBhcnNlcl9zdGF0ZSAmIFBTVF9DT01NRU5UKSA9PSAwICYmCi0rICAgICAgIChwYXJzZXJfc3Rh dGUgJiBQU1RfRU5EQUxJQVMpID09IDAgJiYJLyogb25seSBvbmNlICovCi0gICAgICAgIHNoZWxs X2lucHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAgICAgIHNoZWxsYmxhbmsgKHNoZWxsX2lucHV0 X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAmJgotICAgICAgICBzaGVsbF9p bnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAgICBz aGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0g MCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBjdXJy ZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotKyAgICAgICBwYXJzZXJf c3RhdGUgfD0gUFNUX0VOREFMSUFTOwotICAgICAgICByZXR1cm4gJyAnOwkvKiBFTkRfQUxJQVMg Ki8KLSAgICAgIH0KLSoqKioqKioqKioqKioqKgotKioqIDI1NzIsMjU3NSAqKioqCi0tLS0gMjU3 NCwyNTc4IC0tLS0KLSAgICBpZiAodWMgPT0gMCAmJiBwdXNoZWRfc3RyaW5nX2xpc3QgJiYgcHVz aGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfU09VUkNFKQotICAgICAgewotKyAgICAgICBw YXJzZXJfc3RhdGUgJj0gflBTVF9FTkRBTElBUzsKLSAgICAgICAgcG9wX3N0cmluZyAoKTsKLSAg ICAgICAgdWMgPSBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXhdOwotKioq IC4uL2Jhc2gtNS4wL3kudGFiLmMJMjAxOS0wMS0wMiAxMzo1Nzo0My4wMDAwMDAwMDAgLTA1MDAK LS0tLSB5LnRhYi5jCTIwMTktMDEtMTQgMDg6Mzk6MjMuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioq KioqKioqKioKLSoqKiA0ODc0LDQ4ODMgKioqKgotICAgICAgICBwdXNoZWRfc3RyaW5nX2xpc3Qt PmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9DT01N RU5UKSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAg ICAgIHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSAhPSAnICcgJiYK LSAgICAgICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICdc bicgJiYKLSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xp bmVfaW5kZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1pdGVyIChkc3RhY2sp ICE9ICdcJycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyInKSkKLSAgICAgIHsK LSAgICAgICAgcmV0dXJuICcgJzsJLyogRU5EX0FMSUFTICovCi0gICAgICB9Ci0tLS0gNDg3NCw0 ODg1IC0tLS0KLSAgICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfRFBBUkVO ICYmCi0gICAgICAgIChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0gMCAmJgotKyAgICAg ICAocGFyc2VyX3N0YXRlICYgUFNUX0VOREFMSUFTKSA9PSAwICYmCS8qIG9ubHkgb25jZSAqLwot ICAgICAgICBzaGVsbF9pbnB1dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAgICBzaGVsbGJsYW5r IChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0pID09IDAgJiYKLSAg ICAgICAgc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICdcbicg JiYKLSAgICAgICAgc2hlbGxtZXRhIChzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVf aW5kZXgtMV0pID09IDAgJiYKLSAgICAgICAgKGN1cnJlbnRfZGVsaW1pdGVyIChkc3RhY2spICE9 ICdcJycgJiYgY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJyInKSkKLSAgICAgIHsKLSsg ICAgICAgcGFyc2VyX3N0YXRlIHw9IFBTVF9FTkRBTElBUzsKLSAgICAgICAgcmV0dXJuICcgJzsJ LyogRU5EX0FMSUFTICovCi0gICAgICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA0ODg4LDQ4OTEg KioqKgotLS0tIDQ4OTAsNDg5NCAtLS0tCi0gICAgaWYgKHVjID09IDAgJiYgcHVzaGVkX3N0cmlu Z19saXN0ICYmIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX1NPVVJDRSkKLSAgICAg IHsKLSsgICAgICAgcGFyc2VyX3N0YXRlICY9IH5QU1RfRU5EQUxJQVM7Ci0gICAgICAgIHBvcF9z dHJpbmcgKCk7Ci0gICAgICAgIHVjID0gc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5l X2luZGV4XTsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTow My4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4w MDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9v a3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJp bmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDIKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMgYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdlNTY3N2U1NDAu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAzCisrKyAvZGV2 L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAg ICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNo NTAtMDAzCi0KLUJ1Zy1SZXBvcnRlZC1ieToJQW5kcmV3IENodXJjaCA8YWNodXJjaCtiYXNoQGFj aHVyY2gub3JnPgotQnVnLVJlZmVyZW5jZS1JRDoJPDVjNTM0YWEyLjA0MzcxQG1zZ2lkLmFjaHVy Y2gub3JnPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUv aHRtbC9idWctYmFzaC8yMDE5LTAxL21zZzAwMjc2Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgot Ci1UaGVyZSBhcmUgc2V2ZXJhbCBpbmNvbXBhdGliaWxpdGllcyBpbiBob3cgYmFzaC01LjAgcHJv Y2Vzc2VzIHBhdGhuYW1lCi1leHBhbnNpb24gKGdsb2JiaW5nKSBvZiBmaWxlbmFtZSBhcmd1bWVu dHMgdGhhdCBoYXZlIGJhY2tzbGFzaGVzIGluIHRoZQotZGlyZWN0b3J5IHBvcnRpb24uCi0KLVBh dGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQv bGliL2dsb2IvZ2xvYl9sb29wLmMJMjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAK LS0tLSBsaWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE5LTAyLTAxIDA5OjQ1OjExLjAwMDAwMDAwMCAt MDUwMAotKioqKioqKioqKioqKioqCi0qKiogMjcsMzQgKioqKgotICAgIHJlZ2lzdGVyIGNvbnN0 IEdDSEFSICpwOwotICAgIHJlZ2lzdGVyIEdDSEFSIGM7Ci0hICAgaW50IGJvcGVuOwotICAKLSAg ICBwID0gcGF0dGVybjsKLSEgICBib3BlbiA9IDA7Ci0gIAotICAgIHdoaWxlICgoYyA9ICpwKysp ICE9IEwoJ1wwJykpCi0tLS0gMjcsMzQgLS0tLQotICAgIHJlZ2lzdGVyIGNvbnN0IEdDSEFSICpw OwotICAgIHJlZ2lzdGVyIEdDSEFSIGM7Ci0hICAgaW50IGJvcGVuLCBic3F1b3RlOwotICAKLSAg ICBwID0gcGF0dGVybjsKLSEgICBib3BlbiA9IGJzcXVvdGUgPSAwOwotICAKLSAgICB3aGlsZSAo KGMgPSAqcCsrKSAhPSBMKCdcMCcpKQotKioqKioqKioqKioqKioqCi0qKiogNTYsNjYgKioqKgot ICAgICAgICBjYXNlIEwoJ1xcJyk6Ci0gIAkvKiBEb24ndCBsZXQgdGhlIHBhdHRlcm4gZW5kIGlu IGEgYmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotISAJICAgaWYgdGhlIHBhdHRl cm4gZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNlIHJldHVybiAxLAot ISAJICAgc2luY2UgdGhlIG1hdGNoaW5nIGVuZ2luZSB1c2VzIGJhY2tzbGFzaCBhcyBhbiBlc2Nh cGUgY2hhcmFjdGVyCi0hIAkgICBhbmQgaXQgY2FuIGJlIHJlbW92ZWQuICovCi0hIAlyZXR1cm4g KCpwICE9IEwoJ1wwJykpOwotICAgICAgICB9Ci0gIAotISAgIHJldHVybiAwOwotICB9Ci0gIAot LS0tIDU2LDc1IC0tLS0KLSAgICAgICAgY2FzZSBMKCdcXCcpOgotICAJLyogRG9uJ3QgbGV0IHRo ZSBwYXR0ZXJuIGVuZCBpbiBhIGJhY2tzbGFzaCAoR01BVENIIHJldHVybnMgbm8gbWF0Y2gKLSEg CSAgIGlmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBiYWNrc2xhc2ggYW55d2F5KSwgYnV0IG90aGVy d2lzZSBub3RlIHRoYXQgCi0hIAkgICB3ZSBoYXZlIHNlZW4gdGhpcywgc2luY2UgdGhlIG1hdGNo aW5nIGVuZ2luZSB1c2VzIGJhY2tzbGFzaCBhcyBhbgotISAJICAgZXNjYXBlIGNoYXJhY3RlciBh bmQgaXQgY2FuIGJlIHJlbW92ZWQuIFdlIHJldHVybiAyIGxhdGVyIGlmIHdlCi0hIAkgICBoYXZl IHNlZW4gb25seSBiYWNrc2xhc2gtZXNjYXBlZCBjaGFyYWN0ZXJzLCBzbyBpbnRlcmVzdGVkIGNh bGxlcnMKLSEgCSAgIGtub3cgdGhleSBjYW4gc2hvcnRjdXQgYW5kIGp1c3QgZGVxdW90ZSB0aGUg cGF0aG5hbWUuICovCi0hIAlpZiAoKnAgIT0gTCgnXDAnKSkKLSEgCSAgewotISAJICAgIHArKzsK LSEgCSAgICBic3F1b3RlID0gMTsKLSEgCSAgICBjb250aW51ZTsKLSEgCSAgfQotISAJZWxzZSAJ LyogKCpwID09IEwoJ1wwJykpICovCi0hIAkgIHJldHVybiAwOwotICAgICAgICB9Ci0gIAotISAg IHJldHVybiBic3F1b3RlID8gMiA6IDA7Ci0gIH0KLSAgCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hl ZC9saWIvZ2xvYi9nbG9iLmgJMjAxMy0xMC0yOCAxNDo0NjoxMi4wMDAwMDAwMDAgLTA0MDAKLS0t LSBsaWIvZ2xvYi9nbG9iLmgJMjAxOS0wMy0wNyAxMTowNjo0Ny4wMDAwMDAwMDAgLTA1MDAKLSoq KioqKioqKioqKioqKgotKioqIDMxLDM0ICoqKioKLS0tLSAzMSwzNSAtLS0tCi0gICNkZWZpbmUg R1hfQUREQ1VSRElSCTB4MjAwCS8qIGludGVybmFsIC0tIGFkZCBwYXNzZWQgZGlyZWN0b3J5IG5h bWUgKi8KLSAgI2RlZmluZSBHWF9HTE9CU1RBUgkweDQwMAkvKiB0dXJuIG9uIHNwZWNpYWwgaGFu ZGxpbmcgb2YgKiogKi8KLSsgI2RlZmluZSBHWF9SRUNVUlNFCTB4ODAwCS8qIGludGVybmFsIC0t IGdsb2JfZmlsZW5hbWUgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCi0gIAotICBleHRlcm4gaW50IGds b2JfcGF0dGVybl9wIF9fUCgoY29uc3QgY2hhciAqKSk7Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hl ZC9saWIvZ2xvYi9nbG9iLmMJMjAxOC0wOS0yMCAxMDo1MzoyMy4wMDAwMDAwMDAgLTA0MDAKLS0t LSBsaWIvZ2xvYi9nbG9iLmMJMjAxOS0wMy0wNyAxNDoyMzo0My4wMDAwMDAwMDAgLTA1MDAKLSoq KioqKioqKioqKioqKgotKioqIDEwNjIsMTA2NiAqKioqCi0gICAgdW5zaWduZWQgaW50IGRpcmVj dG9yeV9sZW47Ci0gICAgaW50IGZyZWVfZGlybmFtZTsJCQkvKiBmbGFnICovCi0hICAgaW50IGRm bGFnczsKLSAgCi0gICAgcmVzdWx0ID0gKGNoYXIgKiopIG1hbGxvYyAoc2l6ZW9mIChjaGFyICop KTsKLS0tLSAxMDc4LDEwODIgLS0tLQotICAgIHVuc2lnbmVkIGludCBkaXJlY3RvcnlfbGVuOwot ICAgIGludCBmcmVlX2Rpcm5hbWU7CQkJLyogZmxhZyAqLwotISAgIGludCBkZmxhZ3MsIGhhc2ds b2I7Ci0gIAotICAgIHJlc3VsdCA9IChjaGFyICoqKSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSk7 Ci0qKioqKioqKioqKioqKioKLSoqKiAxMTExLDExMTcgKioqKgotICAgICAgfQotICAKLSAgICAv KiBJZiBkaXJlY3RvcnlfbmFtZSBjb250YWlucyBnbG9iYmluZyBjaGFyYWN0ZXJzLCB0aGVuIHdl Ci0hICAgICAgaGF2ZSB0byBleHBhbmQgdGhlIHByZXZpb3VzIGxldmVscy4gIEp1c3QgcmVjdXJz ZS4gKi8KLSEgICBpZiAoZGlyZWN0b3J5X2xlbiA+IDAgJiYgZ2xvYl9wYXR0ZXJuX3AgKGRpcmVj dG9yeV9uYW1lKSkKLSAgICAgIHsKLSAgICAgICAgY2hhciAqKmRpcmVjdG9yaWVzLCAqZCwgKnA7 Ci0tLS0gMTEyNywxMTM2IC0tLS0KLSAgICAgIH0KLSAgCi0rICAgaGFzZ2xvYiA9IDA7Ci0gICAg LyogSWYgZGlyZWN0b3J5X25hbWUgY29udGFpbnMgZ2xvYmJpbmcgY2hhcmFjdGVycywgdGhlbiB3 ZQotISAgICAgIGhhdmUgdG8gZXhwYW5kIHRoZSBwcmV2aW91cyBsZXZlbHMuICBKdXN0IHJlY3Vy c2UuCi0hICAgICAgSWYgZ2xvYl9wYXR0ZXJuX3AgcmV0dXJucyAhPSBbMCwxXSB3ZSBoYXZlIGEg cGF0dGVybiB0aGF0IGhhcyBiYWNrc2xhc2gKLSEgICAgICBxdW90ZXMgYnV0IG5vIHVucXVvdGVk IGdsb2IgcGF0dGVybiBjaGFyYWN0ZXJzLiBXZSBkZXF1b3RlIGl0IGJlbG93LiAqLwotISAgIGlm IChkaXJlY3RvcnlfbGVuID4gMCAmJiAoaGFzZ2xvYiA9IGdsb2JfcGF0dGVybl9wIChkaXJlY3Rv cnlfbmFtZSkpID09IDEpCi0gICAgICB7Ci0gICAgICAgIGNoYXIgKipkaXJlY3RvcmllcywgKmQs ICpwOwotKioqKioqKioqKioqKioqCi0qKiogMTE3NiwxMTgwICoqKioKLSAgCWRbZGlyZWN0b3J5 X2xlbiAtIDFdID0gJ1wwJzsKLSAgCi0hICAgICAgIGRpcmVjdG9yaWVzID0gZ2xvYl9maWxlbmFt ZSAoZCwgZGZsYWdzKTsKLSAgCi0gICAgICAgIGlmIChmcmVlX2Rpcm5hbWUpCi0tLS0gMTE5NSwx MTk5IC0tLS0KLSAgCWRbZGlyZWN0b3J5X2xlbiAtIDFdID0gJ1wwJzsKLSAgCi0hICAgICAgIGRp cmVjdG9yaWVzID0gZ2xvYl9maWxlbmFtZSAoZCwgZGZsYWdzfEdYX1JFQ1VSU0UpOwotICAKLSAg ICAgICAgaWYgKGZyZWVfZGlybmFtZSkKLSoqKioqKioqKioqKioqKgotKioqIDEzMzMsMTMzNiAq KioqCi0tLS0gMTM1MiwxMzY5IC0tLS0KLSAgCSAgcmV0dXJuIChOVUxMKTsKLSAgCX0KLSsgICAg ICAgLyogSWYgd2UgaGF2ZSBhIGRpcmVjdG9yeSBuYW1lIHdpdGggcXVvdGVkIGNoYXJhY3RlcnMs IGFuZCB3ZSBhcmUKLSsgCSBiZWluZyBjYWxsZWQgcmVjdXJzaXZlbHkgdG8gZ2xvYiB0aGUgZGly ZWN0b3J5IHBvcnRpb24gb2YgYSBwYXRobmFtZSwKLSsgCSB3ZSBuZWVkIHRvIGRlcXVvdGUgdGhl IGRpcmVjdG9yeSBuYW1lIGJlZm9yZSByZXR1cm5pbmcgaXQgc28gdGhlCi0rIAkgY2FsbGVyIGNh biByZWFkIHRoZSBkaXJlY3RvcnkgKi8KLSsgICAgICAgaWYgKGRpcmVjdG9yeV9sZW4gPiAwICYm IGhhc2dsb2IgPT0gMiAmJiAoZmxhZ3MgJiBHWF9SRUNVUlNFKSAhPSAwKQotKyAJewotKyAJICBk ZXF1b3RlX3BhdGhuYW1lIChkaXJlY3RvcnlfbmFtZSk7Ci0rIAkgIGRpcmVjdG9yeV9sZW4gPSBz dHJsZW4gKGRpcmVjdG9yeV9uYW1lKTsKLSsgCX0KLSsgCi0rICAgICAgIC8qIFdlIGNvdWxkIGNo ZWNrIHdoZXRoZXIgb3Igbm90IHRoZSBkZXF1b3RlZCBkaXJlY3RvcnlfbmFtZSBpcyBhCi0rIAkg ZGlyZWN0b3J5IGFuZCByZXR1cm4gaXQgaGVyZSwgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBkaXJl Y3RvcnlfbmFtZQotKyAJIGlmIG5vdCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgeWV0LiBJJ20gbm90 IHN1cmUgaXQgbWF0dGVycy4gKi8KLSsgCi0gICAgICAgIC8qIEhhbmRsZSBHWF9NQVJLRElSUyBo ZXJlLiAqLwotICAgICAgICByZXN1bHRbMF0gPSAoY2hhciAqKSBtYWxsb2MgKGRpcmVjdG9yeV9s ZW4gKyAxKTsKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3BhdGhleHAuYwkyMDE4LTA0LTI5IDE3 OjQ0OjQ4LjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGhleHAuYwkyMDE5LTAxLTMxIDIwOjE5OjQx LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNjYsNzQgKioqKgotICAgIHJl Z2lzdGVyIGludCBjOwotICAgIGNoYXIgKnNlbmQ7Ci0hICAgaW50IG9wZW47Ci0gIAotICAgIERF Q0xBUkVfTUJTVEFURTsKLSAgCi0hICAgb3BlbiA9IDA7Ci0gICAgc2VuZCA9IHN0cmluZyArIHN0 cmxlbiAoc3RyaW5nKTsKLSAgCi0tLS0gNjYsNzQgLS0tLQotICAgIHJlZ2lzdGVyIGludCBjOwot ICAgIGNoYXIgKnNlbmQ7Ci0hICAgaW50IG9wZW4sIGJzcXVvdGU7Ci0gIAotICAgIERFQ0xBUkVf TUJTVEFURTsKLSAgCi0hICAgb3BlbiA9IGJzcXVvdGUgPSAwOwotICAgIHNlbmQgPSBzdHJpbmcg KyBzdHJsZW4gKHN0cmluZyk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogMTAxLDEwNSAqKioq Ci0gIAkgICBnbG9iYmluZy4gKi8KLSAgCWNhc2UgJ1xcJzoKLSEgCSAgcmV0dXJuICgqc3RyaW5n ICE9IDApOwotICAJIAkgIAotICAJY2FzZSBDVExFU0M6Ci0tLS0gMTAxLDExMiAtLS0tCi0gIAkg ICBnbG9iYmluZy4gKi8KLSAgCWNhc2UgJ1xcJzoKLSEgCSAgaWYgKCpzdHJpbmcgIT0gJ1wwJyAm JiAqc3RyaW5nICE9ICcvJykKLSEgCSAgICB7Ci0hIAkgICAgICBic3F1b3RlID0gMTsKLSEgCSAg ICAgIHN0cmluZysrOwotISAJICAgICAgY29udGludWU7Ci0hIAkgICAgfQotISAJICBlbHNlIGlm ICgqc3RyaW5nID09IDApCi0hIAkgICAgcmV0dXJuICgwKTsKLSAgCSAJICAKLSAgCWNhc2UgQ1RM RVNDOgotKioqKioqKioqKioqKioqCi0qKiogMTE4LDEyMiAqKioqCi0gICNlbmRpZgotICAgICAg fQotISAgIHJldHVybiAoMCk7Ci0gIH0KLSAgCi0tLS0gMTI1LDEzMCAtLS0tCi0gICNlbmRpZgot ICAgICAgfQotISAKLSEgICByZXR1cm4gKGJzcXVvdGUgPyAyIDogMCk7Ci0gIH0KLSAgCi0qKiog Li4vYmFzaC01LjAtcGF0Y2hlZC9iYXNobGluZS5jCTIwMTktMDEtMTYgMTY6MTM6MjEuMDAwMDAw MDAwIC0wNTAwCi0tLS0gYmFzaGxpbmUuYwkyMDE5LTAyLTIyIDA5OjI5OjA4LjAwMDAwMDAwMCAt MDUwMAotKioqKioqKioqKioqKioqCi0qKiogMzc1MywzNzU3ICoqKioKLSAgCi0gIAljYXNlICdc XCc6Ci0hIAkgIGlmICgqc3RyaW5nID09IDApCi0gIAkgICAgcmV0dXJuICgwKTsJIAkgIAotICAJ fQotLS0tIDM3NjYsMzc3MCAtLS0tCi0gIAotICAJY2FzZSAnXFwnOgotISAJICBpZiAoKnN0cmlu ZysrID09IDApCi0gIAkgICAgcmV0dXJuICgwKTsJIAkgIAotICAJfQotKioqIC4uL2Jhc2gtNS4w L3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBh dGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioq KioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2gg bGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBB VENITEVWRUwgMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAg LS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2Nj cyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMwotICAKLSAg I2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwNCBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0CmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBmZTNjNzY0YmQ2Yy4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDQKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0J CQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJh c2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNAotCi1CdWctUmVwb3J0ZWQtYnk6 CURhbmllbCBLYWhuIEdpbGxtb3IgPGRrZ0BmaWZ0aGhvcnNlbWFuLm5ldD4KLUJ1Zy1SZWZlcmVu Y2UtSUQ6CTw4N2xnMGc4YWl3LmZzZkBmaWZ0aGhvcnNlbWFuLm5ldD4KLUJ1Zy1SZWZlcmVuY2Ut VVJMOglodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wNC9t c2cwMDA3Ni5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotSW4gYmFzaC01LjAsIHRoZSBgd2Fp dCcgYnVpbHRpbiB3aXRob3V0IGFyZ3VtZW50cyB3YWl0cyBmb3IgYWxsIGNoaWxkcmVuIG9mIHRo ZQotc2hlbGwuIFRoaXMgaW5jbHVkZXMgY2hpbGRyZW4gaXQgYGluaGVyaXRlZCcgYXQgc2hlbGwg aW52b2NhdGlvbiB0aW1lLiBUaGlzCi1wYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3IgdG8gbm90 IHdhaXQgZm9yIHRoZXNlIGluaGVyaXRlZCBjaGlsZHJlbiwgc29tZQotb2Ygd2hpY2ggbWlnaHQg YmUgbG9uZy1saXZlZC4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiog Li4vYmFzaC01LjAtcGF0Y2hlZC9qb2JzLmMJMjAxOC0xMi0wNiAxMTo0NDozNC4wMDAwMDAwMDAg LTA1MDAKLS0tLSBqb2JzLmMJMjAxOS0wNC0xMiAxNToxNToxMC4wMDAwMDAwMDAgLTA0MDAKLSoq KioqKioqKioqKioqKgotKioqIDI0ODksMjQ5NiAqKioqCi0gICAgd2FpdF9wcm9jc3VicyAoKTsK LSAgICByZWFwX3Byb2NzdWJzICgpOwotISAjaWYgMQotICAgIC8qIFdlIGRvbid0IHdhbnQgdG8g d2FpdCBpbmRlZmluaXRlbHkgaWYgd2UgaGF2ZSBzdG9wcGVkIGNoaWxkcmVuLiAqLwotLSAgIC8q IFhYWCAtIHNob3VsZCBhZGQgYSBsb29wIHRoYXQgZ29lcyB0aHJvdWdoIHRoZSBsaXN0IG9mIHBy b2Nlc3MKLS0gICAgICBzdWJzdGl0dXRpb25zIGFuZCB3YWl0cyBmb3IgZWFjaCBwcm9jIGluIHR1 cm4gYmVmb3JlIHRoaXMgY29kZS4gKi8KLSAgICBpZiAoYW55X3N0b3BwZWQgPT0gMCkKLSAgICAg IHsKLS0tLSAyNDkwLDI0OTUgLS0tLQotICAgIHdhaXRfcHJvY3N1YnMgKCk7Ci0gICAgcmVhcF9w cm9jc3VicyAoKTsKLSEgI2lmIDAKLSAgICAvKiBXZSBkb24ndCB3YW50IHRvIHdhaXQgaW5kZWZp bml0ZWx5IGlmIHdlIGhhdmUgc3RvcHBlZCBjaGlsZHJlbi4gKi8KLSAgICBpZiAoYW55X3N0b3Bw ZWQgPT0gMCkKLSAgICAgIHsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0y MiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAx MTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioK LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDMKLSAgCi0gICNlbmRp ZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRv IGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwot ICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDQKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9I XyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUgYi9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIx Y2Q3NWIwYjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA1 CisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBP UlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNo LUlEOgliYXNoNTAtMDA1Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJQnJhZCBTcGVuY2VyIDxic3BlbmNl ckBibGFja2JlcnJ5LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwxYjk5M2ZmMi1jZTRmLTY2MmEt NmJlNC0zOTM0NTczNjJlNDdAYmxhY2tiZXJyeS5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0 cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDEvbXNnMDAyNTAu aHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUluIGNlcnRhaW4gY2FzZXMsIGJhc2ggb3B0aW1p emVzIG91dCBhIGZvcmsoKSBjYWxsIHRvbyBlYXJseSBhbmQgcHJldmVudHMKLXRyYXBzIGZyb20g cnVubmluZy4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFz aC01LjAtcGF0Y2hlZC9jb21tYW5kLmgJMjAxOC0wNy0yMCAyMToxNjozMS4wMDAwMDAwMDAgLTA0 MDAKLS0tLSBjb21tYW5kLmgJMjAxOS0wMi0yMCAxMTowOTozNi4wMDAwMDAwMDAgLTA1MDAKLSoq KioqKioqKioqKioqKgotKioqIDE4NywxOTAgKioqKgotLS0tIDE4OCwxOTIgLS0tLQotICAjZGVm aW5lIENNRF9MQVNUUElQRQkgICAgMHgyMDAwCi0gICNkZWZpbmUgQ01EX1NURFBBVEgJICAgIDB4 NDAwMAkvKiB1c2Ugc3RhbmRhcmQgcGF0aCBmb3IgY29tbWFuZCBsb29rdXAgKi8KLSsgI2RlZmlu ZSBDTURfVFJZX09QVElNSVpJTkcgIDB4ODAwMAkvKiB0cnkgdG8gb3B0aW1pemUgdGhpcyBzaW1w bGUgY29tbWFuZCAqLwotICAKLSAgLyogV2hhdCBhIGNvbW1hbmQgbG9va3MgbGlrZS4gKi8KLSoq KiAuLi9iYXNoLTUuMC1wYXRjaGVkL2J1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE4LTEyLTI2IDEx OjE5OjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGJ1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTAx LTI5IDE0OjE1OjE5LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMTAxLDEw NCAqKioqCi0tLS0gMTAxLDExMyAtLS0tCi0gIH0KLSAgCi0rIGludAotKyBjYW5fb3B0aW1pemVf Y29ubmVjdGlvbiAoY29tbWFuZCkKLSsgICAgICBDT01NQU5EICpjb21tYW5kOwotKyB7Ci0rICAg cmV0dXJuICgqYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICAoY29t bWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9BTkQgfHwgY29tbWFuZC0+ dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09SIHx8IGNvbW1hbmQtPnZhbHVlLkNv bm5lY3Rpb24tPmNvbm5lY3RvciA9PSAnOycpICYmCi0rIAkgIGNvbW1hbmQtPnZhbHVlLkNvbm5l Y3Rpb24tPnNlY29uZC0+dHlwZSA9PSBjbV9zaW1wbGUpOwotKyB9Ci0rIAotICB2b2lkCi0gIG9w dGltaXplX2ZvcmsgKGNvbW1hbmQpCi0qKioqKioqKioqKioqKioKLSoqKiAxMDYsMTEwICoqKioK LSAgewotICAgIGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24gJiYKLSEgICAgICAg KGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBBTkRfQU5EIHx8IGNvbW1h bmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBPUl9PUikgJiYKLSAgICAgICAgc2hv dWxkX3N1cHByZXNzX2ZvcmsgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZCkpCi0g ICAgICB7Ci0tLS0gMTE1LDEyMCAtLS0tCi0gIHsKLSAgICBpZiAoY29tbWFuZC0+dHlwZSA9PSBj bV9jb25uZWN0aW9uICYmCi0hICAgICAgIChjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25u ZWN0b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3Ig PT0gT1JfT1IgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09ICc7Jykg JiYKLSEgICAgICAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+ZmxhZ3MgJiBD TURfVFJZX09QVElNSVpJTkcpICYmCi0gICAgICAgIHNob3VsZF9zdXBwcmVzc19mb3JrIChjb21t YW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQpKQotICAgICAgewotKioqKioqKioqKioqKioq Ci0qKiogNDEzLDQxOCAqKioqCi0gIAkJICBjb21tYW5kLT52YWx1ZS5TaW1wbGUtPmZsYWdzIHw9 IENNRF9OT19GT1JLOwotICAJCX0KLSEgCSAgICAgIGVsc2UgaWYgKGNvbW1hbmQtPnR5cGUgPT0g Y21fY29ubmVjdGlvbikKLSEgCQlvcHRpbWl6ZV9mb3JrIChjb21tYW5kKTsKLSAgI2VuZGlmIC8q IE9ORVNIT1QgKi8KLSAgCi0tLS0gNDIzLDQzOCAtLS0tCi0gIAkJICBjb21tYW5kLT52YWx1ZS5T aW1wbGUtPmZsYWdzIHw9IENNRF9OT19GT1JLOwotICAJCX0KLSEgCi0hIAkgICAgICAvKiBDYW4n dCBvcHRpbWl6ZSBmb3JrcyBvdXQgaGVyZSBleGVjZXB0IGZvciBzaW1wbGUgY29tbWFuZHMuCi0h IAkJIFRoaXMga25vd3MgdGhhdCB0aGUgcGFyc2VyIHNldHMgdXAgY29tbWFuZHMgYXMgbGVmdC1z aWRlIGhlYXZ5Ci0hIAkJICgmJiBhbmQgfHwgYXJlIGxlZnQtYXNzb2NpYXRpdmUpIGFuZCBhZnRl ciB0aGUgc2luZ2xlIHBhcnNlLAotISAJCSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgY29t bWFuZCBzdHJpbmcsIHRoZSBsYXN0IGluIGEKLSEgCQkgc2VyaWVzIG9mIGNvbm5lY3Rpb24gY29t bWFuZHMgaXMKLSEgCQkgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLiAqLwotISAJ ICAgICAgZWxzZSBpZiAoY29tbWFuZC0+dHlwZSA9PSBjbV9jb25uZWN0aW9uICYmIGNhbl9vcHRp bWl6ZV9jb25uZWN0aW9uIChjb21tYW5kKSkKLSEgCQl7Ci0hIAkJICBjb21tYW5kLT52YWx1ZS5D b25uZWN0aW9uLT5zZWNvbmQtPmZsYWdzIHw9IENNRF9UUllfT1BUSU1JWklORzsKLSEgCQkgIGNv bW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+dmFsdWUuU2ltcGxlLT5mbGFncyB8PSBD TURfVFJZX09QVElNSVpJTkc7Ci0hIAkJfQotICAjZW5kaWYgLyogT05FU0hPVCAqLwotICAKLSoq KiAuLi9iYXNoLTUuMC1wYXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAxOC0xMi0wNSAwOTowNToxNC4w MDAwMDAwMDAgLTA1MDAKLS0tLSBleGVjdXRlX2NtZC5jCTIwMTktMDEtMjUgMTU6NTk6MDAuMDAw MDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNzY4LDI3NzEgKioqKgotLS0tIDI3 NjgsMjc3MyAtLS0tCi0gIAkgICAoZXhlY19yZXN1bHQgIT0gRVhFQ1VUSU9OX1NVQ0NFU1MpKSkK LSAgCXsKLSsgCSAgb3B0aW1pemVfZm9yayAoY29tbWFuZCk7Ci0rIAotICAJICBzZWNvbmQgPSBj b21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQ7Ci0gIAkgIGlmIChpZ25vcmVfcmV0dXJu ICYmIHNlY29uZCkKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1 MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToy OC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAg bG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBz dHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDQKLSAgCi0gICNlbmRpZiAvKiBf UEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQg dGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEg I2RlZmluZSBQQVRDSExFVkVMIDUKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYgYi9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFkMWNkMjAw OTAuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA2CisrKyAv ZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJ ICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJh c2g1MC0wMDYKLQotQnVnLVJlcG9ydGVkLWJ5OglUb21hcyBNb3plcyA8aHlkcmFwb2xpY0BnbWFp bC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FHNk1BelF1bUxVMnZobm1yMVVyWUFVUUFGVzVZ bzhoZk1fc0VpYlg5UkpRV0prUnJBQG1haWwuZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6 CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAzL21zZzAw MDM3Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1CYXNoLTUuMCBkaWQgbm90IGJ1aWxkIHN1 Y2Nlc3NmdWxseSBpZiBTWVNMT0dfSElTVE9SWSB3YXMgZGVmaW5lZCB3aXRob3V0Ci1hbHNvIGRl ZmluaW5nIFNZU0xPR19TSE9QVC4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgot Ci0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9idWlsdGlucy9zaG9wdC5kZWYJMjAxOC0xMC0wNSAx NDo0OTowMi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBidWlsdGlucy9zaG9wdC5kZWYJMjAxOS0wMS0y MyAwOTo1NToyMi4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDEyMywxMjcg KioqKgotICAjZW5kaWYKLSAgCi0hICNpZiBkZWZpbmVkIChTWVNMT0dfSElTVE9SWSkgJiYgZGVm aW5lZCAoU1lTTE9HX1NIT1BUKQotICBleHRlcm4gaW50IHN5c2xvZ19oaXN0b3J5OwotICAjZW5k aWYKLS0tLSAxMjMsMTI3IC0tLS0KLSAgI2VuZGlmCi0gIAotISAjaWYgZGVmaW5lZCAoU1lTTE9H X0hJU1RPUlkpCi0gIGV4dGVybiBpbnQgc3lzbG9nX2hpc3Rvcnk7Ci0gICNlbmRpZgotKioqIC4u L2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQw MAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAot KioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0 aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAj ZGVmaW5lIFBBVENITEVWRUwgNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0t LS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZv ciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwg NgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwNyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA3CmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWViNDE1MGEyYi4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKKysrIC9kZXYvbnVsbApAQCAtMSw2MiAr MCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09 PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNwotCi1CdWctUmVw b3J0ZWQtYnk6CUdyaXNoYSBMZXZpdCA8Z3Jpc2hhbGV2aXRAZ21haWwuY29tPgotQnVnLVJlZmVy ZW5jZS1JRDoJPENBTXU9QnJvSGFwRzFBUzN4QjVTUWFDWDJYS3U9LUUyT2I5dVc2TE51SHZkPVlv aHJEd0BtYWlsLmdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMuZ251 Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMi9tc2cwMDA2Ny5odG1sCi0KLUJ1Zy1E ZXNjcmlwdGlvbjoKLQotUnVubmluZyBgZXhlYycgd2hlbiBqb2IgY29udHJvbCB3YXMgZGlzYWJs ZWQsIGV2ZW4gdGVtcG9yYXJpbHksIGJ1dCBhZnRlciBpdAotaGFkIGJlZW4gaW5pdGlhbGl6ZWQs IGNvdWxkIGxlYXZlIHRoZSB0ZXJtaW5hbCBpbiB0aGUgd3JvbmcgcHJvY2VzcyBncm91cCBmb3IK LXRoZSBleGVjdXRlZCBwcm9jZXNzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6 Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2pvYnMuYwkyMDE4LTEyLTA2IDExOjQ0OjM0LjAw MDAwMDAwMCAtMDUwMAotLS0tIGpvYnMuYwkyMDE5LTA0LTEyIDE1OjE1OjEwLjAwMDAwMDAwMCAt MDQwMAotKioqKioqKioqKioqKioqCi0qKiogNDgzOCw0ODUwICoqKioKLSAgewotICAgIGlmIChq b2JfY29udHJvbCkKLSEgICAgIHsKLSEgICAgICAgdGVybWluYXRlX3N0b3BwZWRfam9icyAoKTsK LSAgCi0hICAgICAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDApCi0hIAlnaXZlX3Rlcm1pbmFsX3Rv IChvcmlnaW5hbF9wZ3JwLCAxKTsKLSEgICAgIH0KLSAgCi0hICAgaWYgKG9yaWdpbmFsX3BncnAg Pj0gMCkKLSEgICAgIHNldHBnaWQgKDAsIG9yaWdpbmFsX3BncnApOwotICB9Ci0gIAotLS0tIDQ4 MzgsNDg0OCAtLS0tCi0gIHsKLSAgICBpZiAoam9iX2NvbnRyb2wpCi0hICAgICB0ZXJtaW5hdGVf c3RvcHBlZF9qb2JzICgpOwotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwICYmIHRlcm1p bmFsX3BncnAgIT0gb3JpZ2luYWxfcGdycCkKLSEgICAgIGdpdmVfdGVybWluYWxfdG8gKG9yaWdp bmFsX3BncnAsIDEpOwotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwICYmIHNldHBnaWQg KDAsIG9yaWdpbmFsX3BncnApID09IDApCi0hICAgICBzaGVsbF9wZ3JwID0gb3JpZ2luYWxfcGdy cDsKLSAgfQotICAKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1 MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToy OC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAg bG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBz dHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDYKLSAgCi0gICNlbmRpZiAvKiBf UEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQg dGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEg I2RlZmluZSBQQVRDSExFVkVMIDcKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDggYi9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwOApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5ZDZiMzNh YzcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA4CisrKyAv ZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJ ICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJh c2g1MC0wMDgKLQotQnVnLVJlcG9ydGVkLWJ5OglNaWNoYWVsIEFsYmludXMgPG1pY2hhZWwuYWxi aW51c0BnbXguZGU+Ci1CdWctUmVmZXJlbmNlLUlEOgk8ODdibTM2azNrei5mc2ZAZ214LmRlPgot QnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVn LWJhc2gvMjAxOS0wMi9tc2cwMDExMS5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotV2hlbiBI SVNUU0laRSBpcyBzZXQgdG8gMCwgaGlzdG9yeSBleHBhbnNpb24gY2FuIGxlYXZlIHRoZSBoaXN0 b3J5IGxlbmd0aAotc2V0IHRvIGFuIGluY29ycmVjdCB2YWx1ZSwgbGVhZGluZyB0byBzdWJzZXF1 ZW50IGF0dGVtcHRzIHRvIGFjY2VzcyBpbnZhbGlkCi1tZW1vcnkuCi0KLVBhdGNoIChhcHBseSB3 aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYmFzaGhpc3QuYwky MDE4LTA3LTA1IDIyOjQxOjE0LjAwMDAwMDAwMCAtMDQwMAotLS0tIGJhc2hoaXN0LmMJMjAxOS0w Mi0yMCAxNjoyMDowNC4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDU2MSw1 NzMgKioqKgotICAgIGlmICghaGlzdG9yeV9leHBhbnNpb25faW5oaWJpdGVkICYmIGhpc3Rvcnlf ZXhwYW5zaW9uICYmIGhpc3RvcnlfZXhwYW5zaW9uX3AgKGxpbmUpKQotICAgICAgewotICAgICAg ICAvKiBJZiB3ZSBhcmUgZXhwYW5kaW5nIHRoZSBzZWNvbmQgb3IgbGF0ZXIgbGluZSBvZiBhIG11 bHRpLWxpbmUKLSAgCSBjb21tYW5kLCBkZWNyZWFzZSBoaXN0b3J5X2xlbmd0aCBzbyByZWZlcmVu Y2VzIHRvIGhpc3RvcnkgZXhwYW5zaW9ucwotICAJIGluIHRoZXNlIGxpbmVzIHJlZmVyIHRvIHRo ZSBwcmV2aW91cyBoaXN0b3J5IGVudHJ5IGFuZCBub3QgdGhlCi0gIAkgY3VycmVudCBjb21tYW5k LiAqLwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5ndGggPiAwICYmIGNvbW1hbmRfb3JpZW50ZWRf aGlzdG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmlyc3RfbGluZV9zYXZlZCAmJiBjdXJyZW50X2Nv bW1hbmRfbGluZV9jb3VudCA+IDEpCi0gICAgICAgICAgaGlzdG9yeV9sZW5ndGgtLTsKLSAgICAg ICAgZXhwYW5kZWQgPSBoaXN0b3J5X2V4cGFuZCAobGluZSwgJmhpc3RvcnlfdmFsdWUpOwotICAg ICAgICBpZiAoaGlzdG9yeV9sZW5ndGggPj0gMCAmJiBjb21tYW5kX29yaWVudGVkX2hpc3Rvcnkg JiYgY3VycmVudF9jb21tYW5kX2ZpcnN0X2xpbmVfc2F2ZWQgJiYgY3VycmVudF9jb21tYW5kX2xp bmVfY291bnQgPiAxKQotISAgICAgICAgIGhpc3RvcnlfbGVuZ3RoKys7Ci0gIAotICAgICAgICBp ZiAoZXhwYW5kZWQpCi0tLS0gNTYxLDU3NiAtLS0tCi0gICAgaWYgKCFoaXN0b3J5X2V4cGFuc2lv bl9pbmhpYml0ZWQgJiYgaGlzdG9yeV9leHBhbnNpb24gJiYgaGlzdG9yeV9leHBhbnNpb25fcCAo bGluZSkpCi0gICAgICB7Ci0rICAgICAgIGludCBvbGRfbGVuOwotKyAKLSAgICAgICAgLyogSWYg d2UgYXJlIGV4cGFuZGluZyB0aGUgc2Vjb25kIG9yIGxhdGVyIGxpbmUgb2YgYSBtdWx0aS1saW5l Ci0gIAkgY29tbWFuZCwgZGVjcmVhc2UgaGlzdG9yeV9sZW5ndGggc28gcmVmZXJlbmNlcyB0byBo aXN0b3J5IGV4cGFuc2lvbnMKLSAgCSBpbiB0aGVzZSBsaW5lcyByZWZlciB0byB0aGUgcHJldmlv dXMgaGlzdG9yeSBlbnRyeSBhbmQgbm90IHRoZQotICAJIGN1cnJlbnQgY29tbWFuZC4gKi8KLSsg ICAgICAgb2xkX2xlbiA9IGhpc3RvcnlfbGVuZ3RoOwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5n dGggPiAwICYmIGNvbW1hbmRfb3JpZW50ZWRfaGlzdG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmly c3RfbGluZV9zYXZlZCAmJiBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA+IDEpCi0gICAgICAg ICAgaGlzdG9yeV9sZW5ndGgtLTsKLSAgICAgICAgZXhwYW5kZWQgPSBoaXN0b3J5X2V4cGFuZCAo bGluZSwgJmhpc3RvcnlfdmFsdWUpOwotICAgICAgICBpZiAoaGlzdG9yeV9sZW5ndGggPj0gMCAm JiBjb21tYW5kX29yaWVudGVkX2hpc3RvcnkgJiYgY3VycmVudF9jb21tYW5kX2ZpcnN0X2xpbmVf c2F2ZWQgJiYgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQgPiAxKQotISAgICAgICAgIGhpc3Rv cnlfbGVuZ3RoID0gb2xkX2xlbjsKLSAgCi0gICAgICAgIGlmIChleHBhbmRlZCkKLQotKioqIC4u L2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQw MAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAot KioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0 aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAj ZGVmaW5lIFBBVENITEVWRUwgNwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0t LS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZv ciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwg OAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwOSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA5CmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWY0Y2U3YjVhZC4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiAr MCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09 PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwOQotCi1CdWctUmVw b3J0ZWQtYnk6CWNoZXQucmFtZXlAY2FzZS5lZHUKLUJ1Zy1SZWZlcmVuY2UtSUQ6Ci1CdWctUmVm ZXJlbmNlLVVSTDoKLQotQnVnLURlc2NyaXB0aW9uOgotCi1UaGUgaGlzdG9yeSBmaWxlIHJlYWRp bmcgY29kZSBkb2Vzbid0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0bwotdGhlIGhp c3RvcnkgZmlsZSB3aGVuIGl0IGVuY291bnRlcnMgYSB6ZXJvLWxlbmd0aCBmaWxlLgotCi1QYXRj aCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xp Yi9yZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTgtMDYtMTEgMDk6MTQ6NTIuMDAwMDAwMDAwIC0wNDAw Ci0tLS0gbGliL3JlYWRsaW5lL2hpc3RmaWxlLmMJMjAxOS0wNS0xNiAxNTo1NTo1Ny4wMDAwMDAw MDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDMwNiwzMDkgKioqKgotLS0tIDMxMiwzMTYg LS0tLQotICAgICAgewotICAgICAgICBmcmVlIChpbnB1dCk7Ci0rICAgICAgIGNsb3NlIChmaWxl KTsKLSAgICAgICAgcmV0dXJuIDA7CS8qIGRvbid0IHdhc3RlIHRpbWUgaWYgd2UgZG9uJ3QgaGF2 ZSB0byAqLwotICAgICAgfQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIy IDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDEx OjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgot ICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJz aW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgOAotICAKLSAgI2VuZGlm IC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8g ZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0g IAotISAjZGVmaW5lIFBBVENITEVWRUwgOQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hf ICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMCBiL3NyY3BrZ3Mv YmFzaC9maWxlcy9iYXNoNTAtMDEwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWM3 YWE5MjUxNS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTAK KysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9S VAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gt SUQ6CWJhc2g1MC0wMTAKLQotQnVnLVJlcG9ydGVkLWJ5OglUaG9yc3RlbiBHbGFzZXIgPHRnQG1p cmJzZC5kZT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwxNTY2MjI5NjI4MzEuMTk0MzguMTYzNzQ5NjEx MTQ4MzY1NTYyOTQucmVwb3J0YnVnQHRnbGFzZS5sYW4udGFyZW50LmRlPgotQnVnLVJlZmVyZW5j ZS1VUkw6CWh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9 OTM1MTE1Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotQmFzaC01LjAgY2hhbmdlZCB0aGUgd2F5IGFz c2lnbm1lbnQgc3RhdGVtZW50cyBwcmVjZWRpbmcgc3BlY2lhbCBidWlsdGlucwotYW5kIHNoZWxs IGZ1bmN0aW9ucyB3ZXJlIGhhbmRsZWQgaW4gcG9zaXggbW9kZS4gVGhleSBhdXRvbWF0aWNhbGx5 IGNyZWF0ZWQKLW9yIG1vZGlmaWVkIGdsb2JhbCB2YXJpYWJsZXMgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZXhpc3RpbmcgbG9jYWwgdmFyaWFibGVzCi1hcyBpbiBiYXNoLTQuNC4KLQotVGhlIGJhc2gt NC40IHBvc2l4LW1vZGUgc2VtYW50aWNzIHdlcmUgYnVnZ3ksIGFuZCByZXN1bHRlZCBpbiBjcmVh dGluZwotbG9jYWwgdmFyaWFibGVzIHdoZXJlIHRoZXkgd2VyZSBub3QgaW50ZW5kZWQgYW5kIG1v ZGlmeWluZyBnbG9iYWwgdmFyaWFibGVzCi1hbmQgbG9jYWwgdmFyaWFibGVzIHNpbXVsdGFuZW91 c2x5LgotCi1UaGUgYmFzaC01LjAgY2hhbmdlcyB3ZXJlIGludGVuZGVkIHRvIGZpeCB0aGlzIGlz c3VlLCBidXQgZGlkIG5vdCBwcmVzZXJ2ZQotZW5vdWdoIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5 LiBUaGUgcG9zaXggc3RhbmRhcmQgYWxzbyBjaGFuZ2VkIHdoYXQgaXQKLXJlcXVpcmVkIGluIHRo ZXNlIGNhc2VzLCBzbyBiYXNoLTUuMCBpcyBub3QgYm91bmQgYnkgdGhlIHN0cmljdCBjb25mb3Jt YW5jZQotcmVxdWlyZW1lbnRzIHRoYXQgZXhpc3RlZCBpbiBwcmV2aW91cyBpc3N1ZXMgb2YgdGhl IHN0YW5kYXJkLgotCi1UaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBiYXNoLTUuMCBwb3NpeCBtb2Rl IGJlaGF2aW9yIGluIGFuIGVmZm9ydCB0byByZXN0b3JlCi1zb21lIGJhY2t3YXJkcyBjb21wYXRp YmlsaXR5IGFuZCByYXRpb25hbGl6ZSB0aGUgYmVoYXZpb3IgaW4gdGhlIHByZXNlbmNlIG9mCi1s b2NhbCB2YXJpYWJsZXMuIEl0Ci0KLTEuIENoYW5nZXMgdGhlIGFzc2lnbm1lbnQgc2VtYW50aWNz IHRvIGJlIG1vcmUgc2ltaWxhciB0byBzdGFuZGFsb25lIGFzc2lnbm1lbnQKLSAgIHN0YXRlbWVu dHM6IGFzc2lnbm1lbnRzIHByZWNlZGluZyBhIGZ1bmN0aW9uIGNhbGwgb3Igc3BlY2lhbCBidWls dGluIHdoaWxlCi0gICBleGVjdXRpbmcgaW4gYSBzaGVsbCBmdW5jdGlvbiB3aWxsIG1vZGlmeSB0 aGUgdmFsdWUgb2YgYSBsb2NhbCB2YXJpYWJsZQotICAgd2l0aCB0aGUgc2FtZSBuYW1lIGZvciB0 aGUgZHVyYXRpb24gb2YgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uOwotCi0yLiBDaGFuZ2VzIGFz c2lnbm1lbnRzIHByZWNlZGluZyBzaGVsbCBmdW5jdGlvbiBjYWxscyBvciBzcGVjaWFsIGJ1aWx0 aW5zCi0gICBmcm9tIHdpdGhpbiBhIHNoZWxsIGZ1bmN0aW9uIHRvIG5vIGxvbmdlciBjcmVhdGUg b3IgbW9kaWZ5IGdsb2JhbCB2YXJpYWJsZXMKLSAgIGluIHRoZSBwcmVzZW5jZSBvZiBhIGxvY2Fs IHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZTsKLQotMy4gQXNzaWdubWVudCBzdGF0ZW1lbnRz IHByZWNlZGluZyBhIHNoZWxsIGZ1bmN0aW9uIGNhbGwgb3Igc3BlY2lhbCBidWlsdGluCi0gICBh dCB0aGUgZ2xvYmFsIHNjb3BlIGNvbnRpbnVlIHRvIG1vZGlmeSB0aGUgKGdsb2JhbCkgY2FsbGlu ZyBlbnZpcm9ubWVudCwKLSAgIGJ1dCBhcmUgdW5hZmZlY3RlZCBieSBhc3NpZ25tZW50cyBwcmVj ZWRpbmcgZnVuY3Rpb24gY2FsbHMgb3Igc3BlY2lhbAotICAgYnVpbHRpbnMgd2l0aGluIGEgZnVu Y3Rpb24sIGFzIGRlc2NyaWJlZCBpbiBpdGVtIDIuIFRoaXMgaXMgYWxzbyBzaW1pbGFyCi0gICB0 byB0aGUgYmVoYXZpb3Igb2YgYSBzdGFuZGFsb25lIGFzc2lnbm1lbnQgc3RhdGVtZW50LgotCi1Q YXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVk L3ZhcmlhYmxlcy5jCTIwMTgtMTItMTggMTE6MDc6MjEuMDAwMDAwMDAwIC0wNTAwCi0tLS0gdmFy aWFibGVzLmMJMjAxOS0wOC0yMiAxMDo1Mzo0NC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioq KioqKgotKioqIDQ0NjEsNDQ2NyAqKioqCi0gIAotICAvKiBUYWtlIGEgdmFyaWFibGUgZnJvbSBh biBhc3NpZ25tZW50IHN0YXRlbWVudCBwcmVjZWRpbmcgYSBwb3NpeCBzcGVjaWFsCi0hICAgIGJ1 aWx0aW4gKGluY2x1ZGluZyBgcmV0dXJuJykgYW5kIGNyZWF0ZSBhIGdsb2JhbCB2YXJpYWJsZSBm cm9tIGl0LiBUaGlzCi0hICAgIGlzIGNhbGxlZCBmcm9tIG1lcmdlX3RlbXBvcmFyeV9lbnYsIHdo aWNoIGlzIG9ubHkgY2FsbGVkIHdoZW4gaW4gcG9zaXgKLSEgICAgbW9kZS4gKi8KLSAgc3RhdGlj IHZvaWQKLSAgcHVzaF9wb3NpeF90ZW1wX3ZhciAoZGF0YSkKLS0tLSA0NDYxLDQ0NjcgLS0tLQot ICAKLSAgLyogVGFrZSBhIHZhcmlhYmxlIGZyb20gYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgcHJl Y2VkaW5nIGEgcG9zaXggc3BlY2lhbAotISAgICBidWlsdGluIChpbmNsdWRpbmcgYHJldHVybicp IGFuZCBjcmVhdGUgYSB2YXJpYWJsZSBmcm9tIGl0IGFzIGlmIGEKLSEgICAgc3RhbmRhbG9uZSBh c3NpZ25tZW50IHN0YXRlbWVudCBoYWQgYmVlbiBwZXJmb3JtZWQuIFRoaXMgaXMgY2FsbGVkIGZy b20KLSEgICAgbWVyZ2VfdGVtcG9yYXJ5X2Vudiwgd2hpY2ggaXMgb25seSBjYWxsZWQgd2hlbiBp biBwb3NpeCBtb2RlLiAqLwotICBzdGF0aWMgdm9pZAotICBwdXNoX3Bvc2l4X3RlbXBfdmFyIChk YXRhKQotKioqKioqKioqKioqKioqCi0qKiogNDQ3Myw0NDg2ICoqKioKLSAgICB2YXIgPSAoU0hF TExfVkFSICopZGF0YTsKLSAgCi0hICAgYmluZGluZ190YWJsZSA9IGdsb2JhbF92YXJpYWJsZXMt PnRhYmxlOwotISAgIGlmIChiaW5kaW5nX3RhYmxlID09IDApCi0hICAgICBiaW5kaW5nX3RhYmxl ID0gZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUgPSBoYXNoX2NyZWF0ZSAoVkFSSUFCTEVTX0hBU0hf QlVDS0VUUyk7Ci0hIAotISAgIHYgPSBiaW5kX3ZhcmlhYmxlX2ludGVybmFsICh2YXItPm5hbWUs IHZhbHVlX2NlbGwgKHZhciksIGJpbmRpbmdfdGFibGUsIDAsIEFTU19GT1JDRXxBU1NfTk9MT05H Sk1QKTsKLSAgCi0gICAgLyogZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm8gbG9uZ2VyIHRlbXBvcmFy eSBhbmQgZG9uJ3QgbmVlZCBwcm9wYWdhdGluZy4gKi8KLSEgICB2YXItPmF0dHJpYnV0ZXMgJj0g fihhdHRfdGVtcHZhcnxhdHRfcHJvcGFnYXRlKTsKLSAgICBpZiAodikKLSEgICAgIHYtPmF0dHJp YnV0ZXMgfD0gdmFyLT5hdHRyaWJ1dGVzOwotICAKLSAgICBpZiAoZmluZF9zcGVjaWFsX3ZhciAo dmFyLT5uYW1lKSA+PSAwKQotLS0tIDQ0NzMsNDQ5NyAtLS0tCi0gICAgdmFyID0gKFNIRUxMX1ZB UiAqKWRhdGE7Ci0gIAotISAgIC8qIEp1c3QgbGlrZSBkb19hc3NpZ25tZW50X2ludGVybmFsKCku IFRoaXMgbWFrZXMgYXNzaWdubWVudHMgcHJlY2VkaW5nCi0hICAgICAgc3BlY2lhbCBidWlsdGlu cyBhY3QgbGlrZSBzdGFuZGFsb25lIGFzc2lnbm1lbnQgc3RhdGVtZW50cyB3aGVuIGluCi0hICAg ICAgcG9zaXggbW9kZSwgc2F0aXNmeWluZyB0aGUgcG9zaXggcmVxdWlyZW1lbnQgdGhhdCB0aGlz IGFmZmVjdCB0aGUKLSEgICAgICAiY3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuIiAqLwot ISAgIHYgPSBiaW5kX3ZhcmlhYmxlICh2YXItPm5hbWUsIHZhbHVlX2NlbGwgKHZhciksIEFTU19G T1JDRXxBU1NfTk9MT05HSk1QKTsKLSEgCi0hICAgLyogSWYgdGhpcyBtb2RpZmllcyBhbiBleGlz dGluZyBsb2NhbCB2YXJpYWJsZSwgdi0+Y29udGV4dCB3aWxsIGJlIG5vbi16ZXJvLgotISAgICAg IElmIGl0IGNvbWVzIGJhY2sgd2l0aCB2LT5jb250ZXh0ID09IDAsIHdlIGJvdW5kIGF0IHRoZSBn bG9iYWwgY29udGV4dC4KLSEgICAgICBTZXQgYmluZGluZ190YWJsZSBhcHByb3ByaWF0ZWx5LiBJ dCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIGl0J3MgY29ycmVjdAotISAgICAgIGlmIHRoZSB2YXJp YWJsZSBpcyBsb2NhbCwgb25seSB0aGF0IGl0J3Mgbm90IGdsb2JhbF92YXJpYWJsZXMtPnRhYmxl ICovCi0hICAgYmluZGluZ190YWJsZSA9IHYtPmNvbnRleHQgPyBzaGVsbF92YXJpYWJsZXMtPnRh YmxlIDogZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGU7Ci0gIAotICAgIC8qIGdsb2JhbCB2YXJpYWJs ZXMgYXJlIG5vIGxvbmdlciB0ZW1wb3JhcnkgYW5kIGRvbid0IG5lZWQgcHJvcGFnYXRpbmcuICov Ci0hICAgaWYgKGJpbmRpbmdfdGFibGUgPT0gZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUpCi0hICAg ICB2YXItPmF0dHJpYnV0ZXMgJj0gfihhdHRfdGVtcHZhcnxhdHRfcHJvcGFnYXRlKTsKLSEgCi0g ICAgaWYgKHYpCi0hICAgICB7Ci0hICAgICAgIHYtPmF0dHJpYnV0ZXMgfD0gdmFyLT5hdHRyaWJ1 dGVzOwotISAgICAgICB2LT5hdHRyaWJ1dGVzICY9IH5hdHRfdGVtcHZhcjsJLyogbm90IGEgdGVt cCB2YXIgbm93ICovCi0hICAgICB9Ci0gIAotICAgIGlmIChmaW5kX3NwZWNpYWxfdmFyICh2YXIt Pm5hbWUpID49IDApCi0qKioqKioqKioqKioqKioKLSoqKiA0NTc2LDQ1ODcgKioqKgotICB7Ci0g ICAgaW50IGk7Ci0gIAotICAgIHRlbXB2YXJfbGlzdCA9IHN0cnZlY19jcmVhdGUgKEhBU0hfRU5U UklFUyAodGVtcG9yYXJ5X2VudikgKyAxKTsKLSAgICB0ZW1wdmFyX2xpc3RbdHZsaXN0X2luZCA9 IDBdID0gMDsKLSEgICAgIAotISAgIGhhc2hfZmx1c2ggKHRlbXBvcmFyeV9lbnYsIHB1c2hmKTsK LSEgICBoYXNoX2Rpc3Bvc2UgKHRlbXBvcmFyeV9lbnYpOwotICAgIHRlbXBvcmFyeV9lbnYgPSAo SEFTSF9UQUJMRSAqKU5VTEw7Ci0gIAotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kXSA9IDA7 Ci0gIAotLS0tIDQ1ODcsNDYwMSAtLS0tCi0gIHsKLSAgICBpbnQgaTsKLSsgICBIQVNIX1RBQkxF ICpkaXNwb3NlcjsKLSAgCi0gICAgdGVtcHZhcl9saXN0ID0gc3RydmVjX2NyZWF0ZSAoSEFTSF9F TlRSSUVTICh0ZW1wb3JhcnlfZW52KSArIDEpOwotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5k ID0gMF0gPSAwOwotISAKLSEgICBkaXNwb3NlciA9IHRlbXBvcmFyeV9lbnY7Ci0gICAgdGVtcG9y YXJ5X2VudiA9IChIQVNIX1RBQkxFICopTlVMTDsKLSAgCi0rICAgaGFzaF9mbHVzaCAoZGlzcG9z ZXIsIHB1c2hmKTsKLSsgICBoYXNoX2Rpc3Bvc2UgKGRpc3Bvc2VyKTsKLSsgCi0gICAgdGVtcHZh cl9saXN0W3R2bGlzdF9pbmRdID0gMDsKLSAgCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC90ZXN0 cy92YXJlbnYucmlnaHQJMjAxOC0xMi0xNyAxNTozOTo0OC4wMDAwMDAwMDAgLTA1MDAKLS0tLSB0 ZXN0cy92YXJlbnYucmlnaHQJMjAxOS0wOC0yMiAxNjowNToyNS4wMDAwMDAwMDAgLTA0MDAKLSoq KioqKioqKioqKioqKgotKioqIDE0NywxNTMgKioqKgotICBvdXRzaWRlOiBkZWNsYXJlIC0tIHZh cj0ib25lIgotICBpbnNpZGU6IGRlY2xhcmUgLXggdmFyPSJ2YWx1ZSIKLSEgb3V0c2lkZTogZGVj bGFyZSAteCB2YXI9InZhbHVlIgotISBpbnNpZGU6IGRlY2xhcmUgLS0gdmFyPSJsb2NhbCIKLSEg b3V0c2lkZTogZGVjbGFyZSAteCB2YXI9Imdsb2JhbCIKLSAgZm9vPTx1bnNldD4gZW52aXJvbm1l bnQgZm9vPQotICBmb289Zm9vIGVudmlyb25tZW50IGZvbz1mb28KLS0tLSAxNDcsMTUzIC0tLS0K LSAgb3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im9uZSIKLSAgaW5zaWRlOiBkZWNsYXJlIC14IHZh cj0idmFsdWUiCi0hIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvdXRzaWRlIgotISBpbnNpZGU6 IGRlY2xhcmUgLXggdmFyPSJnbG9iYWwiCi0hIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvdXRz aWRlIgotICBmb289PHVuc2V0PiBlbnZpcm9ubWVudCBmb289Ci0gIGZvbz1mb28gZW52aXJvbm1l bnQgZm9vPWZvbwotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUx OjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4 LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBs b29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0 cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgOQotICAKLSAgI2VuZGlmIC8qIF9Q QVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0 aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAj ZGVmaW5lIFBBVENITEVWRUwgMTAKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEgYi9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAxMQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlhZTY5MGUw MDQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDExCisrKyAv ZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJ ICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJh c2g1MC0wMTEKLQotQnVnLVJlcG9ydGVkLWJ5OglNYXR0IFdoaXRsb2NrCi1CdWctUmVmZXJlbmNl LUlEOgkKLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9y dC8/MTA5NjcxCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotVGhlIGNvbmRpdGlvbmFsIGNvbW1hbmQg ZGlkIG5vdCBwZXJmb3JtIGFwcHJvcHJpYXRlIHF1b3RlZCBudWxsIGNoYXJhY3RlcgotcmVtb3Zh bCBvbiBpdHMgYXJndW1lbnRzLCBjYXVzaW5nIHN5bnRheCBlcnJvcnMgYW5kIGF0dGVtcHRzIHRv IHN0YXQKLWludmFsaWQgcGF0aG5hbWVzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAw Jyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0LmMJMjAxOC0xMi0yMiAxNzo0Mzoz Ny4wMDAwMDAwMDAgLTA1MDAKLS0tLSBzdWJzdC5jCTIwMTktMDQtMTQgMTM6MjU6NDEuMDAwMDAw MDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAzNjI2LDM2MzAgKioqKgotICAgICBTUEVD SUFMIGlzIDIsIHRoaXMgaXMgYW4gcmhzIGFyZ3VtZW50IGZvciB0aGUgPX4gb3BlcmF0b3IsIGFu ZCBzaG91bGQKLSAgICAgYmUgcXVvdGVkIGFwcHJvcHJpYXRlbHkgZm9yIHJlZ2NvbXAvcmVnZXhl Yy4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKLSEgICAgZm9yIHJlbW92aW5nIHRoZSBiYWNr c2xhc2hlcyBpZiB0aGUgdW5xdW90ZWQgd29yZCBpcyBuZWVkZWQgbGF0ZXIuICovICAgCi0gIGNo YXIgKgotICBjb25kX2V4cGFuZF93b3JkICh3LCBzcGVjaWFsKQotLS0tIDM2NDIsMzY0OCAtLS0t Ci0gICAgIFNQRUNJQUwgaXMgMiwgdGhpcyBpcyBhbiByaHMgYXJndW1lbnQgZm9yIHRoZSA9fiBv cGVyYXRvciwgYW5kIHNob3VsZAotICAgICBiZSBxdW90ZWQgYXBwcm9wcmlhdGVseSBmb3IgcmVn Y29tcC9yZWdleGVjLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZQotISAgICBmb3IgcmVtb3Zp bmcgdGhlIGJhY2tzbGFzaGVzIGlmIHRoZSB1bnF1b3RlZCB3b3JkIGlzIG5lZWRlZCBsYXRlci4g SW4KLSEgICAgYW55IGNhc2UsIHNpbmNlIHdlIGRvbid0IHBlcmZvcm0gd29yZCBzcGxpdHRpbmcs IHdlIG5lZWQgdG8gZG8gcXVvdGVkCi0hICAgIG51bGwgY2hhcmFjdGVyIHJlbW92YWwuICovCi0g IGNoYXIgKgotICBjb25kX2V4cGFuZF93b3JkICh3LCBzcGVjaWFsKQotKioqKioqKioqKioqKioq Ci0qKiogMzY0NywzNjUwICoqKioKLS0tLSAzNjY1LDM2NzAgLS0tLQotICAgICAgICBpZiAoc3Bl Y2lhbCA9PSAwKQkJCS8qIExIUyAqLwotICAJewotKyAJICBpZiAobC0+d29yZCkKLSsgCSAgICB3 b3JkX2xpc3RfcmVtb3ZlX3F1b3RlZF9udWxscyAobCk7Ci0gIAkgIGRlcXVvdGVfbGlzdCAobCk7 Ci0gIAkgIHIgPSBzdHJpbmdfbGlzdCAobCk7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5o CTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIw MTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAy NiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRo ZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMAot ICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBs b29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0 cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTEKLSAgCi0gICNlbmRpZiAvKiBf UEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTIgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggNzQ3MGU3NjY1NTAuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDEyCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotCQkJICAgICBCQVNI IFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6 CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTIKLQotQnVnLVJlcG9ydGVkLWJ5OglsZXNzYnVnQHFx LmNvbQotQnVnLVJlZmVyZW5jZS1JRDoJPHRlbmNlbnRfNkFBNTMxRDlBNUNDNDEyMUQ4NkJENUNE QTJFMERBOThDNjA1QHFxLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOgotCi1CdWctRGVzY3JpcHRp b246Ci0KLVdoZW4gdXNpbmcgcHJldmlvdXMtaGlzdG9yeSB0byBnbyBiYWNrIGJleW9uZCB0aGUg YmVnaW5uaW5nIG9mIHRoZSBoaXN0b3J5IGxpc3QsCi1pdCdzIHBvc3NpYmxlIHRvIG1vdmUgdG8g YW4gaW5jb3JyZWN0IHBhcnRpYWwgbGluZS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1w MCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvcmVhZGxpbmUvbWlzYy5jCTIwMTct MDctMDcgMTc6MzA6MTIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL3JlYWRsaW5lL21pc2MuYwky MDE5LTA1LTE2IDExOjQzOjQ2LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiog NTc3LDU4MCAqKioqCi0tLS0gNTkwLDU5NCAtLS0tCi0gIHsKLSAgICBISVNUX0VOVFJZICpvbGRf dGVtcCwgKnRlbXA7Ci0rICAgaW50IGhhZF9zYXZlZF9saW5lOwotICAKLSAgICBpZiAoY291bnQg PCAwKQotKioqKioqKioqKioqKioqCi0qKiogNTg5LDU5MiAqKioqCi0tLS0gNjAzLDYwNyAtLS0t Ci0gIAotICAgIC8qIElmIHdlIGRvbid0IGhhdmUgYSBsaW5lIHNhdmVkLCB0aGVuIHNhdmUgdGhp cyBvbmUuICovCi0rICAgaGFkX3NhdmVkX2xpbmUgPSBfcmxfc2F2ZWRfbGluZV9mb3JfaGlzdG9y eSAhPSAwOwotICAgIHJsX21heWJlX3NhdmVfbGluZSAoKTsKLSAgCi0qKioqKioqKioqKioqKioK LSoqKiA2MTIsNjE2ICoqKioKLSAgICBpZiAodGVtcCA9PSAwKQotICAgICAgewotISAgICAgICBy bF9tYXliZV91bnNhdmVfbGluZSAoKTsKLSAgICAgICAgcmxfZGluZyAoKTsKLSAgICAgIH0KLS0t LSA2MjcsNjMyIC0tLS0KLSAgICBpZiAodGVtcCA9PSAwKQotICAgICAgewotISAgICAgICBpZiAo aGFkX3NhdmVkX2xpbmUgPT0gMCkKLSEgICAgICAgICBfcmxfZnJlZV9zYXZlZF9oaXN0b3J5X2xp bmUgKCk7Ci0gICAgICAgIHJsX2RpbmcgKCk7Ci0gICAgICB9Ci0qKiogLi4vYmFzaC01LjAvcGF0 Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hs ZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioq KioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZl bCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hM RVZFTCAxMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0t LQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2 ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTIKLSAgCi0gICNl bmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTMgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMwpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZTQ0ZmRiNTA1M2IuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv YmFzaC9maWxlcy9iYXNoNTAtMDEzCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCQkJ ICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNo LVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTMKLQotQnVnLVJlcG9ydGVkLWJ5OglI SVJPU0UgTWFzYWFraSA8aGlyb3NlMzFAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPENB R1NPZkEtUnFpVGU9K0dzWHNES3lacnJNV0g0YkRiWGdNVlZlZ01hNk9qcUM1eGJuUUBtYWlsLmdt YWlsLmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2 ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDUvbXNnMDAwMzguaHRtbAotCi1CdWctRGVzY3JpcHRpb246 Ci0KLVJlYWRpbmcgaGlzdG9yeSBlbnRyaWVzIHdpdGggdGltZXN0YW1wcyBjYW4gcmVzdWx0IGlu IGhpc3RvcnkgZW50cmllcyBqb2luZWQKLWJ5IGxpbmVmZWVkcy4KLQotUGF0Y2ggKGFwcGx5IHdp dGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvcmVhZGxpbmUv aGlzdGZpbGUuYwkyMDE4LTA2LTExIDA5OjE0OjUyLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9y ZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTktMDUtMTYgMTU6NTU6NTcuMDAwMDAwMDAwIC0wNDAwCi0q KioqKioqKioqKioqKioKLSoqKiAzNzAsMzc2ICoqKioKLSAgCi0gICAgaGFzX3RpbWVzdGFtcHMg PSBISVNUX1RJTUVTVEFNUF9TVEFSVCAoYnVmZmVyKTsKLSEgICBoaXN0b3J5X211bHRpbGluZV9l bnRyaWVzICs9IGhhc190aW1lc3RhbXBzICYmIGhpc3Rvcnlfd3JpdGVfdGltZXN0YW1wczsgIAot ICAKLSAgICAvKiBTa2lwIGxpbmVzIHVudGlsIHdlIGFyZSBhdCBGUk9NLiAqLwotICAgIGZvciAo bGluZV9zdGFydCA9IGxpbmVfZW5kID0gYnVmZmVyOyBsaW5lX2VuZCA8IGJ1ZmVuZCAmJiBjdXJy ZW50X2xpbmUgPCBmcm9tOyBsaW5lX2VuZCsrKQotICAgICAgaWYgKCpsaW5lX2VuZCA9PSAnXG4n KQotLS0tIDM3MCwzNzggLS0tLQotICAKLSAgICBoYXNfdGltZXN0YW1wcyA9IEhJU1RfVElNRVNU QU1QX1NUQVJUIChidWZmZXIpOwotISAgIGhpc3RvcnlfbXVsdGlsaW5lX2VudHJpZXMgKz0gaGFz X3RpbWVzdGFtcHMgJiYgaGlzdG9yeV93cml0ZV90aW1lc3RhbXBzOwotICAKLSAgICAvKiBTa2lw IGxpbmVzIHVudGlsIHdlIGFyZSBhdCBGUk9NLiAqLwotKyAgIGlmIChoYXNfdGltZXN0YW1wcykK LSsgICAgIGxhc3RfdHMgPSBidWZmZXI7Ci0gICAgZm9yIChsaW5lX3N0YXJ0ID0gbGluZV9lbmQg PSBidWZmZXI7IGxpbmVfZW5kIDwgYnVmZW5kICYmIGN1cnJlbnRfbGluZSA8IGZyb207IGxpbmVf ZW5kKyspCi0gICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0qKioqKioqKioqKioqKioKLSoq KiAzODEsMzg1ICoqKioKLS0tLSAzODMsMzk4IC0tLS0KLSAgCWlmIChISVNUX1RJTUVTVEFNUF9T VEFSVChwKSA9PSAwKQotICAJICBjdXJyZW50X2xpbmUrKzsKLSsgCWVsc2UKLSsgCSAgbGFzdF90 cyA9IHA7Ci0gIAlsaW5lX3N0YXJ0ID0gcDsKLSsgCS8qIElmIHdlIGFyZSBhdCB0aGUgbGFzdCBs aW5lIChjdXJyZW50X2xpbmUgPT0gZnJvbSkgYnV0IHdlIGhhdmUKLSsgCSAgIHRpbWVzdGFtcHMg KGhhc190aW1lc3RhbXBzKSwgdGhlbiBsaW5lX3N0YXJ0IHBvaW50cyB0byB0aGUKLSsgCSAgIHRl eHQgb2YgdGhlIGxhc3QgY29tbWFuZCwgYW5kIHdlIG5lZWQgdG8gc2tpcCB0byBpdHMgZW5kLiAq LwotKyAJaWYgKGN1cnJlbnRfbGluZSA+PSBmcm9tICYmIGhhc190aW1lc3RhbXBzKQotKyAJICB7 Ci0rIAkgICAgZm9yIChsaW5lX2VuZCA9IHA7IGxpbmVfZW5kIDwgYnVmZW5kICYmICpsaW5lX2Vu ZCAhPSAnXG4nOyBsaW5lX2VuZCsrKQotKyAJICAgICAgOwotKyAJICAgIGxpbmVfc3RhcnQgPSAo KmxpbmVfZW5kID09ICdcbicpID8gbGluZV9lbmQgKyAxIDogbGluZV9lbmQ7Ci0rIAkgIH0KLSAg ICAgICAgfQotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0 OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAx OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAg ICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9u IHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTIKLSAgCi0gICNlbmRpZiAv KiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZp bmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAK LSEgI2RlZmluZSBQQVRDSExFVkVMIDEzCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8g Ki8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0IGIvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQ5 YWFlNzI1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNAor KysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRDSCBSRVBPUlQK LQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlE OgliYXNoNTAtMDE0Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJSm9oYW5uZXMgSGllbHNjaGVyIDxqaGll bHNjaGVyQHBvc3Rlby5kZT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTwyMDE5MDIwODIwNTA0OC43N2My NWE4M0Bob3JkZXZtPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9h cmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMi9tc2cwMDAzMi5odG1sCi0KLUJ1Zy1EZXNjcmlw dGlvbjoKLQotSWYgdGhlIGN1cnJlbnQgbGluZSBpcyBlbXB0eSwgdXNpbmcgdGhlIGVtYWNzIEMt eEMtZSBiaW5kaW5nIHRvIGVudGVyIHRoZQotZWRpdG9yIHdpbGwgZWRpdCB0aGUgcHJldmlvdXMg Y29tbWFuZCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IChlbXB0eSkgb25lLgotCi1QYXRjaCAoYXBw bHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2Jhc2hsaW5l LmMJMjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBiYXNobGluZS5jCTIw MTktMDItMTEgMTE6MTg6NTcuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA5 NjIsOTcwICoqKioKLSAgCSBmaW5pc2hlZCB3aXRoIHRoZSBjb21tYW5kLCBzbyB3ZSBzaG91bGQg bm90IGlnbm9yZSB0aGUgbGFzdCBjb21tYW5kICovCi0gICAgICAgIHVzaW5nX2hpc3RvcnkgKCk7 Ci0hICAgICAgIGlmIChybF9saW5lX2J1ZmZlclswXSkKLSEgCXsKLSEgCSAgY3VycmVudF9jb21t YW5kX2xpbmVfY291bnQrKzsJLyogZm9yIHJsX25ld2xpbmUgYWJvdmUgKi8KLSEgCSAgYmFzaF9h ZGRfaGlzdG9yeSAocmxfbGluZV9idWZmZXIpOwotISAJfQotICAgICAgICBjdXJyZW50X2NvbW1h bmRfbGluZV9jb3VudCA9IDA7CS8qIGZvciBkdW1teSBoaXN0b3J5IGVudHJ5ICovCi0gICAgICAg IGJhc2hfYWRkX2hpc3RvcnkgKCIiKTsKLS0tLSA5NjUsOTcwIC0tLS0KLSAgCSBmaW5pc2hlZCB3 aXRoIHRoZSBjb21tYW5kLCBzbyB3ZSBzaG91bGQgbm90IGlnbm9yZSB0aGUgbGFzdCBjb21tYW5k ICovCi0gICAgICAgIHVzaW5nX2hpc3RvcnkgKCk7Ci0hICAgICAgIGN1cnJlbnRfY29tbWFuZF9s aW5lX2NvdW50Kys7CS8qIGZvciBybF9uZXdsaW5lIGFib3ZlICovCi0hICAgICAgIGJhc2hfYWRk X2hpc3RvcnkgKHJsX2xpbmVfYnVmZmVyKTsKLSAgICAgICAgY3VycmVudF9jb21tYW5kX2xpbmVf Y291bnQgPSAwOwkvKiBmb3IgZHVtbXkgaGlzdG9yeSBlbnRyeSAqLwotICAgICAgICBiYXNoX2Fk ZF9oaXN0b3J5ICgiIik7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIg MTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6 MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0g ICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNp b24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMwotICAKLSAgI2VuZGlm IC8qIF9QQVRDSExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8g ZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0g IAotISAjZGVmaW5lIFBBVENITEVWRUwgMTQKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9I XyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUgYi9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAxNQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY2 ZTVlNjlkNmUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE1 CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9S VAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gt SUQ6CWJhc2g1MC0wMTUKLQotQnVnLVJlcG9ydGVkLWJ5OglZdSBLb3UgPGNreW9vZ0BnbWFpbC5j b20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FBcW9GOUtvM25BU2hKWEd6dWNhZnMtQnlVYWd6WjRu YlFvbndFa3dDN3M5VXFmV0t3QG1haWwuZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0 dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wNS9tc2cwMDAz Mi5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotSWYgYWxpYXMgZXhwYW5zaW9uIGlzIGVuYWJs ZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBjb21tYW5kIGFyZ3VtZW50IHRvIHRoZQotYC1jJyBvcHRp b24sIGFuIGFsaWFzIGlzIGRlZmluZWQgaW4gdGhhdCBjb21tYW5kLCBhbmQgdGhlIGNvbW1hbmQg ZW5kcyB3aXRoCi10aGUgaW52b2NhdGlvbiBvZiB0aGF0IGFsaWFzLCB0aGUgc2hlbGwncyBjb21t YW5kIHBhcnNlciBjYW4gcHJlbWF0dXJlbHkKLXRlcm1pbmF0ZSBiZWZvcmUgdGhlIGVudGlyZSBj b21tYW5kIGlzIGV4ZWN1dGVkLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0K LSoqKiAuLi9iYXNoLTIwMTkwNDI2L2J1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTAxLTI5IDE0 OjE1OjE5LjAwMDAwMDAwMCAtMDUwMAotLS0tIGJ1aWx0aW5zL2V2YWxzdHJpbmcuYwkyMDE5LTA1 LTE1IDE0OjE5OjM2LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogOTIsOTUg KioqKgotLS0tIDkyLDk2IC0tLS0KLSAgCSAgcnVubmluZ190cmFwID09IDAgJiYKLSAgCSAgKmJh c2hfaW5wdXQubG9jYXRpb24uc3RyaW5nID09ICdcMCcgJiYKLSsgCSAgcGFyc2VyX2V4cGFuZGlu Z19hbGlhcyAoKSA9PSAwICYmCi0gIAkgIGNvbW1hbmQtPnR5cGUgPT0gY21fc2ltcGxlICYmCi0g IAkgIHNpZ25hbF9pc190cmFwcGVkIChFWElUX1RSQVApID09IDAgJiYKLSoqKioqKioqKioqKioq KgotKioqIDEwNiwxMDkgKioqKgotLS0tIDEwNywxMTEgLS0tLQotICB7Ci0gICAgcmV0dXJuICgq YmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICBwYXJzZXJfZXhwYW5k aW5nX2FsaWFzICgpID09IDAgJiYKLSAgCSAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNv bm5lY3RvciA9PSBBTkRfQU5EIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3Rv ciA9PSBPUl9PUiB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gJzsn KSAmJgotICAJICBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQtPnR5cGUgPT0gY21f c2ltcGxlKTsKLSoqKioqKioqKioqKioqKgotKioqIDI5MSwyOTUgKioqKgotICAgIHdpdGhfaW5w dXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSAgICBjbGVhcl9zaGVsbF9pbnB1 dF9saW5lICgpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5nKSkKLSAg ICAgIHsKLSAgICAgICAgY29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLS0tLSAyOTMsMjk3IC0t LS0KLSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmlsZSk7Ci0gICAg Y2xlYXJfc2hlbGxfaW5wdXRfbGluZSAoKTsKLSEgICB3aGlsZSAoKihiYXNoX2lucHV0LmxvY2F0 aW9uLnN0cmluZykgfHwgcGFyc2VyX2V4cGFuZGluZ19hbGlhcyAoKSkKLSAgICAgIHsKLSAgICAg ICAgY29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLSoqKioqKioqKioqKioqKgotKioqIDU0Niw1 NTAgKioqKgotICAKLSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmls ZSk7Ci0hICAgd2hpbGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQotICAgICAgewot ICAgICAgICBjb21tYW5kID0gKENPTU1BTkQgKilOVUxMOwotLS0tIDU0OCw1NTIgLS0tLQotICAK LSAgICB3aXRoX2lucHV0X2Zyb21fc3RyaW5nIChzdHJpbmcsIGZyb21fZmlsZSk7Ci0hICAgd2hp bGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQkJLyogWFhYIC0gcGFyc2VyX2V4cGFu ZGluZ19hbGlhcyAoKSA/ICovCi0gICAgICB7Ci0gICAgICAgIGNvbW1hbmQgPSAoQ09NTUFORCAq KU5VTEw7Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMu MDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAw MDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tz IGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5n KS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNAotICAKLSAgI2VuZGlmIC8qIF9QQVRD SExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUg cGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVm aW5lIFBBVENITEVWRUwgMTUKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYgYi9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmMjMyZDdhZDQu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE2CisrKyAvZGV2 L251bGwKQEAgLTEsNTggKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMTYKLQotQnVnLVJlcG9ydGVkLWJ5OglzdW5ueWNlbWV0ZXJ5QGdtYWlsLmNvbQotQnVnLVJl ZmVyZW5jZS1JRDoJPDIwMTkwMzE2MDQxNTM0LkdCMjI4ODRAbWlkbmlnaHQ+Ci1CdWctUmVmZXJl bmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5 LTAzL21zZzAwMDcwLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1CYXNoIHdhaXRzIHRvbyBs b25nIHRvIHJlYXAgL2Rldi9mZCBwcm9jZXNzIHN1YnN0aXR1dGlvbnMgdXNlZCBhcyByZWRpcmVj dGlvbnMKLXdpdGggbG9vcHMgYW5kIGdyb3VwIGNvbW1hbmRzLCB3aGljaCBjYW4gbGVhZCB0byBm aWxlIGRlc2NyaXB0b3IgZXhoYXVzdGlvbi4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1w MCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9leGVjdXRlX2NtZC5jCTIwMTktMDQtMTkg MTU6NDY6MzYuMDAwMDAwMDAwIC0wNDAwCi0tLS0gZXhlY3V0ZV9jbWQuYwkyMDE5LTA3LTAxIDE2 OjQ1OjQ5LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMTEwNCwxMTA3ICoq KioKLS0tLSAxMDg1LDExMDQgLS0tLQotICAgICAgICBkaXNjYXJkX3Vud2luZF9mcmFtZSAoImlu dGVybmFsX2ZpZm9zIik7Ci0gICAgICB9Ci0rICMgaWYgZGVmaW5lZCAoSEFWRV9ERVZfRkQpCi0r ICAgLyogUmVhcCBwcm9jZXNzIHN1YnN0aXR1dGlvbnMgYXQgdGhlIGVuZCBvZiBsb29wcyAqLwot KyAgIHN3aXRjaCAoY29tbWFuZC0+dHlwZSkKLSsgICAgIHsKLSsgICAgIGNhc2UgY21fd2hpbGU6 Ci0rICAgICBjYXNlIGNtX3VudGlsOgotKyAgICAgY2FzZSBjbV9mb3I6Ci0rICAgICBjYXNlIGNt X2dyb3VwOgotKyAjICAgIGlmIGRlZmluZWQgKEFSSVRIX0ZPUl9DT01NQU5EKQotKyAgICAgY2Fz ZSBjbV9hcml0aF9mb3I6Ci0rICMgICAgZW5kaWYKLSsgICAgICAgcmVhcF9wcm9jc3VicyAoKTsK LSsgICAgIGRlZmF1bHQ6Ci0rICAgICAgIGJyZWFrOwotKyAgICAgfQotKyAjICBlbmRpZiAvKiBI QVZFX0RFVl9GRCAqLwotICAjZW5kaWYKLSAgCi0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVs LmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJ MjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioq IDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3Ig dGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE1 Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAg IGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24g c3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNgotICAKLSAgI2VuZGlmIC8q IF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAxNyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3CmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhZGZjYjZhODYwNi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMTcKKysrIC9kZXYvbnVsbApAQCAtMSwyODkgKzAsMCBAQAotCQkJICAgICBC QVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVh c2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTcKLQotQnVnLVJlcG9ydGVkLWJ5OglWYWxlbnRp biBMYWIgPHZhbGVudGluLmxhYkBrYWx5c3RvLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTxhYjk4 MWI5Yy02MGE1LTQ2ZDAtYjdlNi1hNmQ4OGI4MGRmNTBAa2FseXN0by5vcmc+Ci1CdWctUmVmZXJl bmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDIw LTAzL21zZzAwMDYyLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1UaGVyZSB3ZXJlIGNhc2Vz IHdoZXJlIHBhdGNoIDE2IHJlYXBlZCBwcm9jZXNzIHN1YnN0aXR1dGlvbiBmaWxlIGRlc2NyaXB0 b3JzCi0ob3IgRklGT3MpIGFuZCBwcm9jZXNzZXMgdG8gZWFybHkuIFRoaXMgaXMgYSBiZXR0ZXIg Zml4IGZvciB0aGUgcHJvYmxlbSB0aGF0Ci1iYXNoNTAtMDE2IGF0dGVtcHRlZCB0byBzb2x2ZS4K LQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0 Y2hlZC9zdWJzdC5jCTIwMTktMDgtMjkgMTE6MTY6NDkuMDAwMDAwMDAwIC0wNDAwCi0tLS0gc3Vi c3QuYwkyMDIwLTA0LTAyIDE2OjI0OjE5LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioq Ci0qKiogNTMzNyw1MzQxICoqKioKLSAgfQotICAKLSEgY2hhciAqCi0gIGNvcHlfZmlmb19saXN0 IChzaXplcCkKLSAgICAgICBpbnQgKnNpemVwOwotLS0tIDUzMzcsNTM0MSAtLS0tCi0gIH0KLSAg Ci0hIHZvaWQgKgotICBjb3B5X2ZpZm9fbGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsK LSoqKioqKioqKioqKioqKgotKioqIDUzNDMsNTM0NyAqKioqCi0gICAgaWYgKHNpemVwKQotICAg ICAgKnNpemVwID0gMDsKLSEgICByZXR1cm4gKGNoYXIgKilOVUxMOwotICB9Ci0gIAotLS0tIDUz NDMsNTM0NyAtLS0tCi0gICAgaWYgKHNpemVwKQotICAgICAgKnNpemVwID0gMDsKLSEgICByZXR1 cm4gKHZvaWQgKilOVUxMOwotICB9Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNTQwOSw1NDE0 ICoqKioKLSAgCWlmIChmaWZvX2xpc3RbaV0uZmlsZSkKLSAgCSAgewotISAJICAgIGZpZm9fbGlz dFtqXS5maWxlID0gZmlmb19saXN0W2ldLmZpbGU7Ci0hIAkgICAgZmlmb19saXN0W2pdLnByb2Mg PSBmaWZvX2xpc3RbaV0ucHJvYzsKLSAgCSAgICBqKys7Ci0gIAkgIH0KLS0tLSA1NDA5LDU0MTkg LS0tLQotICAJaWYgKGZpZm9fbGlzdFtpXS5maWxlKQotICAJICB7Ci0hIAkgICAgaWYgKGkgIT0g aikKLSEgCSAgICAgIHsKLSEgCQlmaWZvX2xpc3Rbal0uZmlsZSA9IGZpZm9fbGlzdFtpXS5maWxl OwotISAJCWZpZm9fbGlzdFtqXS5wcm9jID0gZmlmb19saXN0W2ldLnByb2M7Ci0hIAkJZmlmb19s aXN0W2ldLmZpbGUgPSAoY2hhciAqKU5VTEw7Ci0hIAkJZmlmb19saXN0W2ldLnByb2MgPSAwOwot ISAJICAgICAgfQotICAJICAgIGorKzsKLSAgCSAgfQotKioqKioqKioqKioqKioqCi0qKiogNTQy Niw1NDMzICoqKioKLSAgdm9pZAotICBjbG9zZV9uZXdfZmlmb3MgKGxpc3QsIGxzaXplKQotISAg ICAgIGNoYXIgKmxpc3Q7Ci0gICAgICAgaW50IGxzaXplOwotICB7Ci0gICAgaW50IGk7Ci0gIAot ICAgIGlmIChsaXN0ID09IDApCi0tLS0gNTQzMSw1NDM5IC0tLS0KLSAgdm9pZAotICBjbG9zZV9u ZXdfZmlmb3MgKGxpc3QsIGxzaXplKQotISAgICAgIHZvaWQgKmxpc3Q7Ci0gICAgICAgaW50IGxz aXplOwotICB7Ci0gICAgaW50IGk7Ci0rICAgY2hhciAqcGxpc3Q7Ci0gIAotICAgIGlmIChsaXN0 ID09IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NDM3LDU0NDIgKioqKgotICAgICAgfQotICAK LSEgICBmb3IgKGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEgICAgIGlmIChsaXN0W2ldID09IDAg JiYgaSA8IGZpZm9fbGlzdF9zaXplICYmIGZpZm9fbGlzdFtpXS5wcm9jICE9IC0xKQotICAgICAg ICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAotLS0tIDU0NDMsNTQ0OCAtLS0tCi0gICAgICB9Ci0gIAot ISAgIGZvciAocGxpc3QgPSAoY2hhciAqKWxpc3QsIGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEg ICAgIGlmIChwbGlzdFtpXSA9PSAwICYmIGkgPCBmaWZvX2xpc3Rfc2l6ZSAmJiBmaWZvX2xpc3Rb aV0ucHJvYyAhPSAtMSkKLSAgICAgICAgdW5saW5rX2ZpZm8gKGkpOwotICAKLSoqKioqKioqKioq KioqKgotKioqIDU1NjAsNTU2OCAqKioqCi0gIH0KLSAgCi0hIGNoYXIgKgotICBjb3B5X2ZpZm9f bGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLSAgewotISAgIGNoYXIgKnJldDsKLSAg Ci0gICAgaWYgKG5mZHMgPT0gMCB8fCB0b3RmZHMgPT0gMCkKLS0tLSA1NTY2LDU1NzQgLS0tLQot ICB9Ci0gIAotISB2b2lkICoKLSAgY29weV9maWZvX2xpc3QgKHNpemVwKQotICAgICAgIGludCAq c2l6ZXA7Ci0gIHsKLSEgICB2b2lkICpyZXQ7Ci0gIAotICAgIGlmIChuZmRzID09IDAgfHwgdG90 ZmRzID09IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NTcwLDU1NzkgKioqKgotICAgICAgICBp ZiAoc2l6ZXApCi0gIAkqc2l6ZXAgPSAwOwotISAgICAgICByZXR1cm4gKGNoYXIgKilOVUxMOwot ICAgICAgfQotICAKLSAgICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAgPSB0b3RmZHM7Ci0hICAg cmV0ID0gKGNoYXIgKil4bWFsbG9jICh0b3RmZHMgKiBzaXplb2YgKHBpZF90KSk7Ci0gICAgcmV0 dXJuIChtZW1jcHkgKHJldCwgZGV2X2ZkX2xpc3QsIHRvdGZkcyAqIHNpemVvZiAocGlkX3QpKSk7 Ci0gIH0KLS0tLSA1NTc2LDU1ODUgLS0tLQotICAgICAgICBpZiAoc2l6ZXApCi0gIAkqc2l6ZXAg PSAwOwotISAgICAgICByZXR1cm4gKHZvaWQgKilOVUxMOwotICAgICAgfQotICAKLSAgICBpZiAo c2l6ZXApCi0gICAgICAqc2l6ZXAgPSB0b3RmZHM7Ci0hICAgcmV0ID0geG1hbGxvYyAodG90ZmRz ICogc2l6ZW9mIChwaWRfdCkpOwotICAgIHJldHVybiAobWVtY3B5IChyZXQsIGRldl9mZF9saXN0 LCB0b3RmZHMgKiBzaXplb2YgKHBpZF90KSkpOwotICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA1 NjQ4LDU2NTUgKioqKgotICB2b2lkCi0gIGNsb3NlX25ld19maWZvcyAobGlzdCwgbHNpemUpCi0h ICAgICAgY2hhciAqbGlzdDsKLSAgICAgICBpbnQgbHNpemU7Ci0gIHsKLSAgICBpbnQgaTsKLSAg Ci0gICAgaWYgKGxpc3QgPT0gMCkKLS0tLSA1NjU0LDU2NjIgLS0tLQotICB2b2lkCi0gIGNsb3Nl X25ld19maWZvcyAobGlzdCwgbHNpemUpCi0hICAgICAgdm9pZCAqbGlzdDsKLSAgICAgICBpbnQg bHNpemU7Ci0gIHsKLSAgICBpbnQgaTsKLSsgICBwaWRfdCAqcGxpc3Q7Ci0gIAotICAgIGlmIChs aXN0ID09IDApCi0qKioqKioqKioqKioqKioKLSoqKiA1NjU5LDU2NjQgKioqKgotICAgICAgfQot ICAKLSEgICBmb3IgKGkgPSAwOyBpIDwgbHNpemU7IGkrKykKLSEgICAgIGlmIChsaXN0W2ldID09 IDAgJiYgaSA8IHRvdGZkcyAmJiBkZXZfZmRfbGlzdFtpXSkKLSAgICAgICAgdW5saW5rX2ZpZm8g KGkpOwotICAKLS0tLSA1NjY2LDU2NzEgLS0tLQotICAgICAgfQotICAKLSEgICBmb3IgKHBsaXN0 ID0gKHBpZF90ICopbGlzdCwgaSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKHBsaXN0 W2ldID09IDAgJiYgaSA8IHRvdGZkcyAmJiBkZXZfZmRfbGlzdFtpXSkKLSAgICAgICAgdW5saW5r X2ZpZm8gKGkpOwotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0LmgJMjAxOC0xMC0y MSAxODo0NjowOS4wMDAwMDAwMDAgLTA0MDAKLS0tLSBzdWJzdC5oCTIwMjAtMDQtMDIgMTY6Mjk6 MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNzQsMjgwICoqKioKLSAg ZXh0ZXJuIHZvaWQgdW5saW5rX2ZpZm8gX19QKChpbnQpKTsKLSAgCi0hIGV4dGVybiBjaGFyICpj b3B5X2ZpZm9fbGlzdCBfX1AoKGludCAqKSk7Ci0hIGV4dGVybiB2b2lkIHVubGlua19uZXdfZmlm b3MgX19QKChjaGFyICosIGludCkpOwotISBleHRlcm4gdm9pZCBjbG9zZV9uZXdfZmlmb3MgX19Q KChjaGFyICosIGludCkpOwotICAKLSAgZXh0ZXJuIHZvaWQgY2xlYXJfZmlmb19saXN0IF9fUCgo dm9pZCkpOwotLS0tIDI3NCwyNzkgLS0tLQotICBleHRlcm4gdm9pZCB1bmxpbmtfZmlmbyBfX1Ao KGludCkpOwotICAKLSEgZXh0ZXJuIHZvaWQgKmNvcHlfZmlmb19saXN0IF9fUCgoaW50ICopKTsK LSEgZXh0ZXJuIHZvaWQgY2xvc2VfbmV3X2ZpZm9zIF9fUCgodm9pZCAqLCBpbnQpKTsKLSAgCi0g IGV4dGVybiB2b2lkIGNsZWFyX2ZpZm9fbGlzdCBfX1AoKHZvaWQpKTsKLSoqKiAuLi9iYXNoLTUu MC1wYXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAyMC0wMi0wNiAyMDoxNjo0OC4wMDAwMDAwMDAgLTA1 MDAKLS0tLSBleGVjdXRlX2NtZC5jCTIwMjAtMDQtMDIgMTc6MDA6MTAuMDAwMDAwMDAwIC0wNDAw Ci0qKioqKioqKioqKioqKioKLSoqKiA1NjUsNTY5ICoqKioKLSAgI2lmIGRlZmluZWQgKFBST0NF U1NfU1VCU1RJVFVUSU9OKQotICAgIHZvbGF0aWxlIGludCBvZmlmbywgbmZpZm8sIG9zaXplLCBz YXZlZF9maWZvOwotISAgIHZvbGF0aWxlIGNoYXIgKm9maWZvX2xpc3Q7Ci0gICNlbmRpZgotICAK LS0tLSA1NjUsNTY5IC0tLS0KLSAgI2lmIGRlZmluZWQgKFBST0NFU1NfU1VCU1RJVFVUSU9OKQot ICAgIHZvbGF0aWxlIGludCBvZmlmbywgbmZpZm8sIG9zaXplLCBzYXZlZF9maWZvOwotISAgIHZv bGF0aWxlIHZvaWQgKm9maWZvX2xpc3Q7Ci0gICNlbmRpZgotICAKLSoqKioqKioqKioqKioqKgot KioqIDc1MSw3NjAgKioqKgotICAjICBlbmRpZgotICAKLSEgICBpZiAodmFyaWFibGVfY29udGV4 dCAhPSAwKQkvKiBYWFggLSBhbHNvIGlmIHNvdXJjZWxldmVsICE9IDA/ICovCi0gICAgICB7Ci0g ICAgICAgIG9maWZvID0gbnVtX2ZpZm9zICgpOwotICAgICAgICBvZmlmb19saXN0ID0gY29weV9m aWZvX2xpc3QgKChpbnQgKikmb3NpemUpOwotICAgICAgICBiZWdpbl91bndpbmRfZnJhbWUgKCJp bnRlcm5hbF9maWZvcyIpOwotISAgICAgICBhZGRfdW53aW5kX3Byb3RlY3QgKHhmcmVlLCBvZmlm b19saXN0KTsKLSAgICAgICAgc2F2ZWRfZmlmbyA9IDE7Ci0gICAgICB9Ci0tLS0gNzUxLDc2MiAt LS0tCi0gICMgIGVuZGlmCi0gIAotISAgIC8qIFhYWCAtIGFsc28gaWYgc291cmNlbGV2ZWwgIT0g MD8gKi8KLSEgICBpZiAodmFyaWFibGVfY29udGV4dCAhPSAwKQotICAgICAgewotICAgICAgICBv ZmlmbyA9IG51bV9maWZvcyAoKTsKLSAgICAgICAgb2ZpZm9fbGlzdCA9IGNvcHlfZmlmb19saXN0 ICgoaW50ICopJm9zaXplKTsKLSAgICAgICAgYmVnaW5fdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxf Zmlmb3MiKTsKLSEgICAgICAgaWYgKG9maWZvX2xpc3QpCi0hIAlhZGRfdW53aW5kX3Byb3RlY3Qg KHhmcmVlLCBvZmlmb19saXN0KTsKLSAgICAgICAgc2F2ZWRfZmlmbyA9IDE7Ci0gICAgICB9Ci0q KioqKioqKioqKioqKioKLSoqKiAxMTAwLDExMjMgKioqKgotICAgICAgICBuZmlmbyA9IG51bV9m aWZvcyAoKTsKLSAgICAgICAgaWYgKG5maWZvID4gb2ZpZm8pCi0hIAljbG9zZV9uZXdfZmlmb3Mg KChjaGFyICopb2ZpZm9fbGlzdCwgb3NpemUpOwotICAgICAgICBmcmVlICgodm9pZCAqKW9maWZv X2xpc3QpOwotICAgICAgICBkaXNjYXJkX3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7 Ci0gICAgICB9Ci0tICMgaWYgZGVmaW5lZCAoSEFWRV9ERVZfRkQpCi0tICAgLyogUmVhcCBwcm9j ZXNzIHN1YnN0aXR1dGlvbnMgYXQgdGhlIGVuZCBvZiBsb29wcyAqLwotLSAgIHN3aXRjaCAoY29t bWFuZC0+dHlwZSkKLS0gICAgIHsKLS0gICAgIGNhc2UgY21fd2hpbGU6Ci0tICAgICBjYXNlIGNt X3VudGlsOgotLSAgICAgY2FzZSBjbV9mb3I6Ci0tICAgICBjYXNlIGNtX2dyb3VwOgotLSAjICAg IGlmIGRlZmluZWQgKEFSSVRIX0ZPUl9DT01NQU5EKQotLSAgICAgY2FzZSBjbV9hcml0aF9mb3I6 Ci0tICMgICAgZW5kaWYKLS0gICAgICAgcmVhcF9wcm9jc3VicyAoKTsKLS0gICAgIGRlZmF1bHQ6 Ci0tICAgICAgIGJyZWFrOwotLSAgICAgfQotLSAjICBlbmRpZiAvKiBIQVZFX0RFVl9GRCAqLwot ICAjZW5kaWYKLSAgCi0tLS0gMTEwMiwxMTA5IC0tLS0KLSAgICAgICAgbmZpZm8gPSBudW1fZmlm b3MgKCk7Ci0gICAgICAgIGlmIChuZmlmbyA+IG9maWZvKQotISAJY2xvc2VfbmV3X2ZpZm9zICgo dm9pZCAqKW9maWZvX2xpc3QsIG9zaXplKTsKLSAgICAgICAgZnJlZSAoKHZvaWQgKilvZmlmb19s aXN0KTsKLSAgICAgICAgZGlzY2FyZF91bndpbmRfZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwot ICAgICAgfQotICAjZW5kaWYKLSAgCi0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAx Ni0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0x MC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMw ICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNj Y3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE2Ci0gIAot ICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tz IGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5n KS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxNwotICAKLSAgI2VuZGlmIC8qIF9QQVRD SExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvdXBkYXRlLWJhc2gt cGF0Y2hlcy5zaCBiL3NyY3BrZ3MvYmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2M2M1ZTIwYzIzMy4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iYXNoL2ZpbGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2gKKysrIC9kZXYvbnVs bApAQCAtMSw3ICswLDAgQEAKLSMhL2Jpbi9iYXNoCi1zb3VyY2UgLi4vdGVtcGxhdGUKLQotZm9y IGkgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbwotCWN1cmwgaHR0cHM6 Ly9mdHAuZ251Lm9yZy9nbnUvYmFzaC9iYXNoLSRfYmFzaF9kaXN0dmVyLXBhdGNoZXMvYmFzaCR7 X2Jhc2hfZGlzdHZlci8vLi99LSRpIFwKLQkJPiBiYXNoJHtfYmFzaF9kaXN0dmVyLy8uL30tJHtf YmFzaF9wYXRjaGxldmVsfQotZG9uZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL3RlbXBsYXRl IGIvc3JjcGtncy9iYXNoL3RlbXBsYXRlCmluZGV4IDkxZTJlNGMxY2EzLi5iNWM2YzAxNzkwZiAx MDA2NDQKLS0tIGEvc3JjcGtncy9iYXNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFzaC90ZW1w bGF0ZQpAQCAtMSw5ICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXNoJwogcGtnbmFt ZT1iYXNoCi1fYmFzaF9kaXN0dmVyPTUuMAotX2Jhc2hfcGF0Y2hsZXZlbD0wMTcKLXZlcnNpb249 IiR7X2Jhc2hfZGlzdHZlcn0uJHtfYmFzaF9wYXRjaGxldmVsfSIKK3ZlcnNpb249NS4wLjAxNwog cmV2aXNpb249MQorX2Jhc2hfZGlzdHZlcj0ke3ZlcnNpb24lLip9CitfYmFzaF9wYXRjaGxldmVs PSR7dmVyc2lvbiMjKi59CitfcGF0Y2hwcmVmaXg9ImJhc2gke19iYXNoX2Rpc3R2ZXIvLi99Igog d3Jrc3JjPSIke3BrZ25hbWV9LSR7X2Jhc2hfZGlzdHZlcn0iCiBidWlsZF9zdHlsZT1nbnUtY29u ZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS13aXRob3V0LWJhc2gtbWFsbG9jIC0td2l0aC1jdXJz ZXMgLS13aXRob3V0LWluc3RhbGxlZC1yZWFkbGluZSIKQEAgLTE1LDkgKzE2LDM1IEBAIG1haW50 YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFz aC9iYXNoLmh0bWwiCiBkaXN0ZmlsZXM9IiR7R05VX1NJVEV9LyR7cGtnbmFtZX0vJHtwa2duYW1l fS0ke19iYXNoX2Rpc3R2ZXJ9LnRhci5neiIKLW1ha2VfZGlycz0iL2V0Yy9iYXNoL2Jhc2hyYy5k IDc1NSByb290IHJvb3QiCi1jaGVja3N1bT1iNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRm MWY3NmM3YjFhZmQxMWY3OTllMjIwMzVkNjMwNzdmYjRkCiAKK191cmw9IiR7R05VX1NJVEV9L2Jh c2gvYmFzaC0ke19iYXNoX2Rpc3R2ZXJ9LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEgLXcgMDAx ICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbworCWRpc3RmaWxlcys9IiAke191cmx9LyR7X3BhdGNo cHJlZml4fS0ke19wfSIKKwlza2lwX2V4dHJhY3Rpb24rPSIgJHtfcGF0Y2hwcmVmaXh9LSR7X3B9 IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKKworY2hlY2tzdW09ImI0YTgwZjJhYzY2MTcw YjI5MTNlZmJmYjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKKyBmMmZl OWUxZjBmYWRkZjE0YWI5YmZhODhkNDUwYTc1ZTVkMDI4ZmVkYWZhZDIzYjg4NzE2YmQ2NTdjNzM3 Mjg5CisgODdlODdkMzU0MmU1OTg3OTlhZGIzZTdlMDFjODE2NWJjNzQzZTEzNmE0MDBlZDBkZTAx NTg0NWY3ZmY2ODcwNworIDRlZWJjZGMzN2IxMzc5M2EyMzJjNWYyZjQ5OGE1ZmNiZjdkYTBlY2Iz ZGEyMDU5MzkxYzA5NmRiNjIwZWM4NWIKKyAxNDQ0N2FkODMyYWRkOGVjZmFmZGNlNTM4NGJhZGQ5 MzM2OTdiNTU5YzQ2ODhkNmI5ZTNkMzZmZjM2YzYyZjA4CisgNWJmNTRkZDliZDJjMjExZDJiZmIz NGE0OWUyYzc0MWYyZWQ1ZTMzODc2N2U5Y2U5ZjRkNDEyNTRiZjlmODI3NgorIGQ2ODUyOWE2ZmYy MDFiNmZmNTkxNTMxOGFiMTJmYzE2YjhhMGViYjc3ZmRhMzMwODMwM2ZjYzFlMTMzOTg0MjAKKyAx N2I0MWU3ZWUzNjczZDg4ODdkZDI1OTkyNDE3YTM5ODY3NzUzM2FiODgyNzkzOGFhNDFmYWQ3MGRm MTlhZjliCisgZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2ZTIxOGE3NWEzNjQwYmVmNDk1M2YwOWQ2 ZWUxZjQxOTk2NzBhZDdlMworIGVkM2NhMjE3NjczMDNmYzNkZTkzOTM0YWE1MjRjMmU5MjA3ODdj NTA2YjYwMWNjNDBhNDg5N2Q0YjA5NGQ5MDMKKyBkNmZiYzMyNWYwYjVkYzU0ZGRiZThlZTQzMDIw YmNlZDhiZDU4OWRkZmZlYTU5ZDEyOGRiMTRiMmU1MmE4YTExCisgMmM0ZGUzMzJiOTFlYWY3OTdh YmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgwOTZkYmQ3YmY0NzRlYQorIDI5NDNlZTE5 Njg4MDE4Mjk2ZjJhMDRkYmZlMzBiNzEzOGI4ODk3MDBlZmE4ZmYxYzA1MjRhZjI3MWUwZWUyMzMK KyBmNWQ3MTc4ZDhkYTMwNzk5ZTAxYjgzYTA4MDIwMThkOTEzZDZhYTk3MmRkMmRkYWQzYjkyN2Yz ZjNlYjcwOTlhCisgNWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZm MWM1YTlhMzVkYjFmNzJhZjU4OQorIGE1MTdkZjJkZGE5M2IyNmQ1Y2JmMDBlZmZlZmVhOTNlM2E0 Y2NkNjY1MmYxNTJmNDEwOTE3MDU0NGViZmEwNWUKKyBmZmQxZDdhNTRhOTlmYTdmNWIxODI1ZTRm N2U5NWQ4Yzg4NzZiYzJjYTE1MWYxNTBlNzUxZDQyOWM2NTBiMDZkCisgNGNmM2I5ZmFmYjhhNjZk NDExZGQ1ZmM5MTIwMDMyNTMzYTQwMTJkZjFkYzZlZTAyNGM3ODMzMzczZTJkZGMzMSIKKworbWFr ZV9kaXJzPSIvZXRjL2Jhc2gvYmFzaHJjLmQgNzU1IHJvb3Qgcm9vdCIKIGNvbmZsaWN0cz0iY2hy b290LWJhc2g+PTAiCiByZWdpc3Rlcl9zaGVsbD0iL3Vzci9iaW4vYmFzaCAvYmluL2Jhc2giCiAK QEAgLTI3LDEzICs1NCwxMiBAQCBhbHRlcm5hdGl2ZXM9IgogCiBDRkxBR1M9Ii1EU1lTX0JBU0hS Qz0nXCIvZXRjL2Jhc2gvYmFzaHJjXCInIgogCi1wcmVfY29uZmlndXJlKCkgewotCWxvY2FsIHZl cj0kKGVjaG8gJHtfYmFzaF9kaXN0dmVyfXxzZWQgInN8XC58fGciKQotCitwb3N0X3BhdGNoKCkg eworCWxvY2FsIF9wCiAJY2QgJHt3cmtzcmN9Ci0JZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X2Jh c2hfcGF0Y2hsZXZlbH0pOyBkbwotCQlwYXRjaCAtc05wMCAtaSAke0ZJTEVTRElSfS9iYXNoJHt2 ZXJ9LSR7cH0KLQkJbXNnX25vcm1hbCAiIEFwcGx5aW5nIHBhdGNoIGJhc2gke3Zlcn0tJHAuXG4i CisJZm9yIF9wIGluICQoc2VxIC13IDAwMSAke19iYXNoX3BhdGNobGV2ZWx9KTsgZG8KKwkJbXNn X25vcm1hbCAiIEFwcGx5aW5nIHBhdGNoICR7X3BhdGNocHJlZml4fS0ke19wfS5cbiIKKwkJcGF0 Y2ggLXNOcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9L2Jhc2gtJHZlcnNpb24vJHtfcGF0Y2hwcmVm aXh9LSR7X3B9CiAJZG9uZQogfQogCgpGcm9tIDYzYmRlMWQ5MDViYzRlMmYyNzA2MTI2ZmI5MDQx ZWQwNzNiNjNlNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT89QzQ9 OTBvPUMzPUEwbj0yMFRyPUUxPUJBPUE3bj0yMEM9QzM9QjRuZz0yMERhbmg/PQogPGNvbmdkYW5o cXhAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDIwIDA3OjA3OjQ5ICswNzAwClN1Ympl Y3Q6IFtQQVRDSCA1LzZdIGJhc2g6IHVwZGF0ZSB0byA1LjAuMDE4LgoKQ2xvc2U6ICMyMzgxNQot LS0KIHNyY3BrZ3MvYmFzaC90ZW1wbGF0ZSB8IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL3Rl bXBsYXRlIGIvc3JjcGtncy9iYXNoL3RlbXBsYXRlCmluZGV4IGI1YzZjMDE3OTBmLi43NmUxYjBl ODQ3MSAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFz aC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Jhc2gnCiBw a2duYW1lPWJhc2gKLXZlcnNpb249NS4wLjAxNwordmVyc2lvbj01LjAuMDE4CiByZXZpc2lvbj0x CiBfYmFzaF9kaXN0dmVyPSR7dmVyc2lvbiUuKn0KIF9iYXNoX3BhdGNobGV2ZWw9JHt2ZXJzaW9u IyMqLn0KQEAgLTQyLDcgKzQyLDggQEAgY2hlY2tzdW09ImI0YTgwZjJhYzY2MTcwYjI5MTNlZmJm YjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKICA1ZDZlZWU2NTE0ZWU2 ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0NmYxYzVhOWEzNWRiMWY3MmFmNTg5CiAgYTUx N2RmMmRkYTkzYjI2ZDVjYmYwMGVmZmVmZWE5M2UzYTRjY2Q2NjUyZjE1MmY0MTA5MTcwNTQ0ZWJm YTA1ZQogIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3 NTFkNDI5YzY1MGIwNmQKLSA0Y2YzYjlmYWZiOGE2NmQ0MTFkZDVmYzkxMjAwMzI1MzNhNDAxMmRm MWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxIgorIDRjZjNiOWZhZmI4YTY2ZDQxMWRkNWZjOTEyMDAz MjUzM2E0MDEyZGYxZGM2ZWUwMjRjNzgzMzM3M2UyZGRjMzEKKyA3YzMxNGUzNzVhMTA1YTY2NDJl OGVkNDRmMzgwOGI5ZGVmODlkMTVmNzQ5MmZlMjAyOWEyMWJhOWMwZGU4MWQzIgogCiBtYWtlX2Rp cnM9Ii9ldGMvYmFzaC9iYXNocmMuZCA3NTUgcm9vdCByb290IgogY29uZmxpY3RzPSJjaHJvb3Qt YmFzaD49MCIKCkZyb20gNDc1NTM0MDZiNjdkZjBjZWU1MTRjZjc5NjlhMWZjMWVlYWVmNGIxYiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89QzM9QTBuPTIw VHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTI6MTM6MDcgKzA3MDAKU3ViamVjdDogW1BBVENIIDYv Nl0gbGlicmVhZGxpbmU4OiB2ZXJpZnkgcGF0Y2gncyBjaGVja3N1bQoKLS0tCiBzcmNwa2dzL2xp YnJlYWRsaW5lOC90ZW1wbGF0ZSB8IDI1ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlicmVhZGxpbmU4L3Rl bXBsYXRlCmluZGV4IDYyMDAxOTViZTllLi5jMzUxZjBkYjZlMiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9saWJyZWFkbGluZTgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJyZWFkbGluZTgvdGVtcGxh dGUKQEAgLTE0LDIyICsxNCwxOSBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRs aW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczov L3Rpc3d3dy5jd3J1LmVkdS9waHAvY2hldC9yZWFkbGluZS9ybHRvcC5odG1sIgogZGlzdGZpbGVz PSIke0dOVV9TSVRFfS9yZWFkbGluZS9yZWFkbGluZS0ke19kaXN0X3Zlcn0udGFyLmd6IgotY2hl Y2tzdW09ZTMzOWY1MTk3MTQ3OGQzNjlmOGEwNTNhMzMwYTE5MDc4MWFjYjk4NjRjZjRjNTQxMDYw ZjEyMDc4OTQ4ZTQ2MQogCi1wcmVfY29uZmlndXJlKCkgewotCWxvY2FsIHVybD0iJHtHTlVfU0lU RX0vcmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LXBhdGNoZXMiCitfdXJsPSIke0dOVV9T SVRFfS9yZWFkbGluZS9yZWFkbGluZS0ke19kaXN0X3Zlcn0tcGF0Y2hlcyIKK2ZvciBfcCBpbiAk KHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCisJZGlzdGZpbGVzKz0iICR7X3VybH0vcmVh ZGxpbmUke19kaXN0X3Zlci8uL30tJHtfcH0iCisJc2tpcF9leHRyYWN0aW9uKz0iIHJlYWRsaW5l JHtfZGlzdF92ZXIvLi99LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKIAotCWNk ICR7WEJQU19TUkNESVNURElSfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0KLQlpZiBbICIke19wYXRj aF92ZXJ9IiAtZ3QgMDAwIF07IHRoZW4KLQkJZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X3BhdGNo X3Zlcn0pOyBkbwotCQkJaWYgWyAtZiByZWFkbGluZSR7dmVyc2lvbi8uL30tJHtwfSBdOyB0aGVu Ci0JCQkJY29udGludWUKLQkJCWZpCi0JCQlsb2NhbCBwYXRjaF91cmw9IiR7dXJsfS9yZWFkbGlu ZSR7X2Rpc3RfdmVyLy4vfS0ke3B9IgotCQkJbXNnX25vcm1hbCAiIEZldGNoaW5nICR7cGF0Y2hf dXJsfSAuLi5cbiIKLQkJCSRYQlBTX0ZFVENIX0NNRCAiJHtwYXRjaF91cmx9IgotCQlkb25lCi0J ZmkKK2NoZWNrc3VtPSJlMzM5ZjUxOTcxNDc4ZDM2OWY4YTA1M2EzMzBhMTkwNzgxYWNiOTg2NGNm NGM1NDEwNjBmMTIwNzg5NDhlNDYxCisgZDhlNWU5ODkzM2NmNTc1NmY4NjIyNDNjMDYwMWNiNjlk MzY2N2JiMzNmMmM3Yjc1MWZlNGU0MGIyYzNmZDA2OSIKKworcG9zdF9wYXRjaCgpIHsKIAljZCAk e3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCiAJCXBh dGNoIC1zIC1OcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS9y ZWFkbGluZSR7X2Rpc3RfdmVyLy4vfS0ke3B9Cg== --===============3405950206756528908==--