From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ezYlf-0004Wr-Pt for qemu-devel@nongnu.org; Fri, 23 Mar 2018 22:18:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ezYlb-00089d-IQ for qemu-devel@nongnu.org; Fri, 23 Mar 2018 22:18:51 -0400 Resent-Message-Id: Received: from sender-of-o51.zoho.com ([135.84.80.216]:21063) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ezYlb-00088k-7e for qemu-devel@nongnu.org; Fri, 23 Mar 2018 22:18:47 -0400 In-Reply-To: <20180323225739.17329-1-laurent@vivier.eu> Reply-To: Message-ID: <152185153831.315.2235254115560809838@71c20359a636> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: no-reply@patchew.org Date: Fri, 23 Mar 2018 17:32:19 -0700 (PDT) Subject: Re: [Qemu-devel] [PATCH for 2.13 v2 00/20] linux-user: move arch specific parts to arch directories List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: laurent@vivier.eu Cc: famz@redhat.com, qemu-devel@nongnu.org, peter.maydell@linaro.org, cohuck@redhat.com, riku.voipio@iki.fi, f4bug@amsat.org, qemu-s390x@nongnu.org SGksCgpUaGlzIHNlcmllcyBzZWVtcyB0byBoYXZlIHNvbWUgY29kaW5nIHN0eWxlIHByb2JsZW1z LiBTZWUgb3V0cHV0IGJlbG93IGZvcgptb3JlIGluZm9ybWF0aW9uOgoKVHlwZTogc2VyaWVzCk1l c3NhZ2UtaWQ6IDIwMTgwMzIzMjI1NzM5LjE3MzI5LTEtbGF1cmVudEB2aXZpZXIuZXUKU3ViamVj dDogW1FlbXUtZGV2ZWxdIFtQQVRDSCBmb3IgMi4xMyB2MiAwMC8yMF0gbGludXgtdXNlcjogbW92 ZSBhcmNoIHNwZWNpZmljIHBhcnRzIHRvIGFyY2ggZGlyZWN0b3JpZXMKCj09PSBURVNUIFNDUklQ VCBCRUdJTiA9PT0KIyEvYmluL2Jhc2gKCkJBU0U9YmFzZQpuPTEKdG90YWw9JChnaXQgbG9nIC0t b25lbGluZSAkQkFTRS4uIHwgd2MgLWwpCmZhaWxlZD0wCgpnaXQgY29uZmlnIC0tbG9jYWwgZGlm Zi5yZW5hbWVsaW1pdCAwCmdpdCBjb25maWcgLS1sb2NhbCBkaWZmLnJlbmFtZXMgVHJ1ZQpnaXQg Y29uZmlnIC0tbG9jYWwgZGlmZi5hbGdvcml0aG0gaGlzdG9ncmFtCgpjb21taXRzPSIkKGdpdCBs b2cgLS1mb3JtYXQ9JUggLS1yZXZlcnNlICRCQVNFLi4pIgpmb3IgYyBpbiAkY29tbWl0czsgZG8K ICAgIGVjaG8gIkNoZWNraW5nIFBBVENIICRuLyR0b3RhbDogJChnaXQgbG9nIC1uIDEgLS1mb3Jt YXQ9JXMgJGMpLi4uIgogICAgaWYgISBnaXQgc2hvdyAkYyAtLWZvcm1hdD1lbWFpbCB8IC4vc2Ny aXB0cy9jaGVja3BhdGNoLnBsIC0tbWFpbGJhY2sgLTsgdGhlbgogICAgICAgIGZhaWxlZD0xCiAg ICAgICAgZWNobwogICAgZmkKICAgIG49JCgobisxKSkKZG9uZQoKZXhpdCAkZmFpbGVkCj09PSBU RVNUIFNDUklQVCBFTkQgPT09CgpVcGRhdGluZyAzYzhjZjVhOWMyMWZmODc4MjE2NGQxZGVmN2Y0 NGJkODg4NzEzMzg0CkZyb20gaHR0cHM6Ly9naXRodWIuY29tL3BhdGNoZXctcHJvamVjdC9xZW11 CiB0IFt0YWcgdXBkYXRlXSAgICAgICAgICAgIHBhdGNoZXcvMjAxODAzMjMxNDMyMDIuMjg4Nzkt MS1sdml2aWVyQHJlZGhhdC5jb20gLT4gcGF0Y2hldy8yMDE4MDMyMzE0MzIwMi4yODg3OS0xLWx2 aXZpZXJAcmVkaGF0LmNvbQpTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJ3Rlc3QnCmJiMTMxOWJl YTIgbGludXgtdXNlcjogZGVmaW5lIFRBUkdFVF9BUkNIX0hBU19TRVRVUF9GUkFNRQpmZjA1ODMy MzNlIGxpbnV4LXVzZXI6IG1vdmUgcHBjL3BwYzY0IHNpZ25hbC5jIHBhcnRzIHRvIHBwYyBkaXJl Y3RvcnkKNGE4YzNkNDcxMCBsaW51eC11c2VyOiBtb3ZlIG1pcHMvbWlwczY0IHNpZ25hbC5jIHBh cnRzIHRvIG1pcHMgZGlyZWN0b3J5CjBmZjJmMDRhMjcgbGludXgtdXNlcjogbW92ZSBzcGFyYy9z cGFyYzY0IHNpZ25hbC5jIHBhcnRzIHRvIHNwYXJjIGRpcmVjdG9yeQpmYWI4ZTg5YTcwIGxpbnV4 LXVzZXI6IG1vdmUgaTM4Ni94ODZfNjQgc2lnbmFsLmMgcGFydHMgdG8gaTM4NiBkaXJlY3RvcnkK OGNjMWU5MTUzMiBsaW51eC11c2VyOiBtb3ZlIHh0ZW5zYSBzaWduYWwuYyBwYXJ0cyB0byB4dGVu c2EgZGlyZWN0b3J5CjViMTE1Y2FkMzcgbGludXgtdXNlcjogbW92ZSBocHBhIHNpZ25hbC5jIHBh cnRzIHRvIGhwcGEgZGlyZWN0b3J5CjM2ZjViNDFmZmUgbGludXgtdXNlcjogbW92ZSByaXNjdiBz aWduYWwuYyBwYXJ0cyB0byByaXNjdiBkaXJlY3RvcnkKNmE4MGE0M2FmMSBsaW51eC11c2VyOiBt b3ZlIHRpbGVneCBzaWduYWwuYyBwYXJ0cyB0byB0aWxlZ3ggZGlyZWN0b3J5CjE4MTAyNDEwMGEg bGludXgtdXNlcjogbW92ZSBhbHBoYSBzaWduYWwuYyBwYXJ0cyB0byBhbHBoYSBkaXJlY3RvcnkK MzllOWM2MjMyZCBsaW51eC11c2VyOiBtb3ZlIG02OGsgc2lnbmFsLmMgcGFydHMgdG8gbTY4ayBk aXJlY3RvcnkKYTM5MWNiZTY5NSBsaW51eC11c2VyOiBtb3ZlIHMzOTB4IHNpZ25hbC5jIHBhcnRz IHRvIHMzOTB4IGRpcmVjdG9yeQpkY2Y1Yzk1YTEyIGxpbnV4LXVzZXI6IG1vdmUgb3BlbnJpc2Mg c2lnbmFsLmMgcGFydHMgdG8gb3BlbnJpc2MgZGlyZWN0b3J5CmE1ZjJiN2YxYTggbGludXgtdXNl cjogbW92ZSBuaW9zMiBzaWduYWwuYyBwYXJ0cyB0byBuaW9zMiBkaXJlY3RvcnkKMjQyNWQzMTlm MCBsaW51eC11c2VyOiBtb3ZlIGNyaXMgc2lnbmFsLmMgcGFydHMgdG8gY3JpcyBkaXJlY3RvcnkK ZWY2NGU1ODFjMSBsaW51eC11c2VyOiBtb3ZlIG1pY3JvYmxhemUgc2lnbmFsLmMgcGFydHMgdG8g bWljcm9ibGF6ZSBkaXJlY3RvcnkKZDhkNGJiNzgzMyBsaW51eC11c2VyOiBtb3ZlIHNoNCBzaWdu YWwuYyBwYXJ0cyB0byBzaDQgZGlyZWN0b3J5Cjk1ZDEzMmJlMzMgbGludXgtdXNlcjogbW92ZSBh cm0gc2lnbmFsLmMgcGFydHMgdG8gYXJtIGRpcmVjdG9yeQoxZWI4YzM5NDQyIGxpbnV4LXVzZXI6 IG1vdmUgYWFyY2g2NCBzaWduYWwuYyBwYXJ0cyB0byBhYXJjaDY0IGRpcmVjdG9yeQpjNDVhNjQz NzY3IGxpbnV4LXVzZXI6IGNyZWF0ZSBhIGR1bW15IHBlciBhcmNoIHNpZ25hbC5jCgo9PT0gT1VU UFVUIEJFR0lOID09PQpDaGVja2luZyBQQVRDSCAxLzIwOiBsaW51eC11c2VyOiBjcmVhdGUgYSBk dW1teSBwZXIgYXJjaCBzaWduYWwuYy4uLgpDaGVja2luZyBQQVRDSCAyLzIwOiBsaW51eC11c2Vy OiBtb3ZlIGFhcmNoNjQgc2lnbmFsLmMgcGFydHMgdG8gYWFyY2g2NCBkaXJlY3RvcnkuLi4KQ2hl Y2tpbmcgUEFUQ0ggMy8yMDogbGludXgtdXNlcjogbW92ZSBhcm0gc2lnbmFsLmMgcGFydHMgdG8g YXJtIGRpcmVjdG9yeS4uLgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiM1NjogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6NTQ6CisgICAgdGFyZ2V0X3NpZ3Nl dF90ICB0dWNfc2lnbWFzazteSS8qIG1hc2sgbGFzdCBmb3IgZXh0ZW5zaWJpbGl0eSAqLyQKCkVS Uk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzY0OiBGSUxFOiBsaW51eC11 c2VyL2FybS9zaWduYWwuYzo2MjoKKyAgICB0YXJnZXRfc2lnc2V0X3QgIHR1Y19zaWdtYXNrO15J LyogbWFzayBsYXN0IGZvciBleHRlbnNpYmlsaXR5ICovJAoKRVJST1I6IG9wZW4gYnJhY2UgJ3sn IGZvbGxvd2luZyBzdHJ1Y3QgZ28gb24gdGhlIHNhbWUgbGluZQojMTA0OiBGSUxFOiBsaW51eC11 c2VyL2FybS9zaWduYWwuYzoxMDI6CitzdHJ1Y3Qgc2lnZnJhbWVfdjEKK3sKCkVSUk9SOiBzcGFj ZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJy0nIChjdHg6VnhWKQojMTA2OiBGSUxFOiBsaW51eC11 c2VyL2FybS9zaWduYWwuYzoxMDQ6CisgICAgYWJpX3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJ R19XT1JEUy0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoK RVJST1I6IG9wZW4gYnJhY2UgJ3snIGZvbGxvd2luZyBzdHJ1Y3QgZ28gb24gdGhlIHNhbWUgbGlu ZQojMTExOiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWduYWwuYzoxMDk6CitzdHJ1Y3Qgc2lnZnJh bWVfdjIKK3sKCkVSUk9SOiBvcGVuIGJyYWNlICd7JyBmb2xsb3dpbmcgc3RydWN0IGdvIG9uIHRo ZSBzYW1lIGxpbmUKIzExNzogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6MTE1Ogorc3Ry dWN0IHJ0X3NpZ2ZyYW1lX3YxCit7CgpFUlJPUjogb3BlbiBicmFjZSAneycgZm9sbG93aW5nIHN0 cnVjdCBnbyBvbiB0aGUgc2FtZSBsaW5lCiMxMjY6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25h bC5jOjEyNDoKK3N0cnVjdCBydF9zaWdmcmFtZV92MgorewoKV0FSTklORzogbGluZSBvdmVyIDgw IGNoYXJhY3RlcnMKIzEzNzogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6MTM1OgorI2Rl ZmluZSBTV0lfU1lTX1NJR1JFVFVSTgkoMHhlZjAwMDAwMHwoVEFSR0VUX05SX3NpZ3JldHVybiAr IEFSTV9TWVNDQUxMX0JBU0UpKQoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2Ug dGFicwojMTM3OiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWduYWwuYzoxMzU6CisjZGVmaW5lIFNX SV9TWVNfU0lHUkVUVVJOXkkoMHhlZjAwMDAwMHwoVEFSR0VUX05SX3NpZ3JldHVybiArIEFSTV9T WVNDQUxMX0JBU0UpKSQKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJ3wnIChj dHg6VnhWKQojMTM3OiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWduYWwuYzoxMzU6CisjZGVmaW5l IFNXSV9TWVNfU0lHUkVUVVJOCSgweGVmMDAwMDAwfChUQVJHRVRfTlJfc2lncmV0dXJuICsgQVJN X1NZU0NBTExfQkFTRSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgXgoK V0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzEzODogRklMRTogbGludXgtdXNlci9h cm0vc2lnbmFsLmM6MTM2OgorI2RlZmluZSBTV0lfU1lTX1JUX1NJR1JFVFVSTgkoMHhlZjAwMDAw MHwoVEFSR0VUX05SX3J0X3NpZ3JldHVybiArIEFSTV9TWVNDQUxMX0JBU0UpKQoKRVJST1I6IGNv ZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTM4OiBGSUxFOiBsaW51eC11c2VyL2Fy bS9zaWduYWwuYzoxMzY6CisjZGVmaW5lIFNXSV9TWVNfUlRfU0lHUkVUVVJOXkkoMHhlZjAwMDAw MHwoVEFSR0VUX05SX3J0X3NpZ3JldHVybiArIEFSTV9TWVNDQUxMX0JBU0UpKSQKCkVSUk9SOiBz cGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJ3wnIChjdHg6VnhWKQojMTM4OiBGSUxFOiBsaW51 eC11c2VyL2FybS9zaWduYWwuYzoxMzY6CisjZGVmaW5lIFNXSV9TWVNfUlRfU0lHUkVUVVJOCSgw eGVmMDAwMDAwfChUQVJHRVRfTlJfcnRfc2lncmV0dXJuICsgQVJNX1NZU0NBTExfQkFTRSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgXgoKRVJST1I6IGNvZGUgaW5k ZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojMTQ0OiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWdu YWwuYzoxNDI6CisjZGVmaW5lIFNXSV9USFVNQl9TSUdSRVRVUk5eSSgweGRmMDAgPDwgMTYgfCAw eDI3MDAgfCAoVEFSR0VUX05SX3NpZ3JldHVybikpJAoKV0FSTklORzogbGluZSBvdmVyIDgwIGNo YXJhY3RlcnMKIzE0NTogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6MTQzOgorI2RlZmlu ZSBTV0lfVEhVTUJfUlRfU0lHUkVUVVJOCSgweGRmMDAgPDwgMTYgfCAweDI3MDAgfCAoVEFSR0VU X05SX3J0X3NpZ3JldHVybikpCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0 YWJzCiMxNDU6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjE0MzoKKyNkZWZpbmUgU1dJ X1RIVU1CX1JUX1NJR1JFVFVSTl5JKDB4ZGYwMCA8PCAxNiB8IDB4MjcwMCB8IChUQVJHRVRfTlJf cnRfc2lncmV0dXJuKSkkCgpFUlJPUjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJz CiMxNDg6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjE0NjoKK15JU1dJX1NZU19TSUdS RVRVUk4sXklTV0lfVEhVTUJfU0lHUkVUVVJOLCQKCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQg bmV2ZXIgdXNlIHRhYnMKIzE0OTogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6MTQ3Ogor XklTV0lfU1lTX1JUX1NJR1JFVFVSTixeSVNXSV9USFVNQl9SVF9TSUdSRVRVUk4kCgpFUlJPUjog Iihmb28qKSIgc2hvdWxkIGJlICIoZm9vICopIgojMjU2OiBGSUxFOiBsaW51eC11c2VyL2FybS9z aWduYWwuYzoyNTQ6CisgICAgcmV0dXJuIChhYmlfdWxvbmcqKSh2ZnBmcmFtZSsxKTsKCkVSUk9S OiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6VnhWKQojMjU2OiBGSUxFOiBs aW51eC11c2VyL2FybS9zaWduYWwuYzoyNTQ6CisgICAgcmV0dXJuIChhYmlfdWxvbmcqKSh2ZnBm cmFtZSsxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6ICIoZm9v KikiIHNob3VsZCBiZSAiKGZvbyAqKSIKIzI3NjogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFs LmM6Mjc0OgorICAgIHJldHVybiAoYWJpX3Vsb25nKikoaXdtbXh0ZnJhbWUrMSk7CgpFUlJPUjog c3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICcrJyAoY3R4OlZ4VikKIzI3NjogRklMRTogbGlu dXgtdXNlci9hcm0vc2lnbmFsLmM6Mjc0OgorICAgIHJldHVybiAoYWJpX3Vsb25nKikoaXdtbXh0 ZnJhbWUrMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBz cGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4gcGFyZW50aGVzaXMgJygnCiMzMDg6IEZJTEU6 IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjMwNjoKKyAgICBmb3IoaSA9IDA7IGkgPCBUQVJHRVRf TlNJR19XT1JEUzsgaSsrKSB7CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVu IHBhcmVudGhlc2lzICcoJwojMzI4OiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWduYWwuYzozMjY6 CisgICAgZm9yKGkgPSAxOyBpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewoKRVJST1I6IHNw YWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzQwNTogRklMRTog bGludXgtdXNlci9hcm0vc2lnbmFsLmM6NDAzOgorICAgIGZvcihpID0gMDsgaSA8IFRBUkdFVF9O U0lHX1dPUkRTOyBpKyspIHsKCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9wZW4g cGFyZW50aGVzaXMgJygnCiM1MTk6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjUxNzoK KyAgICBmb3IoaSA9IDE7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CgpFUlJPUjogaWYg dGhpcyBjb2RlIGlzIHJlZHVuZGFudCBjb25zaWRlciByZW1vdmluZyBpdAojNTMwOiBGSUxFOiBs aW51eC11c2VyL2FybS9zaWduYWwuYzo1Mjg6CisjaWYgMAoKRVJST1I6IGJyYWNlcyB7fSBhcmUg bmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojNTMyOiBGSUxFOiBsaW51 eC11c2VyL2FybS9zaWduYWwuYzo1MzA6CisgICAgaWYgKHB0cmFjZV9jYW5jZWxfYnB0KGN1cnJl bnQpKQpbLi4uXQoKRVJST1I6ICIoZm9vKikiIHNob3VsZCBiZSAiKGZvbyAqKSIKIzU3MDogRklM RTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6NTY4OgorICAgIHJldHVybiAoYWJpX3Vsb25nKiko dmZwZnJhbWUgKyAxKTsKCkVSUk9SOiAiKGZvbyopIiBzaG91bGQgYmUgIihmb28gKikiCiM1OTU6 IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjU5MzoKKyAgICByZXR1cm4gKGFiaV91bG9u ZyopKGl3bW14dGZyYW1lICsgMSk7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9y IGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM2MDg6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3Np Z25hbC5jOjYwNjoKKyAgICBpZiAocmVzdG9yZV9zaWdjb250ZXh0KGVudiwgJnVjLT50dWNfbWNv bnRleHQpKQpbLi4uXQoKRVJST1I6IGlmIHRoaXMgY29kZSBpcyByZWR1bmRhbnQgY29uc2lkZXIg cmVtb3ZpbmcgaXQKIzYzMjogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6NjMwOgorI2lm IDAKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBz dGF0ZW1lbnQKIzYzNDogRklMRTogbGludXgtdXNlci9hcm0vc2lnbmFsLmM6NjMyOgorICAgIGlm IChwdHJhY2VfY2FuY2VsX2JwdChjdXJyZW50KSkKWy4uLl0KCkVSUk9SOiBsaW5lIG92ZXIgOTAg Y2hhcmFjdGVycwojNzE0OiBGSUxFOiBsaW51eC11c2VyL2FybS9zaWduYWwuYzo3MTI6CisgICAg aWYgKGRvX3NpZ2FsdHN0YWNrKGZyYW1lX2FkZHIgKyBvZmZzZXRvZihzdHJ1Y3QgcnRfc2lnZnJh bWVfdjEsIHVjLnR1Y19zdGFjayksIDAsIGdldF9zcF9mcm9tX2NwdXN0YXRlKGVudikpID09IC1F RkFVTFQpCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRo aXMgc3RhdGVtZW50CiM3MTQ6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjcxMjoKKyAg ICBpZiAoZG9fc2lnYWx0c3RhY2soZnJhbWVfYWRkciArIG9mZnNldG9mKHN0cnVjdCBydF9zaWdm cmFtZV92MSwgdWMudHVjX3N0YWNrKSwgMCwgZ2V0X3NwX2Zyb21fY3B1c3RhdGUoZW52KSkgPT0g LUVGQVVMVCkKWy4uLl0KCkVSUk9SOiBpZiB0aGlzIGNvZGUgaXMgcmVkdW5kYW50IGNvbnNpZGVy IHJlbW92aW5nIGl0CiM3MTc6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjcxNToKKyNp ZiAwCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMg c3RhdGVtZW50CiM3MTk6IEZJTEU6IGxpbnV4LXVzZXIvYXJtL3NpZ25hbC5jOjcxNzoKKyAgICBp ZiAocHRyYWNlX2NhbmNlbF9icHQoY3VycmVudCkpClsuLi5dCgp0b3RhbDogMzQgZXJyb3JzLCAz IHdhcm5pbmdzLCAxNTI0IGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2Js ZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9z aXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBN QUlOVEFJTkVSUy4KCkNoZWNraW5nIFBBVENIIDQvMjA6IGxpbnV4LXVzZXI6IG1vdmUgc2g0IHNp Z25hbC5jIHBhcnRzIHRvIHNoNCBkaXJlY3RvcnkuLi4KRVJST1I6IG9wZW4gYnJhY2UgJ3snIGZv bGxvd2luZyBzdHJ1Y3QgZ28gb24gdGhlIHNhbWUgbGluZQojNTQ6IEZJTEU6IGxpbnV4LXVzZXIv c2g0L3NpZ25hbC5jOjUyOgorc3RydWN0IHRhcmdldF9zaWdmcmFtZQorewoKRVJST1I6IHNwYWNl cyByZXF1aXJlZCBhcm91bmQgdGhhdCAnLScgKGN0eDpWeFYpCiM1NjogRklMRTogbGludXgtdXNl ci9zaDQvc2lnbmFsLmM6NTQ6CisgICAgdGFyZ2V0X3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJ R19XT1JEUy0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZlciB1c2UgdGFicwojNjY6IEZJTEU6IGxp bnV4LXVzZXIvc2g0L3NpZ25hbC5jOjY0OgorICAgIHRhcmdldF9zaWdzZXRfdCB0dWNfc2lnbWFz azteSS8qIG1hc2sgbGFzdCBmb3IgZXh0ZW5zaWJpbGl0eSAqLyQKCkVSUk9SOiBvcGVuIGJyYWNl ICd7JyBmb2xsb3dpbmcgc3RydWN0IGdvIG9uIHRoZSBzYW1lIGxpbmUKIzcwOiBGSUxFOiBsaW51 eC11c2VyL3NoNC9zaWduYWwuYzo2ODoKK3N0cnVjdCB0YXJnZXRfcnRfc2lnZnJhbWUKK3sKCkVS Uk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJ3wnIChjdHg6VnhWKQojNzc6IEZJTEU6 IGxpbnV4LXVzZXIvc2g0L3NpZ25hbC5jOjc1OgorI2RlZmluZSBNT1ZXKG4pICAoMHg5MzAwfCgo biktMikpIC8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrbiB0byBSMyAqLwogICAgICAgICAgICAgICAg ICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnLScgKGN0eDpW eFYpCiM3NzogRklMRTogbGludXgtdXNlci9zaDQvc2lnbmFsLmM6NzU6CisjZGVmaW5lIE1PVlco bikgICgweDkzMDB8KChuKS0yKSkgLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJv dW5kIHRoYXQgJz0nIChjdHg6VnhWKQojMTMzOiBGSUxFOiBsaW51eC11c2VyL3NoNC9zaWduYWwu YzoxMzE6CisgICAgZm9yIChpPTA7IGk8MTY7IGkrKykgewogICAgICAgICAgIF4KCkVSUk9SOiBz cGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJzwnIChjdHg6VnhWKQojMTMzOiBGSUxFOiBsaW51 eC11c2VyL3NoNC9zaWduYWwuYzoxMzE6CisgICAgZm9yIChpPTA7IGk8MTY7IGkrKykgewogICAg ICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnPScgKGN0 eDpWeFYpCiMxNjE6IEZJTEU6IGxpbnV4LXVzZXIvc2g0L3NpZ25hbC5jOjE1OToKKyAgICBmb3Ig KGk9MDsgaTwxNjsgaSsrKSB7CiAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBh cm91bmQgdGhhdCAnPCcgKGN0eDpWeFYpCiMxNjE6IEZJTEU6IGxpbnV4LXVzZXIvc2g0L3NpZ25h bC5jOjE1OToKKyAgICBmb3IgKGk9MDsgaTwxNjsgaSsrKSB7CiAgICAgICAgICAgICAgICBeCgpF UlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMjUx OiBGSUxFOiBsaW51eC11c2VyL3NoNC9zaWduYWwuYzoyNDk6CisgICAgZm9yKGkgPSAwOyBpIDwg VEFSR0VUX05TSUdfV09SRFM7IGkrKykgewoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0 aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzMwMTogRklMRTogbGludXgtdXNlci9zaDQvc2lnbmFs LmM6Mjk5OgorICAgIGZvcihpID0gMTsgaSA8IFRBUkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKCkVS Uk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1l bnQKIzMwNTogRklMRTogbGludXgtdXNlci9zaDQvc2lnbmFsLmM6MzAzOgorICAgIGlmIChlcnIp ClsuLi5dCgp0b3RhbDogMTMgZXJyb3JzLCAwIHdhcm5pbmdzLCA2NzkgbGluZXMgY2hlY2tlZAoK WW91ciBwYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2Yg dGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50 YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKQ2hlY2tpbmcgUEFUQ0ggNS8y MDogbGludXgtdXNlcjogbW92ZSBtaWNyb2JsYXplIHNpZ25hbC5jIHBhcnRzIHRvIG1pY3JvYmxh emUgZGlyZWN0b3J5Li4uCkVSUk9SOiByZXR1cm4gaXMgbm90IGEgZnVuY3Rpb24sIHBhcmVudGhl c2VzIGFyZSBub3QgcmVxdWlyZWQKIzE0MzogRklMRTogbGludXgtdXNlci9taWNyb2JsYXplL3Np Z25hbC5jOjE0MDoKKyAgICByZXR1cm4gKChzcCAtIGZyYW1lX3NpemUpICYgLThVTCk7CgpFUlJP UjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50 CiMxNTU6IEZJTEU6IGxpbnV4LXVzZXIvbWljcm9ibGF6ZS9zaWduYWwuYzoxNTI6CisgICAgaWYg KCFsb2NrX3VzZXJfc3RydWN0KFZFUklGWV9XUklURSwgZnJhbWUsIGZyYW1lX2FkZHIsIDApKQpb Li4uXQoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAn KCcKIzE2MTogRklMRTogbGludXgtdXNlci9taWNyb2JsYXplL3NpZ25hbC5jOjE1ODoKKyAgICBm b3IoaSA9IDE7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CgpFUlJPUjogc3BhY2VzIHJl cXVpcmVkIGFyb3VuZCB0aGF0ICctJyAoY3R4OlZ4VikKIzE3MTogRklMRTogbGludXgtdXNlci9t aWNyb2JsYXplL3NpZ25hbC5jOjE2ODoKKyAgICAgICAgZW52LT5yZWdzWzE1XSA9ICgodW5zaWdu ZWQgbG9uZylrYS0+c2FfcmVzdG9yZXIpLTg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vz c2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzIyMzogRklMRTogbGludXgtdXNl ci9taWNyb2JsYXplL3NpZ25hbC5jOjIyMDoKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVS SUZZX1dSSVRFLCBmcmFtZSwgZnJhbWVfYWRkciwgMSkpClsuLi5dCgpFUlJPUjogc3BhY2UgcmVx dWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMjI4OiBGSUxFOiBsaW51eC11 c2VyL21pY3JvYmxhemUvc2lnbmFsLmM6MjI1OgorICAgIGZvcihpID0gMTsgaSA8IFRBUkdFVF9O U0lHX1dPUkRTOyBpKyspIHsKCnRvdGFsOiA2IGVycm9ycywgMCB3YXJuaW5ncywgNDc2IGxpbmVz IGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAg SWYgYW55IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRv IHRoZSBtYWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCkNoZWNraW5n IFBBVENIIDYvMjA6IGxpbnV4LXVzZXI6IG1vdmUgY3JpcyBzaWduYWwuYyBwYXJ0cyB0byBjcmlz IGRpcmVjdG9yeS4uLgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMxMTE6IEZJTEU6IGxpbnV4LXVzZXIvY3Jpcy9zaWduYWwuYzox MDk6CisgICAgaWYgKCFsb2NrX3VzZXJfc3RydWN0KFZFUklGWV9XUklURSwgZnJhbWUsIGZyYW1l X2FkZHIsIDApKQpbLi4uXQoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnKycg KGN0eDpWeFYpCiMxMjE6IEZJTEU6IGxpbnV4LXVzZXIvY3Jpcy9zaWduYWwuYzoxMTk6CisgICAg X19wdXRfdXNlcigweDljNWYsIGZyYW1lLT5yZXRjb2RlKzApOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9w ZW4gcGFyZW50aGVzaXMgJygnCiMxMjk6IEZJTEU6IGxpbnV4LXVzZXIvY3Jpcy9zaWduYWwuYzox Mjc6CisgICAgZm9yKGkgPSAxOyBpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewoKRVJST1I6 IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzE3MjogRklM RTogbGludXgtdXNlci9jcmlzL3NpZ25hbC5jOjE3MDoKKyAgICBmb3IoaSA9IDE7IGkgPCBUQVJH RVRfTlNJR19XT1JEUzsgaSsrKSB7Cgp0b3RhbDogNCBlcnJvcnMsIDAgd2FybmluZ3MsIDM1OCBs aW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmll dy4gIElmIGFueSBvZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBvc2l0aXZlcyByZXBvcnQgdGhl bSB0byB0aGUgbWFpbnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCgpDaGVj a2luZyBQQVRDSCA3LzIwOiBsaW51eC11c2VyOiBtb3ZlIG5pb3MyIHNpZ25hbC5jIHBhcnRzIHRv IG5pb3MyIGRpcmVjdG9yeS4uLgpDaGVja2luZyBQQVRDSCA4LzIwOiBsaW51eC11c2VyOiBtb3Zl IG9wZW5yaXNjIHNpZ25hbC5jIHBhcnRzIHRvIG9wZW5yaXNjIGRpcmVjdG9yeS4uLgpFUlJPUjog aWYgdGhpcyBjb2RlIGlzIHJlZHVuZGFudCBjb25zaWRlciByZW1vdmluZyBpdAojNTI6IEZJTEU6 IGxpbnV4LXVzZXIvb3BlbnJpc2Mvc2lnbmFsLmM6NDk6CisjaWYgMAoKdG90YWw6IDEgZXJyb3Jz LCAwIHdhcm5pbmdzLCA0NDEgbGluZXMgY2hlY2tlZAoKWW91ciBwYXRjaCBoYXMgc3R5bGUgcHJv YmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBw b3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGlu IE1BSU5UQUlORVJTLgoKQ2hlY2tpbmcgUEFUQ0ggOS8yMDogbGludXgtdXNlcjogbW92ZSBzMzkw eCBzaWduYWwuYyBwYXJ0cyB0byBzMzkweCBkaXJlY3RvcnkuLi4KRVJST1I6IHNwYWNlcyByZXF1 aXJlZCBhcm91bmQgdGhhdCAnKicgKGN0eDpWeFYpCiMzNzogRklMRTogbGludXgtdXNlci9zMzkw eC9zaWduYWwuYzozNToKKyNkZWZpbmUgX1NJR01BU0tfQ09QWV9TSVpFICAgIChzaXplb2YodW5z aWduZWQgbG9uZykqX1NJR0NPTlRFWFRfTlNJR19XT1JEUykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCgpXQVJOSU5HOiBsaW5lIG92ZXIgODAg Y2hhcmFjdGVycwojMzg6IEZJTEU6IGxpbnV4LXVzZXIvczM5MHgvc2lnbmFsLmM6MzY6CisjZGVm aW5lIFBTV19BRERSX0FNT0RFICAgICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDAwVUwgLyogMHg4 MDAwMDAwMFVMIGZvciAzMS1iaXQgKi8KCkVSUk9SOiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50 cwojMTE0OiBGSUxFOiBsaW51eC11c2VyL3MzOTB4L3NpZ25hbC5jOjExMjoKKyAgICAvL3NhdmVf YWNjZXNzX3JlZ3MoY3VycmVudC0+dGhyZWFkLmFjcnMpOyBGSVhNRQoKRVJST1I6IGRvIG5vdCB1 c2UgQzk5IC8vIGNvbW1lbnRzCiMxMzA6IEZJTEU6IGxpbnV4LXVzZXIvczM5MHgvc2lnbmFsLmM6 MTI4OgorICAgIC8vc2F2ZV9mcF9yZWdzKCZjdXJyZW50LT50aHJlYWQuZnBfcmVncyk7IEZJWE1F CgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzE3NDogRklMRTogbGludXgtdXNl ci9zMzkweC9zaWduYWwuYzoxNzI6CisgICAgZW52LT5yZWdzWzJdID0gc2lnOyAvL21hcF9zaWdu YWwoc2lnKTsKCkVSUk9SOiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50cwojMTc5OiBGSUxFOiBs aW51eC11c2VyL3MzOTB4L3NpZ25hbC5jOjE3NzoKKyAgICBlbnYtPnJlZ3NbNF0gPSAwOyAvLyBG SVhNRTogbm8gY2x1ZS4uLiBjdXJyZW50LT50aHJlYWQudHJhcF9ubzsKCkVSUk9SOiBkbyBub3Qg dXNlIEM5OSAvLyBjb21tZW50cwojMTgwOiBGSUxFOiBsaW51eC11c2VyL3MzOTB4L3NpZ25hbC5j OjE3ODoKKyAgICBlbnYtPnJlZ3NbNV0gPSAwOyAvLyBGSVhNRTogbm8gY2x1ZS4uLiBjdXJyZW50 LT50aHJlYWQucHJvdF9hZGRyOwoKRVJST1I6IGRvIG5vdCB1c2UgQzk5IC8vIGNvbW1lbnRzCiMy Mzc6IEZJTEU6IGxpbnV4LXVzZXIvczM5MHgvc2lnbmFsLmM6MjM1OgorICAgIGVudi0+cmVnc1sy XSA9IHNpZzsgLy9tYXBfc2lnbmFsKHNpZyk7Cgp0b3RhbDogNyBlcnJvcnMsIDEgd2FybmluZ3Ms IDYzNCBsaW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNl IHJldmlldy4gIElmIGFueSBvZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBvc2l0aXZlcyByZXBv cnQgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMu CgpDaGVja2luZyBQQVRDSCAxMC8yMDogbGludXgtdXNlcjogbW92ZSBtNjhrIHNpZ25hbC5jIHBh cnRzIHRvIG02OGsgZGlyZWN0b3J5Li4uCkVSUk9SOiBvcGVuIGJyYWNlICd7JyBmb2xsb3dpbmcg c3RydWN0IGdvIG9uIHRoZSBzYW1lIGxpbmUKIzM5OiBGSUxFOiBsaW51eC11c2VyL202OGsvc2ln bmFsLmM6Mzc6CitzdHJ1Y3QgdGFyZ2V0X3NpZ2ZyYW1lCit7CgpFUlJPUjogc3BhY2VzIHJlcXVp cmVkIGFyb3VuZCB0aGF0ICctJyAoY3R4OlZ4VikKIzQ1OiBGSUxFOiBsaW51eC11c2VyL202OGsv c2lnbmFsLmM6NDM6CisgICAgYWJpX3Vsb25nIGV4dHJhbWFza1tUQVJHRVRfTlNJR19XT1JEUy0x XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNw YWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnKicgKGN0eDpWeFYpCiM1NTogRklMRTogbGludXgt dXNlci9tNjhrL3NpZ25hbC5jOjUzOgorICAgIGludCBmX2ZwcmVnc1s4KjNdOwogICAgICAgICAg ICAgICAgICAgXgoKRVJST1I6IG9wZW4gYnJhY2UgJ3snIGZvbGxvd2luZyBzdHJ1Y3QgZ28gb24g dGhlIHNhbWUgbGluZQojNzY6IEZJTEU6IGxpbnV4LXVzZXIvbTY4ay9zaWduYWwuYzo3NDoKK3N0 cnVjdCB0YXJnZXRfcnRfc2lnZnJhbWUKK3sKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVkIGJldHdl ZW4gZnVuY3Rpb24gbmFtZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzEyNzogRklMRTogbGlu dXgtdXNlci9tNjhrL3NpZ25hbC5jOjEyNToKKyAgICBpZiAoKGthLT5zYV9mbGFncyAmIFRBUkdF VF9TQV9PTlNUQUNLKSAmJiAoc2FzX3NzX2ZsYWdzIChzcCkgPT0gMCkpIHsKCkVSUk9SOiByZXR1 cm4gaXMgbm90IGEgZnVuY3Rpb24sIHBhcmVudGhlc2VzIGFyZSBub3QgcmVxdWlyZWQKIzEzMTog RklMRTogbGludXgtdXNlci9tNjhrL3NpZ25hbC5jOjEyOToKKyAgICByZXR1cm4gKChzcCAtIGZy YW1lX3NpemUpICYgLThVTCk7CgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVu IHBhcmVudGhlc2lzICcoJwojMTU2OiBGSUxFOiBsaW51eC11c2VyL202OGsvc2lnbmFsLmM6MTU0 OgorICAgIGZvcihpID0gMTsgaSA8IFRBUkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKCkVSUk9SOiBi cmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzI1 OTogRklMRTogbGludXgtdXNlci9tNjhrL3NpZ25hbC5jOjI1NzoKKyAgICBpZiAodGVtcCAhPSBU QVJHRVRfTUNPTlRFWFRfVkVSU0lPTikKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vz c2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzMzMTogRklMRTogbGludXgtdXNl ci9tNjhrL3NpZ25hbC5jOjMyOToKKyAgICBpZiAoZXJyKQpbLi4uXQoKRVJST1I6IHNwYWNlIHJl cXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzMzNDogRklMRTogbGludXgt dXNlci9tNjhrL3NpZ25hbC5jOjMzMjoKKyAgICBmb3IoaSA9IDA7IGkgPCBUQVJHRVRfTlNJR19X T1JEUzsgaSsrKSB7CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1z IG9mIHRoaXMgc3RhdGVtZW50CiMzNDk6IEZJTEU6IGxpbnV4LXVzZXIvbTY4ay9zaWduYWwuYzoz NDc6CisgICAgaWYgKGVycikKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBm b3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzM3NDogRklMRTogbGludXgtdXNlci9tNjhr L3NpZ25hbC5jOjM3MjoKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVSSUZZX1JFQUQsIGZy YW1lLCBmcmFtZV9hZGRyLCAxKSkKWy4uLl0KCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUg dGhlIG9wZW4gcGFyZW50aGVzaXMgJygnCiMzODE6IEZJTEU6IGxpbnV4LXVzZXIvbTY4ay9zaWdu YWwuYzozNzk6CisgICAgZm9yKGkgPSAxOyBpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewoK RVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRl bWVudAojNDA3OiBGSUxFOiBsaW51eC11c2VyL202OGsvc2lnbmFsLmM6NDA1OgorICAgIGlmICgh bG9ja191c2VyX3N0cnVjdChWRVJJRllfUkVBRCwgZnJhbWUsIGZyYW1lX2FkZHIsIDEpKQpbLi4u XQoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0 YXRlbWVudAojNDE1OiBGSUxFOiBsaW51eC11c2VyL202OGsvc2lnbmFsLmM6NDEzOgorICAgIGlm ICh0YXJnZXRfcnRfcmVzdG9yZV91Y29udGV4dChlbnYsICZmcmFtZS0+dWMpKQpbLi4uXQoKRVJS T1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVu dAojNDE4OiBGSUxFOiBsaW51eC11c2VyL202OGsvc2lnbmFsLmM6NDE2OgorICAgIGlmIChkb19z aWdhbHRzdGFjayhmcmFtZV9hZGRyICsKWy4uLl0KCnRvdGFsOiAxNiBlcnJvcnMsIDAgd2Fybmlu Z3MsIDgzNiBsaW5lcyBjaGVja2VkCgpZb3VyIHBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxl YXNlIHJldmlldy4gIElmIGFueSBvZiB0aGVzZSBlcnJvcnMKYXJlIGZhbHNlIHBvc2l0aXZlcyBy ZXBvcnQgdGhlbSB0byB0aGUgbWFpbnRhaW5lciwgc2VlCkNIRUNLUEFUQ0ggaW4gTUFJTlRBSU5F UlMuCgpDaGVja2luZyBQQVRDSCAxMS8yMDogbGludXgtdXNlcjogbW92ZSBhbHBoYSBzaWduYWwu YyBwYXJ0cyB0byBhbHBoYSBkaXJlY3RvcnkuLi4KQ2hlY2tpbmcgUEFUQ0ggMTIvMjA6IGxpbnV4 LXVzZXI6IG1vdmUgdGlsZWd4IHNpZ25hbC5jIHBhcnRzIHRvIHRpbGVneCBkaXJlY3RvcnkuLi4K Q2hlY2tpbmcgUEFUQ0ggMTMvMjA6IGxpbnV4LXVzZXI6IG1vdmUgcmlzY3Ygc2lnbmFsLmMgcGFy dHMgdG8gcmlzY3YgZGlyZWN0b3J5Li4uCkNoZWNraW5nIFBBVENIIDE0LzIwOiBsaW51eC11c2Vy OiBtb3ZlIGhwcGEgc2lnbmFsLmMgcGFydHMgdG8gaHBwYSBkaXJlY3RvcnkuLi4KQ2hlY2tpbmcg UEFUQ0ggMTUvMjA6IGxpbnV4LXVzZXI6IG1vdmUgeHRlbnNhIHNpZ25hbC5jIHBhcnRzIHRvIHh0 ZW5zYSBkaXJlY3RvcnkuLi4KQ2hlY2tpbmcgUEFUQ0ggMTYvMjA6IGxpbnV4LXVzZXI6IG1vdmUg aTM4Ni94ODZfNjQgc2lnbmFsLmMgcGFydHMgdG8gaTM4NiBkaXJlY3RvcnkuLi4KRVJST1I6IHNw YWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnLScgKGN0eDpWeFYpCiMxNzE6IEZJTEU6IGxpbnV4 LXVzZXIvaTM4Ni9zaWduYWwuYzoxNjc6CisgICAgYWJpX3Vsb25nIGV4dHJhbWFza1tUQVJHRVRf TlNJR19XT1JEUy0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzI5ODogRklMRTogbGludXgtdXNl ci9pMzg2L3NpZ25hbC5jOjI5NDoKKyAgICAgICAgICAgIGVzcCA9IHRhcmdldF9zaWdhbHRzdGFj a191c2VkLnNzX3NwICsgdGFyZ2V0X3NpZ2FsdHN0YWNrX3VzZWQuc3Nfc2l6ZTsKCkVSUk9SOiBi cmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzMz MDogRklMRTogbGludXgtdXNlci9pMzg2L3NpZ25hbC5jOjMyNjoKKyAgICBpZiAoIWxvY2tfdXNl cl9zdHJ1Y3QoVkVSSUZZX1dSSVRFLCBmcmFtZSwgZnJhbWVfYWRkciwgMCkpClsuLi5dCgpFUlJP Ujogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojMzM4OiBG SUxFOiBsaW51eC11c2VyL2kzODYvc2lnbmFsLmM6MzM0OgorICAgIGZvcihpID0gMTsgaSA8IFRB UkdFVF9OU0lHX1dPUkRTOyBpKyspIHsKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRo YXQgJysnIChjdHg6VnhWKQojMzUzOiBGSUxFOiBsaW51eC11c2VyL2kzODYvc2lnbmFsLmM6MzQ5 OgorICAgICAgICBfX3B1dF91c2VyKHZhbDE2LCAodWludDE2X3QgKikoZnJhbWUtPnJldGNvZGUr MCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICcrJyAoY3R4OlZ4VikKIzM1 NDogRklMRTogbGludXgtdXNlci9pMzg2L3NpZ25hbC5jOjM1MDoKKyAgICAgICAgX19wdXRfdXNl cihUQVJHRVRfTlJfc2lncmV0dXJuLCAoaW50ICopKGZyYW1lLT5yZXRjb2RlKzIpKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnKycgKGN0eDpWeFYpCiMzNTY6 IEZJTEU6IGxpbnV4LXVzZXIvaTM4Ni9zaWduYWwuYzozNTI6CisgICAgICAgIF9fcHV0X3VzZXIo dmFsMTYsICh1aW50MTZfdCAqKShmcmFtZS0+cmV0Y29kZSs2KSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBicmFjZXMge30g YXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzM5MzogRklMRTog bGludXgtdXNlci9pMzg2L3NpZ25hbC5jOjM4OToKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3Qo VkVSSUZZX1dSSVRFLCBmcmFtZSwgZnJhbWVfYWRkciwgMCkpClsuLi5dCgpFUlJPUjogc3BhY2Ug cmVxdWlyZWQgYmVmb3JlIHRoZSBvcGVuIHBhcmVudGhlc2lzICcoJwojNDE5OiBGSUxFOiBsaW51 eC11c2VyL2kzODYvc2lnbmFsLmM6NDE1OgorICAgIGZvcihpID0gMDsgaSA8IFRBUkdFVF9OU0lH X1dPUkRTOyBpKyspIHsKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChj dHg6VnhWKQojNDMzOiBGSUxFOiBsaW51eC11c2VyL2kzODYvc2lnbmFsLmM6NDI5OgorICAgICAg ICBfX3B1dF91c2VyKDB4YjgsIChjaGFyICopKGZyYW1lLT5yZXRjb2RlKzApKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMg cmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6VnhWKQojNDM0OiBGSUxFOiBsaW51eC11c2Vy L2kzODYvc2lnbmFsLmM6NDMwOgorICAgICAgICBfX3B1dF91c2VyKFRBUkdFVF9OUl9ydF9zaWdy ZXR1cm4sIChpbnQgKikoZnJhbWUtPnJldGNvZGUrMSkpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCgpFUlJPUjogc3Bh Y2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICcrJyAoY3R4OlZ4VikKIzQzNjogRklMRTogbGludXgt dXNlci9pMzg2L3NpZ25hbC5jOjQzMjoKKyAgICAgICAgX19wdXRfdXNlcih2YWwxNiwgKHVpbnQx Nl90ICopKGZyYW1lLT5yZXRjb2RlKzUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IGNvZGUgaW5kZW50IHNob3VsZCBuZXZl ciB1c2UgdGFicwojNTIzOiBGSUxFOiBsaW51eC11c2VyL2kzODYvc2lnbmFsLmM6NTE5OgorICAg IC8vXkleSXJlZ3MtPm9yaWdfZWF4ID0gLTE7XkleSS8qIGRpc2FibGUgc3lzY2FsbCBjaGVja3Mg Ki8kCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzUyMzogRklMRTogbGludXgt dXNlci9pMzg2L3NpZ25hbC5jOjUxOToKKyAgICAvLwkJcmVncy0+b3JpZ19lYXggPSAtMTsJCS8q IGRpc2FibGUgc3lzY2FsbCBjaGVja3MgKi8KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2Fy eSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzUyNzogRklMRTogbGludXgtdXNlci9p Mzg2L3NpZ25hbC5jOjUyMzoKKyAgICAgICAgaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGZw c3RhdGVfYWRkciwKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxs IGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzU1MzogRklMRTogbGludXgtdXNlci9pMzg2L3NpZ25h bC5jOjU0OToKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVSSUZZX1JFQUQsIGZyYW1lLCBm cmFtZV9hZGRyLCAxKSkKWy4uLl0KCkVSUk9SOiBzcGFjZSByZXF1aXJlZCBiZWZvcmUgdGhlIG9w ZW4gcGFyZW50aGVzaXMgJygnCiM1NTc6IEZJTEU6IGxpbnV4LXVzZXIvaTM4Ni9zaWduYWwuYzo1 NTM6CisgICAgZm9yKGkgPSAxOyBpIDwgVEFSR0VUX05TSUdfV09SRFM7IGkrKykgewoKRVJST1I6 IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAoj NTY1OiBGSUxFOiBsaW51eC11c2VyL2kzODYvc2lnbmFsLmM6NTYxOgorICAgIGlmIChyZXN0b3Jl X3NpZ2NvbnRleHQoZW52LCAmZnJhbWUtPnNjKSkKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJl IG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzU4NTogRklMRTogbGlu dXgtdXNlci9pMzg2L3NpZ25hbC5jOjU4MToKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVS SUZZX1JFQUQsIGZyYW1lLCBmcmFtZV9hZGRyLCAxKSkKWy4uLl0KCldBUk5JTkc6IGxpbmUgb3Zl ciA4MCBjaGFyYWN0ZXJzCiM1OTQ6IEZJTEU6IGxpbnV4LXVzZXIvaTM4Ni9zaWduYWwuYzo1OTA6 CisgICAgaWYgKGRvX3NpZ2FsdHN0YWNrKGZyYW1lX2FkZHIgKyBvZmZzZXRvZihzdHJ1Y3QgcnRf c2lnZnJhbWUsIHVjLnR1Y19zdGFjayksIDAsCgp0b3RhbDogMTggZXJyb3JzLCAyIHdhcm5pbmdz LCAxMTk2IGxpbmVzIGNoZWNrZWQKCllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVh c2UgcmV2aWV3LiAgSWYgYW55IG9mIHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJl cG9ydCB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVS Uy4KCkNoZWNraW5nIFBBVENIIDE3LzIwOiBsaW51eC11c2VyOiBtb3ZlIHNwYXJjL3NwYXJjNjQg c2lnbmFsLmMgcGFydHMgdG8gc3BhcmMgZGlyZWN0b3J5Li4uCkVSUk9SOiBzcGFjZSBwcm9oaWJp dGVkIGJlZm9yZSBvcGVuIHNxdWFyZSBicmFja2V0ICdbJwojNzAzOiBGSUxFOiBsaW51eC11c2Vy L3NwYXJjL3NpZ25hbC5jOjgzOgorICAgIH0gc2lfZnBxdWV1ZSBbMTZdOwoKRVJST1I6IHNwYWNl IHByb2hpYml0ZWQgYmV0d2VlbiBmdW5jdGlvbiBuYW1lIGFuZCBvcGVuIHBhcmVudGhlc2lzICco JwojNzExOiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjkxOgorICAgIGFiaV91bG9u ZyAgICAgICAgICAgaW5zbnNbMl0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgpKSk7CgpFUlJP UjogY29kZSBpbmRlbnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiM3Mzg6IEZJTEU6IGxpbnV4LXVz ZXIvc3BhcmMvc2lnbmFsLmM6MTE4OgorI2RlZmluZSBVUkVHX0wwXkkgICAgICAgOCQKCkVSUk9S OiB0cmFpbGluZyB3aGl0ZXNwYWNlCiM3NDI6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFs LmM6MTIyOgorc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZ2V0X3NpZ2ZyYW1lKHN0cnVjdCB0YXJn ZXRfc2lnYWN0aW9uICpzYSwgJAoKRVJST1I6IGxpbmUgb3ZlciA5MCBjaGFyYWN0ZXJzCiM3NTM6 IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6MTMzOgorICAgICAgICAgICAgICAgICYm ICEoKHRhcmdldF9zaWdhbHRzdGFja191c2VkLnNzX3NwICsgdGFyZ2V0X3NpZ2FsdHN0YWNrX3Vz ZWQuc3Nfc2l6ZSkgJiA3KSkgewoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzc1 NDogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoxMzQ6CisgICAgICAgICAgICBzcCA9 IHRhcmdldF9zaWdhbHRzdGFja191c2VkLnNzX3NwICsgdGFyZ2V0X3NpZ2FsdHN0YWNrX3VzZWQu c3Nfc2l6ZTsKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJz0nIChjdHg6VnhW KQojNzY5OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjE0OToKKyAgICBmb3IgKGk9 MDsgaSA8IDg7IGkrKykgewogICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJv dW5kIHRoYXQgJz0nIChjdHg6VnhWKQojNzcyOiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25h bC5jOjE1MjoKKyAgICBmb3IgKGk9MDsgaSA8IDg7IGkrKykgewogICAgICAgICAgIF4KCkVSUk9S OiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6VnhWKQojNzczOiBGSUxFOiBs aW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjE1MzoKKyAgICAgICAgX19wdXRfdXNlcihlbnYtPnJl Z3dwdHJbVVJFR19JMCArIGldLCAmc2ktPnNpX3JlZ3MudV9yZWdzW2krOF0pOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KCkVSUk9SOiBpZiB0aGlzIGNvZGUgaXMgcmVkdW5kYW50IGNvbnNpZGVyIHJlbW92aW5nIGl0 CiM3Nzk6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6MTU5OgorI2lmIDAKCkVSUk9S OiBkbyBub3QgdXNlIEM5OSAvLyBjb21tZW50cwojODA3OiBGSUxFOiBsaW51eC11c2VyL3NwYXJj L3NpZ25hbC5jOjE4NzoKKyAgICAvL3N5bmNocm9uaXplX3VzZXJfc3RhY2soKTsKCkVSUk9SOiBp ZiB0aGlzIGNvZGUgaXMgcmVkdW5kYW50IGNvbnNpZGVyIHJlbW92aW5nIGl0CiM4MTg6IEZJTEU6 IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6MTk4OgorI2lmIDAKCkVSUk9SOiBicmFjZXMge30g YXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzgxOTogRklMRTog bGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoxOTk6CisgICAgaWYgKGludmFsaWRfZnJhbWVfcG9p bnRlcihzZiwgc2lnZnJhbWVfc2l6ZSkpClsuLi5dCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8g Y29tbWVudHMKIzgyNjogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoyMDY6CisgICAg Ly9zYXZlX2ZwdV9zdGF0ZShyZWdzLCAmc2YtPmZwdV9zdGF0ZSk7CgpFUlJPUjogZG8gbm90IHVz ZSBDOTkgLy8gY29tbWVudHMKIzgyNzogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoy MDc6CisgICAgLy9fX3B1dF91c2VyKCZzZi0+ZnB1X3N0YXRlLCAmc2YtPmZwdV9zYXZlKTsKCkVS Uk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1l bnQKIzg0MDogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoyMjA6CisgICAgaWYgKGVy cikKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2Yg dGhpcyBzdGF0ZW1lbnQKIzg3MDogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoyNTA6 CisgICAgICAgIGlmIChlcnIpClsuLi5dCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVu dHMKIzg3NDogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzoyNTQ6CisgICAgICAgIC8v IGZsdXNoX3NpZ19pbnNucyhjdXJyZW50LT5tbSwgKHVuc2lnbmVkIGxvbmcpICYoc2YtPmluc25z WzBdKSk7CgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzg3NTogRklMRTogbGlu dXgtdXNlci9zcGFyYy9zaWduYWwuYzoyNTU6CisgICAgICAgIC8vIHRiX2ZsdXNoKGVudik7CgpF UlJPUjogaWYgdGhpcyBjb2RlIGlzIHJlZHVuZGFudCBjb25zaWRlciByZW1vdmluZyBpdAojODc5 OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjI1OToKKyNpZiAwCgpFUlJPUjogc3Bh Y2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICc9JyAoY3R4OlZ4VikKIzkwMjogRklMRTogbGludXgt dXNlci9zcGFyYy9zaWduYWwuYzoyODI6CisgICAgaW50IGVycj0wLCBpOwogICAgICAgICAgICBe CgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3Rh dGVtZW50CiM5MTI6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6MjkyOgorICAgIGlm IChzZl9hZGRyICYgMykKWy4uLl0KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQg Jz0nIChjdHg6VnhWKQojOTMyOiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjMxMjoK KyAgICBmb3IgKGk9MDsgaSA8IDg7IGkrKykgewogICAgICAgICAgIF4KCkVSUk9SOiBzcGFjZXMg cmVxdWlyZWQgYXJvdW5kIHRoYXQgJz0nIChjdHg6VnhWKQojOTM1OiBGSUxFOiBsaW51eC11c2Vy L3NwYXJjL3NpZ25hbC5jOjMxNToKKyAgICBmb3IgKGk9MDsgaSA8IDg7IGkrKykgewogICAgICAg ICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6VnhWKQoj OTM2OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjMxNjoKKyAgICAgICAgX19nZXRf dXNlcihlbnYtPnJlZ3dwdHJbaSArIFVSRUdfSTBdLCAmc2YtPmluZm8uc2lfcmVncy51X3JlZ3Nb aSs4XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCgpFUlJPUjogc3BhY2UgcmVxdWlyZWQgYmVmb3JlIHRo ZSBvcGVuIHBhcmVudGhlc2lzICcoJwojOTQ5OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25h bC5jOjMyOToKKyAgICBmb3IoaSA9IDE7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CgpF UlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29tbWVudHMKIzEwMDk6IEZJTEU6IGxpbnV4LXVzZXIv c3BhcmMvc2lnbmFsLmM6Mzg5OgorICAgICAgICAvL3VpbnQxMjhfdCBxcmVnc1sxNl07CgpFUlJP Ujogc3BhY2VzIHJlcXVpcmVkIGFyb3VuZCB0aGF0ICcrJyAoY3R4OlZ4VikKIzExMDY6IEZJTEU6 IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6NDg2OgorICAgIHdfYWRkciA9IFRBUkdFVF9TVEFD S19CSUFTK2Vudi0+cmVnd3B0cltVUkVHX0k2XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJy8nIChjdHg6VnhWKQoj MTEyNTogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzo1MDU6CisgICAgICAgICAgICAg ICAgX19nZXRfdXNlcihlbnYtPmZwcltpLzJdLmwubG93ZXIsIHNyYyk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQg dGhhdCAnLycgKGN0eDpWeFYpCiMxMTI3OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5j OjUwNzoKKyAgICAgICAgICAgICAgICBfX2dldF91c2VyKGVudi0+ZnByW2kvMl0ubC51cHBlciwg c3JjKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCgpFUlJPUjogdHJh aWxpbmcgd2hpdGVzcGFjZQojMTE1ODogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzo1 Mzg6CisgICAgJAoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJtcyBv ZiB0aGlzIHN0YXRlbWVudAojMTE4NDogRklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzo1 NjQ6CisgICAgICAgIGlmIChlcnIpClsuLi5dCgpFUlJPUjogZG8gbm90IHVzZSBDOTkgLy8gY29t bWVudHMKIzExODk6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6NTY5OgorICAgIC8v ICAgIF9fcHV0X3VzZXIoZW52LT50c3RhdGUsICYoKCpncnApW1NQQVJDX01DX1RTVEFURV0pKTsK CkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5kIHRoYXQgJysnIChjdHg6VnhWKQojMTIwOTog RklMRTogbGludXgtdXNlci9zcGFyYy9zaWduYWwuYzo1ODk6CisgICAgd19hZGRyID0gVEFSR0VU X1NUQUNLX0JJQVMrZW52LT5yZWd3cHRyW1VSRUdfSTZdOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgoKRVJST1I6IHNwYWNlcyByZXF1aXJlZCBhcm91bmQgdGhhdCAnLycgKGN0eDpW eFYpCiMxMjI2OiBGSUxFOiBsaW51eC11c2VyL3NwYXJjL3NpZ25hbC5jOjYwNjoKKyAgICAgICAg ICAgICAgICBfX3B1dF91c2VyKGVudi0+ZnByW2kvMl0ubC5sb3dlciwgZHN0KTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCgpFUlJPUjogc3BhY2VzIHJlcXVpcmVkIGFy b3VuZCB0aGF0ICcvJyAoY3R4OlZ4VikKIzEyMjg6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2ln bmFsLmM6NjA4OgorICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoZW52LT5mcHJbaS8yXS5sLnVw cGVyLCBkc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KCkVSUk9S OiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQK IzEyMzY6IEZJTEU6IGxpbnV4LXVzZXIvc3BhcmMvc2lnbmFsLmM6NjE2OgorICAgIGlmIChlcnIp ClsuLi5dCgp0b3RhbDogMzYgZXJyb3JzLCAxIHdhcm5pbmdzLCAxMjQ0IGxpbmVzIGNoZWNrZWQK CllvdXIgcGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2aWV3LiAgSWYgYW55IG9m IHRoZXNlIGVycm9ycwphcmUgZmFsc2UgcG9zaXRpdmVzIHJlcG9ydCB0aGVtIHRvIHRoZSBtYWlu dGFpbmVyLCBzZWUKQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCkNoZWNraW5nIFBBVENIIDE4 LzIwOiBsaW51eC11c2VyOiBtb3ZlIG1pcHMvbWlwczY0IHNpZ25hbC5jIHBhcnRzIHRvIG1pcHMg ZGlyZWN0b3J5Li4uCkVSUk9SOiBjb2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzcy OiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6Njg6CisgICAgdWludDMyX3Qgc2ZfYXNz WzRdO15JXkleSS8qIGFyZ3VtZW50IHNhdmUgc3BhY2UgZm9yIG8zMiAqLyQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzczOiBGSUxFOiBsaW51eC11c2VyL21pcHMv c2lnbmFsLmM6Njk6CisgICAgdWludDMyX3Qgc2ZfY29kZVsyXTteSV5JXkkvKiBzaWduYWwgdHJh bXBvbGluZSAqLyQKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVkIGJldHdlZW4gZnVuY3Rpb24gbmFt ZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzE5NzogRklMRTogbGludXgtdXNlci9taXBzL3Np Z25hbC5jOjE5MzoKKyAgICBpZiAoKGthLT5zYV9mbGFncyAmIFRBUkdFVF9TQV9PTlNUQUNLKSAm JiAoc2FzX3NzX2ZsYWdzIChzcCkgPT0gMCkpIHsKCkVSUk9SOiAiZm9vICogYmFyIiBzaG91bGQg YmUgImZvbyAqYmFyIgojMjE1OiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6MjExOgor dm9pZCBzZXR1cF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqIGthLAoK RVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzIz MjogRklMRTogbGludXgtdXNlci9taXBzL3NpZ25hbC5jOjIyODoKKyAgICBmb3IoaSA9IDA7IGkg PCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CgpFUlJPUjogc3BhY2UgcHJvaGliaXRlZCBhZnRl ciB0aGF0IG9wZW4gc3F1YXJlIGJyYWNrZXQgJ1snCiMyNDY6IEZJTEU6IGxpbnV4LXVzZXIvbWlw cy9zaWduYWwuYzoyNDI6CisgICAgcmVncy0+YWN0aXZlX3RjLmdwclsgNF0gPSBzaWc7CgpFUlJP Ujogc3BhY2UgcHJvaGliaXRlZCBhZnRlciB0aGF0IG9wZW4gc3F1YXJlIGJyYWNrZXQgJ1snCiMy NDc6IEZJTEU6IGxpbnV4LXVzZXIvbWlwcy9zaWduYWwuYzoyNDM6CisgICAgcmVncy0+YWN0aXZl X3RjLmdwclsgNV0gPSAwOwoKRVJST1I6IHNwYWNlIHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCBvcGVu IHNxdWFyZSBicmFja2V0ICdbJwojMjQ4OiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6 MjQ0OgorICAgIHJlZ3MtPmFjdGl2ZV90Yy5ncHJbIDZdID0gZnJhbWVfYWRkciArIG9mZnNldG9m KHN0cnVjdCBzaWdmcmFtZSwgc2Zfc2MpOwoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5 IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojMjczOiBGSUxFOiBsaW51eC11c2VyL21p cHMvc2lnbmFsLmM6MjY5OgorICAgIGlmICghbG9ja191c2VyX3N0cnVjdChWRVJJRllfUkVBRCwg ZnJhbWUsIGZyYW1lX2FkZHIsIDEpKQpbLi4uXQoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9y ZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzI3NjogRklMRTogbGludXgtdXNlci9taXBzL3Np Z25hbC5jOjI3MjoKKyAgICBmb3IoaSA9IDA7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7 CgpFUlJPUjogaWYgdGhpcyBjb2RlIGlzIHJlZHVuZGFudCBjb25zaWRlciByZW1vdmluZyBpdAoj Mjg1OiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6MjgxOgorI2lmIDAKCkVSUk9SOiBj b2RlIGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzI5MDogRklMRTogbGludXgtdXNlci9t aXBzL3NpZ25hbC5jOjI4NjoKKyAgIF5JIm1vdmVcdCQyOSwgJTBcblx0IiQKCkVSUk9SOiBjb2Rl IGluZGVudCBzaG91bGQgbmV2ZXIgdXNlIHRhYnMKIzI5MTogRklMRTogbGludXgtdXNlci9taXBz L3NpZ25hbC5jOjI4NzoKKyAgIF5JImpcdHN5c2NhbGxfZXhpdCIkCgpFUlJPUjogY29kZSBpbmRl bnQgc2hvdWxkIG5ldmVyIHVzZSB0YWJzCiMyOTI6IEZJTEU6IGxpbnV4LXVzZXIvbWlwcy9zaWdu YWwuYzoyODg6CisgICBeSTovKiBubyBvdXRwdXRzICovJAoKRVJST1I6IGNvZGUgaW5kZW50IHNo b3VsZCBuZXZlciB1c2UgdGFicwojMjkzOiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6 Mjg5OgorICAgXkk6InIiICgmcmVncykpOyQKCkVSUk9SOiBzcGFjZXMgcmVxdWlyZWQgYXJvdW5k IHRoYXQgJzonIChjdHg6RXhWKQojMjkzOiBGSUxFOiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6 Mjg5OgorICAgCToiciIgKCZyZWdzKSk7CiAgICAJXgoKV0FSTklORzogbGluZSBvdmVyIDgwIGNo YXJhY3RlcnMKIzMzMTogRklMRTogbGludXgtdXNlci9taXBzL3NpZ25hbC5jOjMyNzoKKyAgICBf X3B1dF91c2VyKHRhcmdldF9zaWdhbHRzdGFja191c2VkLnNzX3NpemUsICZmcmFtZS0+cnNfdWMu dHVjX3N0YWNrLnNzX3NpemUpOwoKRVJST1I6IHNwYWNlIHJlcXVpcmVkIGJlZm9yZSB0aGUgb3Bl biBwYXJlbnRoZXNpcyAnKCcKIzMzNzogRklMRTogbGludXgtdXNlci9taXBzL3NpZ25hbC5jOjMz MzoKKyAgICBmb3IoaSA9IDA7IGkgPCBUQVJHRVRfTlNJR19XT1JEUzsgaSsrKSB7CgpFUlJPUjog c3BhY2UgcHJvaGliaXRlZCBhZnRlciB0aGF0IG9wZW4gc3F1YXJlIGJyYWNrZXQgJ1snCiMzNTE6 IEZJTEU6IGxpbnV4LXVzZXIvbWlwcy9zaWduYWwuYzozNDc6CisgICAgZW52LT5hY3RpdmVfdGMu Z3ByWyA0XSA9IHNpZzsKCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVkIGFmdGVyIHRoYXQgb3BlbiBz cXVhcmUgYnJhY2tldCAnWycKIzM1MjogRklMRTogbGludXgtdXNlci9taXBzL3NpZ25hbC5jOjM0 ODoKKyAgICBlbnYtPmFjdGl2ZV90Yy5ncHJbIDVdID0gZnJhbWVfYWRkcgoKRVJST1I6IHNwYWNl IHByb2hpYml0ZWQgYWZ0ZXIgdGhhdCBvcGVuIHNxdWFyZSBicmFja2V0ICdbJwojMzU0OiBGSUxF OiBsaW51eC11c2VyL21pcHMvc2lnbmFsLmM6MzUwOgorICAgIGVudi0+YWN0aXZlX3RjLmdwclsg Nl0gPSBmcmFtZV9hZGRyCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBh cm1zIG9mIHRoaXMgc3RhdGVtZW50CiMzODk6IEZJTEU6IGxpbnV4LXVzZXIvbWlwcy9zaWduYWwu YzozODU6CisgICAgaWYgKGRvX3NpZ2FsdHN0YWNrKGZyYW1lX2FkZHIgKwpbLi4uXQoKRVJST1I6 ICJmb28gKiBiYXIiIHNob3VsZCBiZSAiZm9vICpiYXIiCiM0MTY6IEZJTEU6IGxpbnV4LXVzZXIv bWlwcy90YXJnZXRfc2lnbmFsLmg6MzE6Cit2b2lkIHNldHVwX2ZyYW1lKGludCBzaWcsIHN0cnVj dCB0YXJnZXRfc2lnYWN0aW9uICoga2EsCgp0b3RhbDogMjIgZXJyb3JzLCAxIHdhcm5pbmdzLCA3 OTggbGluZXMgY2hlY2tlZAoKWW91ciBwYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSBy ZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJyb3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0 IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoK Q2hlY2tpbmcgUEFUQ0ggMTkvMjA6IGxpbnV4LXVzZXI6IG1vdmUgcHBjL3BwYzY0IHNpZ25hbC5j IHBhcnRzIHRvIHBwYyBkaXJlY3RvcnkuLi4KRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5 IGZvciBhbGwgYXJtcyBvZiB0aGlzIHN0YXRlbWVudAojMzcwOiBGSUxFOiBsaW51eC11c2VyL3Bw Yy9zaWduYWwuYzozNjg6CisgICAgaWYgKHNpZykKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJl IG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzQ0OTogRklMRTogbGlu dXgtdXNlci9wcGMvc2lnbmFsLmM6NDQ3OgorICAgIGlmICghbG9ja191c2VyX3N0cnVjdChWRVJJ RllfV1JJVEUsIGZyYW1lLCBmcmFtZV9hZGRyLCAxKSkKWy4uLl0KCkVSUk9SOiBicmFjZXMge30g YXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzQ3NjogRklMRTog bGludXgtdXNlci9wcGMvc2lnbmFsLmM6NDc0OgorICAgIGlmIChlcnIpClsuLi5dCgpFUlJPUjog YnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9yIGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM1 MTM6IEZJTEU6IGxpbnV4LXVzZXIvcHBjL3NpZ25hbC5jOjUxMToKKyAgICBpZiAoIWxvY2tfdXNl cl9zdHJ1Y3QoVkVSSUZZX1dSSVRFLCBydF9zZiwgcnRfc2ZfYWRkciwgMSkpClsuLi5dCgpFUlJP Ujogc3BhY2UgcHJvaGliaXRlZCBiZXR3ZWVuIGZ1bmN0aW9uIG5hbWUgYW5kIG9wZW4gcGFyZW50 aGVzaXMgJygnCiM1Mjc6IEZJTEU6IGxpbnV4LXVzZXIvcHBjL3NpZ25hbC5jOjUyNToKKyAgICBf X3B1dF91c2VyKGgyZyAoJnJ0X3NmLT51Yy50dWNfbWNvbnRleHQpLAoKRVJST1I6IHNwYWNlIHJl cXVpcmVkIGJlZm9yZSB0aGUgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzUzMDogRklMRTogbGludXgt dXNlci9wcGMvc2lnbmFsLmM6NTI4OgorICAgIGZvcihpID0gMDsgaSA8IFRBUkdFVF9OU0lHX1dP UkRTOyBpKyspIHsKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMg b2YgdGhpcyBzdGF0ZW1lbnQKIzU2MDogRklMRTogbGludXgtdXNlci9wcGMvc2lnbmFsLmM6NTU4 OgorICAgIGlmIChlcnIpClsuLi5dCgpFUlJPUjogYnJhY2VzIHt9IGFyZSBuZWNlc3NhcnkgZm9y IGFsbCBhcm1zIG9mIHRoaXMgc3RhdGVtZW50CiM2MDk6IEZJTEU6IGxpbnV4LXVzZXIvcHBjL3Np Z25hbC5jOjYwNzoKKyAgICBpZiAoIWxvY2tfdXNlcl9zdHJ1Y3QoVkVSSUZZX1JFQUQsIHNjLCBz Y19hZGRyLCAxKSkKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxs IGFybXMgb2YgdGhpcyBzdGF0ZW1lbnQKIzYyMjogRklMRTogbGludXgtdXNlci9wcGMvc2lnbmFs LmM6NjIwOgorICAgIGlmICghbG9ja191c2VyX3N0cnVjdChWRVJJRllfUkVBRCwgc3IsIHNyX2Fk ZHIsIDEpKQpbLi4uXQoKV0FSTklORzogbGluZSBvdmVyIDgwIGNoYXJhY3RlcnMKIzY0NjogRklM RTogbGludXgtdXNlci9wcGMvc2lnbmFsLmM6NjQ0OgorICAgIGlmIChjb3B5X2Zyb21fdXNlcigm c2V0LCBoMmcodWNwKSArIG9mZnNldG9mKHN0cnVjdCB0YXJnZXRfdWNvbnRleHQsIHR1Y19zaWdt YXNrKSwKCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMgb2YgdGhp cyBzdGF0ZW1lbnQKIzY0NjogRklMRTogbGludXgtdXNlci9wcGMvc2lnbmFsLmM6NjQ0OgorICAg IGlmIChjb3B5X2Zyb21fdXNlcigmc2V0LCBoMmcodWNwKSArIG9mZnNldG9mKHN0cnVjdCB0YXJn ZXRfdWNvbnRleHQsIHR1Y19zaWdtYXNrKSwKWy4uLl0KCkVSUk9SOiBzcGFjZSBwcm9oaWJpdGVk IGJldHdlZW4gZnVuY3Rpb24gbmFtZSBhbmQgb3BlbiBwYXJlbnRoZXNpcyAnKCcKIzY0NzogRklM RTogbGludXgtdXNlci9wcGMvc2lnbmFsLmM6NjQ1OgorICAgICAgICAgICAgICAgICAgICAgICBz aXplb2YgKHNldCkpKQoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJt cyBvZiB0aGlzIHN0YXRlbWVudAojNjU3OiBGSUxFOiBsaW51eC11c2VyL3BwYy9zaWduYWwuYzo2 NTU6CisgICAgaWYgKCFsb2NrX3VzZXJfc3RydWN0KFZFUklGWV9SRUFELCBtY3AsIG1jcF9hZGRy LCAxKSkKWy4uLl0KCkVSUk9SOiBicmFjZXMge30gYXJlIG5lY2Vzc2FyeSBmb3IgYWxsIGFybXMg b2YgdGhpcyBzdGF0ZW1lbnQKIzY3NDogRklMRTogbGludXgtdXNlci9wcGMvc2lnbmFsLmM6Njcy OgorICAgIGlmICghbG9ja191c2VyX3N0cnVjdChWRVJJRllfUkVBRCwgcnRfc2YsIHJ0X3NmX2Fk ZHIsIDEpKQpbLi4uXQoKRVJST1I6IGJyYWNlcyB7fSBhcmUgbmVjZXNzYXJ5IGZvciBhbGwgYXJt cyBvZiB0aGlzIHN0YXRlbWVudAojNjc3OiBGSUxFOiBsaW51eC11c2VyL3BwYy9zaWduYWwuYzo2 NzU6CisgICAgaWYgKGRvX3NldGNvbnRleHQoJnJ0X3NmLT51YywgZW52LCAxKSkKWy4uLl0KCnRv dGFsOiAxNCBlcnJvcnMsIDEgd2FybmluZ3MsIDEzNjIgbGluZXMgY2hlY2tlZAoKWW91ciBwYXRj aCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuICBJZiBhbnkgb2YgdGhlc2UgZXJy b3JzCmFyZSBmYWxzZSBwb3NpdGl2ZXMgcmVwb3J0IHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNl ZQpDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKQ2hlY2tpbmcgUEFUQ0ggMjAvMjA6IGxpbnV4 LXVzZXI6IGRlZmluZSBUQVJHRVRfQVJDSF9IQVNfU0VUVVBfRlJBTUUuLi4KPT09IE9VVFBVVCBF TkQgPT09CgpUZXN0IGNvbW1hbmQgZXhpdGVkIHdpdGggY29kZTogMQoKCi0tLQpFbWFpbCBnZW5l cmF0ZWQgYXV0b21hdGljYWxseSBieSBQYXRjaGV3IFtodHRwOi8vcGF0Y2hldy5vcmcvXS4KUGxl YXNlIHNlbmQgeW91ciBmZWVkYmFjayB0byBwYXRjaGV3LWRldmVsQGZyZWVsaXN0cy5vcmc=