From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from cam-smtp0.cambridge.arm.com (cam-smtp0.cambridge.arm.com [217.140.106.51]) by mx.groups.io with SMTP id smtpd.web11.5756.1593171621988986936 for ; Fri, 26 Jun 2020 04:40:22 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.106.51, mailfrom: pierre.gondois@arm.com) Received: from E119881.Arm.com (E119881.Arm.com [10.1.197.28]) by cam-smtp0.cambridge.arm.com (8.13.8/8.13.8) with ESMTP id 05QBeI76004773; Fri, 26 Jun 2020 12:40:19 +0100 From: "PierreGondois" To: devel@edk2.groups.io Cc: Pierre Gondois , sami.mujawar@arm.com, tomas.pilar@arm.com, bob.c.feng@intel.com, liming.gao@intel.com, nd@arm.com Subject: [PATCH v4 3/4] BaseTools: Compile AML bytecode arrays into .obj file Date: Fri, 26 Jun 2020 12:40:12 +0100 Message-Id: <20200626114013.125524-4-pierre.gondois@arm.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: <20200626114013.125524-1-pierre.gondois@arm.com> References: <20200626114013.125524-1-pierre.gondois@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: base64 RnJvbTogUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+CgpUaGUgQW1sVG9I ZXggc2NyaXB0IGFuZCBQb3NpeC9XaW5kb3dzTGlrZSB3cmFwcGVycyBjb252ZXJ0CmFuIEFNTCBm aWxlIHRvIGEgLmhleCBmaWxlLCBjb250YWluaW5nIGEgQyBhcnJheSBzdG9yaW5nCkFNTCBieXRl Y29kZS4gVGhpcyAiLmhleCIgZmlsZSBjYW4gdGhlbiBiZSBpbmNsdWRlZCBpbiBhCkMgZmlsZSwg YWxsb3dpbmcgdG8gYWNjZXNzIHRoZSBBTUwgYnl0ZWNvZGUgZnJvbSB0aGlzIEMKZmlsZS4KClRo ZSBFREsyIGJ1aWxkIHN5c3RlbSBkb2Vzbid0IGFsbG93IHRvIGEgZGVwaWN0IGRlcGVuZGVuY3kK b3JkZXJzIGJldHdlZW4gZmlsZXMgb2YgZGlmZmVyZW50IGxhbmd1YWdlcy4gRm9yIGluc3RhbmNl LAppbiBhIG1vZHVsZSBjb250YWluaW5nIGEgIi5jIiBmaWxlIGFuZCBhICIuYXNsIiwgdGhlICIu YyIKZmlsZSBtYXkgb3IgbWF5IG5vdCBiZSBidWlsdCBwcmlvciB0byB0aGUgIi5hc2wiIGZpbGUu ClRoaXMgcHJldmVudHMgYW55IGluY2x1c2lvbiBvZiBhIGdlbmVyYXRlZCAiLmhleCIgaW4gYQoi LmMiIGZpbGUgc2luY2UgdGhpcyBsYXRlciAiLmhleCIgZmlsZSBtYXkgb3IgbWF5IG5vdApoYXZl IGJlZW4gY3JlYXRlZCB5ZXQuCgpUaGlzIHBhdGNoIG1vZGlmaWVzIHRoZSBBbWxUb0Mgc2NyaXB0 IHRvIGdlbmVyYXRlIGEgQyBmaWxlCmluc3RlYWQgb2YgYSAiLmhleCIgZmlsZS4KSXQgYWxzbyBh ZGRzIHRoZSBnZW5lcmF0aW9uIG9mIGFuIGludGVybWVkaWF0ZSAiLmFtbGkiIGZpbGUKd2hlbiBj b21waWxpbmcgYW4gQVNMIGZpbGUsIGFuZCBhZGRzIGEgcnVsZSB0byBjb252ZXJ0IHRoaXMKIi5h bWxpIiB0byBhIEMgZmlsZS4KClRoaXMgYWxsb3dzIHRvIGdlbmVyYXRlIGEgQyBmaWxlIGNvbnRh aW5pbmcgdGhlIEFNTCBieXRlY29kZQpmcm9tIGFuIEFTTCBmaWxlLiBUaGlzIEMgZmlsZSB3aWxs IHRoZW4gYmUgaGFuZGxlZCBieSB0aGUgRURLMgpidWlsZCBzeXN0ZW0gdG8gZ2VuZXJhdGUgYW4g b2JqZWN0IGZpbGUuClRodXMsIG5vIGZpbGUgaW5jbHVzaW9uIHdpbGwgYmUgcmVxdWlyZWQgYW55 bW9yZS4gVGhlIEMgZmlsZQpyZXF1aXJpbmcgdGhlIEFNTCBieXRlY29kZSBhcyBhIEMgYXJyYXks IGFuZCB0aGUgQVNMIGZpbGUsCndpbGwgYmUgY29tcGlsZWQgaW5kZXBlbmRlbnRseS4gVGhlIEMg YXJyYXkgbXVzdCBiZSBkZWZpbmVkCmFzIGFuIGV4dGVybmFsIHN5bWJvbC4gVGhlIGxpbmtlciBp cyByZXNvbHZpbmcgdGhlCnJlZmVyZW5jZSB0byB0aGUgQyBhcnJheSBzeW1ib2wuCgpUbyBzdW1t YXJpemUsIHRoZSBmbG93IGdvZXMgYXM6CiAtMS4gQVNMIGZpbGUgaXMgY29tcGlsZWQgdG8gQU1M OwogLTIuIEFNTCBmaWxlIGlzIGNvcGllZCB0byBhICIuYW1saSIgaW50ZXJtZWRpYXRlIGZpbGU7 CiAtMy4gRURLMiBidWlsZCBzeXN0ZW0gYXBwbGllcyB0aGUgcnVsZSByZWxldmFudCB0byAiLmFt bGkiCiAgICAgZmlsZXMuIFRoaXMgaXMsIGNhbGxpbmcgdGhlICJBbWxUb0MiIHNjcmlwdCwgZ2Vu ZXJhdGluZwogICAgIGEgQyBmaWxlIGZyb20gdGhlICIuYW1saSIgZmlsZTsKIC00LiBFREsyIGJ1 aWxkIHN5c3RlbSBhcHBsaWVzIHRoZSBydWxlIHJlbGV2YW50IHRvIEMgZmlsZXMuCiAgICAgVGhp cyBpcyBjcmVhdGluZyBhbiBvYmplY3QgZmlsZS4KIC01LiBFREsyIGJ1aWxkIHN5c3RlbSBsaW5r cyB0aGUgb2JqZWN0IGZpbGUgY29udGFpbmluZyB0aGUKICAgICBBTUwgYnl0ZWNvZGUgd2l0aCB0 aGUgb2JqZWN0IGZpbGUgcmVxdWlyaW5nIGl0LgoKU2lnbmVkLW9mZi1ieTogUGllcnJlIEdvbmRv aXMgPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+ClN1Z2dlc3RlZC1ieTogVG9tYXMgUGlsYXIgPFRv bWFzLlBpbGFyQGFybS5jb20+Ci0tLQoKVGhlIGNoYW5nZXMgY2FuIGJlIHNlZW4gYXQgaHR0cHM6 Ly9naXRodWIuY29tL1BpZXJyZUFSTS9lZGsyL2NvbW1pdHMvODAzX0NvbXBpbGVfQU1MX2J5dGVj b2RlX2FycmF5X2ludG9fT0JKX2ZpbGVfdjQKCk5vdGVzOgogICAgTm90ZXM6CiAgICAgIHYxOgog ICAgICAgLSBBZGQgYSBuZXcgcnVsZSB0byB0aGUgYnVpbGRfcnVsZS50ZW1wbGF0ZSBmaWxlIHRv CiAgICAgICAgIGdlbmVyYXRlICIub2JqIiBmaWxlcyBmcm9tIC5hc2wgZmlsZXMsIGFuZCBtb2Rp ZnkKICAgICAgICAgdGhlIEFtbFRvQyBzY3JpcHQgYWNjb3JkaW5nbHkuIFtQaWVycmVdCiAgICAg IHYyOgogICAgICAgLSBSZXN0cmljdCB0aGUgcnVsZSB0byBEWEVfRFJJVkVSLiBUaGlzIGFsbG93 cyB0byBidWlsZAogICAgICAgICB0aGUgT3ZtZlBrZywgd2hpY2ggd2FzIG5vdCB0aGUgY2FzZSBp biB2MS4gW1BpZXJyZV0KICAgICAgdjM6CiAgICAgICAtIENoYW5nZWQgIlNpZ25lZC1vZmYtYnki IHRvICJTdWdnZXN0ZWQtYnkiLiBbQm9iXQogICAgICB2NDoKICAgICAgLSBObyBtb2RpZmljYXRp b24uIFJlLXNlbmRpbmcgdGhlIHBhdGNoIHdpdGggYmFzZTY0CiAgICAgICAgZW5jb2RpbmcgdG8g Y29uc2VydmUgdGhlIHJpZ2h0IGxpbmUgZW5kaW5ncy4gW0JvYl0KCiBCYXNlVG9vbHMvQ29uZi9i dWlsZF9ydWxlLnRlbXBsYXRlICAgICAgIHwgMTUgKysrLQogQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vQW1sVG9DL0FtbFRvQy5weSB8IDgyICsrKysrKysrLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0Jh c2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUgYi9CYXNlVG9vbHMvQ29uZi9idWlsZF9y dWxlLnRlbXBsYXRlCmluZGV4IDA4MjJiNjgxZmNkOWY2MWM2NTA4ZTZmOTNmZmMzMWZhNzBmZDcw NTkuLmMwMzQ4Njk5MTU5MTQ5MzZlMjhmNjRhNmFhZGJhMDhlMDE2OWRhNDQgMTAwNzU1Ci0tLSBh L0Jhc2VUb29scy9Db25mL2J1aWxkX3J1bGUudGVtcGxhdGUKKysrIGIvQmFzZVRvb2xzL0NvbmYv YnVpbGRfcnVsZS50ZW1wbGF0ZQpAQCAtNDE5LDYgKzQxOSw3IEBACiANCiAgICAgPE91dHB1dEZp bGU+DQogICAgICAgICAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1sDQor ICAgICAgICAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KIA0KICAg ICA8RXh0cmFEZXBlbmRlbmN5Pg0KICAgICAgICAgJChNQUtFX0ZJTEUpDQpAQCAtNDI4LDE0ICs0 MjksMjQgQEAKICAgICAgICAgIiQoQVNMUFApIiAkKERFUFNfRkxBR1MpICQoQVNMUFBfRkxBR1Mp ICQoSU5DKSAvSSR7c19wYXRofSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0u aSA+ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWkNCiAgICAgICAgIFRy aW0gLS1zb3VyY2UtY29kZSAtbCAtbyAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFz ZX0uaWlpaSAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpIA0KICAgICAg ICAgIiQoQVNMKSIgJChBU0xfRkxBR1MpICQoQVNMX09VVEZMQUdTKSR7ZHN0fSAkKE9VVFBVVF9E SVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uaWlpaQ0KLSAgICAgICAgLUFtbFRvSGV4ICQoT1VU UFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWwNCisgICAgICAgICQoQ1ApICQoT1VU UFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5hbWwgJChPVVRQVVRfRElSKSgrKSR7c19k aXJ9KCspJHtzX2Jhc2V9LmFtbGkNCiANCiAgICAgPENvbW1hbmQuR0NDPg0KICAgICAgICAgVHJp bSAtLWFzbC1maWxlIC0tYXNsLWRlcHMgLW8gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtz X2Jhc2V9LmkgLWkgJChJTkNfTElTVCkgJHtzcmN9DQogICAgICAgICAiJChBU0xQUCkiICQoREVQ U19GTEFHUykgJChBU0xQUF9GTEFHUykgJChJTkMpIC1JJHtzX3BhdGh9ICQoT1VUUFVUX0RJUiko Kykke3NfZGlyfSgrKSR7c19iYXNlfS5pID4gJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtz X2Jhc2V9LmlpaQ0KICAgICAgICAgVHJpbSAtLXNvdXJjZS1jb2RlIC1sIC1vICQoT1VUUFVUX0RJ UikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWlpICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgr KSR7c19iYXNlfS5paWkgDQogICAgICAgICAiJChBU0wpIiAkKEFTTF9GTEFHUykgJChBU0xfT1VU RkxBR1MpJHtkc3R9ICQoT1VUUFVUX0RJUikoKykke3NfZGlyfSgrKSR7c19iYXNlfS5paWlpDQot ICAgICAgICAtQW1sVG9IZXggJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFt bA0KKyAgICAgICAgJChDUCkgJChPVVRQVVRfRElSKSgrKSR7c19kaXJ9KCspJHtzX2Jhc2V9LmFt bCAkKE9VVFBVVF9ESVIpKCspJHtzX2Rpcn0oKykke3NfYmFzZX0uYW1saQ0KKw0KK1tBY3BpLU1h Y2hpbmUtTGFuZ3VhZ2UtRmlsZS10by1DLkRYRV9EUklWRVJdDQorICAgIDxJbnB1dEZpbGU+DQor ICAgICAgICA/LmFtbGkNCisNCisgICAgPE91dHB1dEZpbGU+DQorICAgICAgICAke3NfcGF0aH0o Kykke3NfYmFzZX0uYw0KKw0KKyAgICA8Q29tbWFuZD4NCisgICAgICAgIC1BbWxUb0MgJHtzcmN9 DQogDQogW0MtQ29kZS1GaWxlLkFjcGlUYWJsZV0NCiAgICAgPElucHV0RmlsZT4NCmRpZmYgLS1n aXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BbWxUb0MvQW1sVG9DLnB5IGIvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vQW1sVG9DL0FtbFRvQy5weQppbmRleCA2NDNkYjI5MTBlMzdhY2ZkZDgw YWMxOGQyODhjOTIxMzIwYTc5Y2UxLi4zNDZkZTcxNTlkZTcwMmQ4NjBiYmQ4MDlkZGJlODE3NWYx NDkzY2ZiIDEwMDY0NAotLS0gYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BbWxUb0MvQW1sVG9D LnB5CisrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0FtbFRvQy9BbWxUb0MucHkKQEAgLTEs OSArMSw5IEBACiAjIyBAZmlsZQ0KICMNCi0jIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4 IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZCBpbiBhDQorIyBDb252ZXJ0 IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUgc3Rv cmVkIGluIGENCiAjIEMgYXJyYXkuDQotIyBCeSBkZWZhdWx0LCAiVGFibGVzXERzZHQuYW1sIiB3 aWxsIGdlbmVyYXRlICJUYWJsZXNcRHNkdC5oZXgiLg0KLSMgIlRhYmxlc1xEc2R0LmhleCIgd2ls bCBjb250YWluIGEgQyBhcnJheSBuYW1lZCAiZHNkdF9hbWxfY29kZSIgdGhhdCBjb250YWlucw0K KyMgQnkgZGVmYXVsdCwgIlRhYmxlc1xEc2R0LmFtbCIgd2lsbCBnZW5lcmF0ZSAiVGFibGVzXERz ZHQuYyIuDQorIyAiVGFibGVzXERzZHQuYyIgd2lsbCBjb250YWluIGEgQyBhcnJheSBuYW1lZCAi ZHNkdF9hbWxfY29kZSIgdGhhdCBjb250YWlucw0KICMgdGhlIEFNTCBieXRlY29kZS4NCiAjDQog IyBDb3B5cmlnaHQgKGMpIDIwMjAsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCkBAIC0xNywzMSArMTcsMjYgQEAgZnJvbSBDb21tb24uQnVpbGRUb29sRXJyb3IgaW1wb3J0 ICoKIGltcG9ydCBzeXMNCiBpbXBvcnQgb3MNCiANCitfX2Rlc2NyaXB0aW9uX18gPSAiIiINCitD b252ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNv ZGUgc3RvcmVkIGluIGEgQw0KK2FycmF5LiBCeSBkZWZhdWx0LCBUYWJsZXNcRHNkdC5hbWwgd2ls bCBnZW5lcmF0ZSBUYWJsZXNcRHNkdC5jLg0KK1RhYmxlc1xEc2R0LmMgd2lsbCBjb250YWluIGEg QyBhcnJheSBuYW1lZCAiZHNkdF9hbWxfY29kZSIgdGhhdCBjb250YWlucw0KK3RoZSBBTUwgYnl0 ZWNvZGUuDQorIiIiDQorDQogIyMgUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuDQog Iw0KICMgQHJldHZhbCBBIGFyZ3BhcnNlLk5hbWVTcGFjZSBpbnN0YW5jZSwgY29udGFpbmluZyBw YXJzZWQgdmFsdWVzLg0KICMNCiBkZWYgUGFyc2VBcmdzKCk6DQogICAgICMgSW5pdGlhbGl6ZSB0 aGUgcGFyc2VyLg0KLSAgICBQYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigNCi0gICAg ICBkZXNjcmlwdGlvbj0iQ29udmVydCBhbiBBTUwgZmlsZSB0byBhIC5oZXggZmlsZSBjb250YWlu aW5nIHRoZSBBTUwgIiArIFwNCi0gICAgICAgICAgICAgICAgICAiYnl0ZWNvZGUgc3RvcmVkIGlu IGEgQyBhcnJheS4gQnkgZGVmYXVsdCwgIiArIFwNCi0gICAgICAgICAgICAgICAgICAiXCJUYWJs ZXNcXERzZHQuYW1sXCIgd2lsbCBnZW5lcmF0ZSIgKyBcDQotICAgICAgICAgICAgICAgICAgIlwi VGFibGVzXFxEc2R0LmhleFwiLiBcIlRhYmxlc1xcRHNkdC5oZXhcIiB3aWxsICIgKyBcDQotICAg ICAgICAgICAgICAgICAgImNvbnRhaW4gYSBDIGFycmF5IG5hbWVkIFwiZHNkdF9hbWxfY29kZVwi IHRoYXQgIiArIFwNCi0gICAgICAgICAgICAgICAgICAiY29udGFpbnMgdGhlIEFNTCBieXRlY29k ZS4iDQotICAgICAgKQ0KKyAgICBQYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNj cmlwdGlvbj1fX2Rlc2NyaXB0aW9uX18pDQogDQogICAgICMgRGVmaW5lIHRoZSBwb3NzaWJsZSBh cmd1bWVudHMuDQotICAgIFBhcnNlci5hZGRfYXJndW1lbnQoDQotICAgICAgZGVzdD0iSW5wdXRG aWxlIiwNCi0gICAgICBoZWxwPSJQYXRoIHRvIGFuIGlucHV0IEFNTCBmaWxlIHRvIGdlbmVyYXRl IGEgLmhleCBmaWxlIGZyb20uIg0KLSAgICAgICkNCi0gICAgUGFyc2VyLmFkZF9hcmd1bWVudCgN Ci0gICAgICAiLW8iLCAiLS1vdXQtZGlyIiwgZGVzdD0iT3V0RGlyIiwNCi0gICAgICBoZWxwPSJP dXRwdXQgZGlyZWN0b3J5IHdoZXJlIHRoZSAuaGV4IGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQuICIg KyBcDQotICAgICAgICAgICAiRGVmYXVsdCBpcyB0aGUgaW5wdXQgZmlsZSdzIGRpcmVjdG9yeS4i DQotICAgICAgKQ0KKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9IklucHV0RmlsZSIsDQor ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0aCB0byBhbiBpbnB1dCBBTUwgZmlsZSB0 byBnZW5lcmF0ZSBhIC5jIGZpbGUgZnJvbS4iKQ0KKyAgICBQYXJzZXIuYWRkX2FyZ3VtZW50KCIt byIsICItLW91dC1kaXIiLCBkZXN0PSJPdXREaXIiLA0KKyAgICAgICAgICAgICAgICAgICAgICAg IGhlbHA9Ik91dHB1dCBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5jIGZpbGUgd2lsbCBiZSBnZW5lcmF0 ZWQuIERlZmF1bHQgaXMgdGhlIGlucHV0IGZpbGUncyBkaXJlY3RvcnkuIikNCiANCiAgICAgIyBQ YXJzZSB0aGUgaW5wdXQgYXJndW1lbnRzLg0KICAgICBBcmdzID0gUGFyc2VyLnBhcnNlX2FyZ3Mo KQ0KQEAgLTU1LDkgKzUwLDcgQEAgZGVmIFBhcnNlQXJncygpOgogICAgICAgICB3aXRoIG9wZW4o QXJncy5JbnB1dEZpbGUsICJyYiIpIGFzIGZJbjoNCiAgICAgICAgICAgICBTaWduYXR1cmUgPSBz dHIoZkluLnJlYWQoNCkpDQogICAgICAgICAgICAgaWYgKCJEU0RUIiBub3QgaW4gU2lnbmF0dXJl KSBhbmQgKCJTU0RUIiBub3QgaW4gU2lnbmF0dXJlKToNCi0gICAgICAgICAgICAgICAgRWRrTG9n Z2VyLmluZm8oIkludmFsaWQgZmlsZSB0eXBlLiAiICsgXA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZpbGUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkICIgKyBcDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiRFNEVCBvciBTU0RUIHNpZ25hdHVyZTogJXMiICUgQXJn cy5JbnB1dEZpbGUpDQorICAgICAgICAgICAgICAgIEVka0xvZ2dlci5pbmZvKCJJbnZhbGlkIGZp bGUgdHlwZS4gRmlsZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgRFNEVCBvciBTU0RUIHNpZ25hdHVy ZToge30iLmZvcm1hdChBcmdzLklucHV0RmlsZSkpDQogICAgICAgICAgICAgICAgIHJldHVybiBO b25lDQogDQogICAgICMgR2V0IHRoZSBiYXNlbmFtZSBvZiB0aGUgaW5wdXQgZmlsZS4NCkBAIC02 Niw0MiArNTksMzkgQEAgZGVmIFBhcnNlQXJncygpOgogDQogICAgICMgSWYgbm8gb3V0cHV0IGRp cmVjdG9yeSBpcyBzcGVjaWZpZWQsIG91dHB1dCB0byB0aGUgaW5wdXQgZGlyZWN0b3J5Lg0KICAg ICBpZiBub3QgQXJncy5PdXREaXI6DQotICAgICAgICBBcmdzLk91dHB1dEZpbGUgPSBvcy5wYXRo LmpvaW4oDQotICAgICAgICAgIG9zLnBhdGguZGlybmFtZShBcmdzLklucHV0RmlsZSksDQotICAg ICAgICAgIEJhc2VOYW1lICsgIi5oZXgiDQotICAgICAgICAgICkNCisgICAgICAgIEFyZ3MuT3V0 cHV0RmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoQXJncy5JbnB1dEZpbGUpLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VOYW1lICsgIi5jIikN CiAgICAgZWxzZToNCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhBcmdzLk91dERpcik6 DQogICAgICAgICAgICAgb3MubWtkaXIoQXJncy5PdXREaXIpDQotICAgICAgICBBcmdzLk91dHB1 dEZpbGUgPSBvcy5wYXRoLmpvaW4oQXJncy5PdXREaXIsIEJhc2VOYW1lICsgIi5oZXgiKQ0KKyAg ICAgICAgQXJncy5PdXRwdXRGaWxlID0gb3MucGF0aC5qb2luKEFyZ3MuT3V0RGlyLCBCYXNlTmFt ZSArICIuYyIpDQogDQogICAgIEFyZ3MuQmFzZU5hbWUgPSBCYXNlTmFtZQ0KIA0KICAgICByZXR1 cm4gQXJncw0KIA0KLSMjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4IGZpbGUgY29udGFp bmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZA0KKyMjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8g YSAuYyBmaWxlIGNvbnRhaW5pbmcgdGhlIEFNTCBieXRlY29kZSBzdG9yZWQNCiAjICBpbiBhIEMg YXJyYXkuDQogIw0KICMgQHBhcmFtICBJbnB1dEZpbGUgICAgIFBhdGggdG8gdGhlIGlucHV0IEFN TCBmaWxlLg0KLSMgQHBhcmFtICBPdXRwdXRGaWxlICAgIFBhdGggdG8gdGhlIG91dHB1dCAuaGV4 IGZpbGUgdG8gZ2VuZXJhdGUuDQorIyBAcGFyYW0gIE91dHB1dEZpbGUgICAgUGF0aCB0byB0aGUg b3V0cHV0IC5jIGZpbGUgdG8gZ2VuZXJhdGUuDQogIyBAcGFyYW0gIEJhc2VOYW1lICAgICAgQmFz ZSBuYW1lIG9mIHRoZSBpbnB1dCBmaWxlLg0KLSMgICAgICAgICAgICAgICAgICAgICAgIFRoaXMg aXMgYWxzbyB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIC5oZXggZmlsZS4NCisjICAgICAgICAg ICAgICAgICAgICAgICBUaGlzIGlzIGFsc28gdGhlIG5hbWUgb2YgdGhlIGdlbmVyYXRlZCAuYyBm aWxlLg0KICMNCi1kZWYgQW1sVG9IZXgoSW5wdXRGaWxlLCBPdXRwdXRGaWxlLCBCYXNlTmFtZSk6 DQorZGVmIEFtbFRvQyhJbnB1dEZpbGUsIE91dHB1dEZpbGUsIEJhc2VOYW1lKToNCiANCi0gICAg TWFjcm9OYW1lID0gIl9fe31fSEVYX18iLmZvcm1hdChCYXNlTmFtZS51cHBlcigpKQ0KICAgICBB cnJheU5hbWUgPSBCYXNlTmFtZS5sb3dlcigpICsgIl9hbWxfY29kZSINCisgICAgRmlsZUhlYWRl ciA9XA0KKyIiIg0KKy8vIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgZnJvbToNCisvLyAg IC1QeXRob24gc2NyaXB0OiB7fQ0KKy8vICAgLUlucHV0IEFNTCBmaWxlOiB7fQ0KKw0KKyIiIg0K IA0KICAgICB3aXRoIG9wZW4oSW5wdXRGaWxlLCAicmIiKSBhcyBmSW4sIG9wZW4oT3V0cHV0Rmls ZSwgInciKSBhcyBmT3V0Og0KICAgICAgICAgIyBXcml0ZSBoZWFkZXIuDQotICAgICAgICBmT3V0 LndyaXRlKCIvLyBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGZyb206XG4iICsgXA0KLSAg ICAgICAgICAgICAgICAgICAiLy8gXHRQeXRob24gc2NyaXB0OiAiICsgXA0KLSAgICAgICAgICAg ICAgICAgICBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pICsgIlxuIiArIFwNCi0gICAgICAgICAg ICAgICAgICAgIi8vIFx0SW5wdXQgQU1MIGZpbGU6ICIgKyBcDQotICAgICAgICAgICAgICAgICAg IG9zLnBhdGguYWJzcGF0aChJbnB1dEZpbGUpICsgIlxuXG4iICsgXA0KLSAgICAgICAgICAgICAg ICAgICAiI2lmbmRlZiB7fVxuIi5mb3JtYXQoTWFjcm9OYW1lKSArIFwNCi0gICAgICAgICAgICAg ICAgICAgIiNkZWZpbmUge31cblxuIi5mb3JtYXQoTWFjcm9OYW1lKQ0KLSAgICAgICAgICAgICAg ICAgICApDQorICAgICAgICBmT3V0LndyaXRlKEZpbGVIZWFkZXIuZm9ybWF0KG9zLnBhdGguYWJz cGF0aChJbnB1dEZpbGUpLCBvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkNCiANCiAgICAgICAg ICMgV3JpdGUgdGhlIGFycmF5IGFuZCBpdHMgY29udGVudC4NCiAgICAgICAgIGZPdXQud3JpdGUo InVuc2lnbmVkIGNoYXIge31bXSA9IHt7XG4gICIuZm9ybWF0KEFycmF5TmFtZSkpDQpAQCAtMTE1 LDE1ICsxMDUsMTIgQEAgZGVmIEFtbFRvSGV4KElucHV0RmlsZSwgT3V0cHV0RmlsZSwgQmFzZU5h bWUpOgogICAgICAgICAgICAgYnl0ZSA9IGZJbi5yZWFkKDEpDQogICAgICAgICBmT3V0LndyaXRl KCJcbn07XG4iKQ0KIA0KLSAgICAgICAgIyBXcml0ZSBmb290ZXIuDQotICAgICAgICBmT3V0Lndy aXRlKCIjZW5kaWYgLy8ge31cbiIuZm9ybWF0KE1hY3JvTmFtZSkpDQotDQogIyMgTWFpbiBtZXRo b2QNCiAjDQogIyBUaGlzIG1ldGhvZDoNCiAjICAgMS0gIEluaXRpYWxpemUgYW4gRWRrTG9nZ2Vy IGluc3RhbmNlLg0KICMgICAyLSAgUGFyc2VzIHRoZSBpbnB1dCBhcmd1bWVudHMuDQotIyAgIDMt ICBDb252ZXJ0cyBhbiBBTUwgZmlsZSB0byBhIC5oZXggZmlsZSBjb250YWluaW5nIHRoZSBBTUwg Ynl0ZWNvZGUgc3RvcmVkDQorIyAgIDMtICBDb252ZXJ0cyBhbiBBTUwgZmlsZSB0byBhIC5jIGZp bGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZA0KICMgICAgICAgaW4gYSBDIGFy cmF5Lg0KICMNCiAjIEByZXR2YWwgMCAgICAgU3VjY2Vzcy4NCkBAIC0xMzksMTAgKzEyNiw5IEBA IGRlZiBNYWluKCk6CiAgICAgICAgIGlmIG5vdCBDb21tYW5kQXJndW1lbnRzOg0KICAgICAgICAg ICAgIHJldHVybiAxDQogDQotICAgICAgICAjIENvbnZlcnQgYW4gQU1MIGZpbGUgdG8gYSAuaGV4 IGZpbGUgY29udGFpbmluZyB0aGUgQU1MIGJ5dGVjb2RlIHN0b3JlZA0KKyAgICAgICAgIyBDb252 ZXJ0IGFuIEFNTCBmaWxlIHRvIGEgLmMgZmlsZSBjb250YWluaW5nIHRoZSBBTUwgYnl0ZWNvZGUg c3RvcmVkDQogICAgICAgICAjIGluIGEgQyBhcnJheS4NCi0gICAgICAgIEFtbFRvSGV4KENvbW1h bmRBcmd1bWVudHMuSW5wdXRGaWxlLCBDb21tYW5kQXJndW1lbnRzLk91dHB1dEZpbGUsDQotICAg ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQXJndW1lbnRzLkJhc2VOYW1lKQ0KKyAgICAg ICAgQW1sVG9DKENvbW1hbmRBcmd1bWVudHMuSW5wdXRGaWxlLCBDb21tYW5kQXJndW1lbnRzLk91 dHB1dEZpbGUsIENvbW1hbmRBcmd1bWVudHMuQmFzZU5hbWUpDQogICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToNCiAgICAgICAgIHByaW50KGUpDQogICAgICAgICByZXR1cm4gMQ0KLS0gCidHdWlk KENFMTY1NjY5LTNFRjMtNDkzRi1CODVELTYxOTBFRTVCOTc1OSknCgo=