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 28184 invoked from network); 20 Dec 2020 17:46:13 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 20 Dec 2020 17:46:13 -0000 Content-Type: multipart/mixed; boundary="===============3181742206447410630==" 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:46:09 +0100 List-Id: Message-ID: <20201220174609.SIf61J2B3RQGC4YKAPJdGtnn_94eUcahdrK_L7Exa3M@z> GitHub notification mails are now in MIME to allow UTF8. --===============3181742206447410630== 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== --===============3181742206447410630== 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 YjMyZGlzYWJsZWQ9eWVzCgpGcm9tIDUyOGI0ODhjZWZmODAyYWY1YjA3ODczNmQwZTJjMWU1ZWM5 MWE4MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5hdGhhbiBPd2VucyA8bmRvd2Vu c0BhcnRpeGxpbnV4Lm9yZz4KRGF0ZTogU3VuLCAxNSBOb3YgMjAyMCAxMDozMToxNiAtMDYwMApT dWJqZWN0OiBbUEFUQ0ggMDkvMTBdIGdzdC1wbHVnaW5zLWJhc2UxOiB1cGRhdGUgdG8gMS4xOC4x CgpTcGxpdCBzbmRpbyBwbHVnaW4gcmVsYXRlZCB0byAjMjUwNDQKLS0tCiAuLi4vcGF0Y2hlcy9u by1naXItYXV0b21hZ2ljLnBhdGNoICAgICAgICAgICAgfCAgIDI0ICstCiBzcmNwa2dzL2dzdC1w bHVnaW5zLWJhc2UxL3BhdGNoZXMvc25kaW8ucGF0Y2ggfCAxMTM0IC0tLS0tLS0tLS0tLS0tLS0t CiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlICAgICAgICAgICAgfCAgIDEyICst CiBzcmNwa2dzL2dzdC1zbmRpbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsK IDQgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTE0MSBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3BhdGNoZXMvc25kaW8u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2dzdC1zbmRpbwoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvcGF0Y2hlcy9uby1naXItYXV0b21hZ2ljLnBhdGNo IGIvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMucGF0 Y2gKaW5kZXggZjEyMjYwNDFhZTYuLjM2NDgzYTEwZTA2IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dz dC1wbHVnaW5zLWJhc2UxL3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRjaAorKysgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhc2UxL3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRjaApAQCAt MSwxMSArMSwyNSBAQAotLS0tIG1lc29uLmJ1aWxkCTIwMTktMDYtMDkgMTA6NTM6MDYuNjA3ODU5 MTgyICswMjAwCi0rKysgbWVzb24uYnVpbGQJMjAxOS0wNi0wOSAxMDo1MzoyNC45NTMwODgzODkg KzAyMDAKLUBAIC0zNTYsNyArMzU2LDcgQEAKK0Zyb20gMGQ3MzRlYjIzMTRmYzYwZGVlZTU5ZGU1 ZjE0NDA2MTdlMDRlNTEyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGhhbiBP d2VucyA8bmRvd2Vuc0BhcnRpeGxpbnV4Lm9yZz4KK0RhdGU6IFN1biwgMTUgTm92IDIwMjAgMTA6 MjU6MzAgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gbm8tZ2lyLWF1dG9tYXRpYworCistLS0KKyBt ZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKKworZGlmZiAtLWdpdCBtZXNvbi5idWlsZCBtZXNvbi5idWlsZAoraW5kZXggNWVj Y2U3Zi4uOThmODExMyAxMDA2NDQKKy0tLSBtZXNvbi5idWlsZAorKysrIG1lc29uLmJ1aWxkCitA QCAtNDE2LDcgKzQxNiw3IEBAIGVuZGlmCiAgCiAgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNj YW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKICBnbm9tZSA9 IGltcG9ydCgnZ25vbWUnKQotLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24u aXNfY3Jvc3NfYnVpbGQoKQotK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpCistYnVpbGRfZ2lyID0g Z2lyLmZvdW5kKCkgYW5kIChub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBnZXRfb3B0aW9u KCdpbnRyb3NwZWN0aW9uJykuZW5hYmxlZCgpKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIG9y IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkKICBnaXJfaW5pdF9zZWN0aW9u ID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFy KiopOycgKyBcCiAgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwg VFJVRSk7JyArIFwKICAgICAgJ2dfc2V0ZW52KCJHU1RfUkVHSVNUUllfMS4wIiwgIkAwQCIsIFRS VUUpOycuZm9ybWF0KG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkgKyAnL2dpcl9lbXB0eV9yZWdp c3RyeS5yZWcnKSArIFwKKy0tIAorMi4yOS4yCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBs dWdpbnMtYmFzZTEvcGF0Y2hlcy9zbmRpby5wYXRjaCBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFz ZTEvcGF0Y2hlcy9zbmRpby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2 MWZiODhlNjcuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvcGF0 Y2hlcy9zbmRpby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMzQgKzAsMCBAQAotU291cmNl OiBPcGVuQlNEIHBvcnRzLCBhZGFwdGVkIHRvIHdvcmsgd2l0aCBtZXNvbgotVXBzdHJlYW06IE5v Ci1SZWFzb246IHNuZGlvIHN1cHBvcnQKLQotZGlmZiAtLWdpdCBleHQvbWVzb24uYnVpbGQgZXh0 L21lc29uLmJ1aWxkCi1pbmRleCBkOTg0YjUwLi41ZjBiZWNjIDEwMDY0NAotLS0tIGV4dC9tZXNv bi5idWlsZAotKysrIGV4dC9tZXNvbi5idWlsZAotQEAgLTUsNSArNSw2IEBAIHN1YmRpcignbGli dmlzdWFsJykKLSBzdWJkaXIoJ29nZycpCi0gc3ViZGlyKCdvcHVzJykKLSBzdWJkaXIoJ3Bhbmdv JykKLStzdWJkaXIoJ3NuZGlvJykKLSBzdWJkaXIoJ3RoZW9yYScpCi0gc3ViZGlyKCd2b3JiaXMn KQotZGlmZiAtLWdpdCBleHQvc25kaW8vZ3N0c25kaW8uYyBleHQvc25kaW8vZ3N0c25kaW8uYwot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIzMjFkYzIKLS0tLSAvZGV2L251 bGwKLSsrKyBleHQvc25kaW8vZ3N0c25kaW8uYwotQEAgLTAsMCArMSw0MDEgQEAKLSsvKgotKyAq IENvcHlyaWdodCAoQykgMjAwOCBKYWNvYiBNZXVzZXIgPGpha2Vtc3JAc2RmLmxvbmVzdGFyLm9y Zz4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWxleGFuZHJlIFJhdGNob3YgPGFsZXhAY2FvdWEu b3JnPgotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3Ry aWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0rICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQg ZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQotKyAqIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3Bp ZXMuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFV VEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKLSsgKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNP RlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0rICogTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJM RSBGT1IKLSsgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCi0rICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBM T1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCi0rICogQUNUSU9OIE9G IENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBP VVQgT0YKLSsgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBP RiBUSElTIFNPRlRXQVJFLgotKyAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1 ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRl ICJnc3RzbmRpby5oIgotKwotK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X3NuZGlvX2RlYnVnKTsK LSsjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3Rfc25kaW9fZGVidWcKLSsKLStHVHlwZSBnc3Rf c25kaW9zaW5rX2dldF90eXBlICh2b2lkKTsKLStHVHlwZSBnc3Rfc25kaW9zcmNfZ2V0X3R5cGUg KHZvaWQpOwotKwotK3N0YXRpYyBnYm9vbGVhbgotK3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBw bHVnaW4pCi0rewotKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9zbmRpb19kZWJ1Zywg InNuZGlvIiwgMCwgInNuZGlvIHBsdWdpbnMiKTsKLSsKLSsgIC8qIHByZWZlciBzbmRpb3NyYyBv dmVyIHB1bHNlc3JjIChHU1RfUkFOS19QUklNQVJZICsgMTApICovCi0rICBpZiAoIWdzdF9lbGVt ZW50X3JlZ2lzdGVyIChwbHVnaW4sICJzbmRpb3NyYyIsIEdTVF9SQU5LX1BSSU1BUlkgKyAyMCwK LSsgICAgICAgICAgZ3N0X3NuZGlvc3JjX2dldF90eXBlKCkpKQotKyAgICByZXR1cm4gRkFMU0U7 Ci0rICAvKiBwcmVmZXIgc25kaW9zaW5rIG92ZXIgcHVsc2VzaW5rIChHU1RfUkFOS19QUklNQVJZ ICsgMTApICovCi0rICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJzbmRpb3Np bmsiLCBHU1RfUkFOS19QUklNQVJZICsgMjAsCi0rICAgICAgICAgIGdzdF9zbmRpb3NpbmtfZ2V0 X3R5cGUoKSkpCi0rICAgIHJldHVybiBGQUxTRTsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStH U1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCi0rICAgIEdTVF9WRVJTSU9OX01J Tk9SLAotKyAgICBzbmRpbywKLSsgICAgInNuZGlvIHBsdWdpbiBsaWJyYXJ5IiwKLSsgICAgcGx1 Z2luX2luaXQsIFZFUlNJT04sIEdTVF9MSUNFTlNFLCBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFD S0FHRV9PUklHSU4pCi0rCi0rLyoKLSsgKiBjb21tb24gY29kZSB0byBzcmMgYW5kIHNpbmsKLSsg Ki8KLSsKLSt2b2lkCi0rZ3N0X3NuZGlvX2luaXQgKHN0cnVjdCBnc3RzbmRpbyAqc2lvLCBHT2Jq ZWN0ICpvYmopCi0rewotKyAgc2lvLT5vYmogPSBvYmo7Ci0rICBzaW8tPmhkbCA9IE5VTEw7Ci0r ICBzaW8tPmRldmljZSA9IGdfc3RyZHVwIChTSU9fREVWQU5ZKTsKLSt9Ci0rCi0rdm9pZAotK2dz dF9zbmRpb19maW5hbGl6ZSAoc3RydWN0IGdzdHNuZGlvICpzaW8pCi0rewotKyAgZ3N0X2NhcHNf cmVwbGFjZSAoJnNpby0+Y3VyX2NhcHMsIE5VTEwpOwotKyAgZ19mcmVlIChzaW8tPmRldmljZSk7 Ci0rfQotKwotK0dzdENhcHMgKgotK2dzdF9zbmRpb19nZXRjYXBzIChzdHJ1Y3QgZ3N0c25kaW8g KnNpbywgR3N0Q2FwcyAqIGZpbHRlcikKLSt7Ci0rICBpZiAoc2lvLT5jdXJfY2FwcyA9PSBOVUxM KSB7Ci0rICAgIC8qIFhYWCAqLwotKyAgICBHU1RfTE9HX09CSkVDVCAoc2lvLT5vYmosICJnZXRj YXBzIGNhbGxlZCwgcmV0dXJuaW5nIHRlbXBsYXRlIGNhcHMiKTsKLSsgICAgcmV0dXJuIE5VTEw7 Ci0rICB9Ci0rCi0rICBHU1RfTE9HX09CSkVDVCAoc2lvLT5vYmosICJyZXR1cm5pbmcgJSIgR1NU X1BUUl9GT1JNQVQsIHNpby0+Y3VyX2NhcHMpOwotKwotKyAgaWYgKGZpbHRlcikgewotKyAgICBy ZXR1cm4gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwKLSsgICAgICBzaW8tPmN1cl9j YXBzLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotKyAgfSBlbHNlIHsKLSsgICAgcmV0dXJu IGdzdF9jYXBzX3JlZiAoc2lvLT5jdXJfY2Fwcyk7Ci0rICB9Ci0rfQotKwotK3N0YXRpYyB2b2lk Ci0rZ3N0X3NuZGlvX29udm9sICh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpCi0rewotKyAg c3RydWN0IGdzdHNuZGlvICpzaW8gPSBhcmc7Ci0rICBzaW8tPnZvbHVtZSA9IHZvbDsKLSsgIGdf b2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHNpby0+b2JqKSwgIm11dGUiKTsKLSsgIGdfb2JqZWN0 X25vdGlmeSAoR19PQkpFQ1QgKHNpby0+b2JqKSwgInZvbHVtZSIpOwotK30KLSsKLStnYm9vbGVh bgotK2dzdF9zbmRpb19vcGVuIChzdHJ1Y3QgZ3N0c25kaW8gKnNpbywgZ2ludCBtb2RlKQotK3sK LSsgIEdWYWx1ZSBsaXN0ID0gR19WQUxVRV9JTklULCBpdGVtID0gR19WQUxVRV9JTklUOwotKyAg R3N0U3RydWN0dXJlICpzOwotKyAgR3N0Q2FwcyAqY2FwczsKLSsgIHN0cnVjdCBzaW9fZW5jICpl bmM7Ci0rICBzdHJ1Y3Qgc2lvX2NhcCBjYXA7Ci0rICBjaGFyIGZtdFsxNl07Ci0rICBpbnQgaSwg Y2hhbjsKLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHNpby0+b2JqLCAib3BlbiIpOwotKwotKyAg c2lvLT5oZGwgPSBzaW9fb3BlbiAoc2lvLT5kZXZpY2UsIG1vZGUsIDApOwotKyAgaWYgKHNpby0+ aGRsID09IE5VTEwpIHsKLSsgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpby0+b2JqLCBSRVNPVVJD RSwgT1BFTl9SRUFEX1dSSVRFLAotKwkoIkNvdWxkbid0IG9wZW4gc25kaW8gZGV2aWNlIiksIChO VUxMKSk7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsgIHNpby0+bW9kZSA9IG1vZGU7Ci0r Ci0rICBpZiAoIXNpb19nZXRjYXAoc2lvLT5oZGwsICZjYXApKSB7Ci0rICAgIEdTVF9FTEVNRU5U X0VSUk9SIChzaW8sIFJFU09VUkNFLCBPUEVOX1dSSVRFLAotKwkoIkNvdWxkbid0IGdldCBkZXZp Y2UgY2FwYWJpbGl0aWVzIiksIChOVUxMKSk7Ci0rICAgIHNpb19jbG9zZShzaW8tPmhkbCk7Ci0r ICAgIHNpby0+aGRsID0gTlVMTDsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQotKyAgaWYgKGNh cC5uY29uZiA9PSAwKSB7Ci0rICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW8sIFJFU09VUkNFLCBP UEVOX1dSSVRFLAotKwkoIkRldmljZSBoYXMgZW1wdHkgY2FwYWJpbGl0aWVzIiksIChOVUxMKSk7 Ci0rICAgIHNpb19jbG9zZShzaW8tPmhkbCk7Ci0rICAgIHNpby0+aGRsID0gTlVMTDsKLSsgICAg cmV0dXJuIEZBTFNFOwotKyAgfQotKyAgc2lvX29udm9sIChzaW8tPmhkbCwgZ3N0X3NuZGlvX29u dm9sLCBzaW8pOwotKwotKyAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLSsgIHMgPSBn c3Rfc3RydWN0dXJlX25ldyAoImF1ZGlvL3gtcmF3IiwgKGNoYXIgKilOVUxMLCAodm9pZCAqKU5V TEwpOwotKwotKyAgLyoKLSsgICAqIHNjYW4gc3VwcG9ydGVkIHJhdGVzCi0rICAgKi8KLSsgIGdf dmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOwotKyAgZ192YWx1ZV9pbml0ICgmaXRl bSwgR19UWVBFX0lOVCk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgU0lPX05SQVRFOyBpKyspIHsKLSsg ICAgICBpZiAoKGNhcC5jb25mc1swXS5yYXRlICYgKDEgPDwgaSkpID09IDApCi0rCSAgY29udGlu dWU7Ci0rICAgICAgZ192YWx1ZV9zZXRfaW50KCZpdGVtLCBjYXAucmF0ZVtpXSk7Ci0rICAgICAg Z3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJml0ZW0pOwotKyAgfQotKyAgZ3N0 X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJyYXRlIiwgJmxpc3QpOwotKyAgZ192YWx1ZV91bnNl dCAoJml0ZW0pOwotKyAgZ192YWx1ZV91bnNldCAoJmxpc3QpOwotKwotKyAgLyoKLSsgICAqIHNj YW4gc3VwcG9ydGVkIGNoYW5uZWxzCi0rICAgKi8KLSsgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdT VF9UWVBFX0xJU1QpOwotKyAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX0lOVCk7Ci0rICBj aGFuID0gKG1vZGUgPT0gU0lPX1BMQVkpID8gY2FwLmNvbmZzWzBdLnBjaGFuIDogY2FwLmNvbmZz WzBdLnJjaGFuOwotKyAgZm9yIChpID0gMDsgaSA8IFNJT19OQ0hBTjsgaSsrKSB7Ci0rICAgICAg aWYgKChjaGFuICYgKDEgPDwgaSkpID09IDApCi0rCSAgY29udGludWU7Ci0rICAgICAgZ192YWx1 ZV9zZXRfaW50KCZpdGVtLCAobW9kZSA9PSBTSU9fUExBWSkgPyBjYXAucGNoYW5baV0gOiBjYXAu cmNoYW5baV0pOwotKyAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZp dGVtKTsKLSsgIH0KLSsgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzLCAiY2hhbm5lbHMiLCAm bGlzdCk7Ci0rICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7Ci0rICBnX3ZhbHVlX3Vuc2V0ICgmbGlz dCk7Ci0rCi0rICAvKgotKyAgICogc2NhbiBzdXBwb3J0ZWQgZW5jb2RpbmdzCi0rICAgKi8KLSsg IGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOwotKyAgZ192YWx1ZV9pbml0ICgm aXRlbSwgR19UWVBFX1NUUklORyk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgU0lPX05FTkM7IGkrKykg ewotKyAgICAgIGlmICgoY2FwLmNvbmZzWzBdLmVuYyAmICgxIDw8IGkpKSA9PSAwKQotKwkgIGNv bnRpbnVlOwotKyAgICAgIGVuYyA9IGNhcC5lbmMgKyBpOwotKyAgICAgIGlmIChlbmMtPmJpdHMg JSA4ICE9IDApCi0rCSAgY29udGludWU7Ci0rICAgICAgaWYgKGVuYy0+Yml0cyA8IGVuYy0+YnBz ICogOCAmJiBlbmMtPm1zYikKLSsJICBjb250aW51ZTsKLSsgICAgICBpZiAoZW5jLT5iaXRzID09 IGVuYy0+YnBzICogOCkgewotKwkgIHNucHJpbnRmKGZtdCwgc2l6ZW9mKGZtdCksICIlcyV1JXMi LAotKwkJICAgZW5jLT5zaWcgPyAiUyIgOiAiVSIsCi0rCQkgICBlbmMtPmJpdHMsCi0rCQkgICBl bmMtPmJwcyA+IDEgPyAoZW5jLT5sZSA/ICJMRSIgOiAiQkUiKSA6ICIiKTsKLSsgICAgICB9IGVs c2UgewotKwkgIHNucHJpbnRmKGZtdCwgc2l6ZW9mKGZtdCksICIlcyV1XyV1JXMiLAotKwkJICAg ZW5jLT5zaWcgPyAiUyIgOiAiVSIsCi0rCQkgICBlbmMtPmJpdHMsCi0rCQkgICBlbmMtPmJwcyAq IDgsCi0rCQkgICBlbmMtPmJwcyA+IDEgPyAoZW5jLT5sZSA/ICJMRSIgOiAiQkUiKSA6ICIiKTsK LSsgICAgICB9Ci0rICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKCZpdGVtLCBmbXQpOwotKyAgICAg IGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZpdGVtKTsKLSsgIH0KLSsgIGdz dF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzLCAiZm9ybWF0IiwgJmxpc3QpOwotKyAgZ192YWx1ZV91 bnNldCAoJml0ZW0pOwotKyAgZ192YWx1ZV91bnNldCAoJmxpc3QpOwotKwotKyAgLyoKLSsgICAq IGFkZCB0aGUgb25seSBzdXBwb3J0ZWQgbGF5b3V0OiBpbnRlcmxlYXZlZAotKyAgICovCi0rICBn X3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfU1RSSU5HKTsKLSsgIGdfdmFsdWVfc2V0X3N0cmlu ZygmaXRlbSwgImludGVybGVhdmVkIik7Ci0rICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAocywg ImxheW91dCIsICZpdGVtKTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKLSsKLSsgIGdzdF9j YXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKGNhcHMsIHMpOwotKyAgc2lvLT5jdXJfY2FwcyA9IGNhcHM7 Ci0rICBHU1RfREVCVUcgKCJjYXBzIGFyZSAlcyIsIGdzdF9jYXBzX3RvX3N0cmluZyhjYXBzKSk7 Ci0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3Rfc25kaW9fY2xvc2UgKHN0 cnVjdCBnc3RzbmRpbyAqc2lvKQotK3sKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHNpby0+b2JqLCAi Y2xvc2UiKTsKLSsKLSsgIGdzdF9jYXBzX3JlcGxhY2UgKCZzaW8tPmN1cl9jYXBzLCBOVUxMKTsK LSsgIHNpb19jbG9zZSAoc2lvLT5oZGwpOwotKyAgc2lvLT5oZGwgPSBOVUxMOwotKyAgcmV0dXJu IFRSVUU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvX2NiICh2b2lkICphZGRyLCBp bnQgZGVsdGEpCi0rewotKyAgc3RydWN0IGdzdHNuZGlvICpzaW8gPSBhZGRyOwotKwotKyAgZGVs dGEgKj0gc2lvLT5icGY7Ci0rICBpZiAoc2lvLT5tb2RlID09IFNJT19QTEFZKQotKyAgICAgIHNp by0+ZGVsYXkgLT0gZGVsdGE7Ci0rICBlbHNlCi0rICAgICAgc2lvLT5kZWxheSArPSBkZWx0YTsK LSt9Ci0rCi0rZ2Jvb2xlYW4KLStnc3Rfc25kaW9fcHJlcGFyZSAoc3RydWN0IGdzdHNuZGlvICpz aW8sIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKnNwZWMpCi0rewotKyAgc3RydWN0IHNpb19wYXIg cGFyLCByZXRwYXI7Ci0rICB1bnNpZ25lZCBuY2hhbm5lbHM7Ci0rCi0rICBHU1RfREVCVUdfT0JK RUNUIChzaW8sICJwcmVwYXJlIik7Ci0rCi0rICBpZiAoc3BlYy0+dHlwZSAhPSBHU1RfQVVESU9f UklOR19CVUZGRVJfRk9STUFUX1RZUEVfUkFXKSB7Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1Ig KHNpbywgUkVTT1VSQ0UsIE9QRU5fUkVBRF9XUklURSwKLSsJKCJPbmx5IHJhdyBidWZmZXIgZm9y bWF0IHN1cHBvcnRlZCBieSBzbmRpbyIpLCAoTlVMTCkpOwotKyAgICAgIHJldHVybiBGQUxTRTsK LSsgIH0KLSsgIGlmICghR1NUX0FVRElPX0lORk9fSVNfSU5URUdFUigmc3BlYy0+aW5mbykpIHsK LSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2lvLCBSRVNPVVJDRSwgT1BFTl9SRUFEX1dSSVRF LAotKwkoIk9ubHkgaW50ZWdlciBmb3JtYXQgc3VwcG9ydGVkIiksIChOVUxMKSk7Ci0rICAgICAg cmV0dXJuIEZBTFNFOwotKyAgfQotKyAgaWYgKEdTVF9BVURJT19JTkZPX0RFUFRIKCZzcGVjLT5p bmZvKSAlIDgpIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2lvLCBSRVNPVVJDRSwgT1BF Tl9SRUFEX1dSSVRFLAotKwkoIk9ubHkgZGVwdGhzIG11bHRpcGxlIG9mIDggYXJlIHN1cHBvcnRl ZCIpLCAoTlVMTCkpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsKLSsgIHNpb19pbml0 cGFyICgmcGFyKTsKLSsgIHN3aXRjaCAoR1NUX0FVRElPX0lORk9fRk9STUFUICgmc3BlYy0+aW5m bykpIHsKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TODoKLSsgIGNhc2UgR1NUX0FVRElPX0ZP Uk1BVF9VODoKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMTZMRToKLSsgIGNhc2UgR1NUX0FV RElPX0ZPUk1BVF9TMTZCRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMTZMRToKLSsgIGNh c2UgR1NUX0FVRElPX0ZPUk1BVF9VMTZCRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzJM RToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzJCRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZP Uk1BVF9VMzJMRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMzJCRToKLSsgIGNhc2UgR1NU X0FVRElPX0ZPUk1BVF9TMjRfMzJMRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMjRfMzJC RToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMjRfMzJMRToKLSsgIGNhc2UgR1NUX0FVRElP X0ZPUk1BVF9VMjRfMzJCRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMjRMRToKLSsgIGNh c2UgR1NUX0FVRElPX0ZPUk1BVF9TMjRCRToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMjRM RToKLSsgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMjRCRToKLSsgICAgICBicmVhazsKLSsgIGRl ZmF1bHQ6Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbywgUkVTT1VSQ0UsIE9QRU5fUkVB RF9XUklURSwKLSsJICAoIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdCIpLAotKwkgICgiZm9ybWF0 ID0gJWQiLCBHU1RfQVVESU9fSU5GT19GT1JNQVQgKCZzcGVjLT5pbmZvKSkpOwotKyAgICAgIHJl dHVybiBGQUxTRTsKLSsgIH0KLSsgIHBhci5zaWcgPSBHU1RfQVVESU9fSU5GT19JU19TSUdORUQo JnNwZWMtPmluZm8pOwotKyAgcGFyLmJpdHMgPSBHU1RfQVVESU9fSU5GT19XSURUSCgmc3BlYy0+ aW5mbyk7Ci0rICBwYXIuYnBzID0gR1NUX0FVRElPX0lORk9fREVQVEgoJnNwZWMtPmluZm8pIC8g ODsKLSsgIGlmIChwYXIuYnBzID4gMSkKLSsgICAgICBwYXIubGUgPSBHU1RfQVVESU9fSU5GT19J U19MSVRUTEVfRU5ESUFOKCZzcGVjLT5pbmZvKTsKLSsgIGlmIChwYXIuYml0cyA8IHBhci5icHMg KiA4KQotKyAgICAgIHBhci5tc2IgPSAwOwotKyAgcGFyLnJhdGUgPSBHU1RfQVVESU9fSU5GT19S QVRFKCZzcGVjLT5pbmZvKTsKLSsgIGlmIChzaW8tPm1vZGUgPT0gU0lPX1BMQVkpCi0rICAgICAg cGFyLnBjaGFuID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMoJnNwZWMtPmluZm8pOwotKyAgZWxz ZQotKyAgICAgIHBhci5yY2hhbiA9IEdTVF9BVURJT19JTkZPX0NIQU5ORUxTKCZzcGVjLT5pbmZv KTsKLSsgIHBhci5yb3VuZCA9IHBhci5yYXRlIC8gMTAwMDAwMC4gKiBzcGVjLT5sYXRlbmN5X3Rp bWU7Ci0rICBwYXIuYXBwYnVmc3ogPSBwYXIucmF0ZSAvIDEwMDAwMDAuICogc3BlYy0+YnVmZmVy X3RpbWU7Ci0rCi0rICBpZiAoIXNpb19zZXRwYXIgKHNpby0+aGRsLCAmcGFyKSkgewotKyAgICAg IEdTVF9FTEVNRU5UX0VSUk9SIChzaW8sIFJFU09VUkNFLCBPUEVOX1dSSVRFLAotKwkoIlVuc3Vw cG9ydGVkIGF1ZGlvIGVuY29kaW5nIiksIChOVUxMKSk7Ci0rICAgICAgcmV0dXJuIEZBTFNFOwot KyAgfQotKyAgaWYgKCFzaW9fZ2V0cGFyIChzaW8tPmhkbCwgJnJldHBhcikpIHsKLSsgICAgICBH U1RfRUxFTUVOVF9FUlJPUiAoc2lvLCBSRVNPVVJDRSwgT1BFTl9XUklURSwKLSsJKCJDb3VsZG4n dCBnZXQgYXVkaW8gZGV2aWNlIHBhcmFtZXRlcnMiKSwgKE5VTEwpKTsKLSsgICAgICByZXR1cm4g RkFMU0U7Ci0rICB9Ci0rI2lmIDAKLSsgIEdTVF9ERUJVRyAoImZvcm1hdCA9ICVzLCAiCi0rICAg ICAgICAgInJlcXVlc3RlZDogc2lnID0gJWQsIGJpdHMgPSAlZCwgYnBzID0gJWQsIGxlID0gJWQs IG1zYiA9ICVkLCAiCi0rCSAicmF0ZSA9ICVkLCBwY2hhbiA9ICVkLCByb3VuZCA9ICVkLCBhcHBi dWZzeiA9ICVkOyAiCi0rCSAicmV0dXJuZWQ6IHNpZyA9ICVkLCBiaXRzID0gJWQsIGJwcyA9ICVk LCBsZSA9ICVkLCBtc2IgPSAlZCwgIgotKwkgInJhdGUgPSAlZCwgcGNoYW4gPSAlZCwgcm91bmQg PSAlZCwgYXBwYnVmc3ogPSAlZCwgYnVmc3ogPSAlZCIsCi0rCSBHU1RfQVVESU9fSU5GT19OQU1F KCZzcGVjLT5pbmZvKSwKLSsJIHBhci5zaWcsIHBhci5iaXRzLCBwYXIuYnBzLCBwYXIubGUsIHBh ci5tc2IsCi0rCSBwYXIucmF0ZSwgcGFyLnBjaGFuLCBwYXIucm91bmQsIHBhci5hcHBidWZzeiwK LSsJIHJldHBhci5zaWcsIHJldHBhci5iaXRzLCByZXRwYXIuYnBzLCByZXRwYXIubGUsIHJldHBh ci5tc2IsCi0rCSByZXRwYXIucmF0ZSwgcmV0cGFyLnBjaGFuLCByZXRwYXIucm91bmQsIHJldHBh ci5hcHBidWZzeiwgcmV0cGFyLmJ1ZnN6KTsKLSsjZW5kaWYKLSsgIGlmIChwYXIuYml0cyAhPSBy ZXRwYXIuYml0cyB8fAotKyAgICAgIHBhci5icHMgIT0gcmV0cGFyLmJwcyB8fAotKyAgICAgIHBh ci5yYXRlICE9IHJldHBhci5yYXRlIHx8Ci0rICAgICAgKHNpby0+bW9kZSA9PSBTSU9fUExBWSAm JiBwYXIucGNoYW4gIT0gcmV0cGFyLnBjaGFuKSB8fAotKyAgICAgIChzaW8tPm1vZGUgPT0gU0lP X1JFQyAmJiBwYXIucmNoYW4gIT0gcmV0cGFyLnJjaGFuKSB8fAotKyAgICAgIChwYXIuYnBzID4g MSAmJiBwYXIubGUgIT0gcmV0cGFyLmxlKSB8fAotKyAgICAgIChwYXIuYml0cyA8IHBhci5icHMg KiA4ICYmIHBhci5tc2IgIT0gcmV0cGFyLm1zYikpIHsKLSsgICAgICBHU1RfRUxFTUVOVF9FUlJP UiAoc2lvLCBSRVNPVVJDRSwgT1BFTl9XUklURSwKLSsJKCJBdWRpbyBkZXZpY2UgcmVmdXNlZCBy ZXF1ZXN0ZWQgcGFyYW1ldGVycyIpLCAoTlVMTCkpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsg IH0KLSsKLSsgIG5jaGFubmVscyA9IChzaW8tPm1vZGUgPT0gU0lPX1BMQVkpID8gcmV0cGFyLnBj aGFuIDogcmV0cGFyLnJjaGFuOwotKyAgc3BlYy0+c2Vnc2l6ZSA9IHJldHBhci5yb3VuZCAqIHJl dHBhci5icHMgKiBuY2hhbm5lbHM7Ci0rICBzcGVjLT5zZWd0b3RhbCA9IHJldHBhci5idWZzeiAv IHJldHBhci5yb3VuZDsKLSsgIHNpby0+YnBmID0gcmV0cGFyLmJwcyAqIG5jaGFubmVsczsKLSsg IHNpby0+ZGVsYXkgPSAwOwotKyAgc2lvX29ubW92ZSAoc2lvLT5oZGwsIGdzdF9zbmRpb19jYiwg c2lvKTsKLSsKLSsgIGlmICghc2lvX3N0YXJ0IChzaW8tPmhkbCkpIHsKLSsgICAgR1NUX0VMRU1F TlRfRVJST1IgKHNpby0+b2JqLCBSRVNPVVJDRSwgT1BFTl9SRUFEX1dSSVRFLAotKyAgICAgICgi Q291bGQgbm90IHN0YXJ0IHNuZGlvIiksIChOVUxMKSk7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsg IH0KLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9zbmRpb191bnByZXBh cmUgKHN0cnVjdCBnc3RzbmRpbyAqc2lvKQotK3sKLSsgIGlmIChzaW8tPmhkbCkKLSsgICAgc2lv X3N0b3AgKHNpby0+aGRsKTsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLSt2b2lkCi0rZ3N0X3Nu ZGlvX3NldF9wcm9wZXJ0eSAoc3RydWN0IGdzdHNuZGlvICpzaW8sIGd1aW50IHByb3BfaWQsCi0r ICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi0rewotKyAgc3dp dGNoIChwcm9wX2lkKSB7Ci0rICAgIGNhc2UgUFJPUF9ERVZJQ0U6Ci0rICAgICAgZ19mcmVlIChz aW8tPmRldmljZSk7Ci0rICAgICAgc2lvLT5kZXZpY2UgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZh bHVlKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX1ZPTFVNRToKLSsgICAgICBzaW9f c2V0dm9sIChzaW8tPmhkbCwgZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSkgKiBTSU9fTUFYVk9M KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBQUk9QX01VVEU6Ci0rICAgICAgaWYgKGdfdmFs dWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKSkKLSsgICAgICAgIHNpb19zZXR2b2wgKHNpby0+aGRsLCAw KTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgIH0KLSt9 Ci0rCi0rdm9pZAotK2dzdF9zbmRpb19nZXRfcHJvcGVydHkgKHN0cnVjdCBnc3RzbmRpbyAqc2lv LCBndWludCBwcm9wX2lkLAotKyAgICBHVmFsdWUgKiB2YWx1ZSwgIEdQYXJhbVNwZWMgKiBwc3Bl YykKLSt7Ci0rICBzd2l0Y2ggKHByb3BfaWQpIHsKLSsgICAgY2FzZSBQUk9QX0RFVklDRToKLSsg ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBzaW8tPmRldmljZSk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIGNhc2UgUFJPUF9WT0xVTUU6Ci0rICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2 YWx1ZSwgKGdkb3VibGUpc2lvLT52b2x1bWUgLyBTSU9fTUFYVk9MKTsKLSsgICAgICBicmVhazsK LSsgICAgY2FzZSBQUk9QX01VVEU6Ci0rICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUs IChzaW8tPnZvbHVtZSA9PSAwKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAg ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChzaW8tPm9iaiwgcHJvcF9pZCwg cHNwZWMpOwotKyAgfQotK30KLWRpZmYgLS1naXQgZXh0L3NuZGlvL2dzdHNuZGlvLmggZXh0L3Nu ZGlvL2dzdHNuZGlvLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43N2Vj NGU2Ci0tLS0gL2Rldi9udWxsCi0rKysgZXh0L3NuZGlvL2dzdHNuZGlvLmgKLUBAIC0wLDAgKzEs NzggQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAxMiBBbGV4YW5kcmUgUmF0Y2hvdiA8YWxl eEBjYW91YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBh bmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGggb3Ig d2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCi0r ICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4g YWxsIGNvcGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFO RCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJEIFRP IFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsgKiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1Ig QkUgTElBQkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05T RVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElO RyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsgKiBB Q1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBB UklTSU5HIE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZP Uk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rI2lmbmRlZiBfX0dTVF9TTkRJT19IX18K LSsjZGVmaW5lIF9fR1NUX1NORElPX0hfXwotKwotKyNpbmNsdWRlIDxzbmRpby5oPgotKyNpbmNs dWRlIDxnc3QvZ3N0Lmg+Ci0rI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb3NpbmsuaD4KLSsj aW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvc3JjLmg+Ci0rI2luY2x1ZGUgPGdzdC9hdWRpby9z dHJlYW12b2x1bWUuaD4KLSsKLStlbnVtCi0rewotKyAgUFJPUF8wLAotKyAgUFJPUF9ERVZJQ0Us Ci0rICBQUk9QX1ZPTFVNRSwKLSsgIFBST1BfTVVURQotK307Ci0rCi0rI2RlZmluZSBHU1RfU05E SU9fQ0FQU19TVFJJTkcJCQkJCVwKLSsJImF1ZGlvL3gtcmF3LCAiCQkJCQkJXAotKyAgICAgICAg ImZvcm1hdCA9IChzdHJpbmcpIHsgIgkJCQkJXAotKwkJICAgICAiUzgsIFU4LCAiCQkJCQlcCi0r CQkgICAgICJTMTZMRSwgUzE2QkUsIFUxNkxFLCBVMTZCRSwgIgkJXAotKwkJICAgICAiUzMyTEUs IFMzMkJFLCBVMzJMRSwgVTMyQkUsICIJCVwKLSsJCSAgICAgIlMyNF8zMkxFLCBTMjRfMzJCRSwg VTI0XzMyTEUsICIJCVwKLSsJCSAgICAgIlUyNF8zMkJFLCBTMjRMRSwgUzI0QkUsIFUyNExFLCBV MjRCRSAiCVwKLSsJIn0sICIJCQkJCQkJXAotKyAgICAgICAgImxheW91dCA9IChzdHJpbmcpIGlu dGVybGVhdmVkLCAiCQkJXAotKyAgICAgICAgInJhdGUgPSAoaW50KSBbIDgwMDAsIDE5MjAwMCBd LCAiCQkJXAotKyAgICAgICAgImNoYW5uZWxzID0gKGludCkgWzEsIDE2XSIKLSsKLSsvKgotKyAq IGRhdGEgY29tbW9uIHRvIHNyYyBhbmQgc2luawotKyAqLwotK3N0cnVjdCBnc3RzbmRpbyB7Ci0r ICAgIHN0cnVjdCBzaW9faGRsICpoZGw7Ci0rICAgIGdjaGFyICpkZXZpY2U7Ci0rICAgIGdpbnQg bW9kZTsKLSsgICAgZ2ludCBicGY7CQkvKiBieXRlcyBwZXIgZnJhbWUgKi8KLSsgICAgZ2ludCBk ZWxheTsJCS8qIGJ5dGVzIHN0b3JlZCBpbiB0aGUgYXVkaW8gZmlmbyAqLwotKyAgICBndWludCB2 b2x1bWU7CS8qIHZvbHVtZSBsZXZlbCAqLwotKyAgICBHc3RDYXBzICpjdXJfY2FwczsgIC8qIHNh dmVkIGNhcGFiaWxpdGllcyBvZiBvcGVuZWQgZGV2aWNlICovCi0rICAgIEdPYmplY3QgKm9iajsJ LyogZm9yIGxvZ2dpbmcgKi8KLSt9OwotKwotKyNkZWZpbmUgR1NUX1NORElPX0RFTEFZKHMpICgo cyktPmRlbGF5IC8gKHMpLT5icGYpCi0rCi0rdm9pZCBnc3Rfc25kaW9faW5pdCAoc3RydWN0IGdz dHNuZGlvICpzaW8sIEdPYmplY3QgKm9iaik7Ci0rdm9pZCBnc3Rfc25kaW9fZmluYWxpemUgKHN0 cnVjdCBnc3RzbmRpbyAqc2lvKTsKLStHc3RDYXBzICpnc3Rfc25kaW9fZ2V0Y2FwcyAoc3RydWN0 IGdzdHNuZGlvICpzaW8sIEdzdENhcHMgKiBmaWx0ZXIpOwotK2dib29sZWFuIGdzdF9zbmRpb19v cGVuIChzdHJ1Y3QgZ3N0c25kaW8gKnNpbywgZ2ludCBtb2RlKTsKLStnYm9vbGVhbiBnc3Rfc25k aW9fY2xvc2UgKHN0cnVjdCBnc3RzbmRpbyAqc2lvKTsKLStnYm9vbGVhbiBnc3Rfc25kaW9fcHJl cGFyZSAoc3RydWN0IGdzdHNuZGlvICpzaW8sIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKnNwZWMp OwotK2dib29sZWFuIGdzdF9zbmRpb191bnByZXBhcmUgKHN0cnVjdCBnc3RzbmRpbyAqc2lvKTsK LSt2b2lkIGdzdF9zbmRpb19zZXRfcHJvcGVydHkgKHN0cnVjdCBnc3RzbmRpbyAqc2lvLCBndWlu dCBwcm9wX2lkLAotKyAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3Bl Yyk7Ci0rdm9pZCBnc3Rfc25kaW9fZ2V0X3Byb3BlcnR5IChzdHJ1Y3QgZ3N0c25kaW8gKnNpbywg Z3VpbnQgcHJvcF9pZCwKLSsgICAgIEdWYWx1ZSAqIHZhbHVlLCAgR1BhcmFtU3BlYyAqIHBzcGVj KTsKLSsKLStpbnQgZ3N0X3NuZGlvX3NldHBhcihncG9pbnRlciBzaW8sIEdzdEF1ZGlvUmluZ0J1 ZmZlclNwZWMgKiBzcGVjLAotKyAgICAgaW50IG1vZGUsIHN0cnVjdCBzaW9faGRsICpoZGwpOwot K0dzdENhcHMgKmdzdF9zbmRpb19jYXBzIChncG9pbnRlciBzaW8sIGludCBtb2RlLCBzdHJ1Y3Qg c2lvX2hkbCAqaGRsKTsKLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgZXh0L3NuZGlvL21lc29uLmJ1 aWxkIGV4dC9zbmRpby9tZXNvbi5idWlsZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjNmOWE5ZmUKLS0tLSAvZGV2L251bGwKLSsrKyBleHQvc25kaW8vbWVzb24uYnVpbGQK LUBAIC0wLDAgKzEsMjEgQEAKLStzbmRpb19zb3VyY2VzID0gWwotKyAgJ2dzdHNuZGlvLmMnLAot KyAgJ3NuZGlvc2luay5jJywKLSsgICdzbmRpb3NyYy5jJywKLStdCi0rCi0rY2MgPSAgbWVzb24u Z2V0X2NvbXBpbGVyKCdjJykKLSsKLStzbmRpb19kZXAgPSBjYy5maW5kX2xpYnJhcnkoJ3NuZGlv JywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdzbmRpbycpKQotKwotK2lmIHNuZGlvX2RlcC5mb3Vu ZCgpCi0rICBnc3RzbmRpbyA9IGxpYnJhcnkoJ2dzdHNuZGlvJywKLSsgICAgc25kaW9fc291cmNl cywKLSsJY19hcmdzIDogZ3N0X3BsdWdpbnNfYmFzZV9hcmdzLAotKyAgaW5jbHVkZV9kaXJlY3Rv cmllczogW2NvbmZpZ2luYywgbGlic2luY10sCi0rICBkZXBlbmRlbmNpZXM6IFtnc3RfYmFzZV9k ZXAsIHNuZGlvX2RlcCwgYXVkaW9fZGVwXSwKLSsgICAgaW5zdGFsbCA6IHRydWUsCi0rICAgIGlu c3RhbGxfZGlyIDogcGx1Z2luc19pbnN0YWxsX2RpciwKLSsgICkKLSsgIHBrZ2NvbmZpZy5nZW5l cmF0ZShnc3RzbmRpbywgaW5zdGFsbF9kaXIgOiBwbHVnaW5zX3BrZ2NvbmZpZ19pbnN0YWxsX2Rp cikKLStlbmRpZgotZGlmZiAtLWdpdCBleHQvc25kaW8vc25kaW9zaW5rLmMgZXh0L3NuZGlvL3Nu ZGlvc2luay5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uY2M2OGJkMgot LS0tIC9kZXYvbnVsbAotKysrIGV4dC9zbmRpby9zbmRpb3NpbmsuYwotQEAgLTAsMCArMSwyMjYg QEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAwOCBKYWNvYiBNZXVzZXIgPGpha2Vtc3JAc2Rm LmxvbmVzdGFyLm9yZz4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWxleGFuZHJlIFJhdGNob3Yg PGFsZXhAY2FvdWEub3JnPgotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0rICogcHVycG9zZSB3aXRo IG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92 ZQotKyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFy IGluIGFsbCBjb3BpZXMuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT IiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKLSsgKiBXSVRIIFJFR0FS RCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0r ICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SIEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCi0rICogV0hBVFNPRVZFUiBSRVNV TFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCi0r ICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElP TiwgQVJJU0lORyBPVVQgT0YKLSsgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQ RVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotKyAqLwotKwotKy8qKgotKyAqIFNFQ1RJT046 ZWxlbWVudC1zbmRpb3NpbmsKLSsgKiBAc2VlX2Fsc286ICNHc3RBdXRvQXVkaW9TaW5rCi0rICoK LSsgKiA8cmVmc2VjdDI+Ci0rICogPHBhcmE+Ci0rICogVGhpcyBlbGVtZW50IG91dHB1dHMgc291 bmQgdG8gYSBzb3VuZCBjYXJkIHVzaW5nIHNuZGlvLgotKyAqIDwvcGFyYT4KLSsgKiA8cGFyYT4K LSsgKiBTaW1wbGUgZXhhbXBsZSBwaXBlbGluZSB0aGF0IHBsYXlzIGFuIE9nZy9Wb3JiaXMgZmls ZSB2aWEgc25kaW86Ci0rICogPHByb2dyYW1saXN0aW5nPgotKyAqIGdzdC1sYXVuY2ggLXYgZmls ZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9y ZXNhbXBsZSAhIHNuZGlvc2luawotKyAqIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0rICogPC9wYXJhPgot KyAqIDwvcmVmc2VjdDI+Ci0rICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVk ZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rI2luY2x1ZGUgInNuZGlvc2luay5oIgotKwotK0dTVF9E RUJVR19DQVRFR09SWV9FWFRFUk4gKGdzdF9zbmRpb19kZWJ1Zyk7Ci0rI2RlZmluZSBHU1RfQ0FU X0RFRkFVTFQgZ3N0X3NuZGlvX2RlYnVnCi0rCi0rI2RlZmluZSBnc3Rfc25kaW9zaW5rX3BhcmVu dF9jbGFzcyBwYXJlbnRfY2xhc3MKLSsKLStzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc25k aW9zaW5rX2ZhY3RvcnkgPQotKyAgICBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAot KwlHU1RfUEFEX1NJTkssCi0rCUdTVF9QQURfQUxXQVlTLAotKwlHU1RfU1RBVElDX0NBUFMgKEdT VF9TTkRJT19DQVBTX1NUUklORykKLSsgICAgKTsKLSsKLStHX0RFRklORV9UWVBFX1dJVEhfQ09E RSAoR3N0U25kaW9TaW5rLCBnc3Rfc25kaW9zaW5rLCBHU1RfVFlQRV9BVURJT19TSU5LLAotKwlH X0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1NUUkVBTV9WT0xVTUUsIE5VTEwpKTsKLSsK LStzdGF0aWMgdm9pZCBnc3Rfc25kaW9zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsK LStzdGF0aWMgR3N0Q2FwcyAqZ3N0X3NuZGlvc2lua19nZXRjYXBzIChHc3RCYXNlU2luayAqIGJz aW5rLAotKyAgICBHc3RDYXBzICogZmlsdGVyKTsKLStzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3NuZGlv c2lua19vcGVuIChHc3RBdWRpb1NpbmsgKiBhc2luayk7Ci0rc3RhdGljIGdib29sZWFuIGdzdF9z bmRpb3NpbmtfY2xvc2UgKEdzdEF1ZGlvU2luayAqIGFzaW5rKTsKLStzdGF0aWMgZ2Jvb2xlYW4g Z3N0X3NuZGlvc2lua19wcmVwYXJlIChHc3RBdWRpb1NpbmsgKiBhc2luaywKLSsgICAgR3N0QXVk aW9SaW5nQnVmZmVyU3BlYyAqIHNwZWMpOwotK3N0YXRpYyBnYm9vbGVhbiBnc3Rfc25kaW9zaW5r X3VucHJlcGFyZSAoR3N0QXVkaW9TaW5rICogYXNpbmspOwotK3N0YXRpYyBnaW50IGdzdF9zbmRp b3Npbmtfd3JpdGUgKEdzdEF1ZGlvU2luayAqIGFzaW5rLCBncG9pbnRlciBkYXRhLAotKyAgICBn dWludCBsZW5ndGgpOwotK3N0YXRpYyBndWludCBnc3Rfc25kaW9zaW5rX2RlbGF5IChHc3RBdWRp b1NpbmsgKiBhc2luayk7Ci0rc3RhdGljIHZvaWQgZ3N0X3NuZGlvc2lua19yZXNldCAoR3N0QXVk aW9TaW5rICogYXNpbmspOwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3Npbmtfc2V0X3Byb3BlcnR5 IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotKyAgICBjb25zdCBHVmFsdWUgKiB2 YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLStzdGF0aWMgdm9pZCBnc3Rfc25kaW9zaW5rX2dl dF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSsgICAgR1ZhbHVl ICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25k aW9zaW5rX2luaXQgKEdzdFNuZGlvU2luayAqIHNpbmspCi0rewotKyAgZ3N0X3NuZGlvX2luaXQg KCZzaW5rLT5zbmRpbywgR19PQkpFQ1Qoc2luaykpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dz dF9zbmRpb3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi0rewotKyAgR3N0U25kaW9T aW5rICpzaW5rID0gR1NUX1NORElPU0lOSyAob2JqZWN0KTsKLSsKLSsgIGdzdF9zbmRpb19maW5h bGl6ZSAoJnNpbmstPnNuZGlvKTsKLSsgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5m aW5hbGl6ZSAob2JqZWN0KTsKLSt9Ci0rCi0rc3RhdGljIEdzdENhcHMgKgotK2dzdF9zbmRpb3Np bmtfZ2V0Y2FwcyAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0Q2FwcyAqIGZpbHRlcikKLSt7Ci0r ICBHc3RTbmRpb1NpbmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChic2luayk7Ci0rCi0rICByZXR1 cm4gZ3N0X3NuZGlvX2dldGNhcHMgKCZzaW5rLT5zbmRpbywgZmlsdGVyKTsKLSt9Ci0rCi0rc3Rh dGljIGdib29sZWFuCi0rZ3N0X3NuZGlvc2lua19vcGVuIChHc3RBdWRpb1NpbmsgKiBhc2luaykK LSt7Ci0rICBHc3RTbmRpb1NpbmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChhc2luayk7Ci0rCi0r ICByZXR1cm4gZ3N0X3NuZGlvX29wZW4gKCZzaW5rLT5zbmRpbywgU0lPX1BMQVkpOwotK30KLSsK LStzdGF0aWMgZ2Jvb2xlYW4KLStnc3Rfc25kaW9zaW5rX2Nsb3NlIChHc3RBdWRpb1NpbmsgKiBh c2luaykKLSt7Ci0rICBHc3RTbmRpb1NpbmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChhc2luayk7 Ci0rCi0rICByZXR1cm4gZ3N0X3NuZGlvX2Nsb3NlICgmc2luay0+c25kaW8pOwotK30KLSsKLStz dGF0aWMgZ2Jvb2xlYW4KLStnc3Rfc25kaW9zaW5rX3ByZXBhcmUgKEdzdEF1ZGlvU2luayAqIGFz aW5rLCBHc3RBdWRpb1JpbmdCdWZmZXJTcGVjICogc3BlYykKLSt7Ci0rICBHc3RTbmRpb1Npbmsg KnNpbmsgPSBHU1RfU05ESU9TSU5LIChhc2luayk7Ci0rCi0rICByZXR1cm4gZ3N0X3NuZGlvX3By ZXBhcmUgKCZzaW5rLT5zbmRpbywgc3BlYyk7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dz dF9zbmRpb3NpbmtfdW5wcmVwYXJlIChHc3RBdWRpb1NpbmsgKiBhc2luaykKLSt7Ci0rICBHc3RT bmRpb1NpbmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChhc2luayk7Ci0rCi0rICByZXR1cm4gZ3N0 X3NuZGlvX3VucHJlcGFyZSAoJnNpbmstPnNuZGlvKTsKLSt9Ci0rCi0rc3RhdGljIGdpbnQKLStn c3Rfc25kaW9zaW5rX3dyaXRlIChHc3RBdWRpb1NpbmsgKiBhc2luaywgZ3BvaW50ZXIgZGF0YSwg Z3VpbnQgbGVuZ3RoKQotK3sKLSsgIEdzdFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksg KGFzaW5rKTsKLSsgIGd1aW50IGRvbmU7Ci0rCi0rICBpZiAobGVuZ3RoID09IDApCi0rICAgIHJl dHVybiAwOwotKyAgZG9uZSA9IHNpb193cml0ZSAoc2luay0+c25kaW8uaGRsLCBkYXRhLCBsZW5n dGgpOwotKyAgaWYgKGRvbmUgPT0gMCkgewotKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5r LCBSRVNPVVJDRSwgV1JJVEUsCi0rCSgiRmFpbGVkIHRvIHdyaXRlIGRhdGEgdG8gc25kaW8iKSwg KE5VTEwpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgIH0KLSsgIHNpbmstPnNuZGlvLmRlbGF5ICs9 IGRvbmU7Ci0rICByZXR1cm4gZG9uZTsKLSt9Ci0rCi0rc3RhdGljIGd1aW50Ci0rZ3N0X3NuZGlv c2lua19kZWxheSAoR3N0QXVkaW9TaW5rICogYXNpbmspCi0rewotKyAgR3N0U25kaW9TaW5rICpz aW5rID0gR1NUX1NORElPU0lOSyAoYXNpbmspOwotKwotKyAgcmV0dXJuIEdTVF9TTkRJT19ERUxB WSgmc2luay0+c25kaW8pOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9zbmRpb3NpbmtfcmVz ZXQgKEdzdEF1ZGlvU2luayAqIGFzaW5rKQotK3sKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rf c25kaW9zaW5rX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwK LSsgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBH c3RTbmRpb1NpbmsgKnNpbmsgPSBHU1RfU05ESU9TSU5LIChvYmplY3QpOwotKwotKyAgZ3N0X3Nu ZGlvX3NldF9wcm9wZXJ0eSAoJnNpbmstPnNuZGlvLCBwcm9wX2lkLCB2YWx1ZSwgcHNwZWMpOwot K30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9zbmRpb3NpbmtfZ2V0X3Byb3BlcnR5IChHT2JqZWN0 ICogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwKLSsgICAgR1BhcmFtU3Bl YyAqIHBzcGVjKQotK3sKLSsgIEdzdFNuZGlvU2luayAqc2luayA9IEdTVF9TTkRJT1NJTksgKG9i amVjdCk7Ci0rCi0rICBnc3Rfc25kaW9fZ2V0X3Byb3BlcnR5ICgmc2luay0+c25kaW8sIHByb3Bf aWQsIHZhbHVlLCBwc3BlYyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvc2lua19j bGFzc19pbml0IChHc3RTbmRpb1NpbmtDbGFzcyAqIGtsYXNzKQotK3sKLSsgIEdPYmplY3RDbGFz cyAqZ29iamVjdF9jbGFzczsKLSsgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsK LSsgIEdzdEJhc2VTaW5rQ2xhc3MgKmdzdGJhc2VzaW5rX2NsYXNzOwotKyAgR3N0QXVkaW9CYXNl U2lua0NsYXNzICpnc3RiYXNlYXVkaW9zaW5rX2NsYXNzOwotKyAgR3N0QXVkaW9TaW5rQ2xhc3Mg KmdzdGF1ZGlvc2lua19jbGFzczsKLSsKLSsgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNz ICopIGtsYXNzOwotKyAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xh c3M7Ci0rICBnc3RiYXNlc2lua19jbGFzcyA9IChHc3RCYXNlU2lua0NsYXNzICopIGtsYXNzOwot KyAgZ3N0YmFzZWF1ZGlvc2lua19jbGFzcyA9IChHc3RBdWRpb0Jhc2VTaW5rQ2xhc3MgKikga2xh c3M7Ci0rICBnc3RhdWRpb3NpbmtfY2xhc3MgPSAoR3N0QXVkaW9TaW5rQ2xhc3MgKikga2xhc3M7 Ci0rCi0rICBwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQgKGtsYXNzKTsK LSsKLSsgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3NuZGlvc2lua19maW5hbGl6ZTsK LSsgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9zbmRpb3NpbmtfZ2V0X3Byb3Bl cnR5OwotKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X3NuZGlvc2lua19zZXRf cHJvcGVydHk7Ci0rCi0rICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChn c3RlbGVtZW50X2NsYXNzLAotKyAgICAgICJBdWRpbyBzaW5rIChzbmRpbykiLCAiU2luay9BdWRp byIsCi0rICAgICAgIk91dHB1dCB0byBhIHNvdW5kIGNhcmQgdmlhIHNuZGlvIiwKLSsgICAgICAi SmFjb2IgTWV1c2VyIDxqYWtlbXNyQHNkZi5sb25lc3Rhci5vcmc+Iik7Ci0rCi0rICBnc3RfZWxl bWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotKyAgICAgIGdz dF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNuZGlvc2lua19mYWN0b3J5KSk7Ci0rCi0rICBn c3RiYXNlc2lua19jbGFzcy0+Z2V0X2NhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlv c2lua19nZXRjYXBzKTsKLSsgIGdzdGF1ZGlvc2lua19jbGFzcy0+b3BlbiA9IEdTVF9ERUJVR19G VU5DUFRSIChnc3Rfc25kaW9zaW5rX29wZW4pOwotKyAgZ3N0YXVkaW9zaW5rX2NsYXNzLT5wcmVw YXJlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3NpbmtfcHJlcGFyZSk7Ci0rICBnc3Rh dWRpb3NpbmtfY2xhc3MtPnVucHJlcGFyZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfc25kaW9z aW5rX3VucHJlcGFyZSk7Ci0rICBnc3RhdWRpb3NpbmtfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVH X0ZVTkNQVFIgKGdzdF9zbmRpb3NpbmtfY2xvc2UpOwotKyAgZ3N0YXVkaW9zaW5rX2NsYXNzLT53 cml0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfc25kaW9zaW5rX3dyaXRlKTsKLSsgIGdzdGF1 ZGlvc2lua19jbGFzcy0+ZGVsYXkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc2lua19k ZWxheSk7Ci0rICBnc3RhdWRpb3NpbmtfY2xhc3MtPnJlc2V0ID0gR1NUX0RFQlVHX0ZVTkNQVFIg KGdzdF9zbmRpb3NpbmtfcmVzZXQpOwotKwotKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9w ZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0UsCi0rICAgICAgZ19wYXJhbV9zcGVjX3N0 cmluZyAoImRldmljZSIsICJEZXZpY2UiLAotKyAgICAgICAgICAic25kaW8gZGV2aWNlIGFzIGRl ZmluZWQgaW4gc25kaW8oNykiLAotKyAgICAgICAgICBTSU9fREVWQU5ZLCBHX1BBUkFNX1JFQURX UklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSsgIGdfb2JqZWN0X2NsYXNzX2luc3Rh bGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVk9MVU1FLAotKyAgICAgIGdfcGFyYW1f c3BlY19kb3VibGUgKCJ2b2x1bWUiLCAiVm9sdW1lIiwKLSsJICAiTGluZWFyIHZvbHVtZSBvZiB0 aGlzIHN0cmVhbSwgMS4wPTEwMCUiLCAwLjAsIDEuMCwKLSsJICAxLjAsIEdfUEFSQU1fUkVBRFdS SVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFs bF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NVVRFLAotKyAgICAgIGdfcGFyYW1fc3Bl Y19ib29sZWFuICgibXV0ZSIsICJNdXRlIiwKLSsJICAiTXV0ZSBzdGF0ZSBvZiB0aGlzIHN0cmVh bSIsIEZBTFNFLAotKwkgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5H UykpOwotK30KLWRpZmYgLS1naXQgZXh0L3NuZGlvL3NuZGlvc2luay5oIGV4dC9zbmRpby9zbmRp b3NpbmsuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMxNGU2MjIKLS0t LSAvZGV2L251bGwKLSsrKyBleHQvc25kaW8vc25kaW9zaW5rLmgKLUBAIC0wLDAgKzEsNTcgQEAK LSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAwOCBKYWNvYiBNZXVzZXIgPGpha2Vtc3JAc2RmLmxv bmVzdGFyLm9yZz4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWxleGFuZHJlIFJhdGNob3YgPGFs ZXhAY2FvdWEub3JnPgotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwg YW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0rICogcHVycG9zZSB3aXRoIG9y IHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZQot KyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGlu IGFsbCBjb3BpZXMuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBB TkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKLSsgKiBXSVRIIFJFR0FSRCBU TyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0rICog TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S IEJFIExJQUJMRSBGT1IKLSsgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCi0rICogV0hBVFNPRVZFUiBSRVNVTFRJ TkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOCi0rICog QUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwg QVJJU0lORyBPVVQgT0YKLSsgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJG T1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotKyAqLwotKwotKwotKyNpZm5kZWYgX19HU1RfU05E SU9TSU5LX0hfXwotKyNkZWZpbmUgX19HU1RfU05ESU9TSU5LX0hfXwotKwotKyNpbmNsdWRlIDxz bmRpby5oPgotKwotKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0rI2luY2x1ZGUgPGdzdC9hdWRpby9n c3RhdWRpb3NpbmsuaD4KLSsjaW5jbHVkZSAiZ3N0c25kaW8uaCIKLSsKLStHX0JFR0lOX0RFQ0xT Ci0rCi0rI2RlZmluZSBHU1RfVFlQRV9TTkRJT1NJTksgXAotKyAgKGdzdF9zbmRpb3NpbmtfZ2V0 X3R5cGUoKSkKLSsjZGVmaW5lIEdTVF9TTkRJT1NJTksob2JqKSBcCi0rICAoR19UWVBFX0NIRUNL X0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfU05ESU9TSU5LLEdzdFNuZGlvU2luaykpCi0r I2RlZmluZSBHU1RfU05ESU9TSU5LX0NMQVNTKGtsYXNzKSBcCi0rICAoR19UWVBFX0NIRUNLX0NM QVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9TTkRJT1NJTkssR3N0U25kaW9TaW5rQ2xhc3MpKQot KyNkZWZpbmUgR1NUX0lTX1NORElPU0lOSyhvYmopIFwKLSsgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO Q0VfVFlQRSgob2JqKSxHU1RfVFlQRV9TTkRJT1NJTkspKQotKyNkZWZpbmUgR1NUX0lTX1NORElP U0lOS19DTEFTUyhrbGFzcykgXAotKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyks R1NUX1RZUEVfU05ESU9TSU5LKSkKLSsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0U25kaW9TaW5rIEdz dFNuZGlvU2luazsKLSt0eXBlZGVmIHN0cnVjdCBfR3N0U25kaW9TaW5rQ2xhc3MgR3N0U25kaW9T aW5rQ2xhc3M7Ci0rCi0rc3RydWN0IF9Hc3RTbmRpb1NpbmsgewotKyAgR3N0QXVkaW9TaW5rIHNp bms7Ci0rICBzdHJ1Y3QgZ3N0c25kaW8gc25kaW87Ci0rfTsKLSsKLStzdHJ1Y3QgX0dzdFNuZGlv U2lua0NsYXNzIHsKLSsgIEdzdEF1ZGlvU2lua0NsYXNzIHBhcmVudF9jbGFzczsKLSt9OwotKwot K0dUeXBlIGdzdF9zbmRpb3NpbmtfZ2V0X3R5cGUgKHZvaWQpOwotKwotK0dfRU5EX0RFQ0xTCi0r Ci0rI2VuZGlmIC8qIF9fR1NUX1NORElPU0lOS19IX18gKi8KLWRpZmYgLS1naXQgZXh0L3NuZGlv L3NuZGlvc3JjLmMgZXh0L3NuZGlvL3NuZGlvc3JjLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi41YjZkNzg3Ci0tLS0gL2Rldi9udWxsCi0rKysgZXh0L3NuZGlvL3NuZGlv c3JjLmMKLUBAIC0wLDAgKzEsMjI1IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDggSmFj b2IgTWV1c2VyIDxqYWtlbXNyQHNkZi5sb25lc3Rhci5vcmc+Ci0rICogQ29weXJpZ2h0IChDKSAy MDEyIEFsZXhhbmRyZSBSYXRjaG92IDxhbGV4QGNhb3VhLm9yZz4KLSsgKgotKyAqIFBlcm1pc3Np b24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y IGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwg cHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJS QU5USUVTCi0rICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElN UExJRUQgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SCi0rICogQU5ZIFNQRUNJQUws IERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdF UwotKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJP RklUUywgV0hFVEhFUiBJTiBBTgotKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBP UiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCi0rICogT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KLSsgKi8K LSsKLSsvKioKLSsgKiBTRUNUSU9OOmVsZW1lbnQtc25kaW9zcmMKLSsgKiBAc2VlX2Fsc286ICNH c3RBdXRvQXVkaW9TcmMKLSsgKgotKyAqIDxyZWZzZWN0Mj4KLSsgKiA8cGFyYT4KLSsgKiBUaGlz IGVsZW1lbnQgcmV0cmlldmVzIHNhbXBsZXMgZnJvbSBhIHNvdW5kIGNhcmQgdXNpbmcgc25kaW8u Ci0rICogPC9wYXJhPgotKyAqIDxwYXJhPgotKyAqIFNpbXBsZSBleGFtcGxlIHBpcGVsaW5lIHRo YXQgcmVjb3JkcyBhbiBPZ2cvVm9yYmlzIGZpbGUgdmlhIHNuZGlvOgotKyAqIDxwcm9ncmFtbGlz dGluZz4KLSsgKiBnc3QtbGF1bmNoIC12IHNuZGlvc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlz ZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Zm9vLm9nZyAKLSsgKiA8L3Byb2dyYW1s aXN0aW5nPgotKyAqIDwvcGFyYT4KLSsgKiA8L3JlZnNlY3QyPgotKyAqLwotKwotKyNpZmRlZiBI QVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRl ICJzbmRpb3NyYy5oIgotKyNpbmNsdWRlICJnc3RzbmRpby5oIgotKwotK0dTVF9ERUJVR19DQVRF R09SWV9FWFRFUk4gKGdzdF9zbmRpb19kZWJ1Zyk7Ci0rI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQg Z3N0X3NuZGlvX2RlYnVnCi0rCi0rI2RlZmluZSBnc3Rfc25kaW9zcmNfcGFyZW50X2NsYXNzIHBh cmVudF9jbGFzcwotK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RTbmRpb1NyYywgZ3N0X3Nu ZGlvc3JjLCBHU1RfVFlQRV9BVURJT19TUkMsCi0rCUdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NU X1RZUEVfU1RSRUFNX1ZPTFVNRSwgTlVMTCkpOwotKwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3Ny Y19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0rc3RhdGljIEdzdENhcHMgKmdzdF9zbmRp b3NyY19nZXRjYXBzIChHc3RCYXNlU3JjICogYnNyYywgR3N0Q2FwcyAqIGZpbHRlcik7Ci0rc3Rh dGljIGdib29sZWFuIGdzdF9zbmRpb3NyY19vcGVuIChHc3RBdWRpb1NyYyAqIGFzcmMpOwotK3N0 YXRpYyBnYm9vbGVhbiBnc3Rfc25kaW9zcmNfY2xvc2UgKEdzdEF1ZGlvU3JjICogYXNyYyk7Ci0r c3RhdGljIGdib29sZWFuIGdzdF9zbmRpb3NyY19wcmVwYXJlIChHc3RBdWRpb1NyYyAqIGFzcmMs Ci0rICAgIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKiBzcGVjKTsKLStzdGF0aWMgZ2Jvb2xlYW4g Z3N0X3NuZGlvc3JjX3VucHJlcGFyZSAoR3N0QXVkaW9TcmMgKiBhc3JjKTsKLStzdGF0aWMgZ3Vp bnQgZ3N0X3NuZGlvc3JjX3JlYWQgKEdzdEF1ZGlvU3JjICogYXNyYywgZ3BvaW50ZXIgZGF0YSwK LSsgICAgZ3VpbnQgbGVuZ3RoKTsKLStzdGF0aWMgZ3VpbnQgZ3N0X3NuZGlvc3JjX2RlbGF5IChH c3RBdWRpb1NyYyAqIGFzcmMpOwotK3N0YXRpYyB2b2lkIGdzdF9zbmRpb3NyY19yZXNldCAoR3N0 QXVkaW9TcmMgKiBhc3JjKTsKLStzdGF0aWMgdm9pZCBnc3Rfc25kaW9zcmNfc2V0X3Byb3BlcnR5 IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotKyAgICBjb25zdCBHVmFsdWUgKiB2 YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLStzdGF0aWMgdm9pZCBnc3Rfc25kaW9zcmNfZ2V0 X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUg KiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLSsKLStzdGF0aWMgR3N0U3RhdGljUGFkVGVt cGxhdGUgc25kaW9zcmNfZmFjdG9yeSA9Ci0rICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgi c3JjIiwKLSsJR1NUX1BBRF9TUkMsCi0rCUdTVF9QQURfQUxXQVlTLAotKwlHU1RfU1RBVElDX0NB UFMgKEdTVF9TTkRJT19DQVBTX1NUUklORykKLSsgICAgKTsKLSsKLStzdGF0aWMgdm9pZAotK2dz dF9zbmRpb3NyY19pbml0IChHc3RTbmRpb1NyYyAqIHNyYykKLSt7Ci0rICBnc3Rfc25kaW9faW5p dCAoJnNyYy0+c25kaW8sIEdfT0JKRUNUKHNyYykpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dz dF9zbmRpb3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLSt7Ci0rICBHc3RTbmRpb1Ny YyAqc3JjID0gR1NUX1NORElPU1JDIChvYmplY3QpOwotKwotKyAgZ3N0X3NuZGlvX2ZpbmFsaXpl ICgmc3JjLT5zbmRpbyk7Ci0rICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxp emUgKG9iamVjdCk7Ci0rfQotKwotK3N0YXRpYyBHc3RDYXBzICoKLStnc3Rfc25kaW9zcmNfZ2V0 Y2FwcyAoR3N0QmFzZVNyYyAqIGJzcmMsIEdzdENhcHMgKiBmaWx0ZXIpCi0rewotKyAgR3N0U25k aW9TcmMgKnNyYyA9IEdTVF9TTkRJT1NSQyAoYnNyYyk7Ci0rCi0rICByZXR1cm4gZ3N0X3NuZGlv X2dldGNhcHMgKCZzcmMtPnNuZGlvLCBmaWx0ZXIpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4K LStnc3Rfc25kaW9zcmNfb3BlbiAoR3N0QXVkaW9TcmMgKiBhc3JjKQotK3sKLSsgIEdzdFNuZGlv U3JjICpzcmMgPSBHU1RfU05ESU9TUkMgKGFzcmMpOwotKwotKyAgcmV0dXJuIGdzdF9zbmRpb19v cGVuICgmc3JjLT5zbmRpbywgU0lPX1JFQyk7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dz dF9zbmRpb3NyY19jbG9zZSAoR3N0QXVkaW9TcmMgKiBhc3JjKQotK3sKLSsgIEdzdFNuZGlvU3Jj ICpzcmMgPSBHU1RfU05ESU9TUkMgKGFzcmMpOwotKwotKyAgcmV0dXJuIGdzdF9zbmRpb19jbG9z ZSAoJnNyYy0+c25kaW8pOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3Rfc25kaW9zcmNf cHJlcGFyZSAoR3N0QXVkaW9TcmMgKiBhc3JjLCBHc3RBdWRpb1JpbmdCdWZmZXJTcGVjICogc3Bl YykKLSt7Ci0rICBHc3RTbmRpb1NyYyAqc3JjID0gR1NUX1NORElPU1JDIChhc3JjKTsKLSsKLSsg IHJldHVybiBnc3Rfc25kaW9fcHJlcGFyZSAoJnNyYy0+c25kaW8sIHNwZWMpOwotK30KLSsKLStz dGF0aWMgZ2Jvb2xlYW4KLStnc3Rfc25kaW9zcmNfdW5wcmVwYXJlIChHc3RBdWRpb1NyYyAqIGFz cmMpCi0rewotKyAgR3N0U25kaW9TcmMgKnNyYyA9IEdTVF9TTkRJT1NSQyAoYXNyYyk7Ci0rCi0r ICByZXR1cm4gZ3N0X3NuZGlvX3VucHJlcGFyZSAoJnNyYy0+c25kaW8pOwotK30KLSsKLStzdGF0 aWMgZ3VpbnQKLStnc3Rfc25kaW9zcmNfcmVhZCAoR3N0QXVkaW9TcmMgKiBhc3JjLCBncG9pbnRl ciBkYXRhLCBndWludCBsZW5ndGgpCi0rewotKyAgR3N0U25kaW9TcmMgKnNyYyA9IEdTVF9TTkRJ T1NSQyAoYXNyYyk7Ci0rICBndWludCBkb25lOwotKwotKyAgaWYgKGxlbmd0aCA9PSAwKQotKyAg ICByZXR1cm4gMDsKLSsgIGRvbmUgPSBzaW9fcmVhZCAoc3JjLT5zbmRpby5oZGwsIGRhdGEsIGxl bmd0aCk7Ci0rICBpZiAoZG9uZSA9PSAwKSB7Ci0rICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNy YywgUkVTT1VSQ0UsIFJFQUQsCi0rCSgiRmFpbGVkIHRvIHJlYWQgZGF0YSBmcm9tIHNuZGlvIiks IChOVUxMKSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICB9Ci0rICBzcmMtPnNuZGlvLmRlbGF5IC09 IGRvbmU7Ci0rICByZXR1cm4gZG9uZTsKLSt9Ci0rCi0rc3RhdGljIGd1aW50Ci0rZ3N0X3NuZGlv c3JjX2RlbGF5IChHc3RBdWRpb1NyYyAqIGFzcmMpCi0rewotKyAgR3N0U25kaW9TcmMgKnNyYyA9 IEdTVF9TTkRJT1NSQyAoYXNyYyk7Ci0rCi0rICByZXR1cm4gR1NUX1NORElPX0RFTEFZKCZzcmMt PnNuZGlvKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStnc3Rfc25kaW9zcmNfcmVzZXQgKEdzdEF1 ZGlvU3JjICogYXNyYykKLSt7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvc3JjX3Nl dF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSsgICAgY29uc3Qg R1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0rICBHc3RTbmRpb1NyYyAq c3JjID0gR1NUX1NORElPU1JDIChvYmplY3QpOwotKwotKyAgZ3N0X3NuZGlvX3NldF9wcm9wZXJ0 eSAoJnNyYy0+c25kaW8sIHByb3BfaWQsIHZhbHVlLCBwc3BlYyk7Ci0rfQotKwotK3N0YXRpYyB2 b2lkCi0rZ3N0X3NuZGlvc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQg cHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCi0rICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKLSt7Ci0r ICBHc3RTbmRpb1NyYyAqc3JjID0gR1NUX1NORElPU1JDIChvYmplY3QpOwotKwotKyAgZ3N0X3Nu ZGlvX2dldF9wcm9wZXJ0eSAoJnNyYy0+c25kaW8sIHByb3BfaWQsIHZhbHVlLCBwc3BlYyk7Ci0r fQotKwotK3N0YXRpYyB2b2lkCi0rZ3N0X3NuZGlvc3JjX2NsYXNzX2luaXQgKEdzdFNuZGlvU3Jj Q2xhc3MgKiBrbGFzcykKLSt7Ci0rICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0rICBH c3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7Ci0rICBHc3RCYXNlU3JjQ2xhc3MgKmdz dGJhc2VzcmNfY2xhc3M7Ci0rICBHc3RBdWRpb0Jhc2VTcmNDbGFzcyAqZ3N0YmFzZWF1ZGlvc3Jj X2NsYXNzOwotKyAgR3N0QXVkaW9TcmNDbGFzcyAqZ3N0YXVkaW9zcmNfY2xhc3M7Ci0rICBnb2Jq ZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSsgIGdzdGVsZW1lbnRfY2xhc3Mg PSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotKyAgZ3N0YmFzZXNyY19jbGFzcyA9IChHc3RC YXNlU3JjQ2xhc3MgKikga2xhc3M7Ci0rICBnc3RiYXNlYXVkaW9zcmNfY2xhc3MgPSAoR3N0QXVk aW9CYXNlU3JjQ2xhc3MgKikga2xhc3M7Ci0rICBnc3RhdWRpb3NyY19jbGFzcyA9IChHc3RBdWRp b1NyY0NsYXNzICopIGtsYXNzOwotKwotKyAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3Bl ZWtfcGFyZW50IChrbGFzcyk7Ci0rCi0rICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9z bmRpb3NyY19maW5hbGl6ZTsKLSsgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9z bmRpb3NyY19nZXRfcHJvcGVydHk7Ci0rICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBn c3Rfc25kaW9zcmNfc2V0X3Byb3BlcnR5OwotKwotKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0 YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKLSsgICAgICAiQXVkaW8gc3JjIChzbmRp bykiLCAiU3JjL0F1ZGlvIiwKLSsgICAgICAiSW5wdXQgZnJvbSBhIHNvdW5kIGNhcmQgdmlhIHNu ZGlvIiwKLSsgICAgICAiSmFjb2IgTWV1c2VyIDxqYWtlbXNyQHNkZi5sb25lc3Rhci5vcmc+Iik7 Ci0rCi0rICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2Ns YXNzLAotKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNuZGlvc3JjX2ZhY3Rv cnkpKTsKLSsKLSsgIGdzdGJhc2VzcmNfY2xhc3MtPmdldF9jYXBzID0gR1NUX0RFQlVHX0ZVTkNQ VFIgKGdzdF9zbmRpb3NyY19nZXRjYXBzKTsKLSsgIGdzdGF1ZGlvc3JjX2NsYXNzLT5vcGVuID0g R1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3NyY19vcGVuKTsKLSsgIGdzdGF1ZGlvc3JjX2Ns YXNzLT5wcmVwYXJlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3NyY19wcmVwYXJlKTsK LSsgIGdzdGF1ZGlvc3JjX2NsYXNzLT51bnByZXBhcmUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0 X3NuZGlvc3JjX3VucHJlcGFyZSk7Ci0rICBnc3RhdWRpb3NyY19jbGFzcy0+Y2xvc2UgPSBHU1Rf REVCVUdfRlVOQ1BUUiAoZ3N0X3NuZGlvc3JjX2Nsb3NlKTsKLSsgIGdzdGF1ZGlvc3JjX2NsYXNz LT5yZWFkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9zbmRpb3NyY19yZWFkKTsKLSsgIGdzdGF1 ZGlvc3JjX2NsYXNzLT5kZWxheSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfc25kaW9zcmNfZGVs YXkpOwotKyAgZ3N0YXVkaW9zcmNfY2xhc3MtPnJlc2V0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdz dF9zbmRpb3NyY19yZXNldCk7Ci0rCi0rICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5 IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RFVklDRSwKLSsgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5n ICgiZGV2aWNlIiwgIkRldmljZSIsCi0rICAgICAgICAgICJzbmRpbyBkZXZpY2UgYXMgZGVmaW5l ZCBpbiBzbmRpbyg3KSIsCi0rICAgICAgICAgIFNJT19ERVZBTlksIEdfUEFSQU1fUkVBRFdSSVRF IHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w cm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WT0xVTUUsCi0rICAgICAgZ19wYXJhbV9zcGVj X2RvdWJsZSAoInZvbHVtZSIsICJWb2x1bWUiLAotKwkgICJMaW5lYXIgdm9sdW1lIG9mIHRoaXMg c3RyZWFtLCAxLjA9MTAwJSIsIDAuMCwgMS4wLAotKwkgIDEuMCwgR19QQVJBTV9SRUFEV1JJVEUg fCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0rICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By b3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01VVEUsCi0rICAgICAgZ19wYXJhbV9zcGVjX2Jv b2xlYW4gKCJtdXRlIiwgIk11dGUiLAotKwkgICJNdXRlIHN0YXRlIG9mIHRoaXMgc3RyZWFtIiwg RkFMU0UsCi0rCSAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7 Ci0rfQotZGlmZiAtLWdpdCBleHQvc25kaW8vc25kaW9zcmMuaCBleHQvc25kaW8vc25kaW9zcmMu aAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjgzZmQyOWMKLS0tLSAvZGV2 L251bGwKLSsrKyBleHQvc25kaW8vc25kaW9zcmMuaAotQEAgLTAsMCArMSw1NyBAQAotKy8qCi0r ICogQ29weXJpZ2h0IChDKSAyMDA4IEphY29iIE1ldXNlciA8amFrZW1zckBzZGYubG9uZXN0YXIu b3JnPgotKyAqIENvcHlyaWdodCAoQykgMjAxMiBBbGV4YW5kcmUgUmF0Y2hvdiA8YWxleEBjYW91 YS5vcmc+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlz dHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLSsgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91 dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCi0rICogY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNv cGllcy4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUg QVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUwotKyAqIFdJVEggUkVHQVJEIFRPIFRISVMg U09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSsgKiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElB QkxFIEZPUgotKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9N IExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KLSsgKiBBQ1RJT04g T0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5H IE9VVCBPRgotKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNF IE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rCi0rI2lmbmRlZiBfX0dTVF9TTkRJT1NSQ19I X18KLSsjZGVmaW5lIF9fR1NUX1NORElPU1JDX0hfXwotKwotKyNpbmNsdWRlIDxzbmRpby5oPgot KwotKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0rI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb3Ny Yy5oPgotKyNpbmNsdWRlICJnc3RzbmRpby5oIgotKwotK0dfQkVHSU5fREVDTFMKLSsKLSsjZGVm aW5lIEdTVF9UWVBFX1NORElPU1JDIFwKLSsgIChnc3Rfc25kaW9zcmNfZ2V0X3R5cGUoKSkKLSsj ZGVmaW5lIEdTVF9TTkRJT1NSQyhvYmopIFwKLSsgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FT VCgob2JqKSxHU1RfVFlQRV9TTkRJT1NSQyxHc3RTbmRpb1NyYykpCi0rI2RlZmluZSBHU1RfU05E SU9TUkNfQ0xBU1Moa2xhc3MpIFwKLSsgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp LEdTVF9UWVBFX1NORElPU1JDLEdzdFNuZGlvU3JjQ2xhc3MpKQotKyNkZWZpbmUgR1NUX0lTX1NO RElPU1JDKG9iaikgXAotKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9U WVBFX1NORElPU1JDKSkKLSsjZGVmaW5lIEdTVF9JU19TTkRJT1NSQ19DTEFTUyhrbGFzcykgXAot KyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfU05ESU9TUkMpKQot KwotK3R5cGVkZWYgc3RydWN0IF9Hc3RTbmRpb1NyYyBHc3RTbmRpb1NyYzsKLSt0eXBlZGVmIHN0 cnVjdCBfR3N0U25kaW9TcmNDbGFzcyBHc3RTbmRpb1NyY0NsYXNzOwotKwotK3N0cnVjdCBfR3N0 U25kaW9TcmMgewotKyAgR3N0QXVkaW9TcmMgc3JjOwotKyAgc3RydWN0IGdzdHNuZGlvIHNuZGlv OwotK307Ci0rCi0rc3RydWN0IF9Hc3RTbmRpb1NyY0NsYXNzIHsKLSsgIEdzdEF1ZGlvU3JjQ2xh c3MgcGFyZW50X2NsYXNzOwotK307Ci0rCi0rR1R5cGUgZ3N0X3NuZGlvc3JjX2dldF90eXBlICh2 b2lkKTsKLSsKLStHX0VORF9ERUNMUwotKwotKyNlbmRpZiAvKiBfX0dTVF9TTkRJT1NSQ19IX18g Ki8KLWRpZmYgLS1naXQgbWVzb25fb3B0aW9ucy50eHQgbWVzb25fb3B0aW9ucy50eHQKLWluZGV4 IGU3YWY0ZGQuLjgyNzUwN2YgMTAwNjQ0Ci0tLS0gbWVzb25fb3B0aW9ucy50eHQKLSsrKyBtZXNv bl9vcHRpb25zLnR4dAotQEAgLTU4LDYgKzU4LDcgQEAgb3B0aW9uKCdsaWJ2aXN1YWwnLCB0eXBl IDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnbGlidmlzdWFsIGEK LSBvcHRpb24oJ29nZycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlw dGlvbiA6ICdvZ2cgcGFyc2VyLCBtdXhlciwgZGVtdXhlciBwbHVnaW4nKQotIG9wdGlvbignb3B1 cycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdPUFVT IGF1ZGlvIGNvZGVjIHBsdWdpbicpCi0gb3B0aW9uKCdwYW5nbycsIHR5cGUgOiAnZmVhdHVyZScs IHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdQYW5nbyB0ZXh0IHJlbmRlcmluZyBhbmQg b3ZlcmxheSBwbHVnaW4nKQotK29wdGlvbignc25kaW8nLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1 ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnc25kaW8gc3VwcG9ydCcpCi0gb3B0aW9uKCd0aGVv cmEnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnVGhl b3JhIHZpZGVvIHBhcnNlciBhbmQgY29kZWMgcGx1Z2luJykKLSBvcHRpb24oJ3RyZW1vcicsIHR5 cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdJbnRlZ2VyIFZv cmJpcyBkZWNvZGVyIHBsdWdpbiBmb3IgZGV2aWNlcyB3aXRob3V0IGZsb2F0aW5nIHBvaW50JykK LSBvcHRpb24oJ3ZvcmJpcycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNj cmlwdGlvbiA6ICdWb3JiaXMgYXVkaW8gcGFyc2VyLCB0YWdnZXIsIGFuZCBjb2RlYyBwbHVnaW4n KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYXNlMS90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKaW5kZXggZTVlM2U4Y2NiNmEuLmMwZWQ1MTNj OWVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYXNlMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMt YmFzZTEKLXZlcnNpb249MS4xNi4yCit2ZXJzaW9uPTEuMTguMQogcmV2aXNpb249MQogd3Jrc3Jj PSIke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1tZXNvbgpAQCAtMjEsNyAr MjEsNyBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iR1BMLTIuMC1vci1sYXRlciwgTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9z cmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tz dW09YjEzZTczZTJmZTc0YTQxNjY1NTJmOTU3N2MzZGNiMjRiZWQwNzcwMjFiOWM3ZmE2MDBkOTEw ZWM2OTg3ODE2YQorY2hlY2tzdW09MWJhNjU0ZDdkZTMwZjcyODRiNGM3MDcxYjMyZjg4MWI2MDk3 MzNjZTAyYWI2ZDlkOWVhMjkzODZhMDM2YzY0MQogCiAjIFBhY2thZ2UgYnVpbGQgb3B0aW9ucwog YnVpbGRfb3B0aW9ucz0iY2RwYXJhbm9pYSBnaXIgc25kaW8iCkBAIC00NSwzICs0NSwxMSBAQCBn c3QtcGx1Z2lucy1iYXNlMS1kZXZlbF9wYWNrYWdlKCkgewogCQlmaQogCX0KIH0KKworZ3N0LXNu ZGlvX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iZ3N0cmVhbWVyMSIKKwlzaG9ydF9kZXNjPSJHc3Ry ZWFtZXIgc25kaW8gcGx1Z2luICh2MS5YKSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNy L2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdHNuZGlvLnNvCisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9nc3Qtc25kaW8gYi9zcmNwa2dzL2dzdC1zbmRpbwpuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMC4uYWRhNDhhOGE1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2dzdC1zbmRpbwpAQCAtMCwwICsxIEBACitnc3QtcGx1Z2lucy1iYXNlMQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKCkZyb20gMDRmZmY4YzFiNDY3YWU4ODE4ZmQyM2U3ZTFmZjdmYzRiN2Ux ZTdlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmF0aGFuIE93ZW5zIDxuZG93ZW5z QGFydGl4bGludXgub3JnPgpEYXRlOiBTdW4sIDE1IE5vdiAyMDIwIDEwOjIxOjEwIC0wNjAwClN1 YmplY3Q6IFtQQVRDSCAxMC8xMF0gZ3N0cmVhbWVyMTogdXBkYXRlIHRvIDEuMTguMQoKUmVtb3Zl IGd0a19kb2Mgb3B0aW9uIGFzIGl0IGRvZXMgbm90aGluZyBhbmQgZG91YnQgbWFueSB1c2UKLS0t CiAuLi4vZ3N0cmVhbWVyMS9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMucGF0Y2ggfCAyMiArKysr KysrKysrKysrKy0tLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyMS90ZW1wbGF0ZSAgICAgICAgICAgICAg ICAgICB8IDIzICsrKysrLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0 aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3RyZWFtZXIx L3BhdGNoZXMvbm8tZ2lyLWF1dG9tYWdpYy5wYXRjaCBiL3NyY3BrZ3MvZ3N0cmVhbWVyMS9wYXRj aGVzL25vLWdpci1hdXRvbWFnaWMucGF0Y2gKaW5kZXggYzAxMzUyMTRlZGQuLjUzNzQwYjRiYjA0 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdHJlYW1lcjEvcGF0Y2hlcy9uby1naXItYXV0b21hZ2lj LnBhdGNoCisrKyBiL3NyY3BrZ3MvZ3N0cmVhbWVyMS9wYXRjaGVzL25vLWdpci1hdXRvbWFnaWMu cGF0Y2gKQEAgLTEsMTMgKzEsMjUgQEAKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29u LmJ1aWxkCi1pbmRleCBlNzM4YzU1Li5lMWI4ZDkzIDEwMDY0NAorRnJvbSAyMjVlODc2ODhmMjFh ODE3MjI0NjU1MzcyMDA0ZWI1MTJmODYyZDQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogTmF0aGFuIE93ZW5zIDxuZG93ZW5zQGFydGl4bGludXgub3JnPgorRGF0ZTogU3VuLCAxNSBO b3YgMjAyMCAxMDowNDo1MCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBuby1naXItYXV0b21hdGlj CisKKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IG1lc29uLmJ1aWxkIG1lc29uLmJ1aWxk CitpbmRleCA1YTIxODIzLi41ZDFkYjM3IDEwMDY0NAogLS0tIG1lc29uLmJ1aWxkCiArKysgbWVz b24uYnVpbGQKLUBAIC00NTEsNyArNDUxLDcgQEAgcnRfbGliID0gY2MuZmluZF9saWJyYXJ5KCdy dCcsIHJlcXVpcmVkIDogZmFsc2UpCitAQCAtNTAzLDcgKzUwMyw3IEBAIHJ0X2xpYiA9IGNjLmZp bmRfbGlicmFyeSgncnQnLCByZXF1aXJlZCA6IGZhbHNlKQogIGdpciA9IGZpbmRfcHJvZ3JhbSgn Zy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCiAg Z25vbWUgPSBpbXBvcnQoJ2dub21lJykKICAKLS1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQg bm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKLStidWlsZF9naXIgPSBnaXIuZm91bmQoKQorLWJ1 aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3Ig Z2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKytidWlsZF9naXIgPSBnaXIu Zm91bmQoKSBvciBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykuZW5hYmxlZCgpCiAgCiAgZ2ly X2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5p dChnaW50KixnY2hhcioqKTsnICsgXAogICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV9ESVNB QkxFIiwgInllcyIsIFRSVUUpOycgKyBcCistLSAKKzIuMjkuMgorCmRpZmYgLS1naXQgYS9zcmNw a2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUKaW5k ZXggMTZmNzM3OWZjOTMuLmFlYTRkNjdhODUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdHJlYW1l cjEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlCkBAIC0xLDE2ICsx LDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3RyZWFtZXIxJwogcGtnbmFtZT1nc3RyZWFt ZXIxCi12ZXJzaW9uPTEuMTYuMgordmVyc2lvbj0xLjE4LjEKIHJldmlzaW9uPTEKIHdya3NyYz0i Z3N0cmVhbWVyLSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJn aXIiCiBjb25maWd1cmVfYXJncz0iLURwdHAtaGVscGVyLXBlcm1pc3Npb25zPWNhcGFiaWxpdGll cwogIC1EcGFja2FnZS1vcmlnaW49aHR0cHM6Ly93d3cudm9pZGxpbnV4Lm9yZyAtRGRiZ2hlbHA9 ZGlzYWJsZWQKLSAtRGludHJvc3BlY3Rpb249JCh2b3B0X2lmIGdpciBlbmFibGVkIGRpc2FibGVk KQotIC1EZ3RrX2RvYz0kKHZvcHRfaWYgZ3RrX2RvYyBlbmFibGVkIGRpc2FibGVkKSIKLWhvc3Rt YWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIGZsZXggcHl0aG9uIGRvY2Jvb2steHNsIGds aWItZGV2ZWwKLSBsaWJjYXAtcHJvZ3MgJCh2b3B0X2lmIGd0a19kb2MgZ3RrLWRvYykiCisgLURp bnRyb3NwZWN0aW9uPSQodm9wdF9pZiBnaXIgZW5hYmxlZCBkaXNhYmxlZCkiCitob3N0bWFrZWRl cGVuZHM9ImdldHRleHQgcGtnLWNvbmZpZyBmbGV4IHB5dGhvbjMgZG9jYm9vay14c2wgZ2xpYi1k ZXZlbAorIGxpYmNhcC1wcm9ncyIKIG1ha2VkZXBlbmRzPSJsaWJ4bWwyLWRldmVsIGxpYmdsaWIt ZGV2ZWwgZ3RrKzMtZGV2ZWwgbGliY2FwLWRldmVsIGxpYnVud2luZC1kZXZlbAogIGJhc2gtY29t cGxldGlvbiIKIHNob3J0X2Rlc2M9IkNvcmUgR1N0cmVhbWVyIGxpYnJhcmllcyBhbmQgZWxlbWVu dHMgKDEueCkiCkBAIC0xOCwxOCArMTcsMTEgQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhh bkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkxHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9 Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZyIKIGRpc3RmaWxlcz0iJHtob21lcGFn ZX0vc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1l M2YwNDQyNDY3ODNmZDY4NTQzOTY0NzM3M2ZhMTNiYTE0ZjdhYjBiMzQ2ZWFkZDA2NDM3MDkyZjg0 MTllOTRlCitjaGVja3N1bT03OWRmOGRlMjFmMjg0YTEwNWE1YzE1Njg1MjdmOGM1NTljNTgzYzg1 YzBmMmJkN2JkYjViMDM3MmI4YmVlY2JhCiAKLSMgUGFja2FnZSBidWlsZCBvcHRpb25zCi1idWls ZF9vcHRpb25zPSJnaXIgZ3RrX2RvYyIKK2J1aWxkX29wdGlvbnM9ImdpciIKIGJ1aWxkX29wdGlv bnNfZGVmYXVsdD0iZ2lyIgogCi1kZXNjX29wdGlvbl9ndGtfZG9jPSJCdWlsZCBHVEsgRG9jdW1l bnRhdGlvbiB3aXRoIGd0ay1kb2MiCi0KLWlmIFsgLXogIiRDUk9TU19CVUlMRCIgXTsgdGhlbgot CWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiBndGtfZG9jIgotZmkKLQogZ3N0cmVhbWVyMS1kZXZl bF9wYWNrYWdlKCkgewogCWRlcGVuZHM9IiR7bWFrZWRlcGVuZHN9ICR7c291cmNlcGtnfT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMi CkBAIC0zNyw5ICsyOSw2IEBAIGdzdHJlYW1lcjEtZGV2ZWxfcGFja2FnZSgpIHsKIAkJdm1vdmUg dXNyL2luY2x1ZGUKIAkJdm1vdmUgdXNyL2xpYi9wa2djb25maWcKIAkJdm1vdmUgInVzci9saWIv Ki5zbyIKLQkJaWYgWyAiJGJ1aWxkX29wdGlvbl9ndGtfZG9jIiBdOyB0aGVuCi0JCQl2bW92ZSB1 c3Ivc2hhcmUvZ3RrLWRvYwotCQlmaQogCQl2bW92ZSB1c3Ivc2hhcmUvYWNsb2NhbAogCQlpZiBb ICIkYnVpbGRfb3B0aW9uX2dpciIgXTsgdGhlbgogCQkJdm1vdmUgInVzci9zaGFyZS9naXIqIgo= --===============3181742206447410630==--