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 18645 invoked from network); 28 Jul 2020 07:06:04 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 28 Jul 2020 07:06:04 -0000 Content-Type: multipart/mixed; boundary="===============1427058151919429004==" 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:06:03 +0200 List-Id: Message-ID: <20200728070603._7rKEZtKQzXFlsga6pDPRe9smodRIfAq0m3AR448i4k@z> GitHub notification mails are now in MIME to allow UTF8. --===============1427058151919429004== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgc2duIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9zZ24vdm9p ZC1wYWNrYWdlcyBiYXNoLW5vLXZlbmRvcgpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYKCmJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCi0gY2Fy cnkgdGhlbSBhbG9uZyB3b24ndCBnZXQgdXMgYW55d2hlcmUNCi0gdmVyaWZ5IGNoZWNrc3VtIGZv ciBsaWJyZWFkbGluZTgNCg0KY29uZmxpY3Qgd2l0aCAjMjM4MTUgCgpBIHBhdGNoIGZpbGUgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYu cGF0Y2ggaXMgYXR0YWNoZWQ= --===============1427058151919429004== 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 YiwtdHJhaWxpbmctc3BhY2UKCkZyb20gY2Q4NDUzMzNjYzBiMDk5ZmIwNTUzZmQxZWM1M2RiZDIy ZDJkN2YyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89 QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTA6Mjg6NTcgKzA3MDAKU3ViamVjdDog W1BBVENIIDIvNl0gY2hyb290LWJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCgotLS0KIHNyY3Br Z3MvY2hyb290LWJhc2gvdGVtcGxhdGUgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUgYi9zcmNwa2dzL2No cm9vdC1iYXNoL3RlbXBsYXRlCmluZGV4IDk3YjhhOWJlODFmLi45YzdmNGYwNDgwOSAxMDA2NDQK LS0tIGEvc3JjcGtncy9jaHJvb3QtYmFzaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9vdC1i YXNoL3RlbXBsYXRlCkBAIC0xNSwxOCArMTUsNDIgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQg PGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21l cGFnZT0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvYmFzaC5odG1sIgogZGlzdGZp bGVzPSIke0dOVV9TSVRFfS9iYXNoL2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS50YXIuZ3oiCi1jaGVj a3N1bT1iNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRmMWY3NmM3YjFhZmQxMWY3OTllMjIw MzVkNjMwNzdmYjRkCisKK191cmw9IiR7R05VX1NJVEV9L2Jhc2gvYmFzaC0ke19iYXNoX2Rpc3R2 ZXJ9LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0p OyBkbworCWRpc3RmaWxlcys9IiAke191cmx9L2Jhc2gke19iYXNoX2Rpc3R2ZXIvLi99LSR7X3B9 IgorCXNraXBfZXh0cmFjdGlvbis9IiBiYXNoJHtfYmFzaF9kaXN0dmVyLy4vfS0ke19wfSIKK2Rv bmUKK3Vuc2V0IF91cmwKK3Vuc2V0IF9wCisKK2NoZWNrc3VtPSJiNGE4MGYyYWM2NjE3MGIyOTEz ZWZiZmI5ZjI1OTRmMWY3NmM3YjFhZmQxMWY3OTllMjIwMzVkNjMwNzdmYjRkCisgZjJmZTllMWYw ZmFkZGYxNGFiOWJmYTg4ZDQ1MGE3NWU1ZDAyOGZlZGFmYWQyM2I4ODcxNmJkNjU3YzczNzI4OQor IDg3ZTg3ZDM1NDJlNTk4Nzk5YWRiM2U3ZTAxYzgxNjViYzc0M2UxMzZhNDAwZWQwZGUwMTU4NDVm N2ZmNjg3MDcKKyA0ZWViY2RjMzdiMTM3OTNhMjMyYzVmMmY0OThhNWZjYmY3ZGEwZWNiM2RhMjA1 OTM5MWMwOTZkYjYyMGVjODViCisgMTQ0NDdhZDgzMmFkZDhlY2ZhZmRjZTUzODRiYWRkOTMzNjk3 YjU1OWM0Njg4ZDZiOWUzZDM2ZmYzNmM2MmYwOAorIDViZjU0ZGQ5YmQyYzIxMWQyYmZiMzRhNDll MmM3NDFmMmVkNWUzMzg3NjdlOWNlOWY0ZDQxMjU0YmY5ZjgyNzYKKyBkNjg1MjlhNmZmMjAxYjZm ZjU5MTUzMThhYjEyZmMxNmI4YTBlYmI3N2ZkYTMzMDgzMDNmY2MxZTEzMzk4NDIwCisgMTdiNDFl N2VlMzY3M2Q4ODg3ZGQyNTk5MjQxN2EzOTg2Nzc1MzNhYjg4Mjc5MzhhYTQxZmFkNzBkZjE5YWY5 YgorIGVlYzY0NTg4NjIyYTgyYTUwMjliMjc3NmUyMThhNzVhMzY0MGJlZjQ5NTNmMDlkNmVlMWY0 MTk5NjcwYWQ3ZTMKKyBlZDNjYTIxNzY3MzAzZmMzZGU5MzkzNGFhNTI0YzJlOTIwNzg3YzUwNmI2 MDFjYzQwYTQ4OTdkNGIwOTRkOTAzCisgZDZmYmMzMjVmMGI1ZGM1NGRkYmU4ZWU0MzAyMGJjZWQ4 YmQ1ODlkZGZmZWE1OWQxMjhkYjE0YjJlNTJhOGExMQorIDJjNGRlMzMyYjkxZWFmNzk3YWJiYmQ2 Yzc5NzA5NjkwYjVjYmQ0OGIxMmU4ZGZlNzQ4MDk2ZGJkN2JmNDc0ZWEKKyAyOTQzZWUxOTY4ODAx ODI5NmYyYTA0ZGJmZTMwYjcxMzhiODg5NzAwZWZhOGZmMWMwNTI0YWYyNzFlMGVlMjMzCisgZjVk NzE3OGQ4ZGEzMDc5OWUwMWI4M2EwODAyMDE4ZDkxM2Q2YWE5NzJkZDJkZGFkM2I5MjdmM2YzZWI3 MDk5YQorIDVkNmVlZTY1MTRlZTZlMjJhODdiYmE4ZDIyYmUwYTg2MjFhMGFlMTE5MjQ2ZjFjNWE5 YTM1ZGIxZjcyYWY1ODkKKyBhNTE3ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZlYTkzZTNhNGNjZDY2 NTJmMTUyZjQxMDkxNzA1NDRlYmZhMDVlCisgZmZkMWQ3YTU0YTk5ZmE3ZjViMTgyNWU0ZjdlOTVk OGM4ODc2YmMyY2ExNTFmMTUwZTc1MWQ0MjljNjUwYjA2ZCIKIAogYm9vdHN0cmFwPXllcwogcHJv dmlkZXM9ImJhc2gtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLWNvbmZsaWN0cz0iYmFzaD49MCBk YXNoPj0wIgorY29uZmxpY3RzPSJiYXNoPj0wIGRhc2g+PTAgYnVzeWJveD49MCBsb2tzaD49MCBt a3NoPj0wIG9rc2g+PTAgeWFzaD49MCIKIAotcHJlX2NvbmZpZ3VyZSgpIHsKLQlsb2NhbCB2ZXI9 JHtfYmFzaF9kaXN0dmVyLy8uL30gcAorcG9zdF9wYXRjaCgpIHsKIAljZCAke3dya3NyY30KIAlm b3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCi0JCW1zZ19ub3Jt YWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHt2ZXJ9LSRwLlxuIgotCQlwYXRjaCAtc05wMCAtaSAk e1hCUFNfU1JDUEtHRElSfS9iYXNoL2ZpbGVzL2Jhc2gke3Zlcn0tJHtwfQorCQltc2dfbm9ybWFs ICIgQXBwbHlpbmcgcGF0Y2ggYmFzaCR7X2Jhc2hfZGlzdHZlci8uL30tJHAuXG4iCisJCXBhdGNo IC1zTnAwIC1pICR7WEJQU19TUkNESVNURElSfS9jaHJvb3QtYmFzaC0kdmVyc2lvbi9iYXNoJHtf YmFzaF9kaXN0dmVyLy4vfS0ke3B9CiAJZG9uZQogfQogCgpGcm9tIDVmNTU5Y2UzYTQ4MWFlNjJi ZTA0ZTQ2OWE2MWVkZTU5OTc2NGQ4MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT89QzQ9OTBvPUMzPUEwbj0yMFRyPUUxPUJBPUE3bj0yMEM9QzM9QjRuZz0yMERhbmg/ PQogPGNvbmdkYW5ocXhAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI4IEp1bCAyMDIwIDA2OjU5OjU0 ICswNzAwClN1YmplY3Q6IFtQQVRDSCAzLzZdIGNocm9vdC1iYXNoOiB1cGRhdGUgdG8gNS4wLjAx OC4KCi0tLQogc3JjcGtncy9jaHJvb3QtYmFzaC90ZW1wbGF0ZSB8IDYgKysrKy0tCiAxIGZpbGUg Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUgYi9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRl CmluZGV4IDljN2Y0ZjA0ODA5Li43ZDlmMzRkN2RjNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9jaHJv b3QtYmFzaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2hyb290LWJhc2gnCiBwa2duYW1lPWNo cm9vdC1iYXNoCiBfYmFzaF9kaXN0dmVyPTUuMAotX2Jhc2hfcGF0Y2hsZXZlbD0wMTYKK19iYXNo X3BhdGNobGV2ZWw9MDE4CiB2ZXJzaW9uPSIke19iYXNoX2Rpc3R2ZXJ9LiR7X2Jhc2hfcGF0Y2hs ZXZlbH0iCiByZXZpc2lvbj0xCiB3cmtzcmM9ImJhc2gtJHtfYmFzaF9kaXN0dmVyfSIKQEAgLTQw LDcgKzQwLDkgQEAgY2hlY2tzdW09ImI0YTgwZjJhYzY2MTcwYjI5MTNlZmJmYjlmMjU5NGYxZjc2 YzdiMWFmZDExZjc5OWUyMjAzNWQ2MzA3N2ZiNGQKICBmNWQ3MTc4ZDhkYTMwNzk5ZTAxYjgzYTA4 MDIwMThkOTEzZDZhYTk3MmRkMmRkYWQzYjkyN2YzZjNlYjcwOTlhCiAgNWQ2ZWVlNjUxNGVlNmUy MmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OQogIGE1MTdk ZjJkZGE5M2IyNmQ1Y2JmMDBlZmZlZmVhOTNlM2E0Y2NkNjY1MmYxNTJmNDEwOTE3MDU0NGViZmEw NWUKLSBmZmQxZDdhNTRhOTlmYTdmNWIxODI1ZTRmN2U5NWQ4Yzg4NzZiYzJjYTE1MWYxNTBlNzUx ZDQyOWM2NTBiMDZkIgorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNh MTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2NmQ0MTFkZDVmYzkxMjAwMzI1 MzNhNDAxMmRmMWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxCisgN2MzMTRlMzc1YTEwNWE2NjQyZThl ZDQ0ZjM4MDhiOWRlZjg5ZDE1Zjc0OTJmZTIwMjlhMjFiYTljMGRlODFkMyIKIAogYm9vdHN0cmFw PXllcwogcHJvdmlkZXM9ImJhc2gtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKCkZyb20gMzQ0MTc0 Y2FlMzkzYjM2OTIzNzM0MjJlMDAwYjMxNTU4ZjBlMWYzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1C NG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIw MjAgMTU6Mjg6NTMgKzA3MDAKU3ViamVjdDogW1BBVENIIDQvNl0gYmFzaDogc3RvcCB2ZW5kb3Jp bmcgcGF0Y2hlcwoKLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMSAgICAgICAgICAg ICB8IDE2NyAtLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMiAgICAg ICAgICAgICB8IDExMyAtLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAzICAg ICAgICAgICAgIHwgMjM5IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMDQgICAgICAgICAgICAgfCAgNTMgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMDUgICAgICAgICAgICAgfCAxMTAgLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA2ICAgICAgICAgICAgIHwgIDQ3IC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDA3ICAgICAgICAgICAgIHwgIDYyIC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAw OCAgICAgICAgICAgICB8ICA2OCAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkg ICAgICAgICAgICAgfCAgNDIgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTAgICAg ICAgICAgICAgfCAxNzIgLS0tLS0tLS0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTEgICAgICAgICAgICAgfCAgNTkgLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEy ICAgICAgICAgICAgIHwgIDY0IC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMyAg ICAgICAgICAgICB8ICA3MyAtLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0ICAg ICAgICAgICAgIHwgIDUyIC0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE1ICAgICAg ICAgICAgIHwgIDc4IC0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYgICAgICAg ICAgICAgfCAgNTggLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3ICAgICAgICAg ICAgIHwgMjg5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy91cGRh dGUtYmFzaC1wYXRjaGVzLnNoIHwgICA3IC0KIHNyY3BrZ3MvYmFzaC90ZW1wbGF0ZSAgICAgICAg ICAgICAgICAgICAgIHwgIDM4ICsrLQogMTkgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygr KSwgMTc2MCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwMQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDAyCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNAogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA1CiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmFzaC9maWxlcy9iYXNoNTAtMDA4CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMDkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFz aDUwLTAxMAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEx CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTIKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMwogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0CiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAxNgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9m aWxlcy9iYXNoNTAtMDE3CiBkZWxldGUgbW9kZSAxMDA3NTUgc3JjcGtncy9iYXNoL2ZpbGVzL3Vw ZGF0ZS1iYXNoLXBhdGNoZXMuc2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFz aDUwLTAwMSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwODdiZDgyY2Y3Mi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNo L2ZpbGVzL2Jhc2g1MC0wMDEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotCQkJICAg ICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJl bGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDEKLQotQnVnLVJlcG9ydGVkLWJ5OglheGVs QGZyZWFrb3V0LmRlCi1CdWctUmVmZXJlbmNlLUlEOgk8MjAxOTAxMDgyMDUwLngwOEtvU2hTMDA2 NzMxQGJvbmdvLmZyZWFrb3V0LmRlPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5n bnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAxL21zZzAwMDc5Lmh0bWwKLQotQnVn LURlc2NyaXB0aW9uOgotCi1VbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRoZSBnbG9iIGV4 cGFuc2lvbiBjb2RlIGRpZCBub3QgcmVtb3ZlCi1iYWNrc2xhc2hlcyBlc2NhcGluZyBjaGFyYWN0 ZXJzIGluIGRpcmVjdG9yeSBuYW1lcyAob3IgcG9ydGlvbnMgb2YgYQotcGF0dGVybiBwcmVjZWRp bmcgYSBzbGFzaCkuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4u L2Jhc2gtNS4wL2Jhc2hsaW5lLmMJMjAxOC0xMS0yNyAxMzoyMDoxNi4wMDAwMDAwMDAgLTA1MDAK LS0tLSBiYXNobGluZS5jCTIwMTktMDEtMTYgMTY6MDY6MDMuMDAwMDAwMDAwIC0wNTAwCi0qKioq KioqKioqKioqKioKLSoqKiAyMzIsMjM1ICoqKioKLS0tLSAyMzIsMjM2IC0tLS0KLSAgc3RhdGlj IGludCBiYXNoX3Bvc3NpYmxlX2NvbW1hbmRfY29tcGxldGlvbnMgX19QKChpbnQsIGludCkpOwot ICAKLSsgc3RhdGljIGludCBjb21wbGV0aW9uX2dsb2JfcGF0dGVybiBfX1AoKGNoYXIgKikpOwot ICBzdGF0aWMgY2hhciAqZ2xvYl9jb21wbGV0ZV93b3JkIF9fUCgoY29uc3QgY2hhciAqLCBpbnQp KTsKLSAgc3RhdGljIGludCBiYXNoX2dsb2JfY29tcGxldGlvbl9pbnRlcm5hbCBfX1AoKGludCkp OwotKioqKioqKioqKioqKioqCi0qKiogMTc0MiwxNzQ2ICoqKioKLSAgICAvKiBUaGlzIGNvdWxk IGJlIGEgZ2xvYmJpbmcgcGF0dGVybiwgc28gdHJ5IHRvIGV4cGFuZCBpdCB1c2luZyBwYXRobmFt ZQotICAgICAgIGV4cGFuc2lvbi4gKi8KLSEgICBpZiAoIW1hdGNoZXMgJiYgZ2xvYl9wYXR0ZXJu X3AgKHRleHQpKQotICAgICAgewotICAgICAgICBtYXRjaGVzID0gcmxfY29tcGxldGlvbl9tYXRj aGVzICh0ZXh0LCBnbG9iX2NvbXBsZXRlX3dvcmQpOwotLS0tIDE3NDMsMTc0NyAtLS0tCi0gICAg LyogVGhpcyBjb3VsZCBiZSBhIGdsb2JiaW5nIHBhdHRlcm4sIHNvIHRyeSB0byBleHBhbmQgaXQg dXNpbmcgcGF0aG5hbWUKLSAgICAgICBleHBhbnNpb24uICovCi0hICAgaWYgKCFtYXRjaGVzICYm IGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuICgoY2hhciAqKXRleHQpKQotICAgICAgewotICAgICAg ICBtYXRjaGVzID0gcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0LCBnbG9iX2NvbXBsZXRlX3dv cmQpOwotKioqKioqKioqKioqKioqCi0qKiogMTg1MSwxODU1ICoqKioKLSAgCX0KLSAgCi0hICAg ICAgIGdsb2JwYXQgPSBnbG9iX3BhdHRlcm5fcCAoaGludF90ZXh0KTsKLSAgCi0gICAgICAgIC8q IElmIHRoaXMgaXMgYW4gYWJzb2x1dGUgcHJvZ3JhbSBuYW1lLCBkbyBub3QgY2hlY2sgaXQgYWdh aW5zdAotLS0tIDE4NTIsMTg1NiAtLS0tCi0gIAl9Ci0gIAotISAgICAgICBnbG9icGF0ID0gY29t cGxldGlvbl9nbG9iX3BhdHRlcm4gKChjaGFyICopaGludF90ZXh0KTsKLSAgCi0gICAgICAgIC8q IElmIHRoaXMgaXMgYW4gYWJzb2x1dGUgcHJvZ3JhbSBuYW1lLCBkbyBub3QgY2hlY2sgaXQgYWdh aW5zdAotKioqKioqKioqKioqKioqCi0qKiogMzcxNCwzNzE3ICoqKioKLS0tLSAzNzE1LDM3NzMg LS0tLQotICB9Ci0gIAotKyBzdGF0aWMgaW50Ci0rIGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuIChz dHJpbmcpCi0rICAgICAgY2hhciAqc3RyaW5nOwotKyB7Ci0rICAgcmVnaXN0ZXIgaW50IGM7Ci0r ICAgY2hhciAqc2VuZDsKLSsgICBpbnQgb3BlbjsKLSsgCi0rICAgREVDTEFSRV9NQlNUQVRFOwot KyAKLSsgICBvcGVuID0gMDsKLSsgICBzZW5kID0gc3RyaW5nICsgc3RybGVuIChzdHJpbmcpOwot KyAKLSsgICB3aGlsZSAoYyA9ICpzdHJpbmcrKykKLSsgICAgIHsKLSsgICAgICAgc3dpdGNoIChj KQotKyAJewotKyAJY2FzZSAnPyc6Ci0rIAljYXNlICcqJzoKLSsgCSAgcmV0dXJuICgxKTsKLSsg Ci0rIAljYXNlICdbJzoKLSsgCSAgb3BlbisrOwotKyAJICBjb250aW51ZTsKLSsgCi0rIAljYXNl ICddJzoKLSsgCSAgaWYgKG9wZW4pCi0rIAkgICAgcmV0dXJuICgxKTsKLSsgCSAgY29udGludWU7 Ci0rIAotKyAJY2FzZSAnKyc6Ci0rIAljYXNlICdAJzoKLSsgCWNhc2UgJyEnOgotKyAJICBpZiAo KnN0cmluZyA9PSAnKCcpCS8qKSovCi0rIAkgICAgcmV0dXJuICgxKTsKLSsgCSAgY29udGludWU7 Ci0rIAotKyAJY2FzZSAnXFwnOgotKyAJICBpZiAoKnN0cmluZyA9PSAwKQotKyAJICAgIHJldHVy biAoMCk7CSAJICAKLSsgCX0KLSsgCi0rICAgICAgIC8qIEFkdmFuY2Ugb25lIGZld2VyIGJ5dGUg dGhhbiBhbiBlbnRpcmUgbXVsdGlieXRlIGNoYXJhY3RlciB0bwotKyAJIGFjY291bnQgZm9yIHRo ZSBhdXRvLWluY3JlbWVudCBpbiB0aGUgbG9vcCBhYm92ZS4gKi8KLSsgI2lmZGVmIEhBTkRMRV9N VUxUSUJZVEUKLSsgICAgICAgc3RyaW5nLS07Ci0rICAgICAgIEFEVkFOQ0VfQ0hBUl9QIChzdHJp bmcsIHNlbmQgLSBzdHJpbmcpOwotKyAgICAgICBzdHJpbmcrKzsKLSsgI2Vsc2UKLSsgICAgICAg QURWQU5DRV9DSEFSX1AgKHN0cmluZywgc2VuZCAtIHN0cmluZyk7Ci0rICNlbmRpZgotKyAgICAg fQotKyAgIHJldHVybiAoMCk7Ci0rIH0KLSsgCi0gIHN0YXRpYyBjaGFyICpnbG9idGV4dDsKLSAg c3RhdGljIGNoYXIgKmdsb2JvcmlnOwotKioqKioqKioqKioqKioqCi0qKiogMzg3OCwzODgyICoq KioKLSAgICAgIH0gICAgICAKLSAgCi0hICAgaWYgKHQgJiYgZ2xvYl9wYXR0ZXJuX3AgKHQpID09 IDApCi0gICAgICBybF9leHBsaWNpdF9hcmcgPSAxOwkvKiBYWFggLSBmb3JjZSBnbG9iX2NvbXBs ZXRlX3dvcmQgdG8gYXBwZW5kIGAqJyAqLwotICAgIEZSRUUgKHQpOwotLS0tIDM5MzQsMzkzOCAt LS0tCi0gICAgICB9ICAgICAgCi0gIAotISAgIGlmICh0ICYmIGNvbXBsZXRpb25fZ2xvYl9wYXR0 ZXJuICh0KSA9PSAwKQotICAgICAgcmxfZXhwbGljaXRfYXJnID0gMTsJLyogWFhYIC0gZm9yY2Ug Z2xvYl9jb21wbGV0ZV93b3JkIHRvIGFwcGVuZCBgKicgKi8KLSAgICBGUkVFICh0KTsKLSoqKiAu Li9iYXNoLTUuMC9saWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE4LTEyLTMxIDEzOjM1OjE1LjAwMDAw MDAwMCAtMDUwMAotLS0tIGxpYi9nbG9iL2dsb2JfbG9vcC5jCTIwMTktMDEtMDkgMDk6NDQ6MzYu MDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA1NSw1OSAqKioqCi0gIAotICAg ICAgICBjYXNlIEwoJ1xcJyk6Ci0tICNpZiAwCi0gIAkvKiBEb24ndCBsZXQgdGhlIHBhdHRlcm4g ZW5kIGluIGEgYmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotICAJICAgaWYgdGhl IHBhdHRlcm4gZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNlIHJldHVy biAxLAotLS0tIDU1LDU4IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDYxLDY5ICoqKioKLSAg CSAgIGFuZCBpdCBjYW4gYmUgcmVtb3ZlZC4gKi8KLSAgCXJldHVybiAoKnAgIT0gTCgnXDAnKSk7 Ci0tICNlbHNlCi0tIAkvKiBUaGUgcGF0dGVybiBtYXkgbm90IGVuZCB3aXRoIGEgYmFja3NsYXNo LiAqLwotLSAJaWYgKCpwKysgPT0gTCgnXDAnKSkKLS0gCSAgcmV0dXJuIDA7Ci0tICNlbmRpZgot ICAgICAgICB9Ci0gIAotLS0tIDYwLDYzIC0tLS0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVs LmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJ MjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioq IDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3Ig dGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDAK LSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAg bG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBz dHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEKLSAgCi0gICNlbmRpZiAvKiBf UEFUQ0hMRVZFTF9IXyAqLwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAwMiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAyCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAzZmM4MjcyZjg0YS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2Zp bGVzL2Jhc2g1MC0wMDIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotCQkJICAgICBC QVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVh c2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDIKLQotQnVnLVJlcG9ydGVkLWJ5OglBbnRlIFBl cmljIDxzeW50aG1lYXRAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPEI3RTNCNTY3LTI0 NjctNEY3Qi1CNkI5LUNBNEU3NUE5QzkzRkBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJ aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDEvbXNnMDAw OTUuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVdoZW4gYW4gYWxpYXMgdmFsdWUgZW5kcyB3 aXRoIGFuIHVucXVvdGVkIGxpdGVyYWwgdGFiIChub3QgcGFydCBvZiBhIHF1b3RlZAotc3RyaW5n IG9yIGNvbW1lbnQpLCBhbGlhcyBleHBhbnNpb24gY2Fubm90IGNvcnJlY3RseSBkZXRlY3QgdGhl IGVuZCBvZiB0aGUKLWFsaWFzIHZhbHVlIGFmdGVyIGV4cGFuZGluZyBpdC4KLQotUGF0Y2ggKGFw cGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAvcGFyc2VyLmgJMjAxOC0x Mi0yOCAxOToxMToxOC4wMDAwMDAwMDAgLTA1MDAKLS0tLSBwYXJzZXIuaAkyMDE5LTAxLTExIDE1 OjEzOjAzLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNDgsNTEgKioqKgot LS0tIDQ4LDUyIC0tLS0KLSAgI2RlZmluZSBQU1RfUkVESVJMSVNUCTB4MDgwMDAwCS8qIHBhcnNp bmcgYSBsaXN0IG9mIHJlZGlyZWN0aW9ucyBwcmVjZWRpbmcgYSBzaW1wbGUgY29tbWFuZCBuYW1l ICovCi0gICNkZWZpbmUgUFNUX0NPTU1FTlQJMHgxMDAwMDAJLyogcGFyc2luZyBhIHNoZWxsIGNv bW1lbnQ7IHVzZWQgYnkgYWxpYXNlcyAqLwotKyAjZGVmaW5lIFBTVF9FTkRBTElBUwkweDIwMDAw MAkvKiBqdXN0IGZpbmlzaGVkIGV4cGFuZGluZyBhbmQgY29uc3VtaW5nIGFuIGFsaWFzICovCi0g IAotICAvKiBEZWZpbml0aW9uIG9mIHRoZSBkZWxpbWl0ZXIgc3RhY2suICBOZWVkZWQgYnkgcGFy c2UueSBhbmQgYmFzaGhpc3QuYy4gKi8KLSoqKiAuLi9iYXNoLTUuMC9wYXJzZS55CTIwMTktMDEt MDIgMTM6NTc6MzQuMDAwMDAwMDAwIC0wNTAwCi0tLS0gcGFyc2UueQkyMDE5LTAxLTE0IDA4OjIz OjMxLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMjU1OCwyNTY3ICoqKioK LSAgICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfRFBBUkVOICYmCi0gICAg ICAgIChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0gMCAmJgotICAgICAgICBzaGVsbF9p bnB1dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAgICBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lu cHV0X2xpbmVfaW5kZXgtMV0gIT0gJyAnICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVbc2hl bGxfaW5wdXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0YSAoc2hl bGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAg IChjdXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVsaW1pdGVy IChkc3RhY2spICE9ICciJykpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiAnICc7CS8qIEVORF9B TElBUyAqLwotICAgICAgfQotLS0tIDI1NTgsMjU2OSAtLS0tCi0gICAgICAgIHB1c2hlZF9zdHJp bmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX0RQQVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYg UFNUX0NPTU1FTlQpID09IDAgJiYKLSsgICAgICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9FTkRBTElB UykgPT0gMCAmJgkvKiBvbmx5IG9uY2UgKi8KLSAgICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRl eCA+IDAgJiYKLSEgICAgICAgc2hlbGxibGFuayAoc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1 dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVbc2hlbGxf aW5wdXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0YSAoc2hlbGxf aW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIChj dXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVsaW1pdGVyIChk c3RhY2spICE9ICciJykpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0ZSB8PSBQU1RfRU5E QUxJQVM7Ci0gICAgICAgIHJldHVybiAnICc7CS8qIEVORF9BTElBUyAqLwotICAgICAgfQotKioq KioqKioqKioqKioqCi0qKiogMjU3MiwyNTc1ICoqKioKLS0tLSAyNTc0LDI1NzggLS0tLQotICAg IGlmICh1YyA9PSAwICYmIHB1c2hlZF9zdHJpbmdfbGlzdCAmJiBwdXNoZWRfc3RyaW5nX2xpc3Qt PmZsYWdzICE9IFBTSF9TT1VSQ0UpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0ZSAmPSB+ UFNUX0VOREFMSUFTOwotICAgICAgICBwb3Bfc3RyaW5nICgpOwotICAgICAgICB1YyA9IHNoZWxs X2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleF07Ci0qKiogLi4vYmFzaC01LjAveS50 YWIuYwkyMDE5LTAxLTAyIDEzOjU3OjQzLjAwMDAwMDAwMCAtMDUwMAotLS0tIHkudGFiLmMJMjAx OS0wMS0xNCAwODozOToyMy4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDQ4 NzQsNDg4MyAqKioqCi0gICAgICAgIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX0RQ QVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYgUFNUX0NPTU1FTlQpID09IDAgJiYKLSAg ICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRleCA+IDAgJiYKLSEgICAgICAgc2hlbGxfaW5wdXRf bGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICcgJyAmJgotICAgICAgICBzaGVsbF9p bnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAgICBz aGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0g MCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBjdXJy ZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotICAgICAgICByZXR1cm4g JyAnOwkvKiBFTkRfQUxJQVMgKi8KLSAgICAgIH0KLS0tLSA0ODc0LDQ4ODUgLS0tLQotICAgICAg ICBwdXNoZWRfc3RyaW5nX2xpc3QtPmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAgICAgKHBh cnNlcl9zdGF0ZSAmIFBTVF9DT01NRU5UKSA9PSAwICYmCi0rICAgICAgIChwYXJzZXJfc3RhdGUg JiBQU1RfRU5EQUxJQVMpID09IDAgJiYJLyogb25seSBvbmNlICovCi0gICAgICAgIHNoZWxsX2lu cHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAgICAgIHNoZWxsYmxhbmsgKHNoZWxsX2lucHV0X2xp bmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAmJgotICAgICAgICBzaGVsbF9pbnB1 dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAgICBzaGVs bG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAm JgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBjdXJyZW50 X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotKyAgICAgICBwYXJzZXJfc3Rh dGUgfD0gUFNUX0VOREFMSUFTOwotICAgICAgICByZXR1cm4gJyAnOwkvKiBFTkRfQUxJQVMgKi8K LSAgICAgIH0KLSoqKioqKioqKioqKioqKgotKioqIDQ4ODgsNDg5MSAqKioqCi0tLS0gNDg5MCw0 ODk0IC0tLS0KLSAgICBpZiAodWMgPT0gMCAmJiBwdXNoZWRfc3RyaW5nX2xpc3QgJiYgcHVzaGVk X3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfU09VUkNFKQotICAgICAgewotKyAgICAgICBwYXJz ZXJfc3RhdGUgJj0gflBTVF9FTkRBTElBUzsKLSAgICAgICAgcG9wX3N0cmluZyAoKTsKLSAgICAg ICAgdWMgPSBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXhdOwotKioqIC4u L2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQw MAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAot KioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0 aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAj ZGVmaW5lIFBBVENITEVWRUwgMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCi0t LS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZv ciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwg MgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwMyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAzCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2U1Njc3ZTU0MC4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMKKysrIC9kZXYvbnVsbApAQCAtMSwyMzkg KzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09 PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDMKLQotQnVnLVJl cG9ydGVkLWJ5OglBbmRyZXcgQ2h1cmNoIDxhY2h1cmNoK2Jhc2hAYWNodXJjaC5vcmc+Ci1CdWct UmVmZXJlbmNlLUlEOgk8NWM1MzRhYTIuMDQzNzFAbXNnaWQuYWNodXJjaC5vcmc+Ci1CdWctUmVm ZXJlbmNlLVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIw MTktMDEvbXNnMDAyNzYuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVRoZXJlIGFyZSBzZXZl cmFsIGluY29tcGF0aWJpbGl0aWVzIGluIGhvdyBiYXNoLTUuMCBwcm9jZXNzZXMgcGF0aG5hbWUK LWV4cGFuc2lvbiAoZ2xvYmJpbmcpIG9mIGZpbGVuYW1lIGFyZ3VtZW50cyB0aGF0IGhhdmUgYmFj a3NsYXNoZXMgaW4gdGhlCi1kaXJlY3RvcnkgcG9ydGlvbi4KLQotUGF0Y2ggKGFwcGx5IHdpdGgg YHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvZ2xvYi9nbG9iX2xv b3AuYwkyMDE5LTAxLTE2IDE2OjEzOjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGxpYi9nbG9iL2ds b2JfbG9vcC5jCTIwMTktMDItMDEgMDk6NDU6MTEuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioq KioqKioKLSoqKiAyNywzNCAqKioqCi0gICAgcmVnaXN0ZXIgY29uc3QgR0NIQVIgKnA7Ci0gICAg cmVnaXN0ZXIgR0NIQVIgYzsKLSEgICBpbnQgYm9wZW47Ci0gIAotICAgIHAgPSBwYXR0ZXJuOwot ISAgIGJvcGVuID0gMDsKLSAgCi0gICAgd2hpbGUgKChjID0gKnArKykgIT0gTCgnXDAnKSkKLS0t LSAyNywzNCAtLS0tCi0gICAgcmVnaXN0ZXIgY29uc3QgR0NIQVIgKnA7Ci0gICAgcmVnaXN0ZXIg R0NIQVIgYzsKLSEgICBpbnQgYm9wZW4sIGJzcXVvdGU7Ci0gIAotICAgIHAgPSBwYXR0ZXJuOwot ISAgIGJvcGVuID0gYnNxdW90ZSA9IDA7Ci0gIAotICAgIHdoaWxlICgoYyA9ICpwKyspICE9IEwo J1wwJykpCi0qKioqKioqKioqKioqKioKLSoqKiA1Niw2NiAqKioqCi0gICAgICAgIGNhc2UgTCgn XFwnKToKLSAgCS8qIERvbid0IGxldCB0aGUgcGF0dGVybiBlbmQgaW4gYSBiYWNrc2xhc2ggKEdN QVRDSCByZXR1cm5zIG5vIG1hdGNoCi0hIAkgICBpZiB0aGUgcGF0dGVybiBlbmRzIGluIGEgYmFj a3NsYXNoIGFueXdheSksIGJ1dCBvdGhlcndpc2UgcmV0dXJuIDEsCi0hIAkgICBzaW5jZSB0aGUg bWF0Y2hpbmcgZW5naW5lIHVzZXMgYmFja3NsYXNoIGFzIGFuIGVzY2FwZSBjaGFyYWN0ZXIKLSEg CSAgIGFuZCBpdCBjYW4gYmUgcmVtb3ZlZC4gKi8KLSEgCXJldHVybiAoKnAgIT0gTCgnXDAnKSk7 Ci0gICAgICAgIH0KLSAgCi0hICAgcmV0dXJuIDA7Ci0gIH0KLSAgCi0tLS0gNTYsNzUgLS0tLQot ICAgICAgICBjYXNlIEwoJ1xcJyk6Ci0gIAkvKiBEb24ndCBsZXQgdGhlIHBhdHRlcm4gZW5kIGlu IGEgYmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotISAJICAgaWYgdGhlIHBhdHRl cm4gZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNlIG5vdGUgdGhhdCAK LSEgCSAgIHdlIGhhdmUgc2VlbiB0aGlzLCBzaW5jZSB0aGUgbWF0Y2hpbmcgZW5naW5lIHVzZXMg YmFja3NsYXNoIGFzIGFuCi0hIAkgICBlc2NhcGUgY2hhcmFjdGVyIGFuZCBpdCBjYW4gYmUgcmVt b3ZlZC4gV2UgcmV0dXJuIDIgbGF0ZXIgaWYgd2UKLSEgCSAgIGhhdmUgc2VlbiBvbmx5IGJhY2tz bGFzaC1lc2NhcGVkIGNoYXJhY3RlcnMsIHNvIGludGVyZXN0ZWQgY2FsbGVycwotISAJICAga25v dyB0aGV5IGNhbiBzaG9ydGN1dCBhbmQganVzdCBkZXF1b3RlIHRoZSBwYXRobmFtZS4gKi8KLSEg CWlmICgqcCAhPSBMKCdcMCcpKQotISAJICB7Ci0hIAkgICAgcCsrOwotISAJICAgIGJzcXVvdGUg PSAxOwotISAJICAgIGNvbnRpbnVlOwotISAJICB9Ci0hIAllbHNlIAkvKiAoKnAgPT0gTCgnXDAn KSkgKi8KLSEgCSAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgCi0hICAgcmV0dXJuIGJzcXVvdGUg PyAyIDogMDsKLSAgfQotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9nbG9iL2dsb2Iu aAkyMDEzLTEwLTI4IDE0OjQ2OjEyLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9nbG9iL2dsb2Iu aAkyMDE5LTAzLTA3IDExOjA2OjQ3LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0q KiogMzEsMzQgKioqKgotLS0tIDMxLDM1IC0tLS0KLSAgI2RlZmluZSBHWF9BRERDVVJESVIJMHgy MDAJLyogaW50ZXJuYWwgLS0gYWRkIHBhc3NlZCBkaXJlY3RvcnkgbmFtZSAqLwotICAjZGVmaW5l IEdYX0dMT0JTVEFSCTB4NDAwCS8qIHR1cm4gb24gc3BlY2lhbCBoYW5kbGluZyBvZiAqKiAqLwot KyAjZGVmaW5lIEdYX1JFQ1VSU0UJMHg4MDAJLyogaW50ZXJuYWwgLS0gZ2xvYl9maWxlbmFtZSBj YWxsZWQgcmVjdXJzaXZlbHkgKi8KLSAgCi0gIGV4dGVybiBpbnQgZ2xvYl9wYXR0ZXJuX3AgX19Q KChjb25zdCBjaGFyICopKTsKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9nbG9iL2dsb2Iu YwkyMDE4LTA5LTIwIDEwOjUzOjIzLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9nbG9iL2dsb2Iu YwkyMDE5LTAzLTA3IDE0OjIzOjQzLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0q KiogMTA2MiwxMDY2ICoqKioKLSAgICB1bnNpZ25lZCBpbnQgZGlyZWN0b3J5X2xlbjsKLSAgICBp bnQgZnJlZV9kaXJuYW1lOwkJCS8qIGZsYWcgKi8KLSEgICBpbnQgZGZsYWdzOwotICAKLSAgICBy ZXN1bHQgPSAoY2hhciAqKikgbWFsbG9jIChzaXplb2YgKGNoYXIgKikpOwotLS0tIDEwNzgsMTA4 MiAtLS0tCi0gICAgdW5zaWduZWQgaW50IGRpcmVjdG9yeV9sZW47Ci0gICAgaW50IGZyZWVfZGly bmFtZTsJCQkvKiBmbGFnICovCi0hICAgaW50IGRmbGFncywgaGFzZ2xvYjsKLSAgCi0gICAgcmVz dWx0ID0gKGNoYXIgKiopIG1hbGxvYyAoc2l6ZW9mIChjaGFyICopKTsKLSoqKioqKioqKioqKioq KgotKioqIDExMTEsMTExNyAqKioqCi0gICAgICB9Ci0gIAotICAgIC8qIElmIGRpcmVjdG9yeV9u YW1lIGNvbnRhaW5zIGdsb2JiaW5nIGNoYXJhY3RlcnMsIHRoZW4gd2UKLSEgICAgICBoYXZlIHRv IGV4cGFuZCB0aGUgcHJldmlvdXMgbGV2ZWxzLiAgSnVzdCByZWN1cnNlLiAqLwotISAgIGlmIChk aXJlY3RvcnlfbGVuID4gMCAmJiBnbG9iX3BhdHRlcm5fcCAoZGlyZWN0b3J5X25hbWUpKQotICAg ICAgewotICAgICAgICBjaGFyICoqZGlyZWN0b3JpZXMsICpkLCAqcDsKLS0tLSAxMTI3LDExMzYg LS0tLQotICAgICAgfQotICAKLSsgICBoYXNnbG9iID0gMDsKLSAgICAvKiBJZiBkaXJlY3Rvcnlf bmFtZSBjb250YWlucyBnbG9iYmluZyBjaGFyYWN0ZXJzLCB0aGVuIHdlCi0hICAgICAgaGF2ZSB0 byBleHBhbmQgdGhlIHByZXZpb3VzIGxldmVscy4gIEp1c3QgcmVjdXJzZS4KLSEgICAgICBJZiBn bG9iX3BhdHRlcm5fcCByZXR1cm5zICE9IFswLDFdIHdlIGhhdmUgYSBwYXR0ZXJuIHRoYXQgaGFz IGJhY2tzbGFzaAotISAgICAgIHF1b3RlcyBidXQgbm8gdW5xdW90ZWQgZ2xvYiBwYXR0ZXJuIGNo YXJhY3RlcnMuIFdlIGRlcXVvdGUgaXQgYmVsb3cuICovCi0hICAgaWYgKGRpcmVjdG9yeV9sZW4g PiAwICYmIChoYXNnbG9iID0gZ2xvYl9wYXR0ZXJuX3AgKGRpcmVjdG9yeV9uYW1lKSkgPT0gMSkK LSAgICAgIHsKLSAgICAgICAgY2hhciAqKmRpcmVjdG9yaWVzLCAqZCwgKnA7Ci0qKioqKioqKioq KioqKioKLSoqKiAxMTc2LDExODAgKioqKgotICAJZFtkaXJlY3RvcnlfbGVuIC0gMV0gPSAnXDAn OwotICAKLSEgICAgICAgZGlyZWN0b3JpZXMgPSBnbG9iX2ZpbGVuYW1lIChkLCBkZmxhZ3MpOwot ICAKLSAgICAgICAgaWYgKGZyZWVfZGlybmFtZSkKLS0tLSAxMTk1LDExOTkgLS0tLQotICAJZFtk aXJlY3RvcnlfbGVuIC0gMV0gPSAnXDAnOwotICAKLSEgICAgICAgZGlyZWN0b3JpZXMgPSBnbG9i X2ZpbGVuYW1lIChkLCBkZmxhZ3N8R1hfUkVDVVJTRSk7Ci0gIAotICAgICAgICBpZiAoZnJlZV9k aXJuYW1lKQotKioqKioqKioqKioqKioqCi0qKiogMTMzMywxMzM2ICoqKioKLS0tLSAxMzUyLDEz NjkgLS0tLQotICAJICByZXR1cm4gKE5VTEwpOwotICAJfQotKyAgICAgICAvKiBJZiB3ZSBoYXZl IGEgZGlyZWN0b3J5IG5hbWUgd2l0aCBxdW90ZWQgY2hhcmFjdGVycywgYW5kIHdlIGFyZQotKyAJ IGJlaW5nIGNhbGxlZCByZWN1cnNpdmVseSB0byBnbG9iIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBv ZiBhIHBhdGhuYW1lLAotKyAJIHdlIG5lZWQgdG8gZGVxdW90ZSB0aGUgZGlyZWN0b3J5IG5hbWUg YmVmb3JlIHJldHVybmluZyBpdCBzbyB0aGUKLSsgCSBjYWxsZXIgY2FuIHJlYWQgdGhlIGRpcmVj dG9yeSAqLwotKyAgICAgICBpZiAoZGlyZWN0b3J5X2xlbiA+IDAgJiYgaGFzZ2xvYiA9PSAyICYm IChmbGFncyAmIEdYX1JFQ1VSU0UpICE9IDApCi0rIAl7Ci0rIAkgIGRlcXVvdGVfcGF0aG5hbWUg KGRpcmVjdG9yeV9uYW1lKTsKLSsgCSAgZGlyZWN0b3J5X2xlbiA9IHN0cmxlbiAoZGlyZWN0b3J5 X25hbWUpOwotKyAJfQotKyAKLSsgICAgICAgLyogV2UgY291bGQgY2hlY2sgd2hldGhlciBvciBu b3QgdGhlIGRlcXVvdGVkIGRpcmVjdG9yeV9uYW1lIGlzIGEKLSsgCSBkaXJlY3RvcnkgYW5kIHJl dHVybiBpdCBoZXJlLCByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIGRpcmVjdG9yeV9uYW1lCi0rIAkg aWYgbm90LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCB5ZXQuIEknbSBub3Qgc3VyZSBpdCBtYXR0ZXJz LiAqLwotKyAKLSAgICAgICAgLyogSGFuZGxlIEdYX01BUktESVJTIGhlcmUuICovCi0gICAgICAg IHJlc3VsdFswXSA9IChjaGFyICopIG1hbGxvYyAoZGlyZWN0b3J5X2xlbiArIDEpOwotKioqIC4u L2Jhc2gtNS4wLXBhdGNoZWQvcGF0aGV4cC5jCTIwMTgtMDQtMjkgMTc6NDQ6NDguMDAwMDAwMDAw IC0wNDAwCi0tLS0gcGF0aGV4cC5jCTIwMTktMDEtMzEgMjA6MTk6NDEuMDAwMDAwMDAwIC0wNTAw Ci0qKioqKioqKioqKioqKioKLSoqKiA2Niw3NCAqKioqCi0gICAgcmVnaXN0ZXIgaW50IGM7Ci0g ICAgY2hhciAqc2VuZDsKLSEgICBpbnQgb3BlbjsKLSAgCi0gICAgREVDTEFSRV9NQlNUQVRFOwot ICAKLSEgICBvcGVuID0gMDsKLSAgICBzZW5kID0gc3RyaW5nICsgc3RybGVuIChzdHJpbmcpOwot ICAKLS0tLSA2Niw3NCAtLS0tCi0gICAgcmVnaXN0ZXIgaW50IGM7Ci0gICAgY2hhciAqc2VuZDsK LSEgICBpbnQgb3BlbiwgYnNxdW90ZTsKLSAgCi0gICAgREVDTEFSRV9NQlNUQVRFOwotICAKLSEg ICBvcGVuID0gYnNxdW90ZSA9IDA7Ci0gICAgc2VuZCA9IHN0cmluZyArIHN0cmxlbiAoc3RyaW5n KTsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiAxMDEsMTA1ICoqKioKLSAgCSAgIGdsb2JiaW5n LiAqLwotICAJY2FzZSAnXFwnOgotISAJICByZXR1cm4gKCpzdHJpbmcgIT0gMCk7Ci0gIAkgCSAg Ci0gIAljYXNlIENUTEVTQzoKLS0tLSAxMDEsMTEyIC0tLS0KLSAgCSAgIGdsb2JiaW5nLiAqLwot ICAJY2FzZSAnXFwnOgotISAJICBpZiAoKnN0cmluZyAhPSAnXDAnICYmICpzdHJpbmcgIT0gJy8n KQotISAJICAgIHsKLSEgCSAgICAgIGJzcXVvdGUgPSAxOwotISAJICAgICAgc3RyaW5nKys7Ci0h IAkgICAgICBjb250aW51ZTsKLSEgCSAgICB9Ci0hIAkgIGVsc2UgaWYgKCpzdHJpbmcgPT0gMCkK LSEgCSAgICByZXR1cm4gKDApOwotICAJIAkgIAotICAJY2FzZSBDVExFU0M6Ci0qKioqKioqKioq KioqKioKLSoqKiAxMTgsMTIyICoqKioKLSAgI2VuZGlmCi0gICAgICB9Ci0hICAgcmV0dXJuICgw KTsKLSAgfQotICAKLS0tLSAxMjUsMTMwIC0tLS0KLSAgI2VuZGlmCi0gICAgICB9Ci0hIAotISAg IHJldHVybiAoYnNxdW90ZSA/IDIgOiAwKTsKLSAgfQotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRj aGVkL2Jhc2hsaW5lLmMJMjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSBi YXNobGluZS5jCTIwMTktMDItMjIgMDk6Mjk6MDguMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioq KioqKioKLSoqKiAzNzUzLDM3NTcgKioqKgotICAKLSAgCWNhc2UgJ1xcJzoKLSEgCSAgaWYgKCpz dHJpbmcgPT0gMCkKLSAgCSAgICByZXR1cm4gKDApOwkgCSAgCi0gIAl9Ci0tLS0gMzc2NiwzNzcw IC0tLS0KLSAgCi0gIAljYXNlICdcXCc6Ci0hIAkgIGlmICgqc3RyaW5nKysgPT0gMCkKLSAgCSAg ICByZXR1cm4gKDApOwkgCSAgCi0gIAl9Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIw MTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYt MTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwz MCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBz Y2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAyCi0gIAot ICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tz IGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5n KS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAzCi0gIAotICAjZW5kaWYgLyogX1BBVENI TEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA0IGIv c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGZlM2M3NjRiZDZjLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFz aDUwLTAwNAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQkJCSAgICAgQkFTSCBQQVRD SCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNlOgk1LjAK LVBhdGNoLUlEOgliYXNoNTAtMDA0Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJRGFuaWVsIEthaG4gR2ls bG1vciA8ZGtnQGZpZnRoaG9yc2VtYW4ubmV0PgotQnVnLVJlZmVyZW5jZS1JRDoJPDg3bGcwZzhh aXcuZnNmQGZpZnRoaG9yc2VtYW4ubmV0PgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0 cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTA0L21zZzAwMDc2Lmh0bWwKLQot QnVnLURlc2NyaXB0aW9uOgotCi1JbiBiYXNoLTUuMCwgdGhlIGB3YWl0JyBidWlsdGluIHdpdGhv dXQgYXJndW1lbnRzIHdhaXRzIGZvciBhbGwgY2hpbGRyZW4gb2YgdGhlCi1zaGVsbC4gVGhpcyBp bmNsdWRlcyBjaGlsZHJlbiBpdCBgaW5oZXJpdGVkJyBhdCBzaGVsbCBpbnZvY2F0aW9uIHRpbWUu IFRoaXMKLXBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciB0byBub3Qgd2FpdCBmb3IgdGhlc2Ug aW5oZXJpdGVkIGNoaWxkcmVuLCBzb21lCi1vZiB3aGljaCBtaWdodCBiZSBsb25nLWxpdmVkLgot Ci1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRj aGVkL2pvYnMuYwkyMDE4LTEyLTA2IDExOjQ0OjM0LjAwMDAwMDAwMCAtMDUwMAotLS0tIGpvYnMu YwkyMDE5LTA0LTEyIDE1OjE1OjEwLjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0q KiogMjQ4OSwyNDk2ICoqKioKLSAgICB3YWl0X3Byb2NzdWJzICgpOwotICAgIHJlYXBfcHJvY3N1 YnMgKCk7Ci0hICNpZiAxCi0gICAgLyogV2UgZG9uJ3Qgd2FudCB0byB3YWl0IGluZGVmaW5pdGVs eSBpZiB3ZSBoYXZlIHN0b3BwZWQgY2hpbGRyZW4uICovCi0tICAgLyogWFhYIC0gc2hvdWxkIGFk ZCBhIGxvb3AgdGhhdCBnb2VzIHRocm91Z2ggdGhlIGxpc3Qgb2YgcHJvY2VzcwotLSAgICAgIHN1 YnN0aXR1dGlvbnMgYW5kIHdhaXRzIGZvciBlYWNoIHByb2MgaW4gdHVybiBiZWZvcmUgdGhpcyBj b2RlLiAqLwotICAgIGlmIChhbnlfc3RvcHBlZCA9PSAwKQotICAgICAgewotLS0tIDI0OTAsMjQ5 NSAtLS0tCi0gICAgd2FpdF9wcm9jc3VicyAoKTsKLSAgICByZWFwX3Byb2NzdWJzICgpOwotISAj aWYgMAotICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gd2FpdCBpbmRlZmluaXRlbHkgaWYgd2UgaGF2 ZSBzdG9wcGVkIGNoaWxkcmVuLiAqLwotICAgIGlmIChhbnlfc3RvcHBlZCA9PSAwKQotICAgICAg ewotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAw MDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAw MCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3Ig dG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICov Ci0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVM X0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2gg bGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBB VENITEVWRUwgNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQg YS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjFjZDc1YjBiNi4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUKKysrIC9kZXYvbnVsbApA QCAtMSwxMTAgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09 PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDUK LQotQnVnLVJlcG9ydGVkLWJ5OglCcmFkIFNwZW5jZXIgPGJzcGVuY2VyQGJsYWNrYmVycnkuY29t PgotQnVnLVJlZmVyZW5jZS1JRDoJPDFiOTkzZmYyLWNlNGYtNjYyYS02YmU0LTM5MzQ1NzM2MmU0 N0BibGFja2JlcnJ5LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMuZ251Lm9y Zy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cwMDI1MC5odG1sCi0KLUJ1Zy1EZXNj cmlwdGlvbjoKLQotSW4gY2VydGFpbiBjYXNlcywgYmFzaCBvcHRpbWl6ZXMgb3V0IGEgZm9yaygp IGNhbGwgdG9vIGVhcmx5IGFuZCBwcmV2ZW50cwotdHJhcHMgZnJvbSBydW5uaW5nLgotCi1QYXRj aCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2Nv bW1hbmQuaAkyMDE4LTA3LTIwIDIxOjE2OjMxLjAwMDAwMDAwMCAtMDQwMAotLS0tIGNvbW1hbmQu aAkyMDE5LTAyLTIwIDExOjA5OjM2LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0q KiogMTg3LDE5MCAqKioqCi0tLS0gMTg4LDE5MiAtLS0tCi0gICNkZWZpbmUgQ01EX0xBU1RQSVBF CSAgICAweDIwMDAKLSAgI2RlZmluZSBDTURfU1REUEFUSAkgICAgMHg0MDAwCS8qIHVzZSBzdGFu ZGFyZCBwYXRoIGZvciBjb21tYW5kIGxvb2t1cCAqLwotKyAjZGVmaW5lIENNRF9UUllfT1BUSU1J WklORyAgMHg4MDAwCS8qIHRyeSB0byBvcHRpbWl6ZSB0aGlzIHNpbXBsZSBjb21tYW5kICovCi0g IAotICAvKiBXaGF0IGEgY29tbWFuZCBsb29rcyBsaWtlLiAqLwotKioqIC4uL2Jhc2gtNS4wLXBh dGNoZWQvYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTgtMTItMjYgMTE6MTk6MjEuMDAwMDAwMDAw IC0wNTAwCi0tLS0gYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDEtMjkgMTQ6MTU6MTkuMDAw MDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAxMDEsMTA0ICoqKioKLS0tLSAxMDEs MTEzIC0tLS0KLSAgfQotICAKLSsgaW50Ci0rIGNhbl9vcHRpbWl6ZV9jb25uZWN0aW9uIChjb21t YW5kKQotKyAgICAgIENPTU1BTkQgKmNvbW1hbmQ7Ci0rIHsKLSsgICByZXR1cm4gKCpiYXNoX2lu cHV0LmxvY2F0aW9uLnN0cmluZyA9PSAnXDAnICYmCi0rIAkgIChjb21tYW5kLT52YWx1ZS5Db25u ZWN0aW9uLT5jb25uZWN0b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9u LT5jb25uZWN0b3IgPT0gT1JfT1IgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVj dG9yID09ICc7JykgJiYKLSsgCSAgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLT50 eXBlID09IGNtX3NpbXBsZSk7Ci0rIH0KLSsgCi0gIHZvaWQKLSAgb3B0aW1pemVfZm9yayAoY29t bWFuZCkKLSoqKioqKioqKioqKioqKgotKioqIDEwNiwxMTAgKioqKgotICB7Ci0gICAgaWYgKGNv bW1hbmQtPnR5cGUgPT0gY21fY29ubmVjdGlvbiAmJgotISAgICAgICAoY29tbWFuZC0+dmFsdWUu Q29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9BTkQgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVj dGlvbi0+Y29ubmVjdG9yID09IE9SX09SKSAmJgotICAgICAgICBzaG91bGRfc3VwcHJlc3NfZm9y ayAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kKSkKLSAgICAgIHsKLS0tLSAxMTUs MTIwIC0tLS0KLSAgewotICAgIGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24gJiYK LSEgICAgICAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBBTkRfQU5E IHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBPUl9PUiB8fCBjb21t YW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gJzsnKSAmJgotISAgICAgICAoY29t bWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLT5mbGFncyAmIENNRF9UUllfT1BUSU1JWklO RykgJiYKLSAgICAgICAgc2hvdWxkX3N1cHByZXNzX2ZvcmsgKGNvbW1hbmQtPnZhbHVlLkNvbm5l Y3Rpb24tPnNlY29uZCkpCi0gICAgICB7Ci0qKioqKioqKioqKioqKioKLSoqKiA0MTMsNDE4ICoq KioKLSAgCQkgIGNvbW1hbmQtPnZhbHVlLlNpbXBsZS0+ZmxhZ3MgfD0gQ01EX05PX0ZPUks7Ci0g IAkJfQotISAJICAgICAgZWxzZSBpZiAoY29tbWFuZC0+dHlwZSA9PSBjbV9jb25uZWN0aW9uKQot ISAJCW9wdGltaXplX2ZvcmsgKGNvbW1hbmQpOwotICAjZW5kaWYgLyogT05FU0hPVCAqLwotICAK LS0tLSA0MjMsNDM4IC0tLS0KLSAgCQkgIGNvbW1hbmQtPnZhbHVlLlNpbXBsZS0+ZmxhZ3MgfD0g Q01EX05PX0ZPUks7Ci0gIAkJfQotISAKLSEgCSAgICAgIC8qIENhbid0IG9wdGltaXplIGZvcmtz IG91dCBoZXJlIGV4ZWNlcHQgZm9yIHNpbXBsZSBjb21tYW5kcy4KLSEgCQkgVGhpcyBrbm93cyB0 aGF0IHRoZSBwYXJzZXIgc2V0cyB1cCBjb21tYW5kcyBhcyBsZWZ0LXNpZGUgaGVhdnkKLSEgCQkg KCYmIGFuZCB8fCBhcmUgbGVmdC1hc3NvY2lhdGl2ZSkgYW5kIGFmdGVyIHRoZSBzaW5nbGUgcGFy c2UsCi0hIAkJIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIHN0cmluZywgdGhl IGxhc3QgaW4gYQotISAJCSBzZXJpZXMgb2YgY29ubmVjdGlvbiBjb21tYW5kcyBpcwotISAJCSBj b21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQuICovCi0hIAkgICAgICBlbHNlIGlmIChj b21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24gJiYgY2FuX29wdGltaXplX2Nvbm5lY3Rpb24g KGNvbW1hbmQpKQotISAJCXsKLSEgCQkgIGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29u ZC0+ZmxhZ3MgfD0gQ01EX1RSWV9PUFRJTUlaSU5HOwotISAJCSAgY29tbWFuZC0+dmFsdWUuQ29u bmVjdGlvbi0+c2Vjb25kLT52YWx1ZS5TaW1wbGUtPmZsYWdzIHw9IENNRF9UUllfT1BUSU1JWklO RzsKLSEgCQl9Ci0gICNlbmRpZiAvKiBPTkVTSE9UICovCi0gIAotKioqIC4uL2Jhc2gtNS4wLXBh dGNoZWQvZXhlY3V0ZV9jbWQuYwkyMDE4LTEyLTA1IDA5OjA1OjE0LjAwMDAwMDAwMCAtMDUwMAot LS0tIGV4ZWN1dGVfY21kLmMJMjAxOS0wMS0yNSAxNTo1OTowMC4wMDAwMDAwMDAgLTA1MDAKLSoq KioqKioqKioqKioqKgotKioqIDI3NjgsMjc3MSAqKioqCi0tLS0gMjc2OCwyNzczIC0tLS0KLSAg CSAgIChleGVjX3Jlc3VsdCAhPSBFWEVDVVRJT05fU1VDQ0VTUykpKQotICAJewotKyAJICBvcHRp bWl6ZV9mb3JrIChjb21tYW5kKTsKLSsgCi0gIAkgIHNlY29uZCA9IGNvbW1hbmQtPnZhbHVlLkNv bm5lY3Rpb24tPnNlY29uZDsKLSAgCSAgaWYgKGlnbm9yZV9yZXR1cm4gJiYgc2Vjb25kKQotKioq IC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAt MDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQw MAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICov Ci0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwg KGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVW RUwgNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNw a2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA2 CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWQxY2QyMDA5MC4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYKKysrIC9kZXYvbnVsbApAQCAtMSw0 NyArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09 PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNgotCi1CdWct UmVwb3J0ZWQtYnk6CVRvbWFzIE1vemVzIDxoeWRyYXBvbGljQGdtYWlsLmNvbT4KLUJ1Zy1SZWZl cmVuY2UtSUQ6CTxDQUc2TUF6UXVtTFUydmhubXIxVXJZQVVRQUZXNVlvOGhmTV9zRWliWDlSSlFX SmtSckFAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cDovL2xpc3RzLmdu dS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDMvbXNnMDAwMzcuaHRtbAotCi1CdWct RGVzY3JpcHRpb246Ci0KLUJhc2gtNS4wIGRpZCBub3QgYnVpbGQgc3VjY2Vzc2Z1bGx5IGlmIFNZ U0xPR19ISVNUT1JZIHdhcyBkZWZpbmVkIHdpdGhvdXQKLWFsc28gZGVmaW5pbmcgU1lTTE9HX1NI T1BULgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUu MC1wYXRjaGVkL2J1aWx0aW5zL3Nob3B0LmRlZgkyMDE4LTEwLTA1IDE0OjQ5OjAyLjAwMDAwMDAw MCAtMDQwMAotLS0tIGJ1aWx0aW5zL3Nob3B0LmRlZgkyMDE5LTAxLTIzIDA5OjU1OjIyLjAwMDAw MDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMTIzLDEyNyAqKioqCi0gICNlbmRpZgot ICAKLSEgI2lmIGRlZmluZWQgKFNZU0xPR19ISVNUT1JZKSAmJiBkZWZpbmVkIChTWVNMT0dfU0hP UFQpCi0gIGV4dGVybiBpbnQgc3lzbG9nX2hpc3Rvcnk7Ci0gICNlbmRpZgotLS0tIDEyMywxMjcg LS0tLQotICAjZW5kaWYKLSAgCi0hICNpZiBkZWZpbmVkIChTWVNMT0dfSElTVE9SWSkKLSAgZXh0 ZXJuIGludCBzeXNsb2dfaGlzdG9yeTsKLSAgI2VuZGlmCi0qKiogLi4vYmFzaC01LjAvcGF0Y2hs ZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZl bC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioK LSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAo Zm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZF TCA1Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0g ICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNp b24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA2Ci0gIAotICAjZW5kaWYg LyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA3IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGI5ZWI0MTUwYTJiLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwNworKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLQkJCSAgICAg QkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxl YXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA3Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJR3Jpc2hh IExldml0IDxncmlzaGFsZXZpdEBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FNdT1C cm9IYXBHMUFTM3hCNVNRYUNYMlhLdT0tRTJPYjl1VzZMTnVIdmQ9WW9ockR3QG1haWwuZ21haWwu Y29tPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRt bC9idWctYmFzaC8yMDE5LTAyL21zZzAwMDY3Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1S dW5uaW5nIGBleGVjJyB3aGVuIGpvYiBjb250cm9sIHdhcyBkaXNhYmxlZCwgZXZlbiB0ZW1wb3Jh cmlseSwgYnV0IGFmdGVyIGl0Ci1oYWQgYmVlbiBpbml0aWFsaXplZCwgY291bGQgbGVhdmUgdGhl IHRlcm1pbmFsIGluIHRoZSB3cm9uZyBwcm9jZXNzIGdyb3VwIGZvcgotdGhlIGV4ZWN1dGVkIHBy b2Nlc3MuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gt NS4wLXBhdGNoZWQvam9icy5jCTIwMTgtMTItMDYgMTE6NDQ6MzQuMDAwMDAwMDAwIC0wNTAwCi0t LS0gam9icy5jCTIwMTktMDQtMTIgMTU6MTU6MTAuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioq KioqKioKLSoqKiA0ODM4LDQ4NTAgKioqKgotICB7Ci0gICAgaWYgKGpvYl9jb250cm9sKQotISAg ICAgewotISAgICAgICB0ZXJtaW5hdGVfc3RvcHBlZF9qb2JzICgpOwotICAKLSEgICAgICAgaWYg KG9yaWdpbmFsX3BncnAgPj0gMCkKLSEgCWdpdmVfdGVybWluYWxfdG8gKG9yaWdpbmFsX3BncnAs IDEpOwotISAgICAgfQotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwKQotISAgICAgc2V0 cGdpZCAoMCwgb3JpZ2luYWxfcGdycCk7Ci0gIH0KLSAgCi0tLS0gNDgzOCw0ODQ4IC0tLS0KLSAg ewotICAgIGlmIChqb2JfY29udHJvbCkKLSEgICAgIHRlcm1pbmF0ZV9zdG9wcGVkX2pvYnMgKCk7 Ci0gIAotISAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDAgJiYgdGVybWluYWxfcGdycCAhPSBvcmln aW5hbF9wZ3JwKQotISAgICAgZ2l2ZV90ZXJtaW5hbF90byAob3JpZ2luYWxfcGdycCwgMSk7Ci0g IAotISAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDAgJiYgc2V0cGdpZCAoMCwgb3JpZ2luYWxfcGdy cCkgPT0gMCkKLSEgICAgIHNoZWxsX3BncnAgPSBvcmlnaW5hbF9wZ3JwOwotICB9Ci0gIAotKioq IC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAt MDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAtMDQw MAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8gZmlu ZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAot ISAjZGVmaW5lIFBBVENITEVWRUwgNgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICov Ci0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwg KGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVW RUwgNwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNw a2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwOCBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA4 CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDlkNmIzM2FjNy4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDgKKysrIC9kZXYvbnVsbApAQCAtMSw2 OCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09 PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwOAotCi1CdWct UmVwb3J0ZWQtYnk6CU1pY2hhZWwgQWxiaW51cyA8bWljaGFlbC5hbGJpbnVzQGdteC5kZT4KLUJ1 Zy1SZWZlcmVuY2UtSUQ6CTw4N2JtMzZrM2t6LmZzZkBnbXguZGU+Ci1CdWctUmVmZXJlbmNlLVVS TDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAyL21z ZzAwMTExLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1XaGVuIEhJU1RTSVpFIGlzIHNldCB0 byAwLCBoaXN0b3J5IGV4cGFuc2lvbiBjYW4gbGVhdmUgdGhlIGhpc3RvcnkgbGVuZ3RoCi1zZXQg dG8gYW4gaW5jb3JyZWN0IHZhbHVlLCBsZWFkaW5nIHRvIHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8g YWNjZXNzIGludmFsaWQKLW1lbW9yeS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcp OgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9iYXNoaGlzdC5jCTIwMTgtMDctMDUgMjI6NDE6 MTQuMDAwMDAwMDAwIC0wNDAwCi0tLS0gYmFzaGhpc3QuYwkyMDE5LTAyLTIwIDE2OjIwOjA0LjAw MDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNTYxLDU3MyAqKioqCi0gICAgaWYg KCFoaXN0b3J5X2V4cGFuc2lvbl9pbmhpYml0ZWQgJiYgaGlzdG9yeV9leHBhbnNpb24gJiYgaGlz dG9yeV9leHBhbnNpb25fcCAobGluZSkpCi0gICAgICB7Ci0gICAgICAgIC8qIElmIHdlIGFyZSBl eHBhbmRpbmcgdGhlIHNlY29uZCBvciBsYXRlciBsaW5lIG9mIGEgbXVsdGktbGluZQotICAJIGNv bW1hbmQsIGRlY3JlYXNlIGhpc3RvcnlfbGVuZ3RoIHNvIHJlZmVyZW5jZXMgdG8gaGlzdG9yeSBl eHBhbnNpb25zCi0gIAkgaW4gdGhlc2UgbGluZXMgcmVmZXIgdG8gdGhlIHByZXZpb3VzIGhpc3Rv cnkgZW50cnkgYW5kIG5vdCB0aGUKLSAgCSBjdXJyZW50IGNvbW1hbmQuICovCi0gICAgICAgIGlm IChoaXN0b3J5X2xlbmd0aCA+IDAgJiYgY29tbWFuZF9vcmllbnRlZF9oaXN0b3J5ICYmIGN1cnJl bnRfY29tbWFuZF9maXJzdF9saW5lX3NhdmVkICYmIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50 ID4gMSkKLSAgICAgICAgICBoaXN0b3J5X2xlbmd0aC0tOwotICAgICAgICBleHBhbmRlZCA9IGhp c3RvcnlfZXhwYW5kIChsaW5lLCAmaGlzdG9yeV92YWx1ZSk7Ci0gICAgICAgIGlmIChoaXN0b3J5 X2xlbmd0aCA+PSAwICYmIGNvbW1hbmRfb3JpZW50ZWRfaGlzdG9yeSAmJiBjdXJyZW50X2NvbW1h bmRfZmlyc3RfbGluZV9zYXZlZCAmJiBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA+IDEpCi0h ICAgICAgICAgaGlzdG9yeV9sZW5ndGgrKzsKLSAgCi0gICAgICAgIGlmIChleHBhbmRlZCkKLS0t LSA1NjEsNTc2IC0tLS0KLSAgICBpZiAoIWhpc3RvcnlfZXhwYW5zaW9uX2luaGliaXRlZCAmJiBo aXN0b3J5X2V4cGFuc2lvbiAmJiBoaXN0b3J5X2V4cGFuc2lvbl9wIChsaW5lKSkKLSAgICAgIHsK LSsgICAgICAgaW50IG9sZF9sZW47Ci0rIAotICAgICAgICAvKiBJZiB3ZSBhcmUgZXhwYW5kaW5n IHRoZSBzZWNvbmQgb3IgbGF0ZXIgbGluZSBvZiBhIG11bHRpLWxpbmUKLSAgCSBjb21tYW5kLCBk ZWNyZWFzZSBoaXN0b3J5X2xlbmd0aCBzbyByZWZlcmVuY2VzIHRvIGhpc3RvcnkgZXhwYW5zaW9u cwotICAJIGluIHRoZXNlIGxpbmVzIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBoaXN0b3J5IGVudHJ5 IGFuZCBub3QgdGhlCi0gIAkgY3VycmVudCBjb21tYW5kLiAqLwotKyAgICAgICBvbGRfbGVuID0g aGlzdG9yeV9sZW5ndGg7Ci0gICAgICAgIGlmIChoaXN0b3J5X2xlbmd0aCA+IDAgJiYgY29tbWFu ZF9vcmllbnRlZF9oaXN0b3J5ICYmIGN1cnJlbnRfY29tbWFuZF9maXJzdF9saW5lX3NhdmVkICYm IGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50ID4gMSkKLSAgICAgICAgICBoaXN0b3J5X2xlbmd0 aC0tOwotICAgICAgICBleHBhbmRlZCA9IGhpc3RvcnlfZXhwYW5kIChsaW5lLCAmaGlzdG9yeV92 YWx1ZSk7Ci0gICAgICAgIGlmIChoaXN0b3J5X2xlbmd0aCA+PSAwICYmIGNvbW1hbmRfb3JpZW50 ZWRfaGlzdG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmlyc3RfbGluZV9zYXZlZCAmJiBjdXJyZW50 X2NvbW1hbmRfbGluZV9jb3VudCA+IDEpCi0hICAgICAgICAgaGlzdG9yeV9sZW5ndGggPSBvbGRf bGVuOwotICAKLSAgICAgICAgaWYgKGV4cGFuZGVkKQotCi0qKiogLi4vYmFzaC01LjAvcGF0Y2hs ZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZl bC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioK LSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAo Zm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZF TCA3Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0g ICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNp b24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA4Ci0gIAotICAjZW5kaWYg LyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA5IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGFlZjRjZTdiNWFkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gv ZmlsZXMvYmFzaDUwLTAwOQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQkJCSAgICAg QkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxl YXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA5Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJY2hldC5y YW1leUBjYXNlLmVkdQotQnVnLVJlZmVyZW5jZS1JRDoKLUJ1Zy1SZWZlcmVuY2UtVVJMOgotCi1C dWctRGVzY3JpcHRpb246Ci0KLVRoZSBoaXN0b3J5IGZpbGUgcmVhZGluZyBjb2RlIGRvZXNuJ3Qg Y2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvCi10aGUgaGlzdG9yeSBmaWxlIHdoZW4g aXQgZW5jb3VudGVycyBhIHplcm8tbGVuZ3RoIGZpbGUuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBw YXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvbGliL3JlYWRsaW5lL2hpc3Rm aWxlLmMJMjAxOC0wNi0xMSAwOToxNDo1Mi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBsaWIvcmVhZGxp bmUvaGlzdGZpbGUuYwkyMDE5LTA1LTE2IDE1OjU1OjU3LjAwMDAwMDAwMCAtMDQwMAotKioqKioq KioqKioqKioqCi0qKiogMzA2LDMwOSAqKioqCi0tLS0gMzEyLDMxNiAtLS0tCi0gICAgICB7Ci0g ICAgICAgIGZyZWUgKGlucHV0KTsKLSsgICAgICAgY2xvc2UgKGZpbGUpOwotICAgICAgICByZXR1 cm4gMDsJLyogZG9uJ3Qgd2FzdGUgdGltZSBpZiB3ZSBkb24ndCBoYXZlIHRvICovCi0gICAgICB9 Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAw MDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAw IC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0 byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8K LSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA4Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxf SF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBs ZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFU Q0hMRVZFTCA5Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEwIGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzdhYTkyNTE1Li4wMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMAorKysgL2Rldi9udWxsCkBA IC0xLDE3MiArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09 PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxMAot Ci1CdWctUmVwb3J0ZWQtYnk6CVRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLmRlPgotQnVnLVJl ZmVyZW5jZS1JRDoJPDE1NjYyMjk2MjgzMS4xOTQzOC4xNjM3NDk2MTExNDgzNjU1NjI5NC5yZXBv cnRidWdAdGdsYXNlLmxhbi50YXJlbnQuZGU+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6Ly9i dWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzUxMTUKLQotQnVnLURl c2NyaXB0aW9uOgotCi1CYXNoLTUuMCBjaGFuZ2VkIHRoZSB3YXkgYXNzaWdubWVudCBzdGF0ZW1l bnRzIHByZWNlZGluZyBzcGVjaWFsIGJ1aWx0aW5zCi1hbmQgc2hlbGwgZnVuY3Rpb25zIHdlcmUg aGFuZGxlZCBpbiBwb3NpeCBtb2RlLiBUaGV5IGF1dG9tYXRpY2FsbHkgY3JlYXRlZAotb3IgbW9k aWZpZWQgZ2xvYmFsIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIG1vZGlmeWluZyBleGlzdGluZyBsb2Nh bCB2YXJpYWJsZXMKLWFzIGluIGJhc2gtNC40LgotCi1UaGUgYmFzaC00LjQgcG9zaXgtbW9kZSBz ZW1hbnRpY3Mgd2VyZSBidWdneSwgYW5kIHJlc3VsdGVkIGluIGNyZWF0aW5nCi1sb2NhbCB2YXJp YWJsZXMgd2hlcmUgdGhleSB3ZXJlIG5vdCBpbnRlbmRlZCBhbmQgbW9kaWZ5aW5nIGdsb2JhbCB2 YXJpYWJsZXMKLWFuZCBsb2NhbCB2YXJpYWJsZXMgc2ltdWx0YW5lb3VzbHkuCi0KLVRoZSBiYXNo LTUuMCBjaGFuZ2VzIHdlcmUgaW50ZW5kZWQgdG8gZml4IHRoaXMgaXNzdWUsIGJ1dCBkaWQgbm90 IHByZXNlcnZlCi1lbm91Z2ggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIFRoZSBwb3NpeCBzdGFu ZGFyZCBhbHNvIGNoYW5nZWQgd2hhdCBpdAotcmVxdWlyZWQgaW4gdGhlc2UgY2FzZXMsIHNvIGJh c2gtNS4wIGlzIG5vdCBib3VuZCBieSB0aGUgc3RyaWN0IGNvbmZvcm1hbmNlCi1yZXF1aXJlbWVu dHMgdGhhdCBleGlzdGVkIGluIHByZXZpb3VzIGlzc3VlcyBvZiB0aGUgc3RhbmRhcmQuCi0KLVRo aXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGJhc2gtNS4wIHBvc2l4IG1vZGUgYmVoYXZpb3IgaW4gYW4g ZWZmb3J0IHRvIHJlc3RvcmUKLXNvbWUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5kIHJhdGlv bmFsaXplIHRoZSBiZWhhdmlvciBpbiB0aGUgcHJlc2VuY2Ugb2YKLWxvY2FsIHZhcmlhYmxlcy4g SXQKLQotMS4gQ2hhbmdlcyB0aGUgYXNzaWdubWVudCBzZW1hbnRpY3MgdG8gYmUgbW9yZSBzaW1p bGFyIHRvIHN0YW5kYWxvbmUgYXNzaWdubWVudAotICAgc3RhdGVtZW50czogYXNzaWdubWVudHMg cHJlY2VkaW5nIGEgZnVuY3Rpb24gY2FsbCBvciBzcGVjaWFsIGJ1aWx0aW4gd2hpbGUKLSAgIGV4 ZWN1dGluZyBpbiBhIHNoZWxsIGZ1bmN0aW9uIHdpbGwgbW9kaWZ5IHRoZSB2YWx1ZSBvZiBhIGxv Y2FsIHZhcmlhYmxlCi0gICB3aXRoIHRoZSBzYW1lIG5hbWUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0 aGUgZnVuY3Rpb24ncyBleGVjdXRpb247Ci0KLTIuIENoYW5nZXMgYXNzaWdubWVudHMgcHJlY2Vk aW5nIHNoZWxsIGZ1bmN0aW9uIGNhbGxzIG9yIHNwZWNpYWwgYnVpbHRpbnMKLSAgIGZyb20gd2l0 aGluIGEgc2hlbGwgZnVuY3Rpb24gdG8gbm8gbG9uZ2VyIGNyZWF0ZSBvciBtb2RpZnkgZ2xvYmFs IHZhcmlhYmxlcwotICAgaW4gdGhlIHByZXNlbmNlIG9mIGEgbG9jYWwgdmFyaWFibGUgd2l0aCB0 aGUgc2FtZSBuYW1lOwotCi0zLiBBc3NpZ25tZW50IHN0YXRlbWVudHMgcHJlY2VkaW5nIGEgc2hl bGwgZnVuY3Rpb24gY2FsbCBvciBzcGVjaWFsIGJ1aWx0aW4KLSAgIGF0IHRoZSBnbG9iYWwgc2Nv cGUgY29udGludWUgdG8gbW9kaWZ5IHRoZSAoZ2xvYmFsKSBjYWxsaW5nIGVudmlyb25tZW50LAot ICAgYnV0IGFyZSB1bmFmZmVjdGVkIGJ5IGFzc2lnbm1lbnRzIHByZWNlZGluZyBmdW5jdGlvbiBj YWxscyBvciBzcGVjaWFsCi0gICBidWlsdGlucyB3aXRoaW4gYSBmdW5jdGlvbiwgYXMgZGVzY3Jp YmVkIGluIGl0ZW0gMi4gVGhpcyBpcyBhbHNvIHNpbWlsYXIKLSAgIHRvIHRoZSBiZWhhdmlvciBv ZiBhIHN0YW5kYWxvbmUgYXNzaWdubWVudCBzdGF0ZW1lbnQuCi0KLVBhdGNoIChhcHBseSB3aXRo IGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvdmFyaWFibGVzLmMJMjAx OC0xMi0xOCAxMTowNzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSB2YXJpYWJsZXMuYwkyMDE5LTA4 LTIyIDEwOjUzOjQ0LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogNDQ2MSw0 NDY3ICoqKioKLSAgCi0gIC8qIFRha2UgYSB2YXJpYWJsZSBmcm9tIGFuIGFzc2lnbm1lbnQgc3Rh dGVtZW50IHByZWNlZGluZyBhIHBvc2l4IHNwZWNpYWwKLSEgICAgYnVpbHRpbiAoaW5jbHVkaW5n IGByZXR1cm4nKSBhbmQgY3JlYXRlIGEgZ2xvYmFsIHZhcmlhYmxlIGZyb20gaXQuIFRoaXMKLSEg ICAgaXMgY2FsbGVkIGZyb20gbWVyZ2VfdGVtcG9yYXJ5X2Vudiwgd2hpY2ggaXMgb25seSBjYWxs ZWQgd2hlbiBpbiBwb3NpeAotISAgICBtb2RlLiAqLwotICBzdGF0aWMgdm9pZAotICBwdXNoX3Bv c2l4X3RlbXBfdmFyIChkYXRhKQotLS0tIDQ0NjEsNDQ2NyAtLS0tCi0gIAotICAvKiBUYWtlIGEg dmFyaWFibGUgZnJvbSBhbiBhc3NpZ25tZW50IHN0YXRlbWVudCBwcmVjZWRpbmcgYSBwb3NpeCBz cGVjaWFsCi0hICAgIGJ1aWx0aW4gKGluY2x1ZGluZyBgcmV0dXJuJykgYW5kIGNyZWF0ZSBhIHZh cmlhYmxlIGZyb20gaXQgYXMgaWYgYQotISAgICBzdGFuZGFsb25lIGFzc2lnbm1lbnQgc3RhdGVt ZW50IGhhZCBiZWVuIHBlcmZvcm1lZC4gVGhpcyBpcyBjYWxsZWQgZnJvbQotISAgICBtZXJnZV90 ZW1wb3JhcnlfZW52LCB3aGljaCBpcyBvbmx5IGNhbGxlZCB3aGVuIGluIHBvc2l4IG1vZGUuICov Ci0gIHN0YXRpYyB2b2lkCi0gIHB1c2hfcG9zaXhfdGVtcF92YXIgKGRhdGEpCi0qKioqKioqKioq KioqKioKLSoqKiA0NDczLDQ0ODYgKioqKgotICAgIHZhciA9IChTSEVMTF9WQVIgKilkYXRhOwot ICAKLSEgICBiaW5kaW5nX3RhYmxlID0gZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGU7Ci0hICAgaWYg KGJpbmRpbmdfdGFibGUgPT0gMCkKLSEgICAgIGJpbmRpbmdfdGFibGUgPSBnbG9iYWxfdmFyaWFi bGVzLT50YWJsZSA9IGhhc2hfY3JlYXRlIChWQVJJQUJMRVNfSEFTSF9CVUNLRVRTKTsKLSEgCi0h ICAgdiA9IGJpbmRfdmFyaWFibGVfaW50ZXJuYWwgKHZhci0+bmFtZSwgdmFsdWVfY2VsbCAodmFy KSwgYmluZGluZ190YWJsZSwgMCwgQVNTX0ZPUkNFfEFTU19OT0xPTkdKTVApOwotICAKLSAgICAv KiBnbG9iYWwgdmFyaWFibGVzIGFyZSBubyBsb25nZXIgdGVtcG9yYXJ5IGFuZCBkb24ndCBuZWVk IHByb3BhZ2F0aW5nLiAqLwotISAgIHZhci0+YXR0cmlidXRlcyAmPSB+KGF0dF90ZW1wdmFyfGF0 dF9wcm9wYWdhdGUpOwotICAgIGlmICh2KQotISAgICAgdi0+YXR0cmlidXRlcyB8PSB2YXItPmF0 dHJpYnV0ZXM7Ci0gIAotICAgIGlmIChmaW5kX3NwZWNpYWxfdmFyICh2YXItPm5hbWUpID49IDAp Ci0tLS0gNDQ3Myw0NDk3IC0tLS0KLSAgICB2YXIgPSAoU0hFTExfVkFSICopZGF0YTsKLSAgCi0h ICAgLyogSnVzdCBsaWtlIGRvX2Fzc2lnbm1lbnRfaW50ZXJuYWwoKS4gVGhpcyBtYWtlcyBhc3Np Z25tZW50cyBwcmVjZWRpbmcKLSEgICAgICBzcGVjaWFsIGJ1aWx0aW5zIGFjdCBsaWtlIHN0YW5k YWxvbmUgYXNzaWdubWVudCBzdGF0ZW1lbnRzIHdoZW4gaW4KLSEgICAgICBwb3NpeCBtb2RlLCBz YXRpc2Z5aW5nIHRoZSBwb3NpeCByZXF1aXJlbWVudCB0aGF0IHRoaXMgYWZmZWN0IHRoZQotISAg ICAgICJjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4iICovCi0hICAgdiA9IGJpbmRfdmFy aWFibGUgKHZhci0+bmFtZSwgdmFsdWVfY2VsbCAodmFyKSwgQVNTX0ZPUkNFfEFTU19OT0xPTkdK TVApOwotISAKLSEgICAvKiBJZiB0aGlzIG1vZGlmaWVzIGFuIGV4aXN0aW5nIGxvY2FsIHZhcmlh YmxlLCB2LT5jb250ZXh0IHdpbGwgYmUgbm9uLXplcm8uCi0hICAgICAgSWYgaXQgY29tZXMgYmFj ayB3aXRoIHYtPmNvbnRleHQgPT0gMCwgd2UgYm91bmQgYXQgdGhlIGdsb2JhbCBjb250ZXh0Lgot ISAgICAgIFNldCBiaW5kaW5nX3RhYmxlIGFwcHJvcHJpYXRlbHkuIEl0IGRvZXNuJ3QgbWF0dGVy IHdoZXRoZXIgaXQncyBjb3JyZWN0Ci0hICAgICAgaWYgdGhlIHZhcmlhYmxlIGlzIGxvY2FsLCBv bmx5IHRoYXQgaXQncyBub3QgZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUgKi8KLSEgICBiaW5kaW5n X3RhYmxlID0gdi0+Y29udGV4dCA/IHNoZWxsX3ZhcmlhYmxlcy0+dGFibGUgOiBnbG9iYWxfdmFy aWFibGVzLT50YWJsZTsKLSAgCi0gICAgLyogZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm8gbG9uZ2Vy IHRlbXBvcmFyeSBhbmQgZG9uJ3QgbmVlZCBwcm9wYWdhdGluZy4gKi8KLSEgICBpZiAoYmluZGlu Z190YWJsZSA9PSBnbG9iYWxfdmFyaWFibGVzLT50YWJsZSkKLSEgICAgIHZhci0+YXR0cmlidXRl cyAmPSB+KGF0dF90ZW1wdmFyfGF0dF9wcm9wYWdhdGUpOwotISAKLSAgICBpZiAodikKLSEgICAg IHsKLSEgICAgICAgdi0+YXR0cmlidXRlcyB8PSB2YXItPmF0dHJpYnV0ZXM7Ci0hICAgICAgIHYt PmF0dHJpYnV0ZXMgJj0gfmF0dF90ZW1wdmFyOwkvKiBub3QgYSB0ZW1wIHZhciBub3cgKi8KLSEg ICAgIH0KLSAgCi0gICAgaWYgKGZpbmRfc3BlY2lhbF92YXIgKHZhci0+bmFtZSkgPj0gMCkKLSoq KioqKioqKioqKioqKgotKioqIDQ1NzYsNDU4NyAqKioqCi0gIHsKLSAgICBpbnQgaTsKLSAgCi0g ICAgdGVtcHZhcl9saXN0ID0gc3RydmVjX2NyZWF0ZSAoSEFTSF9FTlRSSUVTICh0ZW1wb3Jhcnlf ZW52KSArIDEpOwotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kID0gMF0gPSAwOwotISAgICAg Ci0hICAgaGFzaF9mbHVzaCAodGVtcG9yYXJ5X2VudiwgcHVzaGYpOwotISAgIGhhc2hfZGlzcG9z ZSAodGVtcG9yYXJ5X2Vudik7Ci0gICAgdGVtcG9yYXJ5X2VudiA9IChIQVNIX1RBQkxFICopTlVM TDsKLSAgCi0gICAgdGVtcHZhcl9saXN0W3R2bGlzdF9pbmRdID0gMDsKLSAgCi0tLS0gNDU4Nyw0 NjAxIC0tLS0KLSAgewotICAgIGludCBpOwotKyAgIEhBU0hfVEFCTEUgKmRpc3Bvc2VyOwotICAK LSAgICB0ZW1wdmFyX2xpc3QgPSBzdHJ2ZWNfY3JlYXRlIChIQVNIX0VOVFJJRVMgKHRlbXBvcmFy eV9lbnYpICsgMSk7Ci0gICAgdGVtcHZhcl9saXN0W3R2bGlzdF9pbmQgPSAwXSA9IDA7Ci0hIAot ISAgIGRpc3Bvc2VyID0gdGVtcG9yYXJ5X2VudjsKLSAgICB0ZW1wb3JhcnlfZW52ID0gKEhBU0hf VEFCTEUgKilOVUxMOwotICAKLSsgICBoYXNoX2ZsdXNoIChkaXNwb3NlciwgcHVzaGYpOwotKyAg IGhhc2hfZGlzcG9zZSAoZGlzcG9zZXIpOwotKyAKLSAgICB0ZW1wdmFyX2xpc3RbdHZsaXN0X2lu ZF0gPSAwOwotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3Rlc3RzL3ZhcmVudi5yaWdodAky MDE4LTEyLTE3IDE1OjM5OjQ4LjAwMDAwMDAwMCAtMDUwMAotLS0tIHRlc3RzL3ZhcmVudi5yaWdo dAkyMDE5LTA4LTIyIDE2OjA1OjI1LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0q KiogMTQ3LDE1MyAqKioqCi0gIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvbmUiCi0gIGluc2lk ZTogZGVjbGFyZSAteCB2YXI9InZhbHVlIgotISBvdXRzaWRlOiBkZWNsYXJlIC14IHZhcj0idmFs dWUiCi0hIGluc2lkZTogZGVjbGFyZSAtLSB2YXI9ImxvY2FsIgotISBvdXRzaWRlOiBkZWNsYXJl IC14IHZhcj0iZ2xvYmFsIgotICBmb289PHVuc2V0PiBlbnZpcm9ubWVudCBmb289Ci0gIGZvbz1m b28gZW52aXJvbm1lbnQgZm9vPWZvbwotLS0tIDE0NywxNTMgLS0tLQotICBvdXRzaWRlOiBkZWNs YXJlIC0tIHZhcj0ib25lIgotICBpbnNpZGU6IGRlY2xhcmUgLXggdmFyPSJ2YWx1ZSIKLSEgb3V0 c2lkZTogZGVjbGFyZSAtLSB2YXI9Im91dHNpZGUiCi0hIGluc2lkZTogZGVjbGFyZSAteCB2YXI9 Imdsb2JhbCIKLSEgb3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im91dHNpZGUiCi0gIGZvbz08dW5z ZXQ+IGVudmlyb25tZW50IGZvbz0KLSAgZm9vPWZvbyBlbnZpcm9ubWVudCBmb289Zm9vCi0qKiog Li4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0w NDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAw Ci0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5k IHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0h ICNkZWZpbmUgUEFUQ0hMRVZFTCA5Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8K LS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAo Zm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZF TCAxMAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNw a2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEx CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWFlNjkwZTAwNC4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEKKysrIC9kZXYvbnVsbApAQCAtMSw1 OSArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09 PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxMQotCi1CdWct UmVwb3J0ZWQtYnk6CU1hdHQgV2hpdGxvY2sKLUJ1Zy1SZWZlcmVuY2UtSUQ6CQotQnVnLVJlZmVy ZW5jZS1VUkw6CWh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9zdXBwb3J0Lz8xMDk2NzEKLQotQnVn LURlc2NyaXB0aW9uOgotCi1UaGUgY29uZGl0aW9uYWwgY29tbWFuZCBkaWQgbm90IHBlcmZvcm0g YXBwcm9wcmlhdGUgcXVvdGVkIG51bGwgY2hhcmFjdGVyCi1yZW1vdmFsIG9uIGl0cyBhcmd1bWVu dHMsIGNhdXNpbmcgc3ludGF4IGVycm9ycyBhbmQgYXR0ZW1wdHMgdG8gc3RhdAotaW52YWxpZCBw YXRobmFtZXMuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jh c2gtNS4wLXBhdGNoZWQvc3Vic3QuYwkyMDE4LTEyLTIyIDE3OjQzOjM3LjAwMDAwMDAwMCAtMDUw MAotLS0tIHN1YnN0LmMJMjAxOS0wNC0xNCAxMzoyNTo0MS4wMDAwMDAwMDAgLTA0MDAKLSoqKioq KioqKioqKioqKgotKioqIDM2MjYsMzYzMCAqKioqCi0gICAgIFNQRUNJQUwgaXMgMiwgdGhpcyBp cyBhbiByaHMgYXJndW1lbnQgZm9yIHRoZSA9fiBvcGVyYXRvciwgYW5kIHNob3VsZAotICAgICBi ZSBxdW90ZWQgYXBwcm9wcmlhdGVseSBmb3IgcmVnY29tcC9yZWdleGVjLiAgVGhlIGNhbGxlciBp cyByZXNwb25zaWJsZQotISAgICBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tzbGFzaGVzIGlmIHRoZSB1 bnF1b3RlZCB3b3JkIGlzIG5lZWRlZCBsYXRlci4gKi8gICAKLSAgY2hhciAqCi0gIGNvbmRfZXhw YW5kX3dvcmQgKHcsIHNwZWNpYWwpCi0tLS0gMzY0MiwzNjQ4IC0tLS0KLSAgICAgU1BFQ0lBTCBp cyAyLCB0aGlzIGlzIGFuIHJocyBhcmd1bWVudCBmb3IgdGhlID1+IG9wZXJhdG9yLCBhbmQgc2hv dWxkCi0gICAgIGJlIHF1b3RlZCBhcHByb3ByaWF0ZWx5IGZvciByZWdjb21wL3JlZ2V4ZWMuICBU aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCi0hICAgIGZvciByZW1vdmluZyB0aGUgYmFja3NsYXNo ZXMgaWYgdGhlIHVucXVvdGVkIHdvcmQgaXMgbmVlZGVkIGxhdGVyLiBJbgotISAgICBhbnkgY2Fz ZSwgc2luY2Ugd2UgZG9uJ3QgcGVyZm9ybSB3b3JkIHNwbGl0dGluZywgd2UgbmVlZCB0byBkbyBx dW90ZWQKLSEgICAgbnVsbCBjaGFyYWN0ZXIgcmVtb3ZhbC4gKi8KLSAgY2hhciAqCi0gIGNvbmRf ZXhwYW5kX3dvcmQgKHcsIHNwZWNpYWwpCi0qKioqKioqKioqKioqKioKLSoqKiAzNjQ3LDM2NTAg KioqKgotLS0tIDM2NjUsMzY3MCAtLS0tCi0gICAgICAgIGlmIChzcGVjaWFsID09IDApCQkJLyog TEhTICovCi0gIAl7Ci0rIAkgIGlmIChsLT53b3JkKQotKyAJICAgIHdvcmRfbGlzdF9yZW1vdmVf cXVvdGVkX251bGxzIChsKTsKLSAgCSAgZGVxdW90ZV9saXN0IChsKTsKLSAgCSAgciA9IHN0cmlu Z19saXN0IChsKTsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1 MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToy OC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAg bG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBz dHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEwCi0gIAotICAjZW5kaWYgLyog X1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5k IHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0h ICNkZWZpbmUgUEFUQ0hMRVZFTCAxMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICov CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMiBiL3NyY3BrZ3MvYmFz aC9maWxlcy9iYXNoNTAtMDEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDcwZTc2 NjU1MC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTIKKysr IC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0J CQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJ YmFzaDUwLTAxMgotCi1CdWctUmVwb3J0ZWQtYnk6CWxlc3NidWdAcXEuY29tCi1CdWctUmVmZXJl bmNlLUlEOgk8dGVuY2VudF82QUE1MzFEOUE1Q0M0MTIxRDg2QkQ1Q0RBMkUwREE5OEM2MDVAcXEu Y29tPgotQnVnLVJlZmVyZW5jZS1VUkw6Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotV2hlbiB1c2lu ZyBwcmV2aW91cy1oaXN0b3J5IHRvIGdvIGJhY2sgYmV5b25kIHRoZSBiZWdpbm5pbmcgb2YgdGhl IGhpc3RvcnkgbGlzdCwKLWl0J3MgcG9zc2libGUgdG8gbW92ZSB0byBhbiBpbmNvcnJlY3QgcGFy dGlhbCBsaW5lLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9i YXNoLTUuMC1wYXRjaGVkL2xpYi9yZWFkbGluZS9taXNjLmMJMjAxNy0wNy0wNyAxNzozMDoxMi4w MDAwMDAwMDAgLTA0MDAKLS0tLSBsaWIvcmVhZGxpbmUvbWlzYy5jCTIwMTktMDUtMTYgMTE6NDM6 NDYuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA1NzcsNTgwICoqKioKLS0t LSA1OTAsNTk0IC0tLS0KLSAgewotICAgIEhJU1RfRU5UUlkgKm9sZF90ZW1wLCAqdGVtcDsKLSsg ICBpbnQgaGFkX3NhdmVkX2xpbmU7Ci0gIAotICAgIGlmIChjb3VudCA8IDApCi0qKioqKioqKioq KioqKioKLSoqKiA1ODksNTkyICoqKioKLS0tLSA2MDMsNjA3IC0tLS0KLSAgCi0gICAgLyogSWYg d2UgZG9uJ3QgaGF2ZSBhIGxpbmUgc2F2ZWQsIHRoZW4gc2F2ZSB0aGlzIG9uZS4gKi8KLSsgICBo YWRfc2F2ZWRfbGluZSA9IF9ybF9zYXZlZF9saW5lX2Zvcl9oaXN0b3J5ICE9IDA7Ci0gICAgcmxf bWF5YmVfc2F2ZV9saW5lICgpOwotICAKLSoqKioqKioqKioqKioqKgotKioqIDYxMiw2MTYgKioq KgotICAgIGlmICh0ZW1wID09IDApCi0gICAgICB7Ci0hICAgICAgIHJsX21heWJlX3Vuc2F2ZV9s aW5lICgpOwotICAgICAgICBybF9kaW5nICgpOwotICAgICAgfQotLS0tIDYyNyw2MzIgLS0tLQot ICAgIGlmICh0ZW1wID09IDApCi0gICAgICB7Ci0hICAgICAgIGlmIChoYWRfc2F2ZWRfbGluZSA9 PSAwKQotISAgICAgICAgIF9ybF9mcmVlX3NhdmVkX2hpc3RvcnlfbGluZSAoKTsKLSAgICAgICAg cmxfZGluZyAoKTsKLSAgICAgIH0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0w Ni0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0w MSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoq KioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3Mg dmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDExCi0gIAotICAj ZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZv ciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4g Ki8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExF VkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMyBiL3Ny Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBlNDRmZGI1MDUzYi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMTMKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0gg UkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1Q YXRjaC1JRDoJYmFzaDUwLTAxMwotCi1CdWctUmVwb3J0ZWQtYnk6CUhJUk9TRSBNYXNhYWtpIDxo aXJvc2UzMUBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FHU09mQS1ScWlUZT0rR3NY c0RLeVpyck1XSDRiRGJYZ01WVmVnTWE2T2pxQzV4Ym5RQG1haWwuZ21haWwuY29tPgotQnVnLVJl ZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gv MjAxOS0wNS9tc2cwMDAzOC5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotUmVhZGluZyBoaXN0 b3J5IGVudHJpZXMgd2l0aCB0aW1lc3RhbXBzIGNhbiByZXN1bHQgaW4gaGlzdG9yeSBlbnRyaWVz IGpvaW5lZAotYnkgbGluZWZlZWRzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6 Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9yZWFkbGluZS9oaXN0ZmlsZS5jCTIwMTgt MDYtMTEgMDk6MTQ6NTIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL3JlYWRsaW5lL2hpc3RmaWxl LmMJMjAxOS0wNS0xNiAxNTo1NTo1Ny4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgot KioqIDM3MCwzNzYgKioqKgotICAKLSAgICBoYXNfdGltZXN0YW1wcyA9IEhJU1RfVElNRVNUQU1Q X1NUQVJUIChidWZmZXIpOwotISAgIGhpc3RvcnlfbXVsdGlsaW5lX2VudHJpZXMgKz0gaGFzX3Rp bWVzdGFtcHMgJiYgaGlzdG9yeV93cml0ZV90aW1lc3RhbXBzOyAgCi0gIAotICAgIC8qIFNraXAg bGluZXMgdW50aWwgd2UgYXJlIGF0IEZST00uICovCi0gICAgZm9yIChsaW5lX3N0YXJ0ID0gbGlu ZV9lbmQgPSBidWZmZXI7IGxpbmVfZW5kIDwgYnVmZW5kICYmIGN1cnJlbnRfbGluZSA8IGZyb207 IGxpbmVfZW5kKyspCi0gICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0tLS0gMzcwLDM3OCAt LS0tCi0gIAotICAgIGhhc190aW1lc3RhbXBzID0gSElTVF9USU1FU1RBTVBfU1RBUlQgKGJ1ZmZl cik7Ci0hICAgaGlzdG9yeV9tdWx0aWxpbmVfZW50cmllcyArPSBoYXNfdGltZXN0YW1wcyAmJiBo aXN0b3J5X3dyaXRlX3RpbWVzdGFtcHM7Ci0gIAotICAgIC8qIFNraXAgbGluZXMgdW50aWwgd2Ug YXJlIGF0IEZST00uICovCi0rICAgaWYgKGhhc190aW1lc3RhbXBzKQotKyAgICAgbGFzdF90cyA9 IGJ1ZmZlcjsKLSAgICBmb3IgKGxpbmVfc3RhcnQgPSBsaW5lX2VuZCA9IGJ1ZmZlcjsgbGluZV9l bmQgPCBidWZlbmQgJiYgY3VycmVudF9saW5lIDwgZnJvbTsgbGluZV9lbmQrKykKLSAgICAgIGlm ICgqbGluZV9lbmQgPT0gJ1xuJykKLSoqKioqKioqKioqKioqKgotKioqIDM4MSwzODUgKioqKgot LS0tIDM4MywzOTggLS0tLQotICAJaWYgKEhJU1RfVElNRVNUQU1QX1NUQVJUKHApID09IDApCi0g IAkgIGN1cnJlbnRfbGluZSsrOwotKyAJZWxzZQotKyAJICBsYXN0X3RzID0gcDsKLSAgCWxpbmVf c3RhcnQgPSBwOwotKyAJLyogSWYgd2UgYXJlIGF0IHRoZSBsYXN0IGxpbmUgKGN1cnJlbnRfbGlu ZSA9PSBmcm9tKSBidXQgd2UgaGF2ZQotKyAJICAgdGltZXN0YW1wcyAoaGFzX3RpbWVzdGFtcHMp LCB0aGVuIGxpbmVfc3RhcnQgcG9pbnRzIHRvIHRoZQotKyAJICAgdGV4dCBvZiB0aGUgbGFzdCBj b21tYW5kLCBhbmQgd2UgbmVlZCB0byBza2lwIHRvIGl0cyBlbmQuICovCi0rIAlpZiAoY3VycmVu dF9saW5lID49IGZyb20gJiYgaGFzX3RpbWVzdGFtcHMpCi0rIAkgIHsKLSsgCSAgICBmb3IgKGxp bmVfZW5kID0gcDsgbGluZV9lbmQgPCBidWZlbmQgJiYgKmxpbmVfZW5kICE9ICdcbic7IGxpbmVf ZW5kKyspCi0rIAkgICAgICA7Ci0rIAkgICAgbGluZV9zdGFydCA9ICgqbGluZV9lbmQgPT0gJ1xu JykgPyBsaW5lX2VuZCArIDEgOiBsaW5lX2VuZDsKLSsgCSAgfQotICAgICAgICB9Ci0gIAotCi0q KiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAw IC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0w NDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBm aW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAg Ci0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hf ICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2 ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENI TEVWRUwgMTMKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTQgYi9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAxNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiNDlhYWU3MjUuLjAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0CisrKyAvZGV2L251bGwKQEAg LTEsNTIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09 PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMTQKLQot QnVnLVJlcG9ydGVkLWJ5OglKb2hhbm5lcyBIaWVsc2NoZXIgPGpoaWVsc2NoZXJAcG9zdGVvLmRl PgotQnVnLVJlZmVyZW5jZS1JRDoJPDIwMTkwMjA4MjA1MDQ4Ljc3YzI1YTgzQGhvcmRldm0+Ci1C dWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWct YmFzaC8yMDE5LTAyL21zZzAwMDMyLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1JZiB0aGUg Y3VycmVudCBsaW5lIGlzIGVtcHR5LCB1c2luZyB0aGUgZW1hY3MgQy14Qy1lIGJpbmRpbmcgdG8g ZW50ZXIgdGhlCi1lZGl0b3Igd2lsbCBlZGl0IHRoZSBwcmV2aW91cyBjb21tYW5kIGluc3RlYWQg b2YgdGhlIGN1cnJlbnQgKGVtcHR5KSBvbmUuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAt cDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYmFzaGxpbmUuYwkyMDE5LTAxLTE2IDE2 OjEzOjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGJhc2hsaW5lLmMJMjAxOS0wMi0xMSAxMToxODo1 Ny4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDk2Miw5NzAgKioqKgotICAJ IGZpbmlzaGVkIHdpdGggdGhlIGNvbW1hbmQsIHNvIHdlIHNob3VsZCBub3QgaWdub3JlIHRoZSBs YXN0IGNvbW1hbmQgKi8KLSAgICAgICAgdXNpbmdfaGlzdG9yeSAoKTsKLSEgICAgICAgaWYgKHJs X2xpbmVfYnVmZmVyWzBdKQotISAJewotISAJICBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCsr OwkvKiBmb3IgcmxfbmV3bGluZSBhYm92ZSAqLwotISAJICBiYXNoX2FkZF9oaXN0b3J5IChybF9s aW5lX2J1ZmZlcik7Ci0hIAl9Ci0gICAgICAgIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50ID0g MDsJLyogZm9yIGR1bW15IGhpc3RvcnkgZW50cnkgKi8KLSAgICAgICAgYmFzaF9hZGRfaGlzdG9y eSAoIiIpOwotLS0tIDk2NSw5NzAgLS0tLQotICAJIGZpbmlzaGVkIHdpdGggdGhlIGNvbW1hbmQs IHNvIHdlIHNob3VsZCBub3QgaWdub3JlIHRoZSBsYXN0IGNvbW1hbmQgKi8KLSAgICAgICAgdXNp bmdfaGlzdG9yeSAoKTsKLSEgICAgICAgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQrKzsJLyog Zm9yIHJsX25ld2xpbmUgYWJvdmUgKi8KLSEgICAgICAgYmFzaF9hZGRfaGlzdG9yeSAocmxfbGlu ZV9idWZmZXIpOwotICAgICAgICBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA9IDA7CS8qIGZv ciBkdW1teSBoaXN0b3J5IGVudHJ5ICovCi0gICAgICAgIGJhc2hfYWRkX2hpc3RvcnkgKCIiKTsK LSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAw MDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAg LTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRv IGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwot ICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEzCi0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxf SF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBs ZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFU Q0hMRVZFTCAxNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQg YS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjZlNWU2OWQ2ZS4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUKKysrIC9kZXYvbnVsbApA QCAtMSw3OCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09 PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxNQot Ci1CdWctUmVwb3J0ZWQtYnk6CVl1IEtvdSA8Y2t5b29nQGdtYWlsLmNvbT4KLUJ1Zy1SZWZlcmVu Y2UtSUQ6CTxDQUFxb0Y5S28zbkFTaEpYR3p1Y2Fmcy1CeVVhZ3paNG5iUW9ud0Vrd0M3czlVcWZX S3dAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUu b3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTA1L21zZzAwMDMyLmh0bWwKLQotQnVnLURl c2NyaXB0aW9uOgotCi1JZiBhbGlhcyBleHBhbnNpb24gaXMgZW5hYmxlZCB3aGVuIHByb2Nlc3Np bmcgdGhlIGNvbW1hbmQgYXJndW1lbnQgdG8gdGhlCi1gLWMnIG9wdGlvbiwgYW4gYWxpYXMgaXMg ZGVmaW5lZCBpbiB0aGF0IGNvbW1hbmQsIGFuZCB0aGUgY29tbWFuZCBlbmRzIHdpdGgKLXRoZSBp bnZvY2F0aW9uIG9mIHRoYXQgYWxpYXMsIHRoZSBzaGVsbCdzIGNvbW1hbmQgcGFyc2VyIGNhbiBw cmVtYXR1cmVseQotdGVybWluYXRlIGJlZm9yZSB0aGUgZW50aXJlIGNvbW1hbmQgaXMgZXhlY3V0 ZWQuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtMjAx OTA0MjYvYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDEtMjkgMTQ6MTU6MTkuMDAwMDAwMDAw IC0wNTAwCi0tLS0gYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDUtMTUgMTQ6MTk6MzYuMDAw MDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA5Miw5NSAqKioqCi0tLS0gOTIsOTYg LS0tLQotICAJICBydW5uaW5nX3RyYXAgPT0gMCAmJgotICAJICAqYmFzaF9pbnB1dC5sb2NhdGlv bi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICBwYXJzZXJfZXhwYW5kaW5nX2FsaWFzICgpID09IDAg JiYKLSAgCSAgY29tbWFuZC0+dHlwZSA9PSBjbV9zaW1wbGUgJiYKLSAgCSAgc2lnbmFsX2lzX3Ry YXBwZWQgKEVYSVRfVFJBUCkgPT0gMCAmJgotKioqKioqKioqKioqKioqCi0qKiogMTA2LDEwOSAq KioqCi0tLS0gMTA3LDExMSAtLS0tCi0gIHsKLSAgICByZXR1cm4gKCpiYXNoX2lucHV0LmxvY2F0 aW9uLnN0cmluZyA9PSAnXDAnICYmCi0rIAkgIHBhcnNlcl9leHBhbmRpbmdfYWxpYXMgKCkgPT0g MCAmJgotICAJICAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9B TkQgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09SIHx8IGNv bW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSAnOycpICYmCi0gIAkgIGNvbW1h bmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+dHlwZSA9PSBjbV9zaW1wbGUpOwotKioqKioq KioqKioqKioqCi0qKiogMjkxLDI5NSAqKioqCi0gICAgd2l0aF9pbnB1dF9mcm9tX3N0cmluZyAo c3RyaW5nLCBmcm9tX2ZpbGUpOwotICAgIGNsZWFyX3NoZWxsX2lucHV0X2xpbmUgKCk7Ci0hICAg d2hpbGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQotICAgICAgewotICAgICAgICBj b21tYW5kID0gKENPTU1BTkQgKilOVUxMOwotLS0tIDI5MywyOTcgLS0tLQotICAgIHdpdGhfaW5w dXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSAgICBjbGVhcl9zaGVsbF9pbnB1 dF9saW5lICgpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5nKSB8fCBw YXJzZXJfZXhwYW5kaW5nX2FsaWFzICgpKQotICAgICAgewotICAgICAgICBjb21tYW5kID0gKENP TU1BTkQgKilOVUxMOwotKioqKioqKioqKioqKioqCi0qKiogNTQ2LDU1MCAqKioqCi0gIAotICAg IHdpdGhfaW5wdXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSEgICB3aGlsZSAo KihiYXNoX2lucHV0LmxvY2F0aW9uLnN0cmluZykpCi0gICAgICB7Ci0gICAgICAgIGNvbW1hbmQg PSAoQ09NTUFORCAqKU5VTEw7Ci0tLS0gNTQ4LDU1MiAtLS0tCi0gIAotICAgIHdpdGhfaW5wdXRf ZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSEgICB3aGlsZSAoKihiYXNoX2lucHV0 LmxvY2F0aW9uLnN0cmluZykpCQkvKiBYWFggLSBwYXJzZXJfZXhwYW5kaW5nX2FsaWFzICgpID8g Ki8KLSAgICAgIHsKLSAgICAgICAgY29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLSoqKiAuLi9i YXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAK LS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoq KioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDE0Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0t LSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9y IHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAx NQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAxNiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE2CmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2YyMzJkN2FkNC4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYKKysrIC9kZXYvbnVsbApAQCAtMSw1OCAr MCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09 PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxNgotCi1CdWctUmVw b3J0ZWQtYnk6CXN1bm55Y2VtZXRlcnlAZ21haWwuY29tCi1CdWctUmVmZXJlbmNlLUlEOgk8MjAx OTAzMTYwNDE1MzQuR0IyMjg4NEBtaWRuaWdodD4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczov L2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDMvbXNnMDAwNzAuaHRt bAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUJhc2ggd2FpdHMgdG9vIGxvbmcgdG8gcmVhcCAvZGV2 L2ZkIHByb2Nlc3Mgc3Vic3RpdHV0aW9ucyB1c2VkIGFzIHJlZGlyZWN0aW9ucwotd2l0aCBsb29w cyBhbmQgZ3JvdXAgY29tbWFuZHMsIHdoaWNoIGNhbiBsZWFkIHRvIGZpbGUgZGVzY3JpcHRvciBl eGhhdXN0aW9uLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9i YXNoLTUuMC1wYXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAxOS0wNC0xOSAxNTo0NjozNi4wMDAwMDAw MDAgLTA0MDAKLS0tLSBleGVjdXRlX2NtZC5jCTIwMTktMDctMDEgMTY6NDU6NDkuMDAwMDAwMDAw IC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAxMTA0LDExMDcgKioqKgotLS0tIDEwODUsMTEw NCAtLS0tCi0gICAgICAgIGRpc2NhcmRfdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlmb3MiKTsK LSAgICAgIH0KLSsgIyBpZiBkZWZpbmVkIChIQVZFX0RFVl9GRCkKLSsgICAvKiBSZWFwIHByb2Nl c3Mgc3Vic3RpdHV0aW9ucyBhdCB0aGUgZW5kIG9mIGxvb3BzICovCi0rICAgc3dpdGNoIChjb21t YW5kLT50eXBlKQotKyAgICAgewotKyAgICAgY2FzZSBjbV93aGlsZToKLSsgICAgIGNhc2UgY21f dW50aWw6Ci0rICAgICBjYXNlIGNtX2ZvcjoKLSsgICAgIGNhc2UgY21fZ3JvdXA6Ci0rICMgICAg aWYgZGVmaW5lZCAoQVJJVEhfRk9SX0NPTU1BTkQpCi0rICAgICBjYXNlIGNtX2FyaXRoX2ZvcjoK LSsgIyAgICBlbmRpZgotKyAgICAgICByZWFwX3Byb2NzdWJzICgpOwotKyAgICAgZGVmYXVsdDoK LSsgICAgICAgYnJlYWs7Ci0rICAgICB9Ci0rICMgIGVuZGlmIC8qIEhBVkVfREVWX0ZEICovCi0g ICNlbmRpZgotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0 OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAx OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAg ICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9u IHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTUKLSAgCi0gICNlbmRpZiAv KiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZp bmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAK LSEgI2RlZmluZSBQQVRDSExFVkVMIDE2Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8g Ki8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3IGIvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMTcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZmNi NmE4NjA2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNwor KysgL2Rldi9udWxsCkBAIC0xLDI4OSArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JU Ci0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1J RDoJYmFzaDUwLTAxNwotCi1CdWctUmVwb3J0ZWQtYnk6CVZhbGVudGluIExhYiA8dmFsZW50aW4u bGFiQGthbHlzdG8ub3JnPgotQnVnLVJlZmVyZW5jZS1JRDoJPGFiOTgxYjljLTYwYTUtNDZkMC1i N2U2LWE2ZDg4YjgwZGY1MEBrYWx5c3RvLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwczov L2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMjAtMDMvbXNnMDAwNjIuaHRt bAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVRoZXJlIHdlcmUgY2FzZXMgd2hlcmUgcGF0Y2ggMTYg cmVhcGVkIHByb2Nlc3Mgc3Vic3RpdHV0aW9uIGZpbGUgZGVzY3JpcHRvcnMKLShvciBGSUZPcykg YW5kIHByb2Nlc3NlcyB0byBlYXJseS4gVGhpcyBpcyBhIGJldHRlciBmaXggZm9yIHRoZSBwcm9i bGVtIHRoYXQKLWJhc2g1MC0wMTYgYXR0ZW1wdGVkIHRvIHNvbHZlLgotCi1QYXRjaCAoYXBwbHkg d2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0LmMJMjAx OS0wOC0yOSAxMToxNjo0OS4wMDAwMDAwMDAgLTA0MDAKLS0tLSBzdWJzdC5jCTIwMjAtMDQtMDIg MTY6MjQ6MTkuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA1MzM3LDUzNDEg KioqKgotICB9Ci0gIAotISBjaGFyICoKLSAgY29weV9maWZvX2xpc3QgKHNpemVwKQotICAgICAg IGludCAqc2l6ZXA7Ci0tLS0gNTMzNyw1MzQxIC0tLS0KLSAgfQotICAKLSEgdm9pZCAqCi0gIGNv cHlfZmlmb19saXN0IChzaXplcCkKLSAgICAgICBpbnQgKnNpemVwOwotKioqKioqKioqKioqKioq Ci0qKiogNTM0Myw1MzQ3ICoqKioKLSAgICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAgPSAwOwot ISAgIHJldHVybiAoY2hhciAqKU5VTEw7Ci0gIH0KLSAgCi0tLS0gNTM0Myw1MzQ3IC0tLS0KLSAg ICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAgPSAwOwotISAgIHJldHVybiAodm9pZCAqKU5VTEw7 Ci0gIH0KLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA1NDA5LDU0MTQgKioqKgotICAJaWYgKGZp Zm9fbGlzdFtpXS5maWxlKQotICAJICB7Ci0hIAkgICAgZmlmb19saXN0W2pdLmZpbGUgPSBmaWZv X2xpc3RbaV0uZmlsZTsKLSEgCSAgICBmaWZvX2xpc3Rbal0ucHJvYyA9IGZpZm9fbGlzdFtpXS5w cm9jOwotICAJICAgIGorKzsKLSAgCSAgfQotLS0tIDU0MDksNTQxOSAtLS0tCi0gIAlpZiAoZmlm b19saXN0W2ldLmZpbGUpCi0gIAkgIHsKLSEgCSAgICBpZiAoaSAhPSBqKQotISAJICAgICAgewot ISAJCWZpZm9fbGlzdFtqXS5maWxlID0gZmlmb19saXN0W2ldLmZpbGU7Ci0hIAkJZmlmb19saXN0 W2pdLnByb2MgPSBmaWZvX2xpc3RbaV0ucHJvYzsKLSEgCQlmaWZvX2xpc3RbaV0uZmlsZSA9IChj aGFyICopTlVMTDsKLSEgCQlmaWZvX2xpc3RbaV0ucHJvYyA9IDA7Ci0hIAkgICAgICB9Ci0gIAkg ICAgaisrOwotICAJICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA1NDI2LDU0MzMgKioqKgotICB2 b2lkCi0gIGNsb3NlX25ld19maWZvcyAobGlzdCwgbHNpemUpCi0hICAgICAgY2hhciAqbGlzdDsK LSAgICAgICBpbnQgbHNpemU7Ci0gIHsKLSAgICBpbnQgaTsKLSAgCi0gICAgaWYgKGxpc3QgPT0g MCkKLS0tLSA1NDMxLDU0MzkgLS0tLQotICB2b2lkCi0gIGNsb3NlX25ld19maWZvcyAobGlzdCwg bHNpemUpCi0hICAgICAgdm9pZCAqbGlzdDsKLSAgICAgICBpbnQgbHNpemU7Ci0gIHsKLSAgICBp bnQgaTsKLSsgICBjaGFyICpwbGlzdDsKLSAgCi0gICAgaWYgKGxpc3QgPT0gMCkKLSoqKioqKioq KioqKioqKgotKioqIDU0MzcsNTQ0MiAqKioqCi0gICAgICB9Ci0gIAotISAgIGZvciAoaSA9IDA7 IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKGxpc3RbaV0gPT0gMCAmJiBpIDwgZmlmb19saXN0 X3NpemUgJiYgZmlmb19saXN0W2ldLnByb2MgIT0gLTEpCi0gICAgICAgIHVubGlua19maWZvIChp KTsKLSAgCi0tLS0gNTQ0Myw1NDQ4IC0tLS0KLSAgICAgIH0KLSAgCi0hICAgZm9yIChwbGlzdCA9 IChjaGFyICopbGlzdCwgaSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKHBsaXN0W2ld ID09IDAgJiYgaSA8IGZpZm9fbGlzdF9zaXplICYmIGZpZm9fbGlzdFtpXS5wcm9jICE9IC0xKQot ICAgICAgICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiogNTU2MCw1 NTY4ICoqKioKLSAgfQotICAKLSEgY2hhciAqCi0gIGNvcHlfZmlmb19saXN0IChzaXplcCkKLSAg ICAgICBpbnQgKnNpemVwOwotICB7Ci0hICAgY2hhciAqcmV0OwotICAKLSAgICBpZiAobmZkcyA9 PSAwIHx8IHRvdGZkcyA9PSAwKQotLS0tIDU1NjYsNTU3NCAtLS0tCi0gIH0KLSAgCi0hIHZvaWQg KgotICBjb3B5X2ZpZm9fbGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLSAgewotISAg IHZvaWQgKnJldDsKLSAgCi0gICAgaWYgKG5mZHMgPT0gMCB8fCB0b3RmZHMgPT0gMCkKLSoqKioq KioqKioqKioqKgotKioqIDU1NzAsNTU3OSAqKioqCi0gICAgICAgIGlmIChzaXplcCkKLSAgCSpz aXplcCA9IDA7Ci0hICAgICAgIHJldHVybiAoY2hhciAqKU5VTEw7Ci0gICAgICB9Ci0gIAotICAg IGlmIChzaXplcCkKLSAgICAgICpzaXplcCA9IHRvdGZkczsKLSEgICByZXQgPSAoY2hhciAqKXht YWxsb2MgKHRvdGZkcyAqIHNpemVvZiAocGlkX3QpKTsKLSAgICByZXR1cm4gKG1lbWNweSAocmV0 LCBkZXZfZmRfbGlzdCwgdG90ZmRzICogc2l6ZW9mIChwaWRfdCkpKTsKLSAgfQotLS0tIDU1NzYs NTU4NSAtLS0tCi0gICAgICAgIGlmIChzaXplcCkKLSAgCSpzaXplcCA9IDA7Ci0hICAgICAgIHJl dHVybiAodm9pZCAqKU5VTEw7Ci0gICAgICB9Ci0gIAotICAgIGlmIChzaXplcCkKLSAgICAgICpz aXplcCA9IHRvdGZkczsKLSEgICByZXQgPSB4bWFsbG9jICh0b3RmZHMgKiBzaXplb2YgKHBpZF90 KSk7Ci0gICAgcmV0dXJuIChtZW1jcHkgKHJldCwgZGV2X2ZkX2xpc3QsIHRvdGZkcyAqIHNpemVv ZiAocGlkX3QpKSk7Ci0gIH0KLSoqKioqKioqKioqKioqKgotKioqIDU2NDgsNTY1NSAqKioqCi0g IHZvaWQKLSAgY2xvc2VfbmV3X2ZpZm9zIChsaXN0LCBsc2l6ZSkKLSEgICAgICBjaGFyICpsaXN0 OwotICAgICAgIGludCBsc2l6ZTsKLSAgewotICAgIGludCBpOwotICAKLSAgICBpZiAobGlzdCA9 PSAwKQotLS0tIDU2NTQsNTY2MiAtLS0tCi0gIHZvaWQKLSAgY2xvc2VfbmV3X2ZpZm9zIChsaXN0 LCBsc2l6ZSkKLSEgICAgICB2b2lkICpsaXN0OwotICAgICAgIGludCBsc2l6ZTsKLSAgewotICAg IGludCBpOwotKyAgIHBpZF90ICpwbGlzdDsKLSAgCi0gICAgaWYgKGxpc3QgPT0gMCkKLSoqKioq KioqKioqKioqKgotKioqIDU2NTksNTY2NCAqKioqCi0gICAgICB9Ci0gIAotISAgIGZvciAoaSA9 IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKGxpc3RbaV0gPT0gMCAmJiBpIDwgdG90ZmRz ICYmIGRldl9mZF9saXN0W2ldKQotICAgICAgICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAotLS0tIDU2 NjYsNTY3MSAtLS0tCi0gICAgICB9Ci0gIAotISAgIGZvciAocGxpc3QgPSAocGlkX3QgKilsaXN0 LCBpID0gMDsgaSA8IGxzaXplOyBpKyspCi0hICAgICBpZiAocGxpc3RbaV0gPT0gMCAmJiBpIDwg dG90ZmRzICYmIGRldl9mZF9saXN0W2ldKQotICAgICAgICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAot KioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvc3Vic3QuaAkyMDE4LTEwLTIxIDE4OjQ2OjA5LjAwMDAw MDAwMCAtMDQwMAotLS0tIHN1YnN0LmgJMjAyMC0wNC0wMiAxNjoyOToyOC4wMDAwMDAwMDAgLTA0 MDAKLSoqKioqKioqKioqKioqKgotKioqIDI3NCwyODAgKioqKgotICBleHRlcm4gdm9pZCB1bmxp bmtfZmlmbyBfX1AoKGludCkpOwotICAKLSEgZXh0ZXJuIGNoYXIgKmNvcHlfZmlmb19saXN0IF9f UCgoaW50ICopKTsKLSEgZXh0ZXJuIHZvaWQgdW5saW5rX25ld19maWZvcyBfX1AoKGNoYXIgKiwg aW50KSk7Ci0hIGV4dGVybiB2b2lkIGNsb3NlX25ld19maWZvcyBfX1AoKGNoYXIgKiwgaW50KSk7 Ci0gIAotICBleHRlcm4gdm9pZCBjbGVhcl9maWZvX2xpc3QgX19QKCh2b2lkKSk7Ci0tLS0gMjc0 LDI3OSAtLS0tCi0gIGV4dGVybiB2b2lkIHVubGlua19maWZvIF9fUCgoaW50KSk7Ci0gIAotISBl eHRlcm4gdm9pZCAqY29weV9maWZvX2xpc3QgX19QKChpbnQgKikpOwotISBleHRlcm4gdm9pZCBj bG9zZV9uZXdfZmlmb3MgX19QKCh2b2lkICosIGludCkpOwotICAKLSAgZXh0ZXJuIHZvaWQgY2xl YXJfZmlmb19saXN0IF9fUCgodm9pZCkpOwotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvZXhlY3V0 ZV9jbWQuYwkyMDIwLTAyLTA2IDIwOjE2OjQ4LjAwMDAwMDAwMCAtMDUwMAotLS0tIGV4ZWN1dGVf Y21kLmMJMjAyMC0wNC0wMiAxNzowMDoxMC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioq KgotKioqIDU2NSw1NjkgKioqKgotICAjaWYgZGVmaW5lZCAoUFJPQ0VTU19TVUJTVElUVVRJT04p Ci0gICAgdm9sYXRpbGUgaW50IG9maWZvLCBuZmlmbywgb3NpemUsIHNhdmVkX2ZpZm87Ci0hICAg dm9sYXRpbGUgY2hhciAqb2ZpZm9fbGlzdDsKLSAgI2VuZGlmCi0gIAotLS0tIDU2NSw1NjkgLS0t LQotICAjaWYgZGVmaW5lZCAoUFJPQ0VTU19TVUJTVElUVVRJT04pCi0gICAgdm9sYXRpbGUgaW50 IG9maWZvLCBuZmlmbywgb3NpemUsIHNhdmVkX2ZpZm87Ci0hICAgdm9sYXRpbGUgdm9pZCAqb2Zp Zm9fbGlzdDsKLSAgI2VuZGlmCi0gIAotKioqKioqKioqKioqKioqCi0qKiogNzUxLDc2MCAqKioq Ci0gICMgIGVuZGlmCi0gIAotISAgIGlmICh2YXJpYWJsZV9jb250ZXh0ICE9IDApCS8qIFhYWCAt IGFsc28gaWYgc291cmNlbGV2ZWwgIT0gMD8gKi8KLSAgICAgIHsKLSAgICAgICAgb2ZpZm8gPSBu dW1fZmlmb3MgKCk7Ci0gICAgICAgIG9maWZvX2xpc3QgPSBjb3B5X2ZpZm9fbGlzdCAoKGludCAq KSZvc2l6ZSk7Ci0gICAgICAgIGJlZ2luX3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7 Ci0hICAgICAgIGFkZF91bndpbmRfcHJvdGVjdCAoeGZyZWUsIG9maWZvX2xpc3QpOwotICAgICAg ICBzYXZlZF9maWZvID0gMTsKLSAgICAgIH0KLS0tLSA3NTEsNzYyIC0tLS0KLSAgIyAgZW5kaWYK LSAgCi0hICAgLyogWFhYIC0gYWxzbyBpZiBzb3VyY2VsZXZlbCAhPSAwPyAqLwotISAgIGlmICh2 YXJpYWJsZV9jb250ZXh0ICE9IDApCi0gICAgICB7Ci0gICAgICAgIG9maWZvID0gbnVtX2ZpZm9z ICgpOwotICAgICAgICBvZmlmb19saXN0ID0gY29weV9maWZvX2xpc3QgKChpbnQgKikmb3NpemUp OwotICAgICAgICBiZWdpbl91bndpbmRfZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwotISAgICAg ICBpZiAob2ZpZm9fbGlzdCkKLSEgCWFkZF91bndpbmRfcHJvdGVjdCAoeGZyZWUsIG9maWZvX2xp c3QpOwotICAgICAgICBzYXZlZF9maWZvID0gMTsKLSAgICAgIH0KLSoqKioqKioqKioqKioqKgot KioqIDExMDAsMTEyMyAqKioqCi0gICAgICAgIG5maWZvID0gbnVtX2ZpZm9zICgpOwotICAgICAg ICBpZiAobmZpZm8gPiBvZmlmbykKLSEgCWNsb3NlX25ld19maWZvcyAoKGNoYXIgKilvZmlmb19s aXN0LCBvc2l6ZSk7Ci0gICAgICAgIGZyZWUgKCh2b2lkICopb2ZpZm9fbGlzdCk7Ci0gICAgICAg IGRpc2NhcmRfdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlmb3MiKTsKLSAgICAgIH0KLS0gIyBp ZiBkZWZpbmVkIChIQVZFX0RFVl9GRCkKLS0gICAvKiBSZWFwIHByb2Nlc3Mgc3Vic3RpdHV0aW9u cyBhdCB0aGUgZW5kIG9mIGxvb3BzICovCi0tICAgc3dpdGNoIChjb21tYW5kLT50eXBlKQotLSAg ICAgewotLSAgICAgY2FzZSBjbV93aGlsZToKLS0gICAgIGNhc2UgY21fdW50aWw6Ci0tICAgICBj YXNlIGNtX2ZvcjoKLS0gICAgIGNhc2UgY21fZ3JvdXA6Ci0tICMgICAgaWYgZGVmaW5lZCAoQVJJ VEhfRk9SX0NPTU1BTkQpCi0tICAgICBjYXNlIGNtX2FyaXRoX2ZvcjoKLS0gIyAgICBlbmRpZgot LSAgICAgICByZWFwX3Byb2NzdWJzICgpOwotLSAgICAgZGVmYXVsdDoKLS0gICAgICAgYnJlYWs7 Ci0tICAgICB9Ci0tICMgIGVuZGlmIC8qIEhBVkVfREVWX0ZEICovCi0gICNlbmRpZgotICAKLS0t LSAxMTAyLDExMDkgLS0tLQotICAgICAgICBuZmlmbyA9IG51bV9maWZvcyAoKTsKLSAgICAgICAg aWYgKG5maWZvID4gb2ZpZm8pCi0hIAljbG9zZV9uZXdfZmlmb3MgKCh2b2lkICopb2ZpZm9fbGlz dCwgb3NpemUpOwotICAgICAgICBmcmVlICgodm9pZCAqKW9maWZvX2xpc3QpOwotICAgICAgICBk aXNjYXJkX3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7Ci0gICAgICB9Ci0gICNlbmRp ZgotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAz LjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAw MDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29r cyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmlu ZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTYKLSAgCi0gICNlbmRpZiAvKiBfUEFU Q0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhl IHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2Rl ZmluZSBQQVRDSExFVkVMIDE3Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNoIGIvc3Jj cGtncy9iYXNoL2ZpbGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNzU1CmluZGV4IDYzYzVlMjBjMjMzLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gv ZmlsZXMvdXBkYXRlLWJhc2gtcGF0Y2hlcy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBA QAotIyEvYmluL2Jhc2gKLXNvdXJjZSAuLi90ZW1wbGF0ZQotCi1mb3IgaSBpbiAkKHNlcSAtdyAw MDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCi0JY3VybCBodHRwczovL2Z0cC5nbnUub3JnL2du dS9iYXNoL2Jhc2gtJF9iYXNoX2Rpc3R2ZXItcGF0Y2hlcy9iYXNoJHtfYmFzaF9kaXN0dmVyLy8u L30tJGkgXAotCQk+IGJhc2gke19iYXNoX2Rpc3R2ZXIvLy4vfS0ke19iYXNoX3BhdGNobGV2ZWx9 Ci1kb25lCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvdGVtcGxhdGUgYi9zcmNwa2dzL2Jhc2gv dGVtcGxhdGUKaW5kZXggOTFlMmU0YzFjYTMuLjFjMTU0NTRiMzQxIDEwMDY0NAotLS0gYS9zcmNw a2dzL2Jhc2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9iYXNoL3RlbXBsYXRlCkBAIC0xNSw5ICsx NSwzNSBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+Igog bGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5nbnUub3Jn L3NvZnR3YXJlL2Jhc2gvYmFzaC5odG1sIgogZGlzdGZpbGVzPSIke0dOVV9TSVRFfS8ke3BrZ25h bWV9LyR7cGtnbmFtZX0tJHtfYmFzaF9kaXN0dmVyfS50YXIuZ3oiCi1tYWtlX2RpcnM9Ii9ldGMv YmFzaC9iYXNocmMuZCA3NTUgcm9vdCByb290IgotY2hlY2tzdW09YjRhODBmMmFjNjYxNzBiMjkx M2VmYmZiOWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAogCitfdXJsPSIk e0dOVV9TSVRFfS9iYXNoL2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS1wYXRjaGVzIgorZm9yIF9wIGlu ICQoc2VxIC13IDAwMSAke19iYXNoX3BhdGNobGV2ZWx9KTsgZG8KKwlkaXN0ZmlsZXMrPSIgJHtf dXJsfS9iYXNoJHtfYmFzaF9kaXN0dmVyLy4vfS0ke19wfSIKKwlza2lwX2V4dHJhY3Rpb24rPSIg YmFzaCR7X2Jhc2hfZGlzdHZlci8uL30tJHtfcH0iCitkb25lCit1bnNldCBfdXJsCit1bnNldCBf cAorCitjaGVja3N1bT0iYjRhODBmMmFjNjYxNzBiMjkxM2VmYmZiOWYyNTk0ZjFmNzZjN2IxYWZk MTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAorIGYyZmU5ZTFmMGZhZGRmMTRhYjliZmE4OGQ0NTBhNzVl NWQwMjhmZWRhZmFkMjNiODg3MTZiZDY1N2M3MzcyODkKKyA4N2U4N2QzNTQyZTU5ODc5OWFkYjNl N2UwMWM4MTY1YmM3NDNlMTM2YTQwMGVkMGRlMDE1ODQ1ZjdmZjY4NzA3CisgNGVlYmNkYzM3YjEz NzkzYTIzMmM1ZjJmNDk4YTVmY2JmN2RhMGVjYjNkYTIwNTkzOTFjMDk2ZGI2MjBlYzg1YgorIDE0 NDQ3YWQ4MzJhZGQ4ZWNmYWZkY2U1Mzg0YmFkZDkzMzY5N2I1NTljNDY4OGQ2YjllM2QzNmZmMzZj NjJmMDgKKyA1YmY1NGRkOWJkMmMyMTFkMmJmYjM0YTQ5ZTJjNzQxZjJlZDVlMzM4NzY3ZTljZTlm NGQ0MTI1NGJmOWY4Mjc2CisgZDY4NTI5YTZmZjIwMWI2ZmY1OTE1MzE4YWIxMmZjMTZiOGEwZWJi NzdmZGEzMzA4MzAzZmNjMWUxMzM5ODQyMAorIDE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdh Mzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIKKyBlZWM2NDU4ODYyMmE4MmE1MDI5 YjI3NzZlMjE4YTc1YTM2NDBiZWY0OTUzZjA5ZDZlZTFmNDE5OTY3MGFkN2UzCisgZWQzY2EyMTc2 NzMwM2ZjM2RlOTM5MzRhYTUyNGMyZTkyMDc4N2M1MDZiNjAxY2M0MGE0ODk3ZDRiMDk0ZDkwMwor IGQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIy ZTUyYThhMTEKKyAyYzRkZTMzMmI5MWVhZjc5N2FiYmJkNmM3OTcwOTY5MGI1Y2JkNDhiMTJlOGRm ZTc0ODA5NmRiZDdiZjQ3NGVhCisgMjk0M2VlMTk2ODgwMTgyOTZmMmEwNGRiZmUzMGI3MTM4Yjg4 OTcwMGVmYThmZjFjMDUyNGFmMjcxZTBlZTIzMworIGY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgw MjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEKKyA1ZDZlZWU2NTE0ZWU2ZTIy YTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0NmYxYzVhOWEzNWRiMWY3MmFmNTg5CisgYTUxN2Rm MmRkYTkzYjI2ZDVjYmYwMGVmZmVmZWE5M2UzYTRjY2Q2NjUyZjE1MmY0MTA5MTcwNTQ0ZWJmYTA1 ZQorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFk NDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2NmQ0MTFkZDVmYzkxMjAwMzI1MzNhNDAxMmRmMWRj NmVlMDI0Yzc4MzMzNzNlMmRkYzMxIgorCittYWtlX2RpcnM9Ii9ldGMvYmFzaC9iYXNocmMuZCA3 NTUgcm9vdCByb290IgogY29uZmxpY3RzPSJjaHJvb3QtYmFzaD49MCIKIHJlZ2lzdGVyX3NoZWxs PSIvdXNyL2Jpbi9iYXNoIC9iaW4vYmFzaCIKIApAQCAtMjcsMTMgKzUzLDExIEBAIGFsdGVybmF0 aXZlcz0iCiAKIENGTEFHUz0iLURTWVNfQkFTSFJDPSdcIi9ldGMvYmFzaC9iYXNocmNcIiciCiAK LXByZV9jb25maWd1cmUoKSB7Ci0JbG9jYWwgdmVyPSQoZWNobyAke19iYXNoX2Rpc3R2ZXJ9fHNl ZCAic3xcLnx8ZyIpCi0KK3Bvc3RfcGF0Y2goKSB7CiAJY2QgJHt3cmtzcmN9CiAJZm9yIHAgaW4g JChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBkbwotCQlwYXRjaCAtc05wMCAtaSAk e0ZJTEVTRElSfS9iYXNoJHt2ZXJ9LSR7cH0KLQkJbXNnX25vcm1hbCAiIEFwcGx5aW5nIHBhdGNo IGJhc2gke3Zlcn0tJHAuXG4iCisJCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHtf bWFqb3J9JHtfbWlub3J9LSRwLlxuIgorCQlwYXRjaCAtc05wMCAtaSAke1hCUFNfU1JDRElTVERJ Un0vYmFzaC0kdmVyc2lvbi9iYXNoJHtfYmFzaF9kaXN0dmVyLy4vfS0ke3B9CiAJZG9uZQogfQog CgpGcm9tIDNiZGI0NjcyNmQ1NTMyYTkwMTY1Y2M2ZGVhNzRiZDg5NTBlZGEyZTggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT89QzQ9OTBvPUMzPUEwbj0yMFRyPUUxPUJB PUE3bj0yMEM9QzM9QjRuZz0yMERhbmg/PQogPGNvbmdkYW5ocXhAZ21haWwuY29tPgpEYXRlOiBU dWUsIDI4IEp1bCAyMDIwIDA3OjA3OjQ5ICswNzAwClN1YmplY3Q6IFtQQVRDSCA1LzZdIGJhc2g6 IHVwZGF0ZSB0byA1LjAuMDE4LgoKQ2xvc2U6ICMyMzgxNQotLS0KIHNyY3BrZ3MvYmFzaC90ZW1w bGF0ZSB8IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iYXNoL3RlbXBsYXRlIGIvc3JjcGtncy9iYXNo L3RlbXBsYXRlCmluZGV4IDFjMTU0NTRiMzQxLi5mOGQzMzJjNGE4MyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9iYXNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYmFzaC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Jhc2gnCiBwa2duYW1lPWJhc2gKIF9iYXNoX2Rp c3R2ZXI9NS4wCi1fYmFzaF9wYXRjaGxldmVsPTAxNworX2Jhc2hfcGF0Y2hsZXZlbD0wMTgKIHZl cnNpb249IiR7X2Jhc2hfZGlzdHZlcn0uJHtfYmFzaF9wYXRjaGxldmVsfSIKIHJldmlzaW9uPTEK IHdya3NyYz0iJHtwa2duYW1lfS0ke19iYXNoX2Rpc3R2ZXJ9IgpAQCAtNDEsNyArNDEsOCBAQCBj aGVja3N1bT0iYjRhODBmMmFjNjYxNzBiMjkxM2VmYmZiOWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5 ZTIyMDM1ZDYzMDc3ZmI0ZAogIDVkNmVlZTY1MTRlZTZlMjJhODdiYmE4ZDIyYmUwYTg2MjFhMGFl MTE5MjQ2ZjFjNWE5YTM1ZGIxZjcyYWY1ODkKICBhNTE3ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZl YTkzZTNhNGNjZDY2NTJmMTUyZjQxMDkxNzA1NDRlYmZhMDVlCiAgZmZkMWQ3YTU0YTk5ZmE3ZjVi MTgyNWU0ZjdlOTVkOGM4ODc2YmMyY2ExNTFmMTUwZTc1MWQ0MjljNjUwYjA2ZAotIDRjZjNiOWZh ZmI4YTY2ZDQxMWRkNWZjOTEyMDAzMjUzM2E0MDEyZGYxZGM2ZWUwMjRjNzgzMzM3M2UyZGRjMzEi CisgNGNmM2I5ZmFmYjhhNjZkNDExZGQ1ZmM5MTIwMDMyNTMzYTQwMTJkZjFkYzZlZTAyNGM3ODMz MzczZTJkZGMzMQorIDdjMzE0ZTM3NWExMDVhNjY0MmU4ZWQ0NGYzODA4YjlkZWY4OWQxNWY3NDky ZmUyMDI5YTIxYmE5YzBkZTgxZDMiCiAKIG1ha2VfZGlycz0iL2V0Yy9iYXNoL2Jhc2hyYy5kIDc1 NSByb290IHJvb3QiCiBjb25mbGljdHM9ImNocm9vdC1iYXNoPj0wIgoKRnJvbSA0MmEyYjBiMzRi ZTUxNWMyMmM2NGQ3ODU3YmUzZDhiYWVkNTNmY2E2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1BN249MjBDPUMzPUI0bmc9 MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKdWwgMjAyMCAx MjoxMzowNyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggNi82XSBsaWJyZWFkbGluZTg6IHZlcmlmeSBw YXRjaCdzIGNoZWNrc3VtCgotLS0KIHNyY3BrZ3MvbGlicmVhZGxpbmU4L3RlbXBsYXRlIHwgMjUg KysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlicmVhZGxpbmU4L3Rl bXBsYXRlIGIvc3JjcGtncy9saWJyZWFkbGluZTgvdGVtcGxhdGUKaW5kZXggNjIwMDE5NWJlOWUu LmMzNTFmMGRiNmUyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0ZQpAQCAtMTQsMjIgKzE0LDE5IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vdGlzd3d3LmN3cnUuZWR1L3BocC9jaGV0 L3JlYWRsaW5lL3JsdG9wLmh0bWwiCiBkaXN0ZmlsZXM9IiR7R05VX1NJVEV9L3JlYWRsaW5lL3Jl YWRsaW5lLSR7X2Rpc3RfdmVyfS50YXIuZ3oiCi1jaGVja3N1bT1lMzM5ZjUxOTcxNDc4ZDM2OWY4 YTA1M2EzMzBhMTkwNzgxYWNiOTg2NGNmNGM1NDEwNjBmMTIwNzg5NDhlNDYxCiAKLXByZV9jb25m aWd1cmUoKSB7Ci0JbG9jYWwgdXJsPSIke0dOVV9TSVRFfS9yZWFkbGluZS9yZWFkbGluZS0ke19k aXN0X3Zlcn0tcGF0Y2hlcyIKK191cmw9IiR7R05VX1NJVEV9L3JlYWRsaW5lL3JlYWRsaW5lLSR7 X2Rpc3RfdmVyfS1wYXRjaGVzIgorZm9yIF9wIGluICQoc2VxIC13IDAwMSAke19wYXRjaF92ZXJ9 KTsgZG8KKwlkaXN0ZmlsZXMrPSIgJHtfdXJsfS9yZWFkbGluZSR7X2Rpc3RfdmVyLy4vfS0ke19w fSIKKwlza2lwX2V4dHJhY3Rpb24rPSIgcmVhZGxpbmUke19kaXN0X3Zlci8uL30tJHtfcH0iCitk b25lCit1bnNldCBfdXJsCit1bnNldCBfcAogCi0JY2QgJHtYQlBTX1NSQ0RJU1RESVJ9LyR7cGtn bmFtZX0tJHt2ZXJzaW9ufQotCWlmIFsgIiR7X3BhdGNoX3Zlcn0iIC1ndCAwMDAgXTsgdGhlbgot CQlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCi0JCQlpZiBbIC1mIHJl YWRsaW5lJHt2ZXJzaW9uLy4vfS0ke3B9IF07IHRoZW4KLQkJCQljb250aW51ZQotCQkJZmkKLQkJ CWxvY2FsIHBhdGNoX3VybD0iJHt1cmx9L3JlYWRsaW5lJHtfZGlzdF92ZXIvLi99LSR7cH0iCi0J CQltc2dfbm9ybWFsICIgRmV0Y2hpbmcgJHtwYXRjaF91cmx9IC4uLlxuIgotCQkJJFhCUFNfRkVU Q0hfQ01EICIke3BhdGNoX3VybH0iCi0JCWRvbmUKLQlmaQorY2hlY2tzdW09ImUzMzlmNTE5NzE0 NzhkMzY5ZjhhMDUzYTMzMGExOTA3ODFhY2I5ODY0Y2Y0YzU0MTA2MGYxMjA3ODk0OGU0NjEKKyBk OGU1ZTk4OTMzY2Y1NzU2Zjg2MjI0M2MwNjAxY2I2OWQzNjY3YmIzM2YyYzdiNzUxZmU0ZTQwYjJj M2ZkMDY5IgorCitwb3N0X3BhdGNoKCkgewogCWNkICR7d3Jrc3JjfQogCWZvciBwIGluICQoc2Vx IC13IDAwMSAke19wYXRjaF92ZXJ9KTsgZG8KIAkJcGF0Y2ggLXMgLU5wMCAtaSAke1hCUFNfU1JD RElTVERJUn0vJHtwa2duYW1lfS0ke3ZlcnNpb259L3JlYWRsaW5lJHtfZGlzdF92ZXIvLi99LSR7 cH0K --===============1427058151919429004==--