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=-0.2 required=5.0 tests=ALL_TRUSTED, DKIM_ADSP_NXDOMAIN autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 28446 invoked from network); 20 Dec 2020 17:48:24 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 20 Dec 2020 17:48:24 -0000 Content-Type: multipart/mixed; boundary="===============2482004491093438930==" MIME-Version: 1.0 Subject: =?utf8?b?UmU6IFtQUiBQQVRDSF0gW1VwZGF0ZWRdIO+/vCBnc3RyZWFtZXIxOiB1cGRhdGUgdG8gMS4xOC4x?= To: ml@inbox.vuxu.org From: ndowens Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 20 Dec 2020 18:48:22 +0100 List-Id: Message-ID: <20201220174822.7eEHwxgy5rvK14WMH-gB1bs8Eogpo_rnhQT37Sdsflo@z> GitHub notification mails are now in MIME to allow UTF8. --===============2482004491093438930== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbmRvd2VucyBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vbmRv d2Vucy92b2lkLXBhY2thZ2VzIGdzdHJlYW1lcjEKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGlu dXgvdm9pZC1wYWNrYWdlcy9wdWxsLzI2NDExCgrvv7wgZ3N0cmVhbWVyMTogdXBkYXRlIHRvIDEu MTguMQpnc3QxLXB5dGhvbiB2ZXJzaW9uIDEuMTguMSBkb2Vzbid0IHN1cHBvcnQgcHl0aG9uMiBh bnltb3JlIHNvIGNhbiBub3QgdXBkYXRlIGl0DQoNCklmIHNvbWVvbmUgY2FuIHRlc3QgdXBkYXRl IHBsZWFzZSBsZXQgbWUga25vdyBpZiB1cGRhdGUgd29ya3MgZmluZS4NCg0KRm9yIG1lLCBubyBt YXR0ZXIgZ3N0IHZlcnNpb24gSSBoYXZlIGluc3RhbGxlZCBJIGNhbid0IG5vdCBnZXQgYXVkaW8g b3V0IGZyb20gYW4gYXBwIHRoYXQgZGVwZW5kcyBvbiBnc3RyZWFtZXIKCkEgcGF0Y2ggZmlsZSBm cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8yNjQx MS5wYXRjaCBpcyBhdHRhY2hlZA== --===============2482004491093438930== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-gstreamer1-26411.patch" RnJvbSAyZDA0MTk2OGRmMjVjMTczYzQ0YWQwY2VkYmIyZjQxMjU5ODk3MjRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gT3dlbnMgPG5kb3dlbnNAYXJ0aXhsaW51eC5vcmc+ CkRhdGU6IFN1biwgMTUgTm92IDIwMjAgMTA6NTY6MjMgLTA2MDAKU3ViamVjdDogW1BBVENIIDAx LzEwXSBnc3QtbGliYXY6IHVwZGF0ZSB0byAxLjE4LjEKCi0tLQogc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUgfCAxMiArKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBs YXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggNzE1NjM3ZTZkOTkuLjEyNzI1 OWU0YzM4IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2Ci12ZXJzaW9uPTEuMTYuMgordmVyc2lv bj0xLjE4LjEKIHJldmlzaW9uPTEKIHdya3NyYz0iJHtwa2duYW1lfS0ke3ZlcnNpb259IgogYnVp bGRfc3R5bGU9bWVzb24KQEAgLTEyLDE4ICsxMiwxMCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21l cGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hv bWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hl Y2tzdW09YzcyNGY2MTI3MDBjMTVhOTMzYzczNTZmYmVhYmIwYmI5NTcxZmI1NTM4ZjhiMWI1NGQ0 ZDJkOTQxODhkZWVmMgorY2hlY2tzdW09MzlhNzE3YmMyNjEzZWZiYmJhMTlkZjNjZjVjYWNmZjA5 ODc0NzFmYzgyODFiYTJjNWRjZGVhZGVkNzljMmVkOAogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFD SElORSIgaW4KIAkqLW11c2wpICMgUmVxdWlyZWQgYnkgbXVzbCBmb3IgTV9TUVJUMV8yCiAJCUNG TEFHUz0iLURfWE9QRU5fU09VUkNFIgogCQk7OwogZXNhYwotCi1wb3N0X2NvbmZpZ3VyZSgpIHsK LQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJeDg2XzY0LW11c2wpICMgY29tcGls aW5nIHdpdGggLU8zIHRyaWdnZXJzIGEgZ2NjIGJ1ZwotCQkJc2VkIC1pICdzLy1PMy8tTzIvZycg Z3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZy5tYWsKLQkJCTs7Ci0JZXNhYwotfQoKRnJvbSBiNDI3 MTZlMzgyYzZmNGUwMTczMTFhYjI3ODQyMjNlMDIxZGNhMjlkIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBOYXRoYW4gT3dlbnMgPG5kb3dlbnNAYXJ0aXhsaW51eC5vcmc+CkRhdGU6IFN1 biwgMTUgTm92IDIwMjAgMTM6NTk6MjcgLTA2MDAKU3ViamVjdDogW1BBVENIIDAyLzEwXSBnc3Qt b214OiB1cGRhdGUgdG8gMS4xOC4xCgotLS0KIHNyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZSB8IDIz ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCsp LCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUg Yi9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUKaW5kZXggYTRkMmZhZDc2MDkuLjA2ZjE5NDA0MDFm IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1vbXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3Qt b214L3RlbXBsYXRlCkBAIC0xLDI3ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3Qt b214JwogcGtnbmFtZT1nc3Qtb214Ci12ZXJzaW9uPTEuMTYuMgordmVyc2lvbj0xLjE4LjEKIHJl dmlzaW9uPTEKLWJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKLWNvbmZpZ3VyZV9hcmdzPSItLWRp c2FibGUtZXhhbXBsZXMiCi1ob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uIGdsaWIt ZGV2ZWwiCitidWlsZF9zdHlsZT1tZXNvbgorY29uZmlndXJlX2FyZ3M9Ii1EZXhhbXBsZXM9ZGlz YWJsZWQgLUR0YXJnZXQ9Z2VuZXJpYyIKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRo b24zIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwiCiBz aG9ydF9kZXNjPSJHU3RyZWFtZXIgT3Blbk1BWCBJTCB3cmFwcGVyIHBsdWdpbiAoMS54KSIKIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMS1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIK IGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2duYW1lfS0ke3ZlcnNp b259LnRhci54eiIKLWNoZWNrc3VtPTExZWQ0MTFhMmViYTc1NjEwZDcyMzMxZWViMTRmZjA1ZTJk ZjI4ZjRmZDA1Y2I2OTIyNWE4OGJlYzZkMjc0MzkKLQotY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJ TkUiIGluCi0JaTY4Nip8eDg2XzY0KnxhYXJjaDY0KnxwcGMqKQotCQkjIFhYWCBiZWxsYWdpbyB0 YXJnZXQKLQkJY29uZmlndXJlX2FyZ3MrPSIgLS13aXRoLW9teC10YXJnZXQ9Z2VuZXJpYyIKLQkJ OzsKLQlhcm12WzY3XSopCi0JCWNvbmZpZ3VyZV9hcmdzKz0iIC0td2l0aC1vbXgtdGFyZ2V0PXJw aSIKLQkJbWFrZWRlcGVuZHMrPSIgcnBpLWZpcm13YXJlIHJwaS11c2VybGFuZC1kZXZlbCIKLQkJ ZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJFhCUFNfQ1JPU1NfQkFTRS9vcHQvdmMvbGliL3BrZ2Nv bmZpZyIKLQkJQ0ZMQUdTPSItSSR7WEJQU19DUk9TU19CQVNFfS9vcHQvdmMvaW5jbHVkZS9JTCIK LQkJOzsKLWVzYWMKK2NoZWNrc3VtPTQyYThlMGY5NTE4Yjk0NjU1OTgxZWRlNDQxNjM4ZjlmOTM5 NWY0YjFiOWE0YjMyOWYwNjhlZTc5Mzk3NWE5NjUKCkZyb20gOWZiMGMxZmI3NDY5OTJhZWI3NzMy OTI0YjNlMjc0OWRkMDM4MWMyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmF0aGFu IE93ZW5zIDxuZG93ZW5zQGFydGl4bGludXgub3JnPgpEYXRlOiBTdW4sIDE1IE5vdiAyMDIwIDE0 OjAxOjU1IC0wNjAwClN1YmplY3Q6IFtQQVRDSCAwMy8xMF0gZ3N0cmVhbWVyLXZhYXBpOiB1cGRh dGUgdG8gMS4xOC4xCgotLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlIGIvc3JjcGtncy9nc3Ry ZWFtZXItdmFhcGkvdGVtcGxhdGUKaW5kZXggM2MzZWQ4NjY3M2EuLmZkOGQ5NmVmMjFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dz dHJlYW1lci12YWFwaS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2dzdHJlYW1lci12YWFwaScKIHBrZ25hbWU9Z3N0cmVhbWVyLXZhYXBpCi12ZXJzaW9uPTEu MTYuMgordmVyc2lvbj0xLjE4LjEKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWciCkBAIC0xMSw0ICsxMSw0IEBAIGxpY2Vuc2U9IkxHUEwt Mi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9y ZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0dTdHJlYW1l ci9nc3RyZWFtZXItdmFhcGkvbWFzdGVyL0NoYW5nZUxvZyIKIGRpc3RmaWxlcz0iJHtob21lcGFn ZX0vc3JjL2dzdHJlYW1lci12YWFwaS9nc3RyZWFtZXItdmFhcGktJHt2ZXJzaW9ufS50YXIueHoi Ci1jaGVja3N1bT0xOTFkZTdiMGFiNjRhODVkZDA4NzVjOTkwNzIxZTdiZTk1NTE4ZjYwZTJhOTEw NmJlY2ExNjIwMDRlZDdjNjAxCitjaGVja3N1bT00MDBkM2M0MjgxMGI1MGI0NTY2ZGYwM2YzNzMx OWE2YmRkNzU4Zjk2OTU2MGM0MDE0N2U3ZDlhM2IwZThhNmVhCgpGcm9tIDAwNjVhNTg1NDFiYmQz YjY4OTBkZGFmYTVkZjQ2NTMwZmM2ZjI0ZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE5hdGhhbiBPd2VucyA8bmRvd2Vuc0BhcnRpeGxpbnV4Lm9yZz4KRGF0ZTogU3VuLCAxNSBOb3Yg MjAyMCAxNDowOTo0MSAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMTBdIGdzdDEtcHl0aG9uMzog dXBkYXRlIHRvIDEuMTguMQoKLS0tCiBzcmNwa2dzL2dzdDEtcHl0aG9uMy9wYXRjaGVzL3B5dGhv bi0zLjgucGF0Y2ggfCAxMSAtLS0tLS0tLS0tLQogc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxh dGUgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3N0 MS1weXRob24zL3BhdGNoZXMvcHl0aG9uLTMuOC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv Z3N0MS1weXRob24zL3BhdGNoZXMvcHl0aG9uLTMuOC5wYXRjaCBiL3NyY3BrZ3MvZ3N0MS1weXRo b24zL3BhdGNoZXMvcHl0aG9uLTMuOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggY2JmMWE1OGVhNTEuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZ3N0MS1weXRob24zL3Bh dGNoZXMvcHl0aG9uLTMuOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0t LSBtZXNvbi5idWlsZAotKysrIG1lc29uLmJ1aWxkCi1AQCAtMjQsNyArMjQsNyBAQCBweWdvYmpl Y3RfZGVwID0gZGVwZW5kZW5jeSgncHlnb2JqZWN0LTMuMCcsIGZhbGxiYWNrOiBbJ3B5Z29iamVj dCcsICdweWdvYmplY3RfZAotIAotIHB5bW9kID0gaW1wb3J0KCdweXRob24nKQotIHB5dGhvbiA9 IHB5bW9kLmZpbmRfaW5zdGFsbGF0aW9uKGdldF9vcHRpb24oJ3B5dGhvbicpKQotLXB5dGhvbl9k ZXAgPSBweXRob24uZGVwZW5kZW5jeShyZXF1aXJlZCA6IHRydWUpCi0rcHl0aG9uX2RlcCA9IGRl cGVuZGVuY3koJ3B5dGhvbjMtZW1iZWQnLCByZXF1aXJlZCA6IHRydWUpCi0gCi0gcHl0aG9uX2Fi aV9mbGFncyA9IHB5dGhvbi5nZXRfdmFyaWFibGUoJ0FCSUZMQUdTJywgJycpCi0gcHlsaWJfbG9j ID0gZ2V0X29wdGlvbignbGlicHl0aG9uLWRpcicpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdDEt cHl0aG9uMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlCmluZGV4IDQw MjAxOGMwNDc2Li5lYjY3NTljMzc5OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QxLXB5dGhvbjMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QxLXB5dGhvbjMvdGVtcGxhdGUKQEAgLTEsMTAgKzEs OSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1weXRob24zJwogcGtnbmFtZT1nc3QxLXB5 dGhvbjMKLXZlcnNpb249MS4xNi4yCi1yZXZpc2lvbj0zCit2ZXJzaW9uPTEuMTguMQorcmV2aXNp b249MQogd3Jrc3JjPSJnc3QtcHl0aG9uLSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1tZXNvbgot cHljb21waWxlX21vZHVsZT0iZ2kvb3ZlcnJpZGVzIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0ibGliZ2xpYi1kZXZlbCBweXRob24zLWRldmVsIHB5 dGhvbjMtZ29iamVjdC1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCIKIGRlcGVuZHM9InB5 dGhvbjMtZ29iamVjdCIKQEAgLTEzLDQgKzEyLDQgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9y cGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9yLWxhdGVyIgogaG9tZXBh Z2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21l cGFnZX0vc3JjL2dzdC1weXRob24vZ3N0LXB5dGhvbi0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNr c3VtPTIwOGRmMzE0OGQ3M2Q5ZjQxNmQwMTY1NjQ3Mzc1ODVkOGVhNzYzZDkxMjAxNzMyZDQ0YjVm ZTY4OGM2Mjg4YTgKK2NoZWNrc3VtPTQyYjI4OTQyMmY3YWIzMjc1NzY3MDg0OGNmMjI0NWM1YThh OGIwOGE2NjVhOWNhYjY1ZGVkOGQ2OTM2NGY2ZjYKCkZyb20gZTA2ZmE4ZmY5MWQ0OGI0MGM0Y2Uy NDE2YmIwOTIxZTM0ZDIwZTkyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmF0aGFu IE93ZW5zIDxuZG93ZW5zQGFydGl4bGludXgub3JnPgpEYXRlOiBTdW4sIDE1IE5vdiAyMDIwIDE0 OjI2OjEzIC0wNjAwClN1YmplY3Q6IFtQQVRDSCAwNS8xMF0gZ3N0MS1lZGl0aW5nLXNlcnZpY2Vz OiB1cGRhdGUgdG8gMS4xOC4xCgotLS0KIHNyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3Rl bXBsYXRlIHwgMTEgKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QxLWVkaXRpbmctc2Vydmlj ZXMvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdDEtZWRpdGluZy1zZXJ2aWNlcy90ZW1wbGF0ZQppbmRl eCBhMjNmODc2ZDg0Yi4uNDM1MzA4NGQyMzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0MS1lZGl0 aW5nLXNlcnZpY2VzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2Vz L3RlbXBsYXRlCkBAIC0xLDggKzEsOCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1lZGl0 aW5nLXNlcnZpY2VzJwogcGtnbmFtZT1nc3QxLWVkaXRpbmctc2VydmljZXMKLXZlcnNpb249MS4x Ni4yCit2ZXJzaW9uPTEuMTguMQogcmV2aXNpb249MQotd3Jrc3JjPSIke3BrZ25hbWUvZ3N0MS9n c3RyZWFtZXJ9LSR7dmVyc2lvbn0iCit3cmtzcmM9IiR7cGtnbmFtZS9nc3QxL2dzdH0tJHt2ZXJz aW9ufSIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9ImdpciIKIGNvbmZpZ3VyZV9h cmdzPSItRGd0a19kb2M9ZGlzYWJsZWQiCkBAIC0xMiwxNiArMTIsMTUgQEAgc2hvcnRfZGVzYz0i R1N0cmVhbWVyIDEueCBFZGl0aW5nIFNlcnZpY2VzIgogbWFpbnRhaW5lcj0iVG95YW0gQ294IDxW YWVsYXRlcm5AZ21haWwuY29tPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBh Z2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKLWRpc3RmaWxlcz0iJHtob21l cGFnZX0vc3JjLyR7cGtnbmFtZS9nc3QxL2dzdH0vJHtwa2duYW1lL2dzdDEvZ3N0cmVhbWVyfS0k e3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTBlMDZhNjE5MWEwYzZjMTZlMTYyNzJiZjI1NzNj ZWNhZWIyNDVmMTA2Mjk0ODZhZDk0MGEyOTliZWY3MDBjMTYKLXB5dGhvbl92ZXJzaW9uPTIgI3Vu dmVyaWZpZWQKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZS9nc3QxL2dzdH0v JHtwa2duYW1lL2dzdDEvZ3N0fS0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU5M2NiM2Yx ODk2NTY1YzU3ZGVmYTcyNzU4ZTQ5YjZlYjY2ODVlMGY4MDRhYmQxODRmMzk1Yzk0ODIyYTM5MjcK IAogZ3N0MS1lZGl0aW5nLXNlcnZpY2VzLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufSIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2luY2x1ZGUKLQkJ dm1vdmUgdXNyL2xpYi8qLnNvCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCiAJCXZtb3ZlIHVzci9s aWIvcGtnY29uZmlnCiAJfQogfQoKRnJvbSAxNWZmMjJlNDkxMDUxNTk5NjgyNzVlZDE2ZGZiNTlk MGZkODNlZmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gT3dlbnMgPG5k b3dlbnNAYXJ0aXhsaW51eC5vcmc+CkRhdGU6IFN1biwgMTUgTm92IDIwMjAgMTA6NDY6MjIgLTA2 MDAKU3ViamVjdDogW1BBVENIIDA2LzEwXSBnc3QtcGx1Z2lucy1iYWQxOiB1cGRhdGUgdG8gMS4x OC4xCgotLS0KIC4uLi9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMucGF0Y2ggICAgICAgICAgICB8 IDI0ICsrKysrKysrLS0KIC4uLmFuLURyb3AtdXNlLW9mLVZLX1JFU1VMVF9CRUdJTl9SQU5HRS5w YXRjaCB8IDQ4IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90 ZW1wbGF0ZSAgICAgICAgICAgICB8ICA4ICsrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0 aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9nc3Qt cGx1Z2lucy1iYWQxL3BhdGNoZXMvdnVsa2FuLURyb3AtdXNlLW9mLVZLX1JFU1VMVF9CRUdJTl9S QU5HRS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS9wYXRjaGVz L25vLWdpci1hdXRvbWFnaWMucGF0Y2ggYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvcGF0Y2hl cy9uby1naXItYXV0b21hZ2ljLnBhdGNoCmluZGV4IDY4Yzc0ZWUxOGU1Li4zOGNjMmY1ZWRjMSAx MDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3BhdGNoZXMvbm8tZ2lyLWF1dG9t YWdpYy5wYXRjaAorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvcGF0Y2hlcy9uby1naXIt YXV0b21hZ2ljLnBhdGNoCkBAIC0xLDExICsxLDI1IEBACi0tLS0gbWVzb24uYnVpbGQJMjAxOS0w Ni0wOSAxMjo1NjozMS4zMDk0NzMyNjEgKzAyMDAKLSsrKyBtZXNvbi5idWlsZAkyMDE5LTA2LTA5 IDEyOjU2OjQ2LjE2NjY0OTI2NSArMDIwMAotQEAgLTQwNSw3ICs0MDUsNyBAQAorRnJvbSBkNGNi YTZiMjE0ZmY5YTYzMWNkZmI4NDVjMDcxMDFmOTc1MTBhYmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogTmF0aGFuIE93ZW5zIDxuZG93ZW5zQGFydGl4bGludXgub3JnPgorRGF0ZTog U3VuLCAxNSBOb3YgMjAyMCAxMDozMzo1MiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBuby1naXIt YXV0b21hdGljCisKKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IG1lc29uLmJ1aWxkIG1l c29uLmJ1aWxkCitpbmRleCA1ZDUyZWE5Li40YjJiNWVhIDEwMDY0NAorLS0tIG1lc29uLmJ1aWxk CisrKysgbWVzb24uYnVpbGQKK0BAIC00NDUsNyArNDQ1LDcgQEAgcHl0aG9uMyA9IGltcG9ydCgn cHl0aG9uJykuZmluZF9pbnN0YWxsYXRpb24oKQogIAogIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1p ci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCiAgZ25v bWUgPSBpbXBvcnQoJ2dub21lJykKLS1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1l c29uLmlzX2Nyb3NzX2J1aWxkKCkKLStidWlsZF9naXIgPSBnaXIuZm91bmQoKQorLWJ1aWxkX2dp ciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29w dGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKytidWlsZF9naXIgPSBnaXIuZm91bmQo KSBvciBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykuZW5hYmxlZCgpCiAgZ2lyX2luaXRfc2Vj dGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50Kixn Y2hhcioqKTsnICsgXAogICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwg VFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3Jl Z2lzdHJ5LnJlZycpICsgXAogICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAi IiwgVFJVRSk7JyArIFwKKy0tIAorMi4yOS4yCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFkMS9wYXRjaGVzL3Z1bGthbi1Ecm9wLXVzZS1vZi1WS19SRVNVTFRfQkVHSU5fUkFO R0UucGF0Y2ggYi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvcGF0Y2hlcy92dWxrYW4tRHJvcC11 c2Utb2YtVktfUkVTVUxUX0JFR0lOX1JBTkdFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAzMDI3MTQzOGQ4ZS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lu cy1iYWQxL3BhdGNoZXMvdnVsa2FuLURyb3AtdXNlLW9mLVZLX1JFU1VMVF9CRUdJTl9SQU5HRS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLXVwdHJlYW06IHllcyAobWFzdGVy KQotCi1Gcm9tIDI5YmY4ZDg1MjhlYzY5NGY2NWM4ZmFlMzEwYWRhYzk5NjMyMmNjNzQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSmFuIEFsZXhhbmRlciBTdGVmZmVucyAoaGVmdGln KSIgPGphbi5zdGVmZmVuc0BsdG5nbG9iYWwuY29tPgotRGF0ZTogU2F0LCA5IE1heSAyMDIwIDE5 OjU5OjQ2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZ1bGthbjogRHJvcCB1c2Ugb2YgVktfUkVT VUxUX0JFR0lOX1JBTkdFCi0KLVRoaXMgd2FzIHJlbW92ZWQgaW4gVnVsa2FuIDEuMi4xNDAuCi0K LT4gU2hvcnRseSBhZnRlciAyMDIwLTA0LTI0LCB3ZSB3aWxsIGJlIHJlbW92aW5nIHRoZSBhdXRv bWF0aWNhbGx5Ci0+IGdlbmVyYXRlZCBgVktfKl9CRUdJTl9SQU5HRWAsIGBWS18qX0VORF9SQU5H RWAsIGFuZCBgVktfKl9SQU5HRV9TSVpFYAotPiB0b2tlbnMgZnJvbSB0aGUgVnVsa2FuIGhlYWRl cnMuIFRoZXNlIHRva2VucyBhcmUgY3VycmVudGx5IGRlZmluZWQgZm9yCi0+IHNvbWUgZW51bWVy YXRlZCB0eXBlcywgYnV0IGFyZSBleHBsaWNpdGx5IG5vdCBwYXJ0IG9mIHRoZSBWdWxrYW4gQVBJ LgotPiBUaGV5IGV4aXN0ZWQgb25seSB0byBzdXBwb3J0IHNvbWUgVnVsa2FuIGltcGxlbWVudGF0 aW9uIGludGVybmFscywKLT4gd2hpY2ggbm8gbG9uZ2VyIHJlcXVpcmUgdGhlbS4gV2Ugd2lsbCBi ZSBhY2NlcHRpbmcgY29tbWVudHMgb24gdGhpcwotPiB0b3BpYyBpbiBbIzEyMzBdLCBidXQgd2Ug c3Ryb25nbHkgc3VnZ2VzdCBhbnkgZXh0ZXJuYWwgcHJvamVjdHMgdXNpbmcKLT4gdGhlc2UgdG9r ZW5zIGltbWVkaWF0ZWx5IG1pZ3JhdGUgYXdheSBmcm9tIHRoZW0uCi0KLVsjMTIzMF06IGh0dHBz Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLURvY3MvaXNzdWVzLzEyMzAKLS0tLQot IGV4dC92dWxrYW4vdmtlcnJvci5jIHwgNCArLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Vycm9y LmMgYi9leHQvdnVsa2FuL3ZrZXJyb3IuYwotaW5kZXggM2ZlYzI3ZTRkLi5jOTE1ODlkOWIgMTAw NjQ0Ci0tLS0gZXh0L3Z1bGthbi92a2Vycm9yLmMKLSsrKyBleHQvdnVsa2FuL3ZrZXJyb3IuYwot QEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSAidmtlcnJvci5oIgotIAotIC8qICpJTkRFTlQt T0ZGKiAqLwotLXN0YXRpYyBjb25zdCBzdHJ1Y3QgCi0rc3RhdGljIGNvbnN0IHN0cnVjdAotIHsK LSAgIFZrUmVzdWx0IHJlc3VsdDsKLSAgIGNvbnN0IGNoYXIgKnN0cjsKLUBAIC02Myw4ICs2Myw2 IEBAIF92a19yZXN1bHRfdG9fc3RyaW5nIChWa1Jlc3VsdCByZXN1bHQpCi0gCi0gICBpZiAocmVz dWx0ID49IDApCi0gICAgIHJldHVybiBOVUxMOwotLSAgaWYgKHJlc3VsdCA8IFZLX1JFU1VMVF9C RUdJTl9SQU5HRSkKLS0gICAgcmV0dXJuICJVbmtub3duIEVycm9yIjsKLSAKLSAgIGZvciAoaSA9 IDA7IGkgPCBHX05fRUxFTUVOVFMgKHZrX3Jlc3VsdF9zdHJpbmdfbWFwKTsgaSsrKSB7Ci0gICAg IGlmIChyZXN1bHQgPT0gdmtfcmVzdWx0X3N0cmluZ19tYXBbaV0ucmVzdWx0KQotLS0gCi0yLjI2 LjIKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlIGIvc3Jj cGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCmluZGV4IDIxMjIwM2MyNGExLi41ZTc0NGVi ODRjNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5zLWJh ZDEKLXZlcnNpb249MS4xNi4yCi1yZXZpc2lvbj0xMAordmVyc2lvbj0xLjE4LjEKK3JldmlzaW9u PTEKIHdya3NyYz0iJHtwa2duYW1lLzEvfS0ke3ZlcnNpb259IgogYnVpbGRfaGVscGVyPSJnaXIi CiBidWlsZF9zdHlsZT1tZXNvbgpAQCAtMTUsNyArMTUsNyBAQCBjb25maWd1cmVfYXJncz0iLURw YWNrYWdlLW9yaWdpbj1odHRwczovL3ZvaWRsaW51eC5vcmcgLURndGtfZG9jPWZhbHNlCiAgLUR3 aWxkbWlkaT1kaXNhYmxlZCAtRHdwZT1kaXNhYmxlZCAtRGRpcmVjdGZiPWRpc2FibGVkCiAgLURn bWU9JCh2b3B0X2lmIGdtZSBlbmFibGVkIGRpc2FibGVkKQogIC1EaW50cm9zcGVjdGlvbj0kKHZv cHRfaWYgZ2lyIGVuYWJsZWQgZGlzYWJsZWQpIC1EbmVvbj1kaXNhYmxlZCIKLWhvc3RtYWtlZGVw ZW5kcz0iYXV0b21ha2UgZ2V0dGV4dCBsaWJ0b29sIHBrZy1jb25maWcgcHl0aG9uIGdsaWItZGV2 ZWwKK2hvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dCBsaWJ0b29sIHBrZy1jb25maWcg cHl0aG9uMyBnbGliLWRldmVsCiAgb3JjIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iYWxz YS1saWItZGV2ZWwgY2VsdC1kZXZlbCBsaWJyZXNzbC1kZXZlbCBleGVtcGktZGV2ZWwKICBnc3Qt cGx1Z2lucy1iYXNlMS1kZXZlbCBsaWJkY2EtZGV2ZWwgb3JjLWRldmVsIGxpYm1tcy1kZXZlbApA QCAtMzYsNyArMzYsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciwgTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21l cGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hv bWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6 IgotY2hlY2tzdW09ZjFjYjdhYTIzODk1NjlhNTM0MzY2MWFhZTQ3M2YwYTk0MGE5MGI4NzIwMDE4 MjRiYzQ3ZmE4MDcyYTA0MWU3NAorY2hlY2tzdW09YzE5NTk3OGM4NWQ5NzQwNmMwNWViOWQ0M2Fj NTRiOWFiMzVlZGE2ZmZkYWUzMmIzZWQ1OTdiOGYxNzQzYzFiMgogCiBidWlsZF9vcHRpb25zPSJn aXIgZ21lIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJnaXIiCgpGcm9tIDk1OGRkNDkxMDgzMTE3 ZjM5YzZhYWZjNTQ3MDdjZmQ0NjhlMWYxNmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE5hdGhhbiBPd2VucyA8bmRvd2Vuc0BhcnRpeGxpbnV4Lm9yZz4KRGF0ZTogU3VuLCAxNSBOb3Yg MjAyMCAxMDo1MjozMCAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIGdzdC1wbHVnaW5zLWdv b2QxOiB1cGRhdGUgdG8gMS4xOC4xCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVt cGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3RlbXBsYXRl IGIvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQppbmRleCBiYTMyNmJlM2YxZC4u NjViNzczZWYwZjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWdvb2QxJwogcGtnbmFtZT1nc3Qt cGx1Z2lucy1nb29kMQotdmVyc2lvbj0xLjE2LjIKLXJldmlzaW9uPTMKK3ZlcnNpb249MS4xOC4x CityZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0 eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURkdj1kaXNhYmxlZCAtRGR2MTM5ND1kaXNhYmxl ZCAtRHNob3V0Mj1kaXNhYmxlZCAtRHF0NT1lbmFibGVkCkBAIC0yMyw3ICsyMyw3IEBAIG1haW50 YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIu MS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmci CiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30t JHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT00MGJiM2JhZmRhMjVjMGI3MzljOGZjMzZlNDgz ODBmY2NmNjFjNGQzZjgzNzQ3ZTk3YWMzZjliMDE3MWIxMzE5CitjaGVja3N1bT1lMjEwZTkxYTU1 OTBlY2I2YWNjYzlkMDZjOTQ5YTU4Y2E2ODk3ZDhlZGIzYjNkNTU4MjhlNDI0YzYyNGY2MjZjCiAK IGJ1aWxkX29wdGlvbnM9Imd0azMiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9Imd0azMiCgpGcm9t IGIwODI5YTgyNWYyZTg5ZDVkNDc3OGY4OTU3NGU5YTQ2OTZmZGI5N2UgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IE5hdGhhbiBPd2VucyA8bmRvd2Vuc0BhcnRpeGxpbnV4Lm9yZz4KRGF0 ZTogU3VuLCAxNSBOb3YgMjAyMCAxMDo1NDo1MyAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMTBd IGdzdC1wbHVnaW5zLXVnbHkxOiB1cGRhdGUgdG8gMS4xOC4xCgotLS0KIHNyY3BrZ3MvZ3N0LXBs dWdpbnMtdWdseTEvdGVtcGxhdGUgfCA4ICsrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNl cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdp bnMtdWdseTEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3RlbXBsYXRlCmlu ZGV4IGM0NjYxZjY5MTM4Li40ZDIzOWZmMWEyZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1 Z2lucy11Z2x5MS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1wbHVnaW5zLXVnbHkxL3RlbXBs YXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy11 Z2x5MScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtdWdseTEKLXZlcnNpb249MS4xNi4yCi1yZXZpc2lv bj0yCit2ZXJzaW9uPTEuMTguMQorcmV2aXNpb249MQogd3Jrc3JjPSIke3BrZ25hbWUvMS99LSR7 dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EYW1ybmI9ZGlz YWJsZWQgLURhbXJ3YmRlYz1kaXNhYmxlZCAtRHNpZHBsYXk9ZGlzYWJsZWQiCiAjIFhYWCBhZGQg cmVxdWlyZWQgcGtncyBmb3IgdGhlIGFtciwgc2lkIHBsdWdpbnMuCi1ob3N0bWFrZWRlcGVuZHM9 InBrZy1jb25maWcgaW50bHRvb2wgcHl0aG9uIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IGludGx0b29sIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBsaWJ4bWwyLWRldmVs IGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJkdmRyZWFkLWRldmVs IGxpYm1hZC1kZXZlbCB4MjY0LWRldmVsIG1wZzEyMy1kZXZlbAogIG9yYy1kZXZlbCBsaWJhNTIt ZGV2ZWwgbGlibXBlZzItZGV2ZWwgbGFtZS1kZXZlbCIKQEAgLTE2LDUgKzE2LDUgQEAgbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4x LW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIK IGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZS8xL30vJHtwa2duYW1lLzEvfS0k e3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPTU1MDA0MTViODY1ZThiNjI3NzVkNDc0MmNiYjlm MzcxNDZhNTBjYWVjZmMwZTdhNmZjMDE2MGQzYzU2MGZiY2EKK2NoZWNrc3VtPTE4Y2Q2Y2I4Mjll Yjk2MTFjYTYzY2JjYmY0NmFjYTBmMGRlMWRkMjhiMmRmMThjYWEyODM0MzI2YTc1ZmY3MjUKIGxp YjMyZGlzYWJsZWQ9eWVzCgpGcm9tIDIzYWVhNDI3OTZjNjc2OTA2ZTAwNzk1NmM2MDk1MjU1MGZl ODBiZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5hdGhhbiBPd2VucyA8bmRvd2Vu c0BhcnRpeGxpbnV4Lm9yZz4KRGF0ZTogU3VuLCAxNSBOb3YgMjAyMCAxMDozMToxNiAtMDYwMApT dWJqZWN0OiBbUEFUQ0ggMDkvMTBdIGdzdC1wbHVnaW5zLWJhc2UxOiB1cGRhdGUgdG8gMS4xOC4x CgpSZW1pdmVkIHNuZGlvIHBhdGNoIGR1ZSB0byB1cHN0cmVhbQotLS0KIC4uLi9wYXRjaGVzL25v LWdpci1hdXRvbWFnaWMucGF0Y2ggICAgICAgICAgICB8ICAgMjQgKy0KIHNyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFzZTEvcGF0Y2hlcy9zbmRpby5wYXRjaCB8IDExMzQgLS0tLS0tLS0tLS0tLS0tLS0K IHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgICAgICAgICAgICB8ICAgMTIgKy0K IHNyY3BrZ3MvZ3N0LXNuZGlvICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog NCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxMTQxIGRlbGV0aW9ucygtKQogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvcGF0Y2hlcy9zbmRpby5w YXRjaAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvZ3N0LXNuZGlvCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMucGF0Y2gg Yi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRj aAppbmRleCBmMTIyNjA0MWFlNi4uMzY0ODNhMTBlMDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFzZTEvcGF0Y2hlcy9uby1naXItYXV0b21hZ2ljLnBhdGNoCisrKyBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFzZTEvcGF0Y2hlcy9uby1naXItYXV0b21hZ2ljLnBhdGNoCkBAIC0x LDExICsxLDI1IEBACi0tLS0gbWVzb24uYnVpbGQJMjAxOS0wNi0wOSAxMDo1MzowNi42MDc4NTkx ODIgKzAyMDAKLSsrKyBtZXNvbi5idWlsZAkyMDE5LTA2LTA5IDEwOjUzOjI0Ljk1MzA4ODM4OSAr MDIwMAotQEAgLTM1Niw3ICszNTYsNyBAQAorRnJvbSAwZDczNGViMjMxNGZjNjBkZWVlNTlkZTVm MTQ0MDYxN2UwNGU1MTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0aGFuIE93 ZW5zIDxuZG93ZW5zQGFydGl4bGludXgub3JnPgorRGF0ZTogU3VuLCAxNSBOb3YgMjAyMCAxMDoy NTozMCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBuby1naXItYXV0b21hdGljCisKKy0tLQorIG1l c29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQorCitkaWZmIC0tZ2l0IG1lc29uLmJ1aWxkIG1lc29uLmJ1aWxkCitpbmRleCA1ZWNj ZTdmLi45OGY4MTEzIDEwMDY0NAorLS0tIG1lc29uLmJ1aWxkCisrKysgbWVzb24uYnVpbGQKK0BA IC00MTYsNyArNDE2LDcgQEAgZW5kaWYKICAKICBnaXIgPSBmaW5kX3Byb2dyYW0oJ2ctaXItc2Nh bm5lcicsIHJlcXVpcmVkIDogZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpKQogIGdub21lID0g aW1wb3J0KCdnbm9tZScpCi0tYnVpbGRfZ2lyID0gZ2lyLmZvdW5kKCkgYW5kIG5vdCBtZXNvbi5p c19jcm9zc19idWlsZCgpCi0rYnVpbGRfZ2lyID0gZ2lyLmZvdW5kKCkKKy1idWlsZF9naXIgPSBn aXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24o J2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisrYnVpbGRfZ2lyID0gZ2lyLmZvdW5kKCkgb3Ig Z2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKQogIGdpcl9pbml0X3NlY3Rpb24g PSBbICctLWFkZC1pbml0LXNlY3Rpb249ZXh0ZXJuIHZvaWQgZ3N0X2luaXQoZ2ludCosZ2NoYXIq Kik7JyArIFwKICAgICAgJ2dfc2V0ZW52KCJHU1RfUkVHSVNUUllfRElTQUJMRSIsICJ5ZXMiLCBU UlVFKTsnICsgXAogICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJV RSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lz dHJ5LnJlZycpICsgXAorLS0gCisyLjI5LjIKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1 Z2lucy1iYXNlMS9wYXRjaGVzL3NuZGlvLnBhdGNoIGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNl MS9wYXRjaGVzL3NuZGlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTYx ZmI4OGU2Ny4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS9wYXRj aGVzL3NuZGlvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzNCArMCwwIEBACi1Tb3VyY2U6 IE9wZW5CU0QgcG9ydHMsIGFkYXB0ZWQgdG8gd29yayB3aXRoIG1lc29uCi1VcHN0cmVhbTogTm8K LVJlYXNvbjogc25kaW8gc3VwcG9ydAotCi1kaWZmIC0tZ2l0IGV4dC9tZXNvbi5idWlsZCBleHQv bWVzb24uYnVpbGQKLWluZGV4IGQ5ODRiNTAuLjVmMGJlY2MgMTAwNjQ0Ci0tLS0gZXh0L21lc29u LmJ1aWxkCi0rKysgZXh0L21lc29uLmJ1aWxkCi1AQCAtNSw1ICs1LDYgQEAgc3ViZGlyKCdsaWJ2 aXN1YWwnKQotIHN1YmRpcignb2dnJykKLSBzdWJkaXIoJ29wdXMnKQotIHN1YmRpcigncGFuZ28n KQotK3N1YmRpcignc25kaW8nKQotIHN1YmRpcigndGhlb3JhJykKLSBzdWJkaXIoJ3ZvcmJpcycp Ci1kaWZmIC0tZ2l0IGV4dC9zbmRpby9nc3RzbmRpby5jIGV4dC9zbmRpby9nc3RzbmRpby5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjMyMWRjMgotLS0tIC9kZXYvbnVs bAotKysrIGV4dC9zbmRpby9nc3RzbmRpby5jCi1AQCAtMCwwICsxLDQwMSBAQAotKy8qCi0rICog Q29weXJpZ2h0IChDKSAyMDA4IEphY29iIE1ldXNlciA8amFrZW1zckBzZGYubG9uZXN0YXIub3Jn PgotKyAqIENvcHlyaWdodCAoQykgMjAxMiBBbGV4YW5kcmUgUmF0Y2hvdiA8YWxleEBjYW91YS5v cmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJp YnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBm ZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCi0rICogY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGll cy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVU SE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09G VFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxF IEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExP U1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsgKiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9V VCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9G IFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVk ZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUg ImdzdHNuZGlvLmgiCi0rCi0rR1NUX0RFQlVHX0NBVEVHT1JZIChnc3Rfc25kaW9fZGVidWcpOwot KyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9zbmRpb19kZWJ1ZwotKwotK0dUeXBlIGdzdF9z bmRpb3NpbmtfZ2V0X3R5cGUgKHZvaWQpOwotK0dUeXBlIGdzdF9zbmRpb3NyY19nZXRfdHlwZSAo dm9pZCk7Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBs dWdpbikKLSt7Ci0rICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3NuZGlvX2RlYnVnLCAi c25kaW8iLCAwLCAic25kaW8gcGx1Z2lucyIpOwotKwotKyAgLyogcHJlZmVyIHNuZGlvc3JjIG92 ZXIgcHVsc2VzcmMgKEdTVF9SQU5LX1BSSU1BUlkgKyAxMCkgKi8KLSsgIGlmICghZ3N0X2VsZW1l bnRfcmVnaXN0ZXIgKHBsdWdpbiwgInNuZGlvc3JjIiwgR1NUX1JBTktfUFJJTUFSWSArIDIwLAot KyAgICAgICAgICBnc3Rfc25kaW9zcmNfZ2V0X3R5cGUoKSkpCi0rICAgIHJldHVybiBGQUxTRTsK LSsgIC8qIHByZWZlciBzbmRpb3Npbmsgb3ZlciBwdWxzZXNpbmsgKEdTVF9SQU5LX1BSSU1BUlkg KyAxMCkgKi8KLSsgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInNuZGlvc2lu ayIsIEdTVF9SQU5LX1BSSU1BUlkgKyAyMCwKLSsgICAgICAgICAgZ3N0X3NuZGlvc2lua19nZXRf dHlwZSgpKSkKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK0dT VF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKLSsgICAgR1NUX1ZFUlNJT05fTUlO T1IsCi0rICAgIHNuZGlvLAotKyAgICAic25kaW8gcGx1Z2luIGxpYnJhcnkiLAotKyAgICBwbHVn aW5faW5pdCwgVkVSU0lPTiwgR1NUX0xJQ0VOU0UsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNL QUdFX09SSUdJTikKLSsKLSsvKgotKyAqIGNvbW1vbiBjb2RlIHRvIHNyYyBhbmQgc2luawotKyAq LwotKwotK3ZvaWQKLStnc3Rfc25kaW9faW5pdCAoc3RydWN0IGdzdHNuZGlvICpzaW8sIEdPYmpl Y3QgKm9iaikKLSt7Ci0rICBzaW8tPm9iaiA9IG9iajsKLSsgIHNpby0+aGRsID0gTlVMTDsKLSsg IHNpby0+ZGV2aWNlID0gZ19zdHJkdXAgKFNJT19ERVZBTlkpOwotK30KLSsKLSt2b2lkCi0rZ3N0 X3NuZGlvX2ZpbmFsaXplIChzdHJ1Y3QgZ3N0c25kaW8gKnNpbykKLSt7Ci0rICBnc3RfY2Fwc19y ZXBsYWNlICgmc2lvLT5jdXJfY2FwcywgTlVMTCk7Ci0rICBnX2ZyZWUgKHNpby0+ZGV2aWNlKTsK LSt9Ci0rCi0rR3N0Q2FwcyAqCi0rZ3N0X3NuZGlvX2dldGNhcHMgKHN0cnVjdCBnc3RzbmRpbyAq c2lvLCBHc3RDYXBzICogZmlsdGVyKQotK3sKLSsgIGlmIChzaW8tPmN1cl9jYXBzID09IE5VTEwp IHsKLSsgICAgLyogWFhYICovCi0rICAgIEdTVF9MT0dfT0JKRUNUIChzaW8tPm9iaiwgImdldGNh cHMgY2FsbGVkLCByZXR1cm5pbmcgdGVtcGxhdGUgY2FwcyIpOwotKyAgICByZXR1cm4gTlVMTDsK LSsgIH0KLSsKLSsgIEdTVF9MT0dfT0JKRUNUIChzaW8tPm9iaiwgInJldHVybmluZyAlIiBHU1Rf UFRSX0ZPUk1BVCwgc2lvLT5jdXJfY2Fwcyk7Ci0rCi0rICBpZiAoZmlsdGVyKSB7Ci0rICAgIHJl dHVybiBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoZmlsdGVyLAotKyAgICAgIHNpby0+Y3VyX2Nh cHMsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0rICB9IGVsc2UgewotKyAgICByZXR1cm4g Z3N0X2NhcHNfcmVmIChzaW8tPmN1cl9jYXBzKTsKLSsgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQK LStnc3Rfc25kaW9fb252b2wgKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCkKLSt7Ci0rICBz dHJ1Y3QgZ3N0c25kaW8gKnNpbyA9IGFyZzsKLSsgIHNpby0+dm9sdW1lID0gdm9sOwotKyAgZ19v YmplY3Rfbm90aWZ5IChHX09CSkVDVCAoc2lvLT5vYmopLCAibXV0ZSIpOwotKyAgZ19vYmplY3Rf bm90aWZ5IChHX09CSkVDVCAoc2lvLT5vYmopLCAidm9sdW1lIik7Ci0rfQotKwotK2dib29sZWFu Ci0rZ3N0X3NuZGlvX29wZW4gKHN0cnVjdCBnc3RzbmRpbyAqc2lvLCBnaW50IG1vZGUpCi0rewot KyAgR1ZhbHVlIGxpc3QgPSBHX1ZBTFVFX0lOSVQsIGl0ZW0gPSBHX1ZBTFVFX0lOSVQ7Ci0rICBH c3RTdHJ1Y3R1cmUgKnM7Ci0rICBHc3RDYXBzICpjYXBzOwotKyAgc3RydWN0IHNpb19lbmMgKmVu YzsKLSsgIHN0cnVjdCBzaW9fY2FwIGNhcDsKLSsgIGNoYXIgZm10WzE2XTsKLSsgIGludCBpLCBj aGFuOwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAoc2lvLT5vYmosICJvcGVuIik7Ci0rCi0rICBz aW8tPmhkbCA9IHNpb19vcGVuIChzaW8tPmRldmljZSwgbW9kZSwgMCk7Ci0rICBpZiAoc2lvLT5o ZGwgPT0gTlVMTCkgewotKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2lvLT5vYmosIFJFU09VUkNF LCBPUEVOX1JFQURfV1JJVEUsCi0rCSgiQ291bGRuJ3Qgb3BlbiBzbmRpbyBkZXZpY2UiKSwgKE5V TEwpKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKyAgc2lvLT5tb2RlID0gbW9kZTsKLSsK LSsgIGlmICghc2lvX2dldGNhcChzaW8tPmhkbCwgJmNhcCkpIHsKLSsgICAgR1NUX0VMRU1FTlRf RVJST1IgKHNpbywgUkVTT1VSQ0UsIE9QRU5fV1JJVEUsCi0rCSgiQ291bGRuJ3QgZ2V0IGRldmlj ZSBjYXBhYmlsaXRpZXMiKSwgKE5VTEwpKTsKLSsgICAgc2lvX2Nsb3NlKHNpby0+aGRsKTsKLSsg ICAgc2lvLT5oZGwgPSBOVUxMOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rICBpZiAoY2Fw Lm5jb25mID09IDApIHsKLSsgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbywgUkVTT1VSQ0UsIE9Q RU5fV1JJVEUsCi0rCSgiRGV2aWNlIGhhcyBlbXB0eSBjYXBhYmlsaXRpZXMiKSwgKE5VTEwpKTsK LSsgICAgc2lvX2Nsb3NlKHNpby0+aGRsKTsKLSsgICAgc2lvLT5oZGwgPSBOVUxMOwotKyAgICBy ZXR1cm4gRkFMU0U7Ci0rICB9Ci0rICBzaW9fb252b2wgKHNpby0+aGRsLCBnc3Rfc25kaW9fb252 b2wsIHNpbyk7Ci0rCi0rICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwotKyAgcyA9IGdz dF9zdHJ1Y3R1cmVfbmV3ICgiYXVkaW8veC1yYXciLCAoY2hhciAqKU5VTEwsICh2b2lkICopTlVM TCk7Ci0rCi0rICAvKgotKyAgICogc2NhbiBzdXBwb3J0ZWQgcmF0ZXMKLSsgICAqLwotKyAgZ192 YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7Ci0rICBnX3ZhbHVlX2luaXQgKCZpdGVt LCBHX1RZUEVfSU5UKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBTSU9fTlJBVEU7IGkrKykgewotKyAg ICAgIGlmICgoY2FwLmNvbmZzWzBdLnJhdGUgJiAoMSA8PCBpKSkgPT0gMCkKLSsJICBjb250aW51 ZTsKLSsgICAgICBnX3ZhbHVlX3NldF9pbnQoJml0ZW0sIGNhcC5yYXRlW2ldKTsKLSsgICAgICBn c3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmaXRlbSk7Ci0rICB9Ci0rICBnc3Rf c3RydWN0dXJlX3NldF92YWx1ZSAocywgInJhdGUiLCAmbGlzdCk7Ci0rICBnX3ZhbHVlX3Vuc2V0 ICgmaXRlbSk7Ci0rICBnX3ZhbHVlX3Vuc2V0ICgmbGlzdCk7Ci0rCi0rICAvKgotKyAgICogc2Nh biBzdXBwb3J0ZWQgY2hhbm5lbHMKLSsgICAqLwotKyAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NU X1RZUEVfTElTVCk7Ci0rICBnX3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfSU5UKTsKLSsgIGNo YW4gPSAobW9kZSA9PSBTSU9fUExBWSkgPyBjYXAuY29uZnNbMF0ucGNoYW4gOiBjYXAuY29uZnNb MF0ucmNoYW47Ci0rICBmb3IgKGkgPSAwOyBpIDwgU0lPX05DSEFOOyBpKyspIHsKLSsgICAgICBp ZiAoKGNoYW4gJiAoMSA8PCBpKSkgPT0gMCkKLSsJICBjb250aW51ZTsKLSsgICAgICBnX3ZhbHVl X3NldF9pbnQoJml0ZW0sIChtb2RlID09IFNJT19QTEFZKSA/IGNhcC5wY2hhbltpXSA6IGNhcC5y Y2hhbltpXSk7Ci0rICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJml0 ZW0pOwotKyAgfQotKyAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJjaGFubmVscyIsICZs aXN0KTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZsaXN0 KTsKLSsKLSsgIC8qCi0rICAgKiBzY2FuIHN1cHBvcnRlZCBlbmNvZGluZ3MKLSsgICAqLwotKyAg Z192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7Ci0rICBnX3ZhbHVlX2luaXQgKCZp dGVtLCBHX1RZUEVfU1RSSU5HKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBTSU9fTkVOQzsgaSsrKSB7 Ci0rICAgICAgaWYgKChjYXAuY29uZnNbMF0uZW5jICYgKDEgPDwgaSkpID09IDApCi0rCSAgY29u dGludWU7Ci0rICAgICAgZW5jID0gY2FwLmVuYyArIGk7Ci0rICAgICAgaWYgKGVuYy0+Yml0cyAl IDggIT0gMCkKLSsJICBjb250aW51ZTsKLSsgICAgICBpZiAoZW5jLT5iaXRzIDwgZW5jLT5icHMg KiA4ICYmIGVuYy0+bXNiKQotKwkgIGNvbnRpbnVlOwotKyAgICAgIGlmIChlbmMtPmJpdHMgPT0g ZW5jLT5icHMgKiA4KSB7Ci0rCSAgc25wcmludGYoZm10LCBzaXplb2YoZm10KSwgIiVzJXUlcyIs Ci0rCQkgICBlbmMtPnNpZyA/ICJTIiA6ICJVIiwKLSsJCSAgIGVuYy0+Yml0cywKLSsJCSAgIGVu Yy0+YnBzID4gMSA/IChlbmMtPmxlID8gIkxFIiA6ICJCRSIpIDogIiIpOwotKyAgICAgIH0gZWxz ZSB7Ci0rCSAgc25wcmludGYoZm10LCBzaXplb2YoZm10KSwgIiVzJXVfJXUlcyIsCi0rCQkgICBl bmMtPnNpZyA/ICJTIiA6ICJVIiwKLSsJCSAgIGVuYy0+Yml0cywKLSsJCSAgIGVuYy0+YnBzICog OCwKLSsJCSAgIGVuYy0+YnBzID4gMSA/IChlbmMtPmxlID8gIkxFIiA6ICJCRSIpIDogIiIpOwot KyAgICAgIH0KLSsgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcoJml0ZW0sIGZtdCk7Ci0rICAgICAg Z3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJml0ZW0pOwotKyAgfQotKyAgZ3N0 X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJmb3JtYXQiLCAmbGlzdCk7Ci0rICBnX3ZhbHVlX3Vu c2V0ICgmaXRlbSk7Ci0rICBnX3ZhbHVlX3Vuc2V0ICgmbGlzdCk7Ci0rCi0rICAvKgotKyAgICog YWRkIHRoZSBvbmx5IHN1cHBvcnRlZCBsYXlvdXQ6IGludGVybGVhdmVkCi0rICAgKi8KLSsgIGdf dmFsdWVfaW5pdCAoJml0ZW0sIEdfVFlQRV9TVFJJTkcpOwotKyAgZ192YWx1ZV9zZXRfc3RyaW5n KCZpdGVtLCAiaW50ZXJsZWF2ZWQiKTsKLSsgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzLCAi bGF5b3V0IiwgJml0ZW0pOwotKyAgZ192YWx1ZV91bnNldCAoJml0ZW0pOwotKwotKyAgZ3N0X2Nh cHNfYXBwZW5kX3N0cnVjdHVyZSAoY2Fwcywgcyk7Ci0rICBzaW8tPmN1cl9jYXBzID0gY2FwczsK LSsgIEdTVF9ERUJVRyAoImNhcHMgYXJlICVzIiwgZ3N0X2NhcHNfdG9fc3RyaW5nKGNhcHMpKTsK LSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9zbmRpb19jbG9zZSAoc3Ry dWN0IGdzdHNuZGlvICpzaW8pCi0rewotKyAgR1NUX0RFQlVHX09CSkVDVCAoc2lvLT5vYmosICJj bG9zZSIpOwotKwotKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnNpby0+Y3VyX2NhcHMsIE5VTEwpOwot KyAgc2lvX2Nsb3NlIChzaW8tPmhkbCk7Ci0rICBzaW8tPmhkbCA9IE5VTEw7Ci0rICByZXR1cm4g VFJVRTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25kaW9fY2IgKHZvaWQgKmFkZHIsIGlu dCBkZWx0YSkKLSt7Ci0rICBzdHJ1Y3QgZ3N0c25kaW8gKnNpbyA9IGFkZHI7Ci0rCi0rICBkZWx0 YSAqPSBzaW8tPmJwZjsKLSsgIGlmIChzaW8tPm1vZGUgPT0gU0lPX1BMQVkpCi0rICAgICAgc2lv LT5kZWxheSAtPSBkZWx0YTsKLSsgIGVsc2UKLSsgICAgICBzaW8tPmRlbGF5ICs9IGRlbHRhOwot K30KLSsKLStnYm9vbGVhbgotK2dzdF9zbmRpb19wcmVwYXJlIChzdHJ1Y3QgZ3N0c25kaW8gKnNp bywgR3N0QXVkaW9SaW5nQnVmZmVyU3BlYyAqc3BlYykKLSt7Ci0rICBzdHJ1Y3Qgc2lvX3BhciBw YXIsIHJldHBhcjsKLSsgIHVuc2lnbmVkIG5jaGFubmVsczsKLSsKLSsgIEdTVF9ERUJVR19PQkpF Q1QgKHNpbywgInByZXBhcmUiKTsKLSsKLSsgIGlmIChzcGVjLT50eXBlICE9IEdTVF9BVURJT19S SU5HX0JVRkZFUl9GT1JNQVRfVFlQRV9SQVcpIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAo c2lvLCBSRVNPVVJDRSwgT1BFTl9SRUFEX1dSSVRFLAotKwkoIk9ubHkgcmF3IGJ1ZmZlciBmb3Jt YXQgc3VwcG9ydGVkIGJ5IHNuZGlvIiksIChOVUxMKSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwot KyAgfQotKyAgaWYgKCFHU1RfQVVESU9fSU5GT19JU19JTlRFR0VSKCZzcGVjLT5pbmZvKSkgewot KyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW8sIFJFU09VUkNFLCBPUEVOX1JFQURfV1JJVEUs Ci0rCSgiT25seSBpbnRlZ2VyIGZvcm1hdCBzdXBwb3J0ZWQiKSwgKE5VTEwpKTsKLSsgICAgICBy ZXR1cm4gRkFMU0U7Ci0rICB9Ci0rICBpZiAoR1NUX0FVRElPX0lORk9fREVQVEgoJnNwZWMtPmlu Zm8pICUgOCkgewotKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW8sIFJFU09VUkNFLCBPUEVO X1JFQURfV1JJVEUsCi0rCSgiT25seSBkZXB0aHMgbXVsdGlwbGUgb2YgOCBhcmUgc3VwcG9ydGVk IiksIChOVUxMKSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKwotKyAgc2lvX2luaXRw YXIgKCZwYXIpOwotKyAgc3dpdGNoIChHU1RfQVVESU9fSU5GT19GT1JNQVQgKCZzcGVjLT5pbmZv KSkgewotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1M4OgotKyAgY2FzZSBHU1RfQVVESU9fRk9S TUFUX1U4OgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MxNkxFOgotKyAgY2FzZSBHU1RfQVVE SU9fRk9STUFUX1MxNkJFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UxNkxFOgotKyAgY2Fz ZSBHU1RfQVVESU9fRk9STUFUX1UxNkJFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MzMkxF OgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MzMkJFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9S TUFUX1UzMkxFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UzMkJFOgotKyAgY2FzZSBHU1Rf QVVESU9fRk9STUFUX1MyNF8zMkxFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MyNF8zMkJF OgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UyNF8zMkxFOgotKyAgY2FzZSBHU1RfQVVESU9f Rk9STUFUX1UyNF8zMkJFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MyNExFOgotKyAgY2Fz ZSBHU1RfQVVESU9fRk9STUFUX1MyNEJFOgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UyNExF OgotKyAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UyNEJFOgotKyAgICAgIGJyZWFrOwotKyAgZGVm YXVsdDoKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2lvLCBSRVNPVVJDRSwgT1BFTl9SRUFE X1dSSVRFLAotKwkgICgiVW5zdXBwb3J0ZWQgYXVkaW8gZm9ybWF0IiksCi0rCSAgKCJmb3JtYXQg PSAlZCIsIEdTVF9BVURJT19JTkZPX0ZPUk1BVCAoJnNwZWMtPmluZm8pKSk7Ci0rICAgICAgcmV0 dXJuIEZBTFNFOwotKyAgfQotKyAgcGFyLnNpZyA9IEdTVF9BVURJT19JTkZPX0lTX1NJR05FRCgm c3BlYy0+aW5mbyk7Ci0rICBwYXIuYml0cyA9IEdTVF9BVURJT19JTkZPX1dJRFRIKCZzcGVjLT5p bmZvKTsKLSsgIHBhci5icHMgPSBHU1RfQVVESU9fSU5GT19ERVBUSCgmc3BlYy0+aW5mbykgLyA4 OwotKyAgaWYgKHBhci5icHMgPiAxKQotKyAgICAgIHBhci5sZSA9IEdTVF9BVURJT19JTkZPX0lT X0xJVFRMRV9FTkRJQU4oJnNwZWMtPmluZm8pOwotKyAgaWYgKHBhci5iaXRzIDwgcGFyLmJwcyAq IDgpCi0rICAgICAgcGFyLm1zYiA9IDA7Ci0rICBwYXIucmF0ZSA9IEdTVF9BVURJT19JTkZPX1JB VEUoJnNwZWMtPmluZm8pOwotKyAgaWYgKHNpby0+bW9kZSA9PSBTSU9fUExBWSkKLSsgICAgICBw YXIucGNoYW4gPSBHU1RfQVVESU9fSU5GT19DSEFOTkVMUygmc3BlYy0+aW5mbyk7Ci0rICBlbHNl Ci0rICAgICAgcGFyLnJjaGFuID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMoJnNwZWMtPmluZm8p OwotKyAgcGFyLnJvdW5kID0gcGFyLnJhdGUgLyAxMDAwMDAwLiAqIHNwZWMtPmxhdGVuY3lfdGlt ZTsKLSsgIHBhci5hcHBidWZzeiA9IHBhci5yYXRlIC8gMTAwMDAwMC4gKiBzcGVjLT5idWZmZXJf dGltZTsKLSsKLSsgIGlmICghc2lvX3NldHBhciAoc2lvLT5oZGwsICZwYXIpKSB7Ci0rICAgICAg R1NUX0VMRU1FTlRfRVJST1IgKHNpbywgUkVTT1VSQ0UsIE9QRU5fV1JJVEUsCi0rCSgiVW5zdXBw b3J0ZWQgYXVkaW8gZW5jb2RpbmciKSwgKE5VTEwpKTsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0r ICB9Ci0rICBpZiAoIXNpb19nZXRwYXIgKHNpby0+aGRsLCAmcmV0cGFyKSkgewotKyAgICAgIEdT VF9FTEVNRU5UX0VSUk9SIChzaW8sIFJFU09VUkNFLCBPUEVOX1dSSVRFLAotKwkoIkNvdWxkbid0 IGdldCBhdWRpbyBkZXZpY2UgcGFyYW1ldGVycyIpLCAoTlVMTCkpOwotKyAgICAgIHJldHVybiBG QUxTRTsKLSsgIH0KLSsjaWYgMAotKyAgR1NUX0RFQlVHICgiZm9ybWF0ID0gJXMsICIKLSsgICAg ICAgICAicmVxdWVzdGVkOiBzaWcgPSAlZCwgYml0cyA9ICVkLCBicHMgPSAlZCwgbGUgPSAlZCwg bXNiID0gJWQsICIKLSsJICJyYXRlID0gJWQsIHBjaGFuID0gJWQsIHJvdW5kID0gJWQsIGFwcGJ1 ZnN6ID0gJWQ7ICIKLSsJICJyZXR1cm5lZDogc2lnID0gJWQsIGJpdHMgPSAlZCwgYnBzID0gJWQs IGxlID0gJWQsIG1zYiA9ICVkLCAiCi0rCSAicmF0ZSA9ICVkLCBwY2hhbiA9ICVkLCByb3VuZCA9 ICVkLCBhcHBidWZzeiA9ICVkLCBidWZzeiA9ICVkIiwKLSsJIEdTVF9BVURJT19JTkZPX05BTUUo JnNwZWMtPmluZm8pLAotKwkgcGFyLnNpZywgcGFyLmJpdHMsIHBhci5icHMsIHBhci5sZSwgcGFy Lm1zYiwKLSsJIHBhci5yYXRlLCBwYXIucGNoYW4sIHBhci5yb3VuZCwgcGFyLmFwcGJ1ZnN6LAot KwkgcmV0cGFyLnNpZywgcmV0cGFyLmJpdHMsIHJldHBhci5icHMsIHJldHBhci5sZSwgcmV0cGFy Lm1zYiwKLSsJIHJldHBhci5yYXRlLCByZXRwYXIucGNoYW4sIHJldHBhci5yb3VuZCwgcmV0cGFy LmFwcGJ1ZnN6LCByZXRwYXIuYnVmc3opOwotKyNlbmRpZgotKyAgaWYgKHBhci5iaXRzICE9IHJl dHBhci5iaXRzIHx8Ci0rICAgICAgcGFyLmJwcyAhPSByZXRwYXIuYnBzIHx8Ci0rICAgICAgcGFy LnJhdGUgIT0gcmV0cGFyLnJhdGUgfHwKLSsgICAgICAoc2lvLT5tb2RlID09IFNJT19QTEFZICYm IHBhci5wY2hhbiAhPSByZXRwYXIucGNoYW4pIHx8Ci0rICAgICAgKHNpby0+bW9kZSA9PSBTSU9f UkVDICYmIHBhci5yY2hhbiAhPSByZXRwYXIucmNoYW4pIHx8Ci0rICAgICAgKHBhci5icHMgPiAx ICYmIHBhci5sZSAhPSByZXRwYXIubGUpIHx8Ci0rICAgICAgKHBhci5iaXRzIDwgcGFyLmJwcyAq IDggJiYgcGFyLm1zYiAhPSByZXRwYXIubXNiKSkgewotKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9S IChzaW8sIFJFU09VUkNFLCBPUEVOX1dSSVRFLAotKwkoIkF1ZGlvIGRldmljZSByZWZ1c2VkIHJl cXVlc3RlZCBwYXJhbWV0ZXJzIiksIChOVUxMKSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwotKyAg fQotKwotKyAgbmNoYW5uZWxzID0gKHNpby0+bW9kZSA9PSBTSU9fUExBWSkgPyByZXRwYXIucGNo YW4gOiByZXRwYXIucmNoYW47Ci0rICBzcGVjLT5zZWdzaXplID0gcmV0cGFyLnJvdW5kICogcmV0 cGFyLmJwcyAqIG5jaGFubmVsczsKLSsgIHNwZWMtPnNlZ3RvdGFsID0gcmV0cGFyLmJ1ZnN6IC8g cmV0cGFyLnJvdW5kOwotKyAgc2lvLT5icGYgPSByZXRwYXIuYnBzICogbmNoYW5uZWxzOwotKyAg c2lvLT5kZWxheSA9IDA7Ci0rICBzaW9fb25tb3ZlIChzaW8tPmhkbCwgZ3N0X3NuZGlvX2NiLCBz aW8pOwotKwotKyAgaWYgKCFzaW9fc3RhcnQgKHNpby0+aGRsKSkgewotKyAgICBHU1RfRUxFTUVO VF9FUlJPUiAoc2lvLT5vYmosIFJFU09VUkNFLCBPUEVOX1JFQURfV1JJVEUsCi0rICAgICAgKCJD b3VsZCBub3Qgc3RhcnQgc25kaW8iKSwgKE5VTEwpKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAg fQotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK2dib29sZWFuCi0rZ3N0X3NuZGlvX3VucHJlcGFy ZSAoc3RydWN0IGdzdHNuZGlvICpzaW8pCi0rewotKyAgaWYgKHNpby0+aGRsKQotKyAgICBzaW9f c3RvcCAoc2lvLT5oZGwpOwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK3ZvaWQKLStnc3Rfc25k aW9fc2V0X3Byb3BlcnR5IChzdHJ1Y3QgZ3N0c25kaW8gKnNpbywgZ3VpbnQgcHJvcF9pZCwKLSsg ICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBzd2l0 Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0RFVklDRToKLSsgICAgICBnX2ZyZWUgKHNp by0+ZGV2aWNlKTsKLSsgICAgICBzaW8tPmRldmljZSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFs dWUpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfVk9MVU1FOgotKyAgICAgIHNpb19z ZXR2b2wgKHNpby0+aGRsLCBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKSAqIFNJT19NQVhWT0wp OwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST1BfTVVURToKLSsgICAgICBpZiAoZ192YWx1 ZV9nZXRfYm9vbGVhbiAodmFsdWUpKQotKyAgICAgICAgc2lvX3NldHZvbCAoc2lvLT5oZGwsIDAp OwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgfQotK30K LSsKLSt2b2lkCi0rZ3N0X3NuZGlvX2dldF9wcm9wZXJ0eSAoc3RydWN0IGdzdHNuZGlvICpzaW8s IGd1aW50IHByb3BfaWQsCi0rICAgIEdWYWx1ZSAqIHZhbHVlLCAgR1BhcmFtU3BlYyAqIHBzcGVj KQotK3sKLSsgIHN3aXRjaCAocHJvcF9pZCkgewotKyAgICBjYXNlIFBST1BfREVWSUNFOgotKyAg ICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHNpby0+ZGV2aWNlKTsKLSsgICAgICBicmVh azsKLSsgICAgY2FzZSBQUk9QX1ZPTFVNRToKLSsgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZh bHVlLCAoZ2RvdWJsZSlzaW8tPnZvbHVtZSAvIFNJT19NQVhWT0wpOwotKyAgICAgIGJyZWFrOwot KyAgICBjYXNlIFBST1BfTVVURToKLSsgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwg KHNpby0+dm9sdW1lID09IDApKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAg ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKHNpby0+b2JqLCBwcm9wX2lkLCBw c3BlYyk7Ci0rICB9Ci0rfQotZGlmZiAtLWdpdCBleHQvc25kaW8vZ3N0c25kaW8uaCBleHQvc25k aW8vZ3N0c25kaW8uaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc3ZWM0 ZTYKLS0tLSAvZGV2L251bGwKLSsrKyBleHQvc25kaW8vZ3N0c25kaW8uaAotQEAgLTAsMCArMSw3 OCBAQAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDEyIEFsZXhhbmRyZSBSYXRjaG92IDxhbGV4 QGNhb3VhLm9yZz4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFu ZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3 aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsg KiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBh bGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5E IFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCi0rICogV0lUSCBSRUdBUkQgVE8g VEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgotKyAqIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBC RSBMSUFCTEUgRk9SCi0rICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5H IEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgotKyAqIEFD VElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFS SVNJTkcgT1VUIE9GCi0rICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9S TUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsjaWZuZGVmIF9fR1NUX1NORElPX0hfXwot KyNkZWZpbmUgX19HU1RfU05ESU9fSF9fCi0rCi0rI2luY2x1ZGUgPHNuZGlvLmg+Ci0rI2luY2x1 ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvc2luay5oPgotKyNp bmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9zcmMuaD4KLSsjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0 cmVhbXZvbHVtZS5oPgotKwotK2VudW0KLSt7Ci0rICBQUk9QXzAsCi0rICBQUk9QX0RFVklDRSwK LSsgIFBST1BfVk9MVU1FLAotKyAgUFJPUF9NVVRFCi0rfTsKLSsKLSsjZGVmaW5lIEdTVF9TTkRJ T19DQVBTX1NUUklORwkJCQkJXAotKwkiYXVkaW8veC1yYXcsICIJCQkJCQlcCi0rICAgICAgICAi Zm9ybWF0ID0gKHN0cmluZykgeyAiCQkJCQlcCi0rCQkgICAgICJTOCwgVTgsICIJCQkJCVwKLSsJ CSAgICAgIlMxNkxFLCBTMTZCRSwgVTE2TEUsIFUxNkJFLCAiCQlcCi0rCQkgICAgICJTMzJMRSwg UzMyQkUsIFUzMkxFLCBVMzJCRSwgIgkJXAotKwkJICAgICAiUzI0XzMyTEUsIFMyNF8zMkJFLCBV MjRfMzJMRSwgIgkJXAotKwkJICAgICAiVTI0XzMyQkUsIFMyNExFLCBTMjRCRSwgVTI0TEUsIFUy NEJFICIJXAotKwkifSwgIgkJCQkJCQlcCi0rICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50 ZXJsZWF2ZWQsICIJCQlcCi0rICAgICAgICAicmF0ZSA9IChpbnQpIFsgODAwMCwgMTkyMDAwIF0s ICIJCQlcCi0rICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSBbMSwgMTZdIgotKwotKy8qCi0rICog ZGF0YSBjb21tb24gdG8gc3JjIGFuZCBzaW5rCi0rICovCi0rc3RydWN0IGdzdHNuZGlvIHsKLSsg ICAgc3RydWN0IHNpb19oZGwgKmhkbDsKLSsgICAgZ2NoYXIgKmRldmljZTsKLSsgICAgZ2ludCBt b2RlOwotKyAgICBnaW50IGJwZjsJCS8qIGJ5dGVzIHBlciBmcmFtZSAqLwotKyAgICBnaW50IGRl bGF5OwkJLyogYnl0ZXMgc3RvcmVkIGluIHRoZSBhdWRpbyBmaWZvICovCi0rICAgIGd1aW50IHZv bHVtZTsJLyogdm9sdW1lIGxldmVsICovCi0rICAgIEdzdENhcHMgKmN1cl9jYXBzOyAgLyogc2F2 ZWQgY2FwYWJpbGl0aWVzIG9mIG9wZW5lZCBkZXZpY2UgKi8KLSsgICAgR09iamVjdCAqb2JqOwkv KiBmb3IgbG9nZ2luZyAqLwotK307Ci0rCi0rI2RlZmluZSBHU1RfU05ESU9fREVMQVkocykgKChz KS0+ZGVsYXkgLyAocyktPmJwZikKLSsKLSt2b2lkIGdzdF9zbmRpb19pbml0IChzdHJ1Y3QgZ3N0 c25kaW8gKnNpbywgR09iamVjdCAqb2JqKTsKLSt2b2lkIGdzdF9zbmRpb19maW5hbGl6ZSAoc3Ry dWN0IGdzdHNuZGlvICpzaW8pOwotK0dzdENhcHMgKmdzdF9zbmRpb19nZXRjYXBzIChzdHJ1Y3Qg Z3N0c25kaW8gKnNpbywgR3N0Q2FwcyAqIGZpbHRlcik7Ci0rZ2Jvb2xlYW4gZ3N0X3NuZGlvX29w ZW4gKHN0cnVjdCBnc3RzbmRpbyAqc2lvLCBnaW50IG1vZGUpOwotK2dib29sZWFuIGdzdF9zbmRp b19jbG9zZSAoc3RydWN0IGdzdHNuZGlvICpzaW8pOwotK2dib29sZWFuIGdzdF9zbmRpb19wcmVw YXJlIChzdHJ1Y3QgZ3N0c25kaW8gKnNpbywgR3N0QXVkaW9SaW5nQnVmZmVyU3BlYyAqc3BlYyk7 Ci0rZ2Jvb2xlYW4gZ3N0X3NuZGlvX3VucHJlcGFyZSAoc3RydWN0IGdzdHNuZGlvICpzaW8pOwot K3ZvaWQgZ3N0X3NuZGlvX3NldF9wcm9wZXJ0eSAoc3RydWN0IGdzdHNuZGlvICpzaW8sIGd1aW50 IHByb3BfaWQsCi0rICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVj KTsKLSt2b2lkIGdzdF9zbmRpb19nZXRfcHJvcGVydHkgKHN0cnVjdCBnc3RzbmRpbyAqc2lvLCBn dWludCBwcm9wX2lkLAotKyAgICAgR1ZhbHVlICogdmFsdWUsICBHUGFyYW1TcGVjICogcHNwZWMp OwotKwotK2ludCBnc3Rfc25kaW9fc2V0cGFyKGdwb2ludGVyIHNpbywgR3N0QXVkaW9SaW5nQnVm ZmVyU3BlYyAqIHNwZWMsCi0rICAgICBpbnQgbW9kZSwgc3RydWN0IHNpb19oZGwgKmhkbCk7Ci0r R3N0Q2FwcyAqZ3N0X3NuZGlvX2NhcHMgKGdwb2ludGVyIHNpbywgaW50IG1vZGUsIHN0cnVjdCBz aW9faGRsICpoZGwpOwotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBleHQvc25kaW8vbWVzb24uYnVp bGQgZXh0L3NuZGlvL21lc29uLmJ1aWxkCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uM2Y5YTlmZQotLS0tIC9kZXYvbnVsbAotKysrIGV4dC9zbmRpby9tZXNvbi5idWlsZAot QEAgLTAsMCArMSwyMSBAQAotK3NuZGlvX3NvdXJjZXMgPSBbCi0rICAnZ3N0c25kaW8uYycsCi0r ICAnc25kaW9zaW5rLmMnLAotKyAgJ3NuZGlvc3JjLmMnLAotK10KLSsKLStjYyA9ICBtZXNvbi5n ZXRfY29tcGlsZXIoJ2MnKQotKwotK3NuZGlvX2RlcCA9IGNjLmZpbmRfbGlicmFyeSgnc25kaW8n LCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ3NuZGlvJykpCi0rCi0raWYgc25kaW9fZGVwLmZvdW5k KCkKLSsgIGdzdHNuZGlvID0gbGlicmFyeSgnZ3N0c25kaW8nLAotKyAgICBzbmRpb19zb3VyY2Vz LAotKwljX2FyZ3MgOiBnc3RfcGx1Z2luc19iYXNlX2FyZ3MsCi0rICBpbmNsdWRlX2RpcmVjdG9y aWVzOiBbY29uZmlnaW5jLCBsaWJzaW5jXSwKLSsgIGRlcGVuZGVuY2llczogW2dzdF9iYXNlX2Rl cCwgc25kaW9fZGVwLCBhdWRpb19kZXBdLAotKyAgICBpbnN0YWxsIDogdHJ1ZSwKLSsgICAgaW5z dGFsbF9kaXIgOiBwbHVnaW5zX2luc3RhbGxfZGlyLAotKyAgKQotKyAgcGtnY29uZmlnLmdlbmVy YXRlKGdzdHNuZGlvLCBpbnN0YWxsX2RpciA6IHBsdWdpbnNfcGtnY29uZmlnX2luc3RhbGxfZGly KQotK2VuZGlmCi1kaWZmIC0tZ2l0IGV4dC9zbmRpby9zbmRpb3NpbmsuYyBleHQvc25kaW8vc25k aW9zaW5rLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jYzY4YmQyCi0t LS0gL2Rldi9udWxsCi0rKysgZXh0L3NuZGlvL3NuZGlvc2luay5jCi1AQCAtMCwwICsxLDIyNiBA QAotKy8qCi0rICogQ29weXJpZ2h0IChDKSAyMDA4IEphY29iIE1ldXNlciA8amFrZW1zckBzZGYu bG9uZXN0YXIub3JnPgotKyAqIENvcHlyaWdodCAoQykgMjAxMiBBbGV4YW5kcmUgUmF0Y2hvdiA8 YWxleEBjYW91YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGgg b3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3Zl Ci0rICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIg aW4gYWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi IEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJE IFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsg KiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1IgQkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VM VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsg KiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9O LCBBUklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBF UkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rLyoqCi0rICogU0VDVElPTjpl bGVtZW50LXNuZGlvc2luawotKyAqIEBzZWVfYWxzbzogI0dzdEF1dG9BdWRpb1NpbmsKLSsgKgot KyAqIDxyZWZzZWN0Mj4KLSsgKiA8cGFyYT4KLSsgKiBUaGlzIGVsZW1lbnQgb3V0cHV0cyBzb3Vu ZCB0byBhIHNvdW5kIGNhcmQgdXNpbmcgc25kaW8uCi0rICogPC9wYXJhPgotKyAqIDxwYXJhPgot KyAqIFNpbXBsZSBleGFtcGxlIHBpcGVsaW5lIHRoYXQgcGxheXMgYW4gT2dnL1ZvcmJpcyBmaWxl IHZpYSBzbmRpbzoKLSsgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0rICogZ3N0LWxhdW5jaCAtdiBmaWxl c3JjIGxvY2F0aW9uPWZvby5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jl c2FtcGxlICEgc25kaW9zaW5rCi0rICogPC9wcm9ncmFtbGlzdGluZz4KLSsgKiA8L3BhcmE+Ci0r ICogPC9yZWZzZWN0Mj4KLSsgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRl ICJjb25maWcuaCIKLSsjZW5kaWYKLSsjaW5jbHVkZSAic25kaW9zaW5rLmgiCi0rCi0rR1NUX0RF QlVHX0NBVEVHT1JZX0VYVEVSTiAoZ3N0X3NuZGlvX2RlYnVnKTsKLSsjZGVmaW5lIEdTVF9DQVRf REVGQVVMVCBnc3Rfc25kaW9fZGVidWcKLSsKLSsjZGVmaW5lIGdzdF9zbmRpb3NpbmtfcGFyZW50 X2NsYXNzIHBhcmVudF9jbGFzcwotKwotK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzbmRp b3NpbmtfZmFjdG9yeSA9Ci0rICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0r CUdTVF9QQURfU0lOSywKLSsJR1NUX1BBRF9BTFdBWVMsCi0rCUdTVF9TVEFUSUNfQ0FQUyAoR1NU X1NORElPX0NBUFNfU1RSSU5HKQotKyAgICApOwotKwotK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RF IChHc3RTbmRpb1NpbmssIGdzdF9zbmRpb3NpbmssIEdTVF9UWVBFX0FVRElPX1NJTkssCi0rCUdf SU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfU1RSRUFNX1ZPTFVNRSwgTlVMTCkpOwotKwot K3N0YXRpYyB2b2lkIGdzdF9zbmRpb3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwot K3N0YXRpYyBHc3RDYXBzICpnc3Rfc25kaW9zaW5rX2dldGNhcHMgKEdzdEJhc2VTaW5rICogYnNp bmssCi0rICAgIEdzdENhcHMgKiBmaWx0ZXIpOwotK3N0YXRpYyBnYm9vbGVhbiBnc3Rfc25kaW9z aW5rX29wZW4gKEdzdEF1ZGlvU2luayAqIGFzaW5rKTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Nu ZGlvc2lua19jbG9zZSAoR3N0QXVkaW9TaW5rICogYXNpbmspOwotK3N0YXRpYyBnYm9vbGVhbiBn c3Rfc25kaW9zaW5rX3ByZXBhcmUgKEdzdEF1ZGlvU2luayAqIGFzaW5rLAotKyAgICBHc3RBdWRp b1JpbmdCdWZmZXJTcGVjICogc3BlYyk7Ci0rc3RhdGljIGdib29sZWFuIGdzdF9zbmRpb3Npbmtf dW5wcmVwYXJlIChHc3RBdWRpb1NpbmsgKiBhc2luayk7Ci0rc3RhdGljIGdpbnQgZ3N0X3NuZGlv c2lua193cml0ZSAoR3N0QXVkaW9TaW5rICogYXNpbmssIGdwb2ludGVyIGRhdGEsCi0rICAgIGd1 aW50IGxlbmd0aCk7Ci0rc3RhdGljIGd1aW50IGdzdF9zbmRpb3NpbmtfZGVsYXkgKEdzdEF1ZGlv U2luayAqIGFzaW5rKTsKLStzdGF0aWMgdm9pZCBnc3Rfc25kaW9zaW5rX3Jlc2V0IChHc3RBdWRp b1NpbmsgKiBhc2luayk7Ci0rc3RhdGljIHZvaWQgZ3N0X3NuZGlvc2lua19zZXRfcHJvcGVydHkg KEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0rICAgIGNvbnN0IEdWYWx1ZSAqIHZh bHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3NpbmtfZ2V0 X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotKyAgICBHVmFsdWUg KiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLSsKLStzdGF0aWMgdm9pZAotK2dzdF9zbmRp b3NpbmtfaW5pdCAoR3N0U25kaW9TaW5rICogc2luaykKLSt7Ci0rICBnc3Rfc25kaW9faW5pdCAo JnNpbmstPnNuZGlvLCBHX09CSkVDVChzaW5rKSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0 X3NuZGlvc2lua19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLSt7Ci0rICBHc3RTbmRpb1Np bmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChvYmplY3QpOwotKwotKyAgZ3N0X3NuZGlvX2ZpbmFs aXplICgmc2luay0+c25kaW8pOwotKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZp bmFsaXplIChvYmplY3QpOwotK30KLSsKLStzdGF0aWMgR3N0Q2FwcyAqCi0rZ3N0X3NuZGlvc2lu a19nZXRjYXBzIChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RDYXBzICogZmlsdGVyKQotK3sKLSsg IEdzdFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKGJzaW5rKTsKLSsKLSsgIHJldHVy biBnc3Rfc25kaW9fZ2V0Y2FwcyAoJnNpbmstPnNuZGlvLCBmaWx0ZXIpOwotK30KLSsKLStzdGF0 aWMgZ2Jvb2xlYW4KLStnc3Rfc25kaW9zaW5rX29wZW4gKEdzdEF1ZGlvU2luayAqIGFzaW5rKQot K3sKLSsgIEdzdFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKGFzaW5rKTsKLSsKLSsg IHJldHVybiBnc3Rfc25kaW9fb3BlbiAoJnNpbmstPnNuZGlvLCBTSU9fUExBWSk7Ci0rfQotKwot K3N0YXRpYyBnYm9vbGVhbgotK2dzdF9zbmRpb3NpbmtfY2xvc2UgKEdzdEF1ZGlvU2luayAqIGFz aW5rKQotK3sKLSsgIEdzdFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKGFzaW5rKTsK LSsKLSsgIHJldHVybiBnc3Rfc25kaW9fY2xvc2UgKCZzaW5rLT5zbmRpbyk7Ci0rfQotKwotK3N0 YXRpYyBnYm9vbGVhbgotK2dzdF9zbmRpb3NpbmtfcHJlcGFyZSAoR3N0QXVkaW9TaW5rICogYXNp bmssIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKiBzcGVjKQotK3sKLSsgIEdzdFNuZGlvU2luayAq c2luayA9IEdTVF9TTkRJT1NJTksgKGFzaW5rKTsKLSsKLSsgIHJldHVybiBnc3Rfc25kaW9fcHJl cGFyZSAoJnNpbmstPnNuZGlvLCBzcGVjKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0 X3NuZGlvc2lua191bnByZXBhcmUgKEdzdEF1ZGlvU2luayAqIGFzaW5rKQotK3sKLSsgIEdzdFNu ZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKGFzaW5rKTsKLSsKLSsgIHJldHVybiBnc3Rf c25kaW9fdW5wcmVwYXJlICgmc2luay0+c25kaW8pOwotK30KLSsKLStzdGF0aWMgZ2ludAotK2dz dF9zbmRpb3Npbmtfd3JpdGUgKEdzdEF1ZGlvU2luayAqIGFzaW5rLCBncG9pbnRlciBkYXRhLCBn dWludCBsZW5ndGgpCi0rewotKyAgR3N0U25kaW9TaW5rICpzaW5rID0gR1NUX1NORElPU0lOSyAo YXNpbmspOwotKyAgZ3VpbnQgZG9uZTsKLSsKLSsgIGlmIChsZW5ndGggPT0gMCkKLSsgICAgcmV0 dXJuIDA7Ci0rICBkb25lID0gc2lvX3dyaXRlIChzaW5rLT5zbmRpby5oZGwsIGRhdGEsIGxlbmd0 aCk7Ci0rICBpZiAoZG9uZSA9PSAwKSB7Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmss IFJFU09VUkNFLCBXUklURSwKLSsJKCJGYWlsZWQgdG8gd3JpdGUgZGF0YSB0byBzbmRpbyIpLCAo TlVMTCkpOwotKyAgICAgIHJldHVybiAwOwotKyAgfQotKyAgc2luay0+c25kaW8uZGVsYXkgKz0g ZG9uZTsKLSsgIHJldHVybiBkb25lOwotK30KLSsKLStzdGF0aWMgZ3VpbnQKLStnc3Rfc25kaW9z aW5rX2RlbGF5IChHc3RBdWRpb1NpbmsgKiBhc2luaykKLSt7Ci0rICBHc3RTbmRpb1NpbmsgKnNp bmsgPSBHU1RfU05ESU9TSU5LIChhc2luayk7Ci0rCi0rICByZXR1cm4gR1NUX1NORElPX0RFTEFZ KCZzaW5rLT5zbmRpbyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvc2lua19yZXNl dCAoR3N0QXVkaW9TaW5rICogYXNpbmspCi0rewotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9z bmRpb3Npbmtfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAot KyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotK3sKLSsgIEdz dFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKG9iamVjdCk7Ci0rCi0rICBnc3Rfc25k aW9fc2V0X3Byb3BlcnR5ICgmc2luay0+c25kaW8sIHByb3BfaWQsIHZhbHVlLCBwc3BlYyk7Ci0r fQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvc2lua19nZXRfcHJvcGVydHkgKEdPYmplY3Qg KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAotKyAgICBHUGFyYW1TcGVj ICogcHNwZWMpCi0rewotKyAgR3N0U25kaW9TaW5rICpzaW5rID0gR1NUX1NORElPU0lOSyAob2Jq ZWN0KTsKLSsKLSsgIGdzdF9zbmRpb19nZXRfcHJvcGVydHkgKCZzaW5rLT5zbmRpbywgcHJvcF9p ZCwgdmFsdWUsIHBzcGVjKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25kaW9zaW5rX2Ns YXNzX2luaXQgKEdzdFNuZGlvU2lua0NsYXNzICoga2xhc3MpCi0rewotKyAgR09iamVjdENsYXNz ICpnb2JqZWN0X2NsYXNzOwotKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOwot KyAgR3N0QmFzZVNpbmtDbGFzcyAqZ3N0YmFzZXNpbmtfY2xhc3M7Ci0rICBHc3RBdWRpb0Jhc2VT aW5rQ2xhc3MgKmdzdGJhc2VhdWRpb3NpbmtfY2xhc3M7Ci0rICBHc3RBdWRpb1NpbmtDbGFzcyAq Z3N0YXVkaW9zaW5rX2NsYXNzOwotKwotKyAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3Mg Kikga2xhc3M7Ci0rICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFz czsKLSsgIGdzdGJhc2VzaW5rX2NsYXNzID0gKEdzdEJhc2VTaW5rQ2xhc3MgKikga2xhc3M7Ci0r ICBnc3RiYXNlYXVkaW9zaW5rX2NsYXNzID0gKEdzdEF1ZGlvQmFzZVNpbmtDbGFzcyAqKSBrbGFz czsKLSsgIGdzdGF1ZGlvc2lua19jbGFzcyA9IChHc3RBdWRpb1NpbmtDbGFzcyAqKSBrbGFzczsK LSsKLSsgIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOwot KwotKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3Rfc25kaW9zaW5rX2ZpbmFsaXplOwot KyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3NuZGlvc2lua19nZXRfcHJvcGVy dHk7Ci0rICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3Rfc25kaW9zaW5rX3NldF9w cm9wZXJ0eTsKLSsKLSsgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdz dGVsZW1lbnRfY2xhc3MsCi0rICAgICAgIkF1ZGlvIHNpbmsgKHNuZGlvKSIsICJTaW5rL0F1ZGlv IiwKLSsgICAgICAiT3V0cHV0IHRvIGEgc291bmQgY2FyZCB2aWEgc25kaW8iLAotKyAgICAgICJK YWNvYiBNZXVzZXIgPGpha2Vtc3JAc2RmLmxvbmVzdGFyLm9yZz4iKTsKLSsKLSsgIGdzdF9lbGVt ZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCi0rICAgICAgZ3N0 X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc25kaW9zaW5rX2ZhY3RvcnkpKTsKLSsKLSsgIGdz dGJhc2VzaW5rX2NsYXNzLT5nZXRfY2FwcyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfc25kaW9z aW5rX2dldGNhcHMpOwotKyAgZ3N0YXVkaW9zaW5rX2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZV TkNQVFIgKGdzdF9zbmRpb3Npbmtfb3Blbik7Ci0rICBnc3RhdWRpb3NpbmtfY2xhc3MtPnByZXBh cmUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc2lua19wcmVwYXJlKTsKLSsgIGdzdGF1 ZGlvc2lua19jbGFzcy0+dW5wcmVwYXJlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3Np bmtfdW5wcmVwYXJlKTsKLSsgIGdzdGF1ZGlvc2lua19jbGFzcy0+Y2xvc2UgPSBHU1RfREVCVUdf RlVOQ1BUUiAoZ3N0X3NuZGlvc2lua19jbG9zZSk7Ci0rICBnc3RhdWRpb3NpbmtfY2xhc3MtPndy aXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3Npbmtfd3JpdGUpOwotKyAgZ3N0YXVk aW9zaW5rX2NsYXNzLT5kZWxheSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfc25kaW9zaW5rX2Rl bGF5KTsKLSsgIGdzdGF1ZGlvc2lua19jbGFzcy0+cmVzZXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAo Z3N0X3NuZGlvc2lua19yZXNldCk7Ci0rCi0rICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl cnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RFVklDRSwKLSsgICAgICBnX3BhcmFtX3NwZWNfc3Ry aW5nICgiZGV2aWNlIiwgIkRldmljZSIsCi0rICAgICAgICAgICJzbmRpbyBkZXZpY2UgYXMgZGVm aW5lZCBpbiBzbmRpbyg3KSIsCi0rICAgICAgICAgIFNJT19ERVZBTlksIEdfUEFSQU1fUkVBRFdS SVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFs bF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WT0xVTUUsCi0rICAgICAgZ19wYXJhbV9z cGVjX2RvdWJsZSAoInZvbHVtZSIsICJWb2x1bWUiLAotKwkgICJMaW5lYXIgdm9sdW1lIG9mIHRo aXMgc3RyZWFtLCAxLjA9MTAwJSIsIDAuMCwgMS4wLAotKwkgIDEuMCwgR19QQVJBTV9SRUFEV1JJ VEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICBnX29iamVjdF9jbGFzc19pbnN0YWxs X3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01VVEUsCi0rICAgICAgZ19wYXJhbV9zcGVj X2Jvb2xlYW4gKCJtdXRlIiwgIk11dGUiLAotKwkgICJNdXRlIHN0YXRlIG9mIHRoaXMgc3RyZWFt IiwgRkFMU0UsCi0rCSAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdT KSk7Ci0rfQotZGlmZiAtLWdpdCBleHQvc25kaW8vc25kaW9zaW5rLmggZXh0L3NuZGlvL3NuZGlv c2luay5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzE0ZTYyMgotLS0t IC9kZXYvbnVsbAotKysrIGV4dC9zbmRpby9zbmRpb3NpbmsuaAotQEAgLTAsMCArMSw1NyBAQAot Ky8qCi0rICogQ29weXJpZ2h0IChDKSAyMDA4IEphY29iIE1ldXNlciA8amFrZW1zckBzZGYubG9u ZXN0YXIub3JnPgotKyAqIENvcHlyaWdodCAoQykgMjAxMiBBbGV4YW5kcmUgUmF0Y2hvdiA8YWxl eEBjYW91YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBh bmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGggb3Ig d2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCi0r ICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4g YWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFO RCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJEIFRP IFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsgKiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig QkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElO RyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsgKiBB Q1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBB UklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZP Uk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rCi0rI2lmbmRlZiBfX0dTVF9TTkRJ T1NJTktfSF9fCi0rI2RlZmluZSBfX0dTVF9TTkRJT1NJTktfSF9fCi0rCi0rI2luY2x1ZGUgPHNu ZGlvLmg+Ci0rCi0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dz dGF1ZGlvc2luay5oPgotKyNpbmNsdWRlICJnc3RzbmRpby5oIgotKwotK0dfQkVHSU5fREVDTFMK LSsKLSsjZGVmaW5lIEdTVF9UWVBFX1NORElPU0lOSyBcCi0rICAoZ3N0X3NuZGlvc2lua19nZXRf dHlwZSgpKQotKyNkZWZpbmUgR1NUX1NORElPU0lOSyhvYmopIFwKLSsgIChHX1RZUEVfQ0hFQ0tf SU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9TTkRJT1NJTkssR3N0U25kaW9TaW5rKSkKLSsj ZGVmaW5lIEdTVF9TTkRJT1NJTktfQ0xBU1Moa2xhc3MpIFwKLSsgIChHX1RZUEVfQ0hFQ0tfQ0xB U1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1NORElPU0lOSyxHc3RTbmRpb1NpbmtDbGFzcykpCi0r I2RlZmluZSBHU1RfSVNfU05ESU9TSU5LKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5D RV9UWVBFKChvYmopLEdTVF9UWVBFX1NORElPU0lOSykpCi0rI2RlZmluZSBHU1RfSVNfU05ESU9T SU5LX0NMQVNTKGtsYXNzKSBcCi0rICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxH U1RfVFlQRV9TTkRJT1NJTkspKQotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RTbmRpb1NpbmsgR3N0 U25kaW9TaW5rOwotK3R5cGVkZWYgc3RydWN0IF9Hc3RTbmRpb1NpbmtDbGFzcyBHc3RTbmRpb1Np bmtDbGFzczsKLSsKLStzdHJ1Y3QgX0dzdFNuZGlvU2luayB7Ci0rICBHc3RBdWRpb1Npbmsgc2lu azsKLSsgIHN0cnVjdCBnc3RzbmRpbyBzbmRpbzsKLSt9OwotKwotK3N0cnVjdCBfR3N0U25kaW9T aW5rQ2xhc3MgewotKyAgR3N0QXVkaW9TaW5rQ2xhc3MgcGFyZW50X2NsYXNzOwotK307Ci0rCi0r R1R5cGUgZ3N0X3NuZGlvc2lua19nZXRfdHlwZSAodm9pZCk7Ci0rCi0rR19FTkRfREVDTFMKLSsK LSsjZW5kaWYgLyogX19HU1RfU05ESU9TSU5LX0hfXyAqLwotZGlmZiAtLWdpdCBleHQvc25kaW8v c25kaW9zcmMuYyBleHQvc25kaW8vc25kaW9zcmMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjViNmQ3ODcKLS0tLSAvZGV2L251bGwKLSsrKyBleHQvc25kaW8vc25kaW9z cmMuYwotQEAgLTAsMCArMSwyMjUgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAwOCBKYWNv YiBNZXVzZXIgPGpha2Vtc3JAc2RmLmxvbmVzdGFyLm9yZz4KLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTIgQWxleGFuZHJlIFJhdGNob3YgPGFsZXhAY2FvdWEub3JnPgotKyAqCi0rICogUGVybWlzc2lv biB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3Ig YW55Ci0rICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBw cm92aWRlZCB0aGF0IHRoZSBhYm92ZQotKyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCi0rICoKLSsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJB TlRJRVMKLSsgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1Q TElFRCBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgU1BFQ0lBTCwg RElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VT Ci0rICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9G SVRTLCBXSEVUSEVSIElOIEFOCi0rICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9S IE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKLSsgKiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotKyAqLwot KwotKy8qKgotKyAqIFNFQ1RJT046ZWxlbWVudC1zbmRpb3NyYwotKyAqIEBzZWVfYWxzbzogI0dz dEF1dG9BdWRpb1NyYwotKyAqCi0rICogPHJlZnNlY3QyPgotKyAqIDxwYXJhPgotKyAqIFRoaXMg ZWxlbWVudCByZXRyaWV2ZXMgc2FtcGxlcyBmcm9tIGEgc291bmQgY2FyZCB1c2luZyBzbmRpby4K LSsgKiA8L3BhcmE+Ci0rICogPHBhcmE+Ci0rICogU2ltcGxlIGV4YW1wbGUgcGlwZWxpbmUgdGhh dCByZWNvcmRzIGFuIE9nZy9Wb3JiaXMgZmlsZSB2aWEgc25kaW86Ci0rICogPHByb2dyYW1saXN0 aW5nPgotKyAqIGdzdC1sYXVuY2ggLXYgc25kaW9zcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNl bmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1mb28ub2dnIAotKyAqIDwvcHJvZ3JhbWxp c3Rpbmc+Ci0rICogPC9wYXJhPgotKyAqIDwvcmVmc2VjdDI+Ci0rICovCi0rCi0rI2lmZGVmIEhB VkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUg InNuZGlvc3JjLmgiCi0rI2luY2x1ZGUgImdzdHNuZGlvLmgiCi0rCi0rR1NUX0RFQlVHX0NBVEVH T1JZX0VYVEVSTiAoZ3N0X3NuZGlvX2RlYnVnKTsKLSsjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBn c3Rfc25kaW9fZGVidWcKLSsKLSsjZGVmaW5lIGdzdF9zbmRpb3NyY19wYXJlbnRfY2xhc3MgcGFy ZW50X2NsYXNzCi0rR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFNuZGlvU3JjLCBnc3Rfc25k aW9zcmMsIEdTVF9UWVBFX0FVRElPX1NSQywKLSsJR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1Rf VFlQRV9TVFJFQU1fVk9MVU1FLCBOVUxMKSk7Ci0rCi0rc3RhdGljIHZvaWQgZ3N0X3NuZGlvc3Jj X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLStzdGF0aWMgR3N0Q2FwcyAqZ3N0X3NuZGlv c3JjX2dldGNhcHMgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RDYXBzICogZmlsdGVyKTsKLStzdGF0 aWMgZ2Jvb2xlYW4gZ3N0X3NuZGlvc3JjX29wZW4gKEdzdEF1ZGlvU3JjICogYXNyYyk7Ci0rc3Rh dGljIGdib29sZWFuIGdzdF9zbmRpb3NyY19jbG9zZSAoR3N0QXVkaW9TcmMgKiBhc3JjKTsKLStz dGF0aWMgZ2Jvb2xlYW4gZ3N0X3NuZGlvc3JjX3ByZXBhcmUgKEdzdEF1ZGlvU3JjICogYXNyYywK LSsgICAgR3N0QXVkaW9SaW5nQnVmZmVyU3BlYyAqIHNwZWMpOwotK3N0YXRpYyBnYm9vbGVhbiBn c3Rfc25kaW9zcmNfdW5wcmVwYXJlIChHc3RBdWRpb1NyYyAqIGFzcmMpOwotK3N0YXRpYyBndWlu dCBnc3Rfc25kaW9zcmNfcmVhZCAoR3N0QXVkaW9TcmMgKiBhc3JjLCBncG9pbnRlciBkYXRhLAot KyAgICBndWludCBsZW5ndGgpOwotK3N0YXRpYyBndWludCBnc3Rfc25kaW9zcmNfZGVsYXkgKEdz dEF1ZGlvU3JjICogYXNyYyk7Ci0rc3RhdGljIHZvaWQgZ3N0X3NuZGlvc3JjX3Jlc2V0IChHc3RB dWRpb1NyYyAqIGFzcmMpOwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3NyY19zZXRfcHJvcGVydHkg KEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0rICAgIGNvbnN0IEdWYWx1ZSAqIHZh bHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3NyY19nZXRf cHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0rICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAq IHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotKwotK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1w bGF0ZSBzbmRpb3NyY19mYWN0b3J5ID0KLSsgICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJz cmMiLAotKwlHU1RfUEFEX1NSQywKLSsJR1NUX1BBRF9BTFdBWVMsCi0rCUdTVF9TVEFUSUNfQ0FQ UyAoR1NUX1NORElPX0NBUFNfU1RSSU5HKQotKyAgICApOwotKwotK3N0YXRpYyB2b2lkCi0rZ3N0 X3NuZGlvc3JjX2luaXQgKEdzdFNuZGlvU3JjICogc3JjKQotK3sKLSsgIGdzdF9zbmRpb19pbml0 ICgmc3JjLT5zbmRpbywgR19PQkpFQ1Qoc3JjKSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0 X3NuZGlvc3JjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotK3sKLSsgIEdzdFNuZGlvU3Jj ICpzcmMgPSBHU1RfU05ESU9TUkMgKG9iamVjdCk7Ci0rCi0rICBnc3Rfc25kaW9fZmluYWxpemUg KCZzcmMtPnNuZGlvKTsKLSsgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6 ZSAob2JqZWN0KTsKLSt9Ci0rCi0rc3RhdGljIEdzdENhcHMgKgotK2dzdF9zbmRpb3NyY19nZXRj YXBzIChHc3RCYXNlU3JjICogYnNyYywgR3N0Q2FwcyAqIGZpbHRlcikKLSt7Ci0rICBHc3RTbmRp b1NyYyAqc3JjID0gR1NUX1NORElPU1JDIChic3JjKTsKLSsKLSsgIHJldHVybiBnc3Rfc25kaW9f Z2V0Y2FwcyAoJnNyYy0+c25kaW8sIGZpbHRlcik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgot K2dzdF9zbmRpb3NyY19vcGVuIChHc3RBdWRpb1NyYyAqIGFzcmMpCi0rewotKyAgR3N0U25kaW9T cmMgKnNyYyA9IEdTVF9TTkRJT1NSQyAoYXNyYyk7Ci0rCi0rICByZXR1cm4gZ3N0X3NuZGlvX29w ZW4gKCZzcmMtPnNuZGlvLCBTSU9fUkVDKTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0 X3NuZGlvc3JjX2Nsb3NlIChHc3RBdWRpb1NyYyAqIGFzcmMpCi0rewotKyAgR3N0U25kaW9TcmMg KnNyYyA9IEdTVF9TTkRJT1NSQyAoYXNyYyk7Ci0rCi0rICByZXR1cm4gZ3N0X3NuZGlvX2Nsb3Nl ICgmc3JjLT5zbmRpbyk7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9zbmRpb3NyY19w cmVwYXJlIChHc3RBdWRpb1NyYyAqIGFzcmMsIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKiBzcGVj KQotK3sKLSsgIEdzdFNuZGlvU3JjICpzcmMgPSBHU1RfU05ESU9TUkMgKGFzcmMpOwotKwotKyAg cmV0dXJuIGdzdF9zbmRpb19wcmVwYXJlICgmc3JjLT5zbmRpbywgc3BlYyk7Ci0rfQotKwotK3N0 YXRpYyBnYm9vbGVhbgotK2dzdF9zbmRpb3NyY191bnByZXBhcmUgKEdzdEF1ZGlvU3JjICogYXNy YykKLSt7Ci0rICBHc3RTbmRpb1NyYyAqc3JjID0gR1NUX1NORElPU1JDIChhc3JjKTsKLSsKLSsg IHJldHVybiBnc3Rfc25kaW9fdW5wcmVwYXJlICgmc3JjLT5zbmRpbyk7Ci0rfQotKwotK3N0YXRp YyBndWludAotK2dzdF9zbmRpb3NyY19yZWFkIChHc3RBdWRpb1NyYyAqIGFzcmMsIGdwb2ludGVy IGRhdGEsIGd1aW50IGxlbmd0aCkKLSt7Ci0rICBHc3RTbmRpb1NyYyAqc3JjID0gR1NUX1NORElP U1JDIChhc3JjKTsKLSsgIGd1aW50IGRvbmU7Ci0rCi0rICBpZiAobGVuZ3RoID09IDApCi0rICAg IHJldHVybiAwOwotKyAgZG9uZSA9IHNpb19yZWFkIChzcmMtPnNuZGlvLmhkbCwgZGF0YSwgbGVu Z3RoKTsKLSsgIGlmIChkb25lID09IDApIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3Jj LCBSRVNPVVJDRSwgUkVBRCwKLSsJKCJGYWlsZWQgdG8gcmVhZCBkYXRhIGZyb20gc25kaW8iKSwg KE5VTEwpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgIH0KLSsgIHNyYy0+c25kaW8uZGVsYXkgLT0g ZG9uZTsKLSsgIHJldHVybiBkb25lOwotK30KLSsKLStzdGF0aWMgZ3VpbnQKLStnc3Rfc25kaW9z cmNfZGVsYXkgKEdzdEF1ZGlvU3JjICogYXNyYykKLSt7Ci0rICBHc3RTbmRpb1NyYyAqc3JjID0g R1NUX1NORElPU1JDIChhc3JjKTsKLSsKLSsgIHJldHVybiBHU1RfU05ESU9fREVMQVkoJnNyYy0+ c25kaW8pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9zbmRpb3NyY19yZXNldCAoR3N0QXVk aW9TcmMgKiBhc3JjKQotK3sKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25kaW9zcmNfc2V0 X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotKyAgICBjb25zdCBH VmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotK3sKLSsgIEdzdFNuZGlvU3JjICpz cmMgPSBHU1RfU05ESU9TUkMgKG9iamVjdCk7Ci0rCi0rICBnc3Rfc25kaW9fc2V0X3Byb3BlcnR5 ICgmc3JjLT5zbmRpbywgcHJvcF9pZCwgdmFsdWUsIHBzcGVjKTsKLSt9Ci0rCi0rc3RhdGljIHZv aWQKLStnc3Rfc25kaW9zcmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBw cm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwKLSsgICAgR1BhcmFtU3BlYyAqIHBzcGVjKQotK3sKLSsg IEdzdFNuZGlvU3JjICpzcmMgPSBHU1RfU05ESU9TUkMgKG9iamVjdCk7Ci0rCi0rICBnc3Rfc25k aW9fZ2V0X3Byb3BlcnR5ICgmc3JjLT5zbmRpbywgcHJvcF9pZCwgdmFsdWUsIHBzcGVjKTsKLSt9 Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25kaW9zcmNfY2xhc3NfaW5pdCAoR3N0U25kaW9TcmND bGFzcyAqIGtsYXNzKQotK3sKLSsgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSsgIEdz dEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKLSsgIEdzdEJhc2VTcmNDbGFzcyAqZ3N0 YmFzZXNyY19jbGFzczsKLSsgIEdzdEF1ZGlvQmFzZVNyY0NsYXNzICpnc3RiYXNlYXVkaW9zcmNf Y2xhc3M7Ci0rICBHc3RBdWRpb1NyY0NsYXNzICpnc3RhdWRpb3NyY19jbGFzczsKLSsgIGdvYmpl Y3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotKyAgZ3N0ZWxlbWVudF9jbGFzcyA9 IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0rICBnc3RiYXNlc3JjX2NsYXNzID0gKEdzdEJh c2VTcmNDbGFzcyAqKSBrbGFzczsKLSsgIGdzdGJhc2VhdWRpb3NyY19jbGFzcyA9IChHc3RBdWRp b0Jhc2VTcmNDbGFzcyAqKSBrbGFzczsKLSsgIGdzdGF1ZGlvc3JjX2NsYXNzID0gKEdzdEF1ZGlv U3JjQ2xhc3MgKikga2xhc3M7Ci0rCi0rICBwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVl a19wYXJlbnQgKGtsYXNzKTsKLSsKLSsgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3Nu ZGlvc3JjX2ZpbmFsaXplOwotKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3Nu ZGlvc3JjX2dldF9wcm9wZXJ0eTsKLSsgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdz dF9zbmRpb3NyY19zZXRfcHJvcGVydHk7Ci0rCi0rICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3Rh dGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAotKyAgICAgICJBdWRpbyBzcmMgKHNuZGlv KSIsICJTcmMvQXVkaW8iLAotKyAgICAgICJJbnB1dCBmcm9tIGEgc291bmQgY2FyZCB2aWEgc25k aW8iLAotKyAgICAgICJKYWNvYiBNZXVzZXIgPGpha2Vtc3JAc2RmLmxvbmVzdGFyLm9yZz4iKTsK LSsKLSsgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xh c3MsCi0rICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc25kaW9zcmNfZmFjdG9y eSkpOwotKwotKyAgZ3N0YmFzZXNyY19jbGFzcy0+Z2V0X2NhcHMgPSBHU1RfREVCVUdfRlVOQ1BU UiAoZ3N0X3NuZGlvc3JjX2dldGNhcHMpOwotKyAgZ3N0YXVkaW9zcmNfY2xhc3MtPm9wZW4gPSBH U1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc3JjX29wZW4pOwotKyAgZ3N0YXVkaW9zcmNfY2xh c3MtPnByZXBhcmUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc3JjX3ByZXBhcmUpOwot KyAgZ3N0YXVkaW9zcmNfY2xhc3MtPnVucHJlcGFyZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rf c25kaW9zcmNfdW5wcmVwYXJlKTsKLSsgIGdzdGF1ZGlvc3JjX2NsYXNzLT5jbG9zZSA9IEdTVF9E RUJVR19GVU5DUFRSIChnc3Rfc25kaW9zcmNfY2xvc2UpOwotKyAgZ3N0YXVkaW9zcmNfY2xhc3Mt PnJlYWQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc3JjX3JlYWQpOwotKyAgZ3N0YXVk aW9zcmNfY2xhc3MtPmRlbGF5ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3NyY19kZWxh eSk7Ci0rICBnc3RhdWRpb3NyY19jbGFzcy0+cmVzZXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0 X3NuZGlvc3JjX3Jlc2V0KTsKLSsKLSsgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkg KGdvYmplY3RfY2xhc3MsIFBST1BfREVWSUNFLAotKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcg KCJkZXZpY2UiLCAiRGV2aWNlIiwKLSsgICAgICAgICAgInNuZGlvIGRldmljZSBhcyBkZWZpbmVk IGluIHNuZGlvKDcpIiwKLSsgICAgICAgICAgU0lPX0RFVkFOWSwgR19QQVJBTV9SRUFEV1JJVEUg fCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By b3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZPTFVNRSwKLSsgICAgICBnX3BhcmFtX3NwZWNf ZG91YmxlICgidm9sdW1lIiwgIlZvbHVtZSIsCi0rCSAgIkxpbmVhciB2b2x1bWUgb2YgdGhpcyBz dHJlYW0sIDEuMD0xMDAlIiwgMC4wLCAxLjAsCi0rCSAgMS4wLCBHX1BBUkFNX1JFQURXUklURSB8 IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv cGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTVVURSwKLSsgICAgICBnX3BhcmFtX3NwZWNfYm9v bGVhbiAoIm11dGUiLCAiTXV0ZSIsCi0rCSAgIk11dGUgc3RhdGUgb2YgdGhpcyBzdHJlYW0iLCBG QUxTRSwKLSsJICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsK LSt9Ci1kaWZmIC0tZ2l0IGV4dC9zbmRpby9zbmRpb3NyYy5oIGV4dC9zbmRpby9zbmRpb3NyYy5o Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODNmZDI5YwotLS0tIC9kZXYv bnVsbAotKysrIGV4dC9zbmRpby9zbmRpb3NyYy5oCi1AQCAtMCwwICsxLDU3IEBACi0rLyoKLSsg KiBDb3B5cmlnaHQgKEMpIDIwMDggSmFjb2IgTWV1c2VyIDxqYWtlbXNyQHNkZi5sb25lc3Rhci5v cmc+Ci0rICogQ29weXJpZ2h0IChDKSAyMDEyIEFsZXhhbmRyZSBSYXRjaG92IDxhbGV4QGNhb3Vh Lm9yZz4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0 cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0 IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29w aWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBB VVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCi0rICogV0lUSCBSRUdBUkQgVE8gVEhJUyBT T0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5U QUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFC TEUgRk9SCi0rICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJ QUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00g TE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgotKyAqIEFDVElPTiBP RiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcg T1VUIE9GCi0rICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0Ug T0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8KLSsKLSsKLSsjaWZuZGVmIF9fR1NUX1NORElPU1JDX0hf XwotKyNkZWZpbmUgX19HU1RfU05ESU9TUkNfSF9fCi0rCi0rI2luY2x1ZGUgPHNuZGlvLmg+Ci0r Ci0rI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSsjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvc3Jj Lmg+Ci0rI2luY2x1ZGUgImdzdHNuZGlvLmgiCi0rCi0rR19CRUdJTl9ERUNMUwotKwotKyNkZWZp bmUgR1NUX1RZUEVfU05ESU9TUkMgXAotKyAgKGdzdF9zbmRpb3NyY19nZXRfdHlwZSgpKQotKyNk ZWZpbmUgR1NUX1NORElPU1JDKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU KChvYmopLEdTVF9UWVBFX1NORElPU1JDLEdzdFNuZGlvU3JjKSkKLSsjZGVmaW5lIEdTVF9TTkRJ T1NSQ19DTEFTUyhrbGFzcykgXAotKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyks R1NUX1RZUEVfU05ESU9TUkMsR3N0U25kaW9TcmNDbGFzcykpCi0rI2RlZmluZSBHU1RfSVNfU05E SU9TUkMob2JqKSBcCi0rICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZ UEVfU05ESU9TUkMpKQotKyNkZWZpbmUgR1NUX0lTX1NORElPU1JDX0NMQVNTKGtsYXNzKSBcCi0r ICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9TTkRJT1NSQykpCi0r Ci0rdHlwZWRlZiBzdHJ1Y3QgX0dzdFNuZGlvU3JjIEdzdFNuZGlvU3JjOwotK3R5cGVkZWYgc3Ry dWN0IF9Hc3RTbmRpb1NyY0NsYXNzIEdzdFNuZGlvU3JjQ2xhc3M7Ci0rCi0rc3RydWN0IF9Hc3RT bmRpb1NyYyB7Ci0rICBHc3RBdWRpb1NyYyBzcmM7Ci0rICBzdHJ1Y3QgZ3N0c25kaW8gc25kaW87 Ci0rfTsKLSsKLStzdHJ1Y3QgX0dzdFNuZGlvU3JjQ2xhc3MgewotKyAgR3N0QXVkaW9TcmNDbGFz cyBwYXJlbnRfY2xhc3M7Ci0rfTsKLSsKLStHVHlwZSBnc3Rfc25kaW9zcmNfZ2V0X3R5cGUgKHZv aWQpOwotKwotK0dfRU5EX0RFQ0xTCi0rCi0rI2VuZGlmIC8qIF9fR1NUX1NORElPU1JDX0hfXyAq LwotZGlmZiAtLWdpdCBtZXNvbl9vcHRpb25zLnR4dCBtZXNvbl9vcHRpb25zLnR4dAotaW5kZXgg ZTdhZjRkZC4uODI3NTA3ZiAxMDA2NDQKLS0tLSBtZXNvbl9vcHRpb25zLnR4dAotKysrIG1lc29u X29wdGlvbnMudHh0Ci1AQCAtNTgsNiArNTgsNyBAQCBvcHRpb24oJ2xpYnZpc3VhbCcsIHR5cGUg OiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdsaWJ2aXN1YWwgYQot IG9wdGlvbignb2dnJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0 aW9uIDogJ29nZyBwYXJzZXIsIG11eGVyLCBkZW11eGVyIHBsdWdpbicpCi0gb3B0aW9uKCdvcHVz JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ09QVVMg YXVkaW8gY29kZWMgcGx1Z2luJykKLSBvcHRpb24oJ3BhbmdvJywgdHlwZSA6ICdmZWF0dXJlJywg dmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1BhbmdvIHRleHQgcmVuZGVyaW5nIGFuZCBv dmVybGF5IHBsdWdpbicpCi0rb3B0aW9uKCdzbmRpbycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVl IDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdzbmRpbyBzdXBwb3J0JykKLSBvcHRpb24oJ3RoZW9y YScsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdUaGVv cmEgdmlkZW8gcGFyc2VyIGFuZCBjb2RlYyBwbHVnaW4nKQotIG9wdGlvbigndHJlbW9yJywgdHlw ZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ0ludGVnZXIgVm9y YmlzIGRlY29kZXIgcGx1Z2luIGZvciBkZXZpY2VzIHdpdGhvdXQgZmxvYXRpbmcgcG9pbnQnKQot IG9wdGlvbigndm9yYmlzJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2Ny aXB0aW9uIDogJ1ZvcmJpcyBhdWRpbyBwYXJzZXIsIHRhZ2dlciwgYW5kIGNvZGVjIHBsdWdpbicp CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlIGIvc3JjcGtn cy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZQppbmRleCBlNWUzZThjY2I2YS4uYzBlZDUxM2M5 ZWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhc2UxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1i YXNlMQotdmVyc2lvbj0xLjE2LjIKK3ZlcnNpb249MS4xOC4xCiByZXZpc2lvbj0xCiB3cmtzcmM9 IiR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPW1lc29uCkBAIC0yMSw3ICsy MSw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRw czovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3Ny Yy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1 bT1iMTNlNzNlMmZlNzRhNDE2NjU1MmY5NTc3YzNkY2IyNGJlZDA3NzAyMWI5YzdmYTYwMGQ5MTBl YzY5ODc4MTZhCitjaGVja3N1bT0xYmE2NTRkN2RlMzBmNzI4NGI0YzcwNzFiMzJmODgxYjYwOTcz M2NlMDJhYjZkOWQ5ZWEyOTM4NmEwMzZjNjQxCiAKICMgUGFja2FnZSBidWlsZCBvcHRpb25zCiBi dWlsZF9vcHRpb25zPSJjZHBhcmFub2lhIGdpciBzbmRpbyIKQEAgLTQ1LDMgKzQ1LDExIEBAIGdz dC1wbHVnaW5zLWJhc2UxLWRldmVsX3BhY2thZ2UoKSB7CiAJCWZpCiAJfQogfQorCitnc3Qtc25k aW9fcGFja2FnZSgpIHsKKwlkZXBlbmRzPSJnc3RyZWFtZXIxIgorCXNob3J0X2Rlc2M9IkdzdHJl YW1lciBzbmRpbyBwbHVnaW4gKHYxLlgpIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3Iv bGliL2dzdHJlYW1lci0xLjAvbGliZ3N0c25kaW8uc28KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNw a2dzL2dzdC1zbmRpbyBiL3NyY3BrZ3MvZ3N0LXNuZGlvCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmlu ZGV4IDAwMDAwMDAwMDAwLi5hZGE0OGE4YTVkMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv Z3N0LXNuZGlvCkBAIC0wLDAgKzEgQEAKK2dzdC1wbHVnaW5zLWJhc2UxClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQoKRnJvbSAwYTkzNzhjMTA2ZmU4NTM2ODFhOTdhZWUxMWM4NzBlZWJiMjc2 ZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gT3dlbnMgPG5kb3dlbnNA YXJ0aXhsaW51eC5vcmc+CkRhdGU6IFN1biwgMTUgTm92IDIwMjAgMTA6MjE6MTAgLTA2MDAKU3Vi amVjdDogW1BBVENIIDEwLzEwXSBnc3RyZWFtZXIxOiB1cGRhdGUgdG8gMS4xOC4xCgpSZW1vdmUg Z3RrX2RvYyBvcHRpb24gYXMgaXQgZG9lcyBub3RoaW5nIGFuZCBkb3VidCBtYW55IHVzZQotLS0K IC4uLi9nc3RyZWFtZXIxL3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRjaCB8IDIyICsrKysr KysrKysrKysrLS0tLQogc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlICAgICAgICAgICAgICAg ICAgIHwgMjMgKysrKystLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRp b25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdHJlYW1lcjEv cGF0Y2hlcy9uby1naXItYXV0b21hZ2ljLnBhdGNoIGIvc3JjcGtncy9nc3RyZWFtZXIxL3BhdGNo ZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRjaAppbmRleCBjMDEzNTIxNGVkZC4uNTM3NDBiNGJiMDQg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVyMS9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMu cGF0Y2gKKysrIGIvc3JjcGtncy9nc3RyZWFtZXIxL3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5w YXRjaApAQCAtMSwxMyArMSwyNSBAQAotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24u YnVpbGQKLWluZGV4IGU3MzhjNTUuLmUxYjhkOTMgMTAwNjQ0CitGcm9tIDIyNWU4NzY4OGYyMWE4 MTcyMjQ2NTUzNzIwMDRlYjUxMmY4NjJkNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBOYXRoYW4gT3dlbnMgPG5kb3dlbnNAYXJ0aXhsaW51eC5vcmc+CitEYXRlOiBTdW4sIDE1IE5v diAyMDIwIDEwOjA0OjUwIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIG5vLWdpci1hdXRvbWF0aWMK KworLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgbWVzb24uYnVpbGQgbWVzb24uYnVpbGQK K2luZGV4IDVhMjE4MjMuLjVkMWRiMzcgMTAwNjQ0CiAtLS0gbWVzb24uYnVpbGQKICsrKyBtZXNv bi5idWlsZAotQEAgLTQ1MSw3ICs0NTEsNyBAQCBydF9saWIgPSBjYy5maW5kX2xpYnJhcnkoJ3J0 JywgcmVxdWlyZWQgOiBmYWxzZSkKK0BAIC01MDMsNyArNTAzLDcgQEAgcnRfbGliID0gY2MuZmlu ZF9saWJyYXJ5KCdydCcsIHJlcXVpcmVkIDogZmFsc2UpCiAgZ2lyID0gZmluZF9wcm9ncmFtKCdn LWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKICBn bm9tZSA9IGltcG9ydCgnZ25vbWUnKQogIAotLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBu b3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQotK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpCistYnVp bGRfZ2lyID0gZ2lyLmZvdW5kKCkgYW5kIChub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBn ZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykuZW5hYmxlZCgpKQorK2J1aWxkX2dpciA9IGdpci5m b3VuZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkKICAKICBnaXJf aW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0 KGdpbnQqLGdjaGFyKiopOycgKyBcCiAgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FC TEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKy0tIAorMi4yOS4yCisKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZQppbmRl eCAxNmY3Mzc5ZmM5My4uYWVhNGQ2N2E4NTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0cmVhbWVy MS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKQEAgLTEsMTYgKzEs MTUgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdHJlYW1lcjEnCiBwa2duYW1lPWdzdHJlYW1l cjEKLXZlcnNpb249MS4xNi4yCit2ZXJzaW9uPTEuMTguMQogcmV2aXNpb249MQogd3Jrc3JjPSJn c3RyZWFtZXItJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9Imdp ciIKIGNvbmZpZ3VyZV9hcmdzPSItRHB0cC1oZWxwZXItcGVybWlzc2lvbnM9Y2FwYWJpbGl0aWVz CiAgLURwYWNrYWdlLW9yaWdpbj1odHRwczovL3d3dy52b2lkbGludXgub3JnIC1EZGJnaGVscD1k aXNhYmxlZAotIC1EaW50cm9zcGVjdGlvbj0kKHZvcHRfaWYgZ2lyIGVuYWJsZWQgZGlzYWJsZWQp Ci0gLURndGtfZG9jPSQodm9wdF9pZiBndGtfZG9jIGVuYWJsZWQgZGlzYWJsZWQpIgotaG9zdG1h a2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgZmxleCBweXRob24gZG9jYm9vay14c2wgZ2xp Yi1kZXZlbAotIGxpYmNhcC1wcm9ncyAkKHZvcHRfaWYgZ3RrX2RvYyBndGstZG9jKSIKKyAtRGlu dHJvc3BlY3Rpb249JCh2b3B0X2lmIGdpciBlbmFibGVkIGRpc2FibGVkKSIKK2hvc3RtYWtlZGVw ZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIGZsZXggcHl0aG9uMyBkb2Nib29rLXhzbCBnbGliLWRl dmVsCisgbGliY2FwLXByb2dzIgogbWFrZWRlcGVuZHM9ImxpYnhtbDItZGV2ZWwgbGliZ2xpYi1k ZXZlbCBndGsrMy1kZXZlbCBsaWJjYXAtZGV2ZWwgbGlidW53aW5kLWRldmVsCiAgYmFzaC1jb21w bGV0aW9uIgogc2hvcnRfZGVzYz0iQ29yZSBHU3RyZWFtZXIgbGlicmFyaWVzIGFuZCBlbGVtZW50 cyAoMS54KSIKQEAgLTE4LDE4ICsxNywxMSBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFu QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0i aHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdl fS9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke3ZlcnNpb259LnRhci54eiIKLWNoZWNrc3VtPWUz ZjA0NDI0Njc4M2ZkNjg1NDM5NjQ3MzczZmExM2JhMTRmN2FiMGIzNDZlYWRkMDY0MzcwOTJmODQx OWU5NGUKK2NoZWNrc3VtPTc5ZGY4ZGUyMWYyODRhMTA1YTVjMTU2ODUyN2Y4YzU1OWM1ODNjODVj MGYyYmQ3YmRiNWIwMzcyYjhiZWVjYmEKIAotIyBQYWNrYWdlIGJ1aWxkIG9wdGlvbnMKLWJ1aWxk X29wdGlvbnM9ImdpciBndGtfZG9jIgorYnVpbGRfb3B0aW9ucz0iZ2lyIgogYnVpbGRfb3B0aW9u c19kZWZhdWx0PSJnaXIiCiAKLWRlc2Nfb3B0aW9uX2d0a19kb2M9IkJ1aWxkIEdUSyBEb2N1bWVu dGF0aW9uIHdpdGggZ3RrLWRvYyIKLQotaWYgWyAteiAiJENST1NTX0JVSUxEIiBdOyB0aGVuCi0J YnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIGd0a19kb2MiCi1maQotCiBnc3RyZWFtZXIxLWRldmVs X3BhY2thZ2UoKSB7CiAJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9Pj0ke3Zl cnNpb259XyR7cmV2aXNpb259IgogCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIK QEAgLTM3LDkgKzI5LDYgQEAgZ3N0cmVhbWVyMS1kZXZlbF9wYWNrYWdlKCkgewogCQl2bW92ZSB1 c3IvaW5jbHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwogCQl2bW92ZSAidXNyL2xpYi8q LnNvIgotCQlpZiBbICIkYnVpbGRfb3B0aW9uX2d0a19kb2MiIF07IHRoZW4KLQkJCXZtb3ZlIHVz ci9zaGFyZS9ndGstZG9jCi0JCWZpCiAJCXZtb3ZlIHVzci9zaGFyZS9hY2xvY2FsCiAJCWlmIFsg IiRidWlsZF9vcHRpb25fZ2lyIiBdOyB0aGVuCiAJCQl2bW92ZSAidXNyL3NoYXJlL2dpcioiCg== --===============2482004491093438930==--