<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>148595</bug_id>
          
          <creation_ts>2015-08-28 15:49:35 -0700</creation_ts>
          <short_desc>Refactor the JIT printer out of the AbstractMacroAssembler into MacroAssemblerPrinter.</short_desc>
          <delta_ts>2015-08-28 15:59:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121858</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-28 15:49:35 -0700</bug_when>
    <thetext>Why do this?
1. MacroAssembler::print() code (except for the prototype) need no longer be parsed when compiling C++ files that don&apos;t need it.
2. Adding support for more printable types to MacroAssemblerPrinter::PrintArg triggers recompilation of less files.
3. The printing code is for most the part common between all target platforms and was previously duplicated by cut-and-paste to all the varieties of MacroAssemblers that support the MASM_PROBE mechanism.  Now, there is only one copy in MacroAssemblerPrinter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121863</commentid>
    <comment_count>1</comment_count>
      <attachid>260187</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-28 15:51:42 -0700</bug_when>
    <thetext>Created attachment 260187
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121865</commentid>
    <comment_count>2</comment_count>
      <attachid>260188</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-28 15:54:06 -0700</bug_when>
    <thetext>Created attachment 260188
fix 2: remove those accidental newlines in VC project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121871</commentid>
    <comment_count>3</comment_count>
      <attachid>260188</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-28 15:55:22 -0700</bug_when>
    <thetext>Comment on attachment 260188
fix 2: remove those accidental newlines in VC project files.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121876</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-28 15:59:46 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r189130: &lt;http://trac.webkit.org/r189130&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260187</attachid>
            <date>2015-08-28 15:51:42 -0700</date>
            <delta_ts>2015-08-28 15:54:06 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-148595.patch</filename>
            <type>text/plain</type>
            <size>42114</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE1LTA4LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciB0aGUgSklUIHByaW50ZXIgb3V0IG9mIHRoZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
IGludG8gTWFjcm9Bc3NlbWJsZXJQcmludGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2h5IGRvIHRoaXM/CisgICAgICAgIDEuIE1hY3JvQXNzZW1i
bGVyOjpwcmludCgpIGNvZGUgKGV4Y2VwdCBmb3IgdGhlIHByb3RvdHlwZSkgbmVlZCBubyBsb25n
ZXIgYmUgcGFyc2VkCisgICAgICAgICAgIHdoZW4gY29tcGlsaW5nIEMrKyBmaWxlcyB0aGF0IGRv
bid0IG5lZWQgaXQuCisgICAgICAgIDIuIEFkZGluZyBzdXBwb3J0IGZvciBtb3JlIHByaW50YWJs
ZSB0eXBlcyB0byBNYWNyb0Fzc2VtYmxlclByaW50ZXI6OlByaW50QXJnCisgICAgICAgICAgIHRy
aWdnZXJzIHJlY29tcGlsYXRpb24gb2YgbGVzcyBmaWxlcy4KKyAgICAgICAgMy4gVGhlIHByaW50
aW5nIGNvZGUgaXMgZm9yIG1vc3QgdGhlIHBhcnQgY29tbW9uIGJldHdlZW4gYWxsIHRhcmdldCBw
bGF0Zm9ybXMgYW5kCisgICAgICAgICAgIHdhcyBwcmV2aW91c2x5IGR1cGxpY2F0ZWQgYnkgY3V0
LWFuZC1wYXN0ZSB0byBhbGwgdGhlIHZhcmlldGllcyBvZiBNYWNyb0Fzc2VtYmxlcnMKKyAgICAg
ICAgICAgdGhhdCBzdXBwb3J0IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlzbS4gIE5vdywgdGhlcmUg
aXMgb25seSBvbmUgY29weSBpbgorICAgICAgICAgICBNYWNyb0Fzc2VtYmxlclByaW50ZXIuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIGFzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlByb2JlQ29udGV4dDo6cHJpbnQpOiBEZWxldGVkLgorICAgICAgICAtIFJlbW92ZWQg
dGhpcyBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwgc2luY2Ugd2UgaGF2
ZSB0aGlzIG1vcmUKKyAgICAgICAgICBmbGV4aWJsZSBwcmludCgpIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cHJpbnRJbmRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpwcmludENQVSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnByaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6UHJpbnRBcmc6OlBy
aW50QXJnKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
YXBwZW5kUHJpbnRBcmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6cHJpbnRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIC0gVGhlc2Ug
Z290IG1vdmVkIGludG8gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcC4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwcmludENQVVJl
Z2lzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwcmlu
dFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHA6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnByaW50Q1BVUmVnaXN0ZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJpbnRSZWdpc3Rlcik6IERl
bGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRDUFVSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3Rlcik6IERl
bGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6Cisg
ICAgICAgIC0gRGVsZXRlZCBhIHdob2xlIGJ1bmNoIG9mIG1vc3RseSBkdXBsaWNhdGVkIGNvZGUu
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OnByaW50SW5kZW50KToKKyAgICAgICAgKEpTQzo6cHJpbnRDUFUpOgor
ICAgICAgICAoSlNDOjpwcmludENQVVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnByaW50UmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclByaW50ZXI6OnByaW50Q2FsbGJh
Y2spOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuaDogQWRkZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUHJpbnRlcjo6cHJpbnQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclByaW50ZXI6OlByaW50QXJnOjpQcmludEFyZyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUHJpbnRlcjo6YXBwZW5kUHJpbnRBcmcpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHJpbnQpOgorCiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIE1vdmUgc3RkOjpmdW5jdGlvbiBm
cm9tIEpTRnVuY3Rpb24gaW50byBOYXRpdmVTdGRGdW5jdGlvbkNlbGwgdG8gY29ycmVjdGx5IGRl
c3Ryb3kgdGhlIGhlYXAgYWxsb2NhdGVkIHN0ZDo6ZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuY3BwCisgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRl
ci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCiAKICAgICBi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwNSw2ICszMDUsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
QVBJXE9wYXF1ZUpTU3RyaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFz
c2VtYmxlclxMaW5rQnVmZmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFz
c2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNw
cCIgLz4KQEAgLTk4Niw2ICs5ODcsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXENvZGVMb2NhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXExpbmtCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxNYWNyb0Fzc2VtYmxlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiAv
PgpAQCAtMTkwMSw0ICsxOTAzLDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25U
YXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVpbGRDdXN0
b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTg5
MTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMy
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxl
ci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CisgICAgPC9DbENv
bXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC0xOTgwLDYgKzE5ODMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJs
ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCI+CisgICAgICA8RmlsdGVyPmFzc2Vt
YmxlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2LmgiPgogICAgICAgPEZpbHRlcj5hc3NlbWJs
ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQ2NTgsNCArNDY2NCw0IEBACiAgICAg
ICA8RmlsdGVyPmppdDwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzUxLDYgKzE3NTEsOCBAQAogCQlGRTUwNjg2NzFBRTI1RTI4MDAwOURB
QjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNv
dXJjZUR1bXAuY3BwICovOyB9OwogCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRy
eVNjb3BlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovOyB9OwogCQlG
RTU5MzJBODE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNjE4M0M1QTI2MDBBMUVDQ0Mg
LyogVk1FbnRyeVNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2
OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFNjhDNjM4MUI5MERF
MEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8q
IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi87IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYx
RjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5j
cHAgKi87IH07CiAJCUZFN0JBNjEwMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFN0JBNjBFMUEx
QTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJl
YWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzY0Myw2ICszNjQ1LDggQEAKIAkJ
RkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyog
Vk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
RW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkzMkE2MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0Iz
IC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVmVyaWZpZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRTFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBWZXJpZmllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTkwQkIzQTFCN0NGNjRFMDA2QjNGMDMgLyog
Vk1JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZNSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ2OSw2ICs1NDczLDggQEAKIAkJCQk4
NkFERDE0NDBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oICovLAogCQkJ
CTg2M0IyM0RGMEZDNjBFNjIwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCAqLywK
IAkJCQk4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi8s
CisJCQkJRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5j
cHAgKi8sCisJCQkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oICovLAogCQkJCTg2QUU2NEE2MTM1RTVFMUMwMDk2MzAxMiAvKiBNYWNyb0Fzc2VtYmxl
clNINC5oICovLAogCQkJCTg2MDE2MUUwMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4Ni5oICovLAogCQkJCTg2MDE2MUUxMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxl
clg4Nl82NC5oICovLApAQCAtNjEzOSw2ICs2MTQ1LDcgQEAKIAkJCQkwRjJCOUNFRDE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDREOTA3MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdNZXJnZU1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzQ1MTUyMjgwMUIwMENEODkxMCAvKiBE
RkdNaW5pZmllZEdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyRDE2RDAyQkFGMDA5
RTRGRDIgLyogREZHTWluaWZpZWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDYxNTIy
ODAyMDAwQ0Q4OTEwIC8qIERGR01pbmlmaWVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTY3
LDYgKzc5NzQsNyBAQAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFRDk0RjJFMTcxRTNFMjMwMEJFNzdBNCAvKiBXYXRj
aGRvZy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTY4QzYzODFCOTBERTBCMDA0MkJDQjMgLyog
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCOThEMTM2MUI2
MENENUYwMDIzQjFBNCAvKiBKU1dBU01Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5
MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFDRjczNzcxNzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkwOCw5OSArOTA4LDggQEAgcHVibGljOgogICAgICAgICB2b2lkKiBhcmcxOwogICAgICAg
ICB2b2lkKiBhcmcyOwogICAgICAgICBDUFVTdGF0ZSBjcHU7Ci0KLSAgICAgICAgdm9pZCBwcmlu
dChpbnQgaW5kZW50YXRpb24gPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAjZGVmaW5lIElO
REVOVCBNYWNyb0Fzc2VtYmxlclR5cGU6OnByaW50SW5kZW50KGluZGVudGF0aW9uKQotCi0gICAg
ICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCJQcm9iZUNvbnRleHQgJXAge1xuIiwgdGhpcyk7Ci0g
ICAgICAgICAgICBpbmRlbnRhdGlvbisrOwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IElOREVOVCwgZGF0YUxvZ0YoInByb2JlRnVuY3Rpb246ICVwXG4iLCBwcm9iZUZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCJhcmcxOiAlcCAlbGx1XG4iLCBhcmcx
LCByZWludGVycHJldF9jYXN0PGludDY0X3Q+KGFyZzEpKTsKLSAgICAgICAgICAgICAgICBJTkRF
TlQsIGRhdGFMb2dGKCJhcmcyOiAlcCAlbGx1XG4iLCBhcmcyLCByZWludGVycHJldF9jYXN0PGlu
dDY0X3Q+KGFyZzIpKTsKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlclR5cGU6OnByaW50
Q1BVKGNwdSwgaW5kZW50YXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5kZW50
YXRpb24tLTsKLSAgICAgICAgICAgIElOREVOVCwgZGF0YUxvZygifVxuIik7Ci0KLSAgICAgICAg
ICAgICN1bmRlZiBJTkRFTlQKLSAgICAgICAgfQogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBw
cmludEluZGVudChpbnQgaW5kZW50YXRpb24pCi0gICAgewotICAgICAgICBmb3IgKDsgaW5kZW50
YXRpb24gPiAwOyBpbmRlbnRhdGlvbi0tKQotICAgICAgICAgICAgZGF0YUxvZygiICAgICIpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHByaW50Q1BVKENQVVN0YXRlJiBjcHUsIGludCBpbmRl
bnRhdGlvbiA9IDApCi0gICAgewotICAgICAgICAjZGVmaW5lIElOREVOVCBwcmludEluZGVudChp
bmRlbnRhdGlvbikKLQotICAgICAgICBJTkRFTlQsIGRhdGFMb2coImNwdToge1xuIik7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRDUFVSZWdpc3RlcnMoY3B1LCBpbmRlbnRhdGlv
biArIDEpOwotICAgICAgICBJTkRFTlQsIGRhdGFMb2coIn1cbiIpOwotCi0gICAgICAgICN1bmRl
ZiBJTkRFTlQKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGlzIGEgbWFya2VyIHR5cGUgb25seSB1c2Vk
IHdpdGggcHJpbnQoKS4gU2VlIHByaW50KCkgYmVsb3cgZm9yIGRldGFpbHMuCi0gICAgc3RydWN0
IEFsbFJlZ2lzdGVycyB7IH07Ci0KLSAgICAvLyBFbWl0cyBjb2RlIHdoaWNoIHdpbGwgcHJpbnQg
ZGVidWdnaW5nIGluZm8gYXQgcnVudGltZS4gVGhlIHR5cGUgb2YgdmFsdWVzIHRoYXQKLSAgICAv
LyBjYW4gYmUgcHJpbnRlZCBpcyBlbmNhcHN1bGF0ZWQgaW4gdGhlIFByaW50QXJnIHN0cnVjdCBi
ZWxvdy4gSGVyZSBhcmUgc29tZQotICAgIC8vIGV4YW1wbGVzOgotICAgIC8vCi0gICAgLy8gICAg
ICBwcmludCgiSGVsbG8gd29ybGRcbiIpOyAvLyBFbWl0cyBjb2RlIHRvIHByaW50IHRoZSBzdHJp
bmcuCi0gICAgLy8KLSAgICAvLyAgICAgIENvZGVCbG9jayogY2IgPSAuLi47Ci0gICAgLy8gICAg
ICBwcmludChjYik7ICAgICAgICAgICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50IHRoZSBwb2lu
dGVyIHZhbHVlLgotICAgIC8vCi0gICAgLy8gICAgICBSZWdpc3RlcklEIHJlZ0lEID0gLi4uOwot
ICAgIC8vICAgICAgcHJpbnQocmVnSUQpOyAgICAgICAgICAgLy8gRW1pdHMgY29kZSB0byBwcmlu
dCB0aGUgcmVnaXN0ZXIgdmFsdWUgKG5vdCB0aGUgaWQpLgotICAgIC8vCi0gICAgLy8gICAgICAv
LyBFbWl0cyBjb2RlIHRvIHByaW50IGFsbCByZWdpc3RlcnMuICBVbmxpa2Ugb3RoZXIgaXRlbXMs
IHRoaXMgcHJpbnRzCi0gICAgLy8gICAgICAvLyBtdWx0aXBsZSBsaW5lcyBhcyBmb2xsb3dzOgot
ICAgIC8vICAgICAgLy8gICAgICBjcHUgewotICAgIC8vICAgICAgLy8gICAgICAgICAgZWF4OiAw
eDEyMzQ1Njc4OQotICAgIC8vICAgICAgLy8gICAgICAgICAgZWJ4OiAweDAwMDAwMGFiYwotICAg
IC8vICAgICAgLy8gICAgICAgICAgLi4uCi0gICAgLy8gICAgICAvLyAgICAgIH0KLSAgICAvLyAg
ICAgIHByaW50KEFsbFJlZ2lzdGVycygpKTsKLSAgICAvLwotICAgIC8vICAgICAgLy8gUHJpbnQg
bXVsdGlwbGUgdGhpbmdzIGF0IG9uY2UuIFRoaXMgaW5jdXJzIHRoZSBwcm9iZSBvdmVyaGVhZCBv
bmx5IG9uY2UKLSAgICAvLyAgICAgIC8vIHRvIHByaW50IGFsbCB0aGUgaXRlbXMuCi0gICAgLy8g
ICAgICBwcmludCgiY2I6IiwgY2IsICIgcmVnSUQ6IiwgcmVnSUQsICIgY3B1OlxuIiwgQWxsUmVn
aXN0ZXJzKCkpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZv
aWQgcHJpbnQoQXJndW1lbnRzLi4uIGFyZ3MpCi0gICAgewotICAgICAgICBwcmludEludGVybmFs
KHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyVHlwZSo+KHRoaXMpLCBhcmdzLi4uKTsKLSAgICB9
Ci0KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHByaW50Q1BVKCkgdG8g
cHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIHRhcmdldCBzcGVjaWZpYyByZWdpc3Rl
cnMgd2hpY2ggYXJlIHNhdmVkIGF3YXkgaW4gdGhlIENQVVN0YXRlIHN0cnVjdC4KLSAgICAvLyBw
cmludENQVVJlZ2lzdGVycygpIHNob3VsZCBtYWtlIHVzZSBvZiBwcmludEluZGVudGF0aW9uKCkg
dG8gcHJpbnQgdGhlCi0gICAgLy8gcmVnaXN0ZXJzIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFtb3Vu
dCBvZiBpbmRlbnRhdGlvbi4KLSAgICAvLwotICAgIC8vIE5vdGU6IHByaW50Q1BVUmVnaXN0ZXJz
KCkgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHRoZSB0YXJnZXQgc3BlY2lmaWMKLSAgICAvLyBN
YWNyb0Fzc2VtYmxlci4gVGhpcyBwcm90b3R5cGUgaXMgb25seSBwcm92aWRlZCBoZXJlIHRvIGRv
Y3VtZW50IHRoZQotICAgIC8vIGludGVyZmFjZS4KLQotICAgIHN0YXRpYyB2b2lkIHByaW50Q1BV
UmVnaXN0ZXJzKENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7Ci0KLSAgICAvLyBUaGlz
IGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHByaW50KCkgdG8gcHJpbnQgdGhlIGNvbnRlbnRz
IG9mIGEKLSAgICAvLyBzcGVjaWZpYyByZWdpc3RlciAoZnJvbSB0aGUgQ1BVU3RhdGUpIGluIGxp
bmUgd2l0aCBvdGhlciBpdGVtcyBpbiB0aGUKLSAgICAvLyBwcmludCBzdHJlYW0uIEhlbmNlLCBu
byBpbmRlbnRhdGlvbiBpcyBuZWVkZWQuCi0gICAgLy8KLSAgICAvLyBOb3RlOiBwcmludFJlZ2lz
dGVyKCkgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHRoZSB0YXJnZXQgc3BlY2lmaWMKLSAgICAv
LyBNYWNyb0Fzc2VtYmxlci4gVGhlc2UgcHJvdG90eXBlcyBhcmUgb25seSBwcm92aWRlZCBoZXJl
IHRvIGRvY3VtZW50IHRoZWlyCi0gICAgLy8gaW50ZXJmYWNlLgotCi0gICAgc3RhdGljIHZvaWQg
cHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIFJlZ2lzdGVySUQpOwotICAgIHN0YXRpYyB2b2lkIHBy
aW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQpOwotCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBlbWl0cyBjb2RlIHRvIHByZXNlcnZlIHRoZSBDUFVTdGF0ZSAoZS5nLiByZWdpc3RlcnMp
LAogICAgIC8vIGNhbGwgYSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVzdG9y
ZSB0aGUgQ1BVU3RhdGUgYmVmb3JlCiAgICAgLy8gY29udGludWluZyB3aXRoIG90aGVyIEpJVCBn
ZW5lcmF0ZWQgY29kZS4KQEAgLTExODYsMTM5ICsxMDk1LDYgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogCi0jaWYgRU5BQkxFKE1BU01fUFJPQkUpCi0KLSAgICBzdHJ1Y3QgUHJpbnRBcmcgewot
ICAgIAotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICAgICAgQWxsUmVnaXN0ZXJz
LAotICAgICAgICAgICAgUmVnaXN0ZXJJRCwKLSAgICAgICAgICAgIEZQUmVnaXN0ZXJJRCwKLSAg
ICAgICAgICAgIENvbnN0Q2hhclB0ciwKLSAgICAgICAgICAgIENvbnN0Vm9pZFB0ciwKLSAgICAg
ICAgICAgIEludHB0clZhbHVlLAotICAgICAgICAgICAgVWludHB0clZhbHVlLAotICAgICAgICB9
OwotCi0gICAgICAgIFByaW50QXJnKEFsbFJlZ2lzdGVycyYpCi0gICAgICAgICAgICA6IHR5cGUo
VHlwZTo6QWxsUmVnaXN0ZXJzKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBQcmlu
dEFyZyhSZWdpc3RlcklEIHJlZ0lEKQotICAgICAgICAgICAgOiB0eXBlKFR5cGU6OlJlZ2lzdGVy
SUQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHUuZ3BSZWdpc3RlcklEID0gcmVnSUQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICBQcmludEFyZyhGUFJlZ2lzdGVySUQgcmVnSUQpCi0gICAgICAgICAg
ICA6IHR5cGUoVHlwZTo6RlBSZWdpc3RlcklEKQotICAgICAgICB7Ci0gICAgICAgICAgICB1LmZw
UmVnaXN0ZXJJRCA9IHJlZ0lEOwotICAgICAgICB9Ci0KLSAgICAgICAgUHJpbnRBcmcoY29uc3Qg
Y2hhciogcHRyKQotICAgICAgICAgICAgOiB0eXBlKFR5cGU6OkNvbnN0Q2hhclB0cikKLSAgICAg
ICAgewotICAgICAgICAgICAgdS5jb25zdENoYXJQdHIgPSBwdHI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBQcmludEFyZyhjb25zdCB2b2lkKiBwdHIpCi0gICAgICAgICAgICA6IHR5cGUoVHlwZTo6
Q29uc3RWb2lkUHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICB1LmNvbnN0Vm9pZFB0ciA9IHB0
cjsKLSAgICAgICAgfQotCi0gICAgICAgIFByaW50QXJnKGludCB2YWx1ZSkKLSAgICAgICAgICAg
IDogdHlwZShUeXBlOjpJbnRwdHJWYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdS5pbnRw
dHJWYWx1ZSA9IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgUHJpbnRBcmcodW5zaWduZWQg
dmFsdWUpCi0gICAgICAgICAgICA6IHR5cGUoVHlwZTo6VWludHB0clZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICB1LmludHB0clZhbHVlID0gdmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAg
ICBQcmludEFyZyhpbnRwdHJfdCB2YWx1ZSkKLSAgICAgICAgICAgIDogdHlwZShUeXBlOjpJbnRw
dHJWYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdS5pbnRwdHJWYWx1ZSA9IHZhbHVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgUHJpbnRBcmcodWludHB0cl90IHZhbHVlKQotICAgICAgICAg
ICAgOiB0eXBlKFR5cGU6OlVpbnRwdHJWYWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdS51
aW50cHRyVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIFR5cGUgdHlwZTsKLSAg
ICAgICAgdW5pb24gewotICAgICAgICAgICAgUmVnaXN0ZXJJRCBncFJlZ2lzdGVySUQ7Ci0gICAg
ICAgICAgICBGUFJlZ2lzdGVySUQgZnBSZWdpc3RlcklEOwotICAgICAgICAgICAgY29uc3QgY2hh
ciogY29uc3RDaGFyUHRyOwotICAgICAgICAgICAgY29uc3Qgdm9pZCogY29uc3RWb2lkUHRyOwot
ICAgICAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7Ci0gICAgICAgICAgICB1aW50cHRyX3Qg
dWludHB0clZhbHVlOwotICAgICAgICB9IHU7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgVmVjdG9y
PFByaW50QXJnPiBQcmludEFyZ3NMaXN0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RB
cmcsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFy
ZyhQcmludEFyZ3NMaXN0KiBhcmdzTGlzdCwgRmlyc3RBcmcmIGZpcnN0QXJnLCBBcmd1bWVudHMu
Li4gb3RoZXJBcmdzKQotICAgIHsKLSAgICAgICAgYXJnc0xpc3QtPmFwcGVuZChQcmludEFyZyhm
aXJzdEFyZykpOwotICAgICAgICBhcHBlbmRQcmludEFyZyhhcmdzTGlzdCwgb3RoZXJBcmdzLi4u
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFyZyhQcmludEFyZ3NMaXN0
KikgeyB9Ci0KLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAg
c3RhdGljIHZvaWQgcHJpbnRJbnRlcm5hbChNYWNyb0Fzc2VtYmxlclR5cGUqIG1hc20sIEFyZ3Vt
ZW50cy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgYXV0byBhcmdzTGlzdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UHJpbnRBcmdzTGlzdD4oKTsKLSAgICAgICAgYXBwZW5kUHJpbnRBcmcoYXJnc0xpc3Qu
Z2V0KCksIGFyZ3MuLi4pOwotICAgICAgICBtYXNtLT5wcm9iZShwcmludENhbGxiYWNrLCBhcmdz
TGlzdC5yZWxlYXNlKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHByaW50Q2FsbGJhY2so
UHJvYmVDb250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBQcmludEFyZyBB
cmc7Ci0gICAgICAgIFByaW50QXJnc0xpc3QmIGFyZ3NMaXN0ID0KLSAgICAgICAgICAgICpyZWlu
dGVycHJldF9jYXN0PFByaW50QXJnc0xpc3QqPihjb250ZXh0LT5hcmcxKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhcmdzTGlzdC5zaXplKCk7IGkrKykgewotICAgICAgICAgICAg
YXV0byYgYXJnID0gYXJnc0xpc3RbaV07Ci0gICAgICAgICAgICBzd2l0Y2ggKGFyZy50eXBlKSB7
Ci0gICAgICAgICAgICBjYXNlIEFyZzo6VHlwZTo6QWxsUmVnaXN0ZXJzOgotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRDUFUoY29udGV4dC0+Y3B1KTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJnOjpUeXBlOjpSZWdpc3RlcklEOgot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRSZWdpc3Rlcihjb250ZXh0
LT5jcHUsIGFyZy51LmdwUmVnaXN0ZXJJRCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEFyZzo6VHlwZTo6RlBSZWdpc3RlcklEOgotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRSZWdpc3Rlcihjb250ZXh0LT5jcHUsIGFyZy51LmZwUmVn
aXN0ZXJJRCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFyZzo6
VHlwZTo6Q29uc3RDaGFyUHRyOgotICAgICAgICAgICAgICAgIGRhdGFMb2coYXJnLnUuY29uc3RD
aGFyUHRyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJnOjpU
eXBlOjpDb25zdFZvaWRQdHI6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiVwIiwgYXJnLnUu
Y29uc3RWb2lkUHRyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
QXJnOjpUeXBlOjpJbnRwdHJWYWx1ZToKLSAgICAgICAgICAgICAgICBkYXRhTG9nKGFyZy51Lmlu
dHB0clZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXJn
OjpUeXBlOjpVaW50cHRyVmFsdWU6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZyhhcmcudS51aW50
cHRyVmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCi0KIH07IC8vIGNsYXNz
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAxODkxMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1ODMsNiArMTU4MywxMyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICB1cnNoaWZ0MzIoc3JjLCB0cnVzdGVkSW1tMzJGb3JTaGlmdChhbW91bnQp
LCBkZXN0KTsKICAgICB9CisKKyNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKKyAgICAvLyBMZXQncyB5
b3UgcHJpbnQgZnJvbSB5b3VyIEpJVCBnZW5lcmF0ZWQgY29kZS4KKyAgICAvLyBTZWUgY29tbWVu
dHMgaW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9mIGhvdyB0byB1c2Ug
dGhpcy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBwcmlu
dChBcmd1bWVudHMuLi4gYXJncyk7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTS5jcHAJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
VW5pdmVyc2l0eSBvZiBTemVnZWQKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtOTcs
NTEgKzk3LDYgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxpZwogCiAj
aWYgRU5BQkxFKE1BU01fUFJPQkUpCiAKLSNkZWZpbmUgSU5ERU5UIHByaW50SW5kZW50KGluZGVu
dGF0aW9uKQotCi12b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpwcmludENQVVJlZ2lzdGVycyhDUFVT
dGF0ZSYgY3B1LCBpbnQgaW5kZW50YXRpb24pCi17Ci0gICAgI2RlZmluZSBQUklOVF9HUFJFR0lT
VEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCi0gICAgICAgIGludDMyX3QgdmFsdWUgPSByZWludGVy
cHJldF9jYXN0PGludDMyX3Q+KGNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgSU5ERU5ULCBkYXRh
TG9nRigiJTVzOiAweCUwOHggICVkXG4iLCAjX3JlZ05hbWUsIHZhbHVlLCB2YWx1ZSkgOyBcCi0g
ICAgfQotICAgIEZPUl9FQUNIX0NQVV9HUFJFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCi0gICAg
Rk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKLSAgICAjdW5k
ZWYgUFJJTlRfR1BSRUdJU1RFUgotCi0gICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBl
LCBfcmVnTmFtZSkgeyBcCi0gICAgICAgIHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1
aW50NjRfdCo+KCZjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8ZG91YmxlKj4oJmNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgSU5ERU5ULCBkYXRh
TG9nRigiJTVzOiAweCUwMTZsbHggICUuMTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKLSAg
ICB9Ci0gICAgRk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIoUFJJTlRfRlBSRUdJU1RFUikKLSAgICAj
dW5kZWYgUFJJTlRfRlBSRUdJU1RFUgotfQotCi0jdW5kZWYgSU5ERU5UCi0KLXZvaWQgTWFjcm9B
c3NlbWJsZXJBUk06OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk06OkNQVVN0YXRlJiBj
cHUsIFJlZ2lzdGVySUQgcmVnSUQpCi17Ci0gICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRl
OjpyZWdpc3Rlck5hbWUocmVnSUQpOwotICAgIHVuaW9uIHsKLSAgICAgICAgdm9pZCogdm9pZFB0
cjsKLSAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7Ci0gICAgfSB1OwotICAgIHUudm9pZFB0
ciA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKLSAgICBkYXRhTG9nRigiJXM6PCVwICVsZD4i
LCBuYW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFsdWUpOwotfQotCi12b2lkIE1hY3JvQXNzZW1i
bGVyQVJNOjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNOjpDUFVTdGF0ZSYgY3B1LCBG
UFJlZ2lzdGVySUQgcmVnSUQpCi17Ci0gICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRlOjpy
ZWdpc3Rlck5hbWUocmVnSUQpOwotICAgIHVuaW9uIHsKLSAgICAgICAgZG91YmxlIGRvdWJsZVZh
bHVlOwotICAgICAgICB1aW50NjRfdCB1aW50NjRWYWx1ZTsKLSAgICB9IHU7Ci0gICAgdS5kb3Vi
bGVWYWx1ZSA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKLSAgICBkYXRhTG9nRigiJXM6PDB4
JTAxNmxseCAlLjEzZz4iLCBuYW1lLCB1LnVpbnQ2NFZhbHVlLCB1LmRvdWJsZVZhbHVlKTsKLX0K
LQogZXh0ZXJuICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAogLy8gRm9yIGRl
dGFpbHMgb24gIldoYXQgY29kZSBpcyBlbWl0dGVkIGZvciB0aGUgcHJvYmU/IiBhbmQgIldoYXQg
dmFsdWVzIGFyZSBpbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMywgMjAxNCBB
cHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgVW5pdmVyc2l0eSBvZiBTemVnZWQKICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMTQzMywxMSArMTQzMyw2IEBAIHB1YmxpYzoKICAgICB9
CiAKICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKLSAgICAvLyBNZXRob2RzIHJlcXVpcmVkIGJ5IHRo
ZSBNQVNNX1BST0JFIG1lY2hhbmlzbSBhcyBkZWZpbmVkIGluCi0gICAgLy8gQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oLiAKLSAgICBzdGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0
ZSYsIGludCBpbmRlbnRhdGlvbiA9IDApOwotICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIo
Q1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKLSAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVyKENQ
VVN0YXRlJiwgRlBSZWdpc3RlcklEKTsKICAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rpb24sIHZv
aWQqIGFyZzEgPSAwLCB2b2lkKiBhcmcyID0gMCk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJP
QkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw1MSArMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShN
QVNNX1BST0JFKQogCi0jZGVmaW5lIElOREVOVCBwcmludEluZGVudChpbmRlbnRhdGlvbikKLQot
dm9pZCBNYWNyb0Fzc2VtYmxlckFSTXY3OjpwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYgY3B1
LCBpbnQgaW5kZW50YXRpb24pCi17Ci0gICAgI2RlZmluZSBQUklOVF9HUFJFR0lTVEVSKF90eXBl
LCBfcmVnTmFtZSkgeyBcCi0gICAgICAgIGludDMyX3QgdmFsdWUgPSByZWludGVycHJldF9jYXN0
PGludDMyX3Q+KGNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVz
OiAweCUwOHggICVkXG4iLCAjX3JlZ05hbWUsIHZhbHVlLCB2YWx1ZSkgOyBcCi0gICAgfQotICAg
IEZPUl9FQUNIX0NQVV9HUFJFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCi0gICAgRk9SX0VBQ0hf
Q1BVX1NQRUNJQUxfUkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKLSAgICAjdW5kZWYgUFJJTlRf
R1BSRUdJU1RFUgotCi0gICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFt
ZSkgeyBcCi0gICAgICAgIHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+
KCZjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
ZG91YmxlKj4oJmNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVz
OiAweCUwMTZsbHggICUuMTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKLSAgICB9Ci0gICAg
Rk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIoUFJJTlRfRlBSRUdJU1RFUikKLSAgICAjdW5kZWYgUFJJ
TlRfRlBSRUdJU1RFUgotfQotCi0jdW5kZWYgSU5ERU5UCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTXY3OjpDUFVTdGF0ZSYgY3B1LCBS
ZWdpc3RlcklEIHJlZ0lEKQotewotICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0ZTo6cmVn
aXN0ZXJOYW1lKHJlZ0lEKTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHZvaWQqIHZvaWRQdHI7Ci0g
ICAgICAgIGludHB0cl90IGludHB0clZhbHVlOwotICAgIH0gdTsKLSAgICB1LnZvaWRQdHIgPSBj
cHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7Ci0gICAgZGF0YUxvZ0YoIiVzOjwlcCAlbGQ+IiwgbmFt
ZSwgdS52b2lkUHRyLCB1LmludHB0clZhbHVlKTsKLX0KLQotdm9pZCBNYWNyb0Fzc2VtYmxlckFS
TXY3OjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNdjc6OkNQVVN0YXRlJiBjcHUsIEZQ
UmVnaXN0ZXJJRCByZWdJRCkKLXsKLSAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJl
Z2lzdGVyTmFtZShyZWdJRCk7Ci0gICAgdW5pb24gewotICAgICAgICBkb3VibGUgZG91YmxlVmFs
dWU7Ci0gICAgICAgIHVpbnQ2NF90IHVpbnQ2NFZhbHVlOwotICAgIH0gdTsKLSAgICB1LmRvdWJs
ZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOwotICAgIGRhdGFMb2dGKCIlczo8MHgl
MDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWludDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOwotfQot
CiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOwogCiAvLyBGb3IgZGV0
YWlscyBvbiAiV2hhdCBjb2RlIGlzIGVtaXR0ZWQgZm9yIHRoZSBwcm9iZT8iIGFuZCAiV2hhdCB2
YWx1ZXMgYXJlIGluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OS0yMDEwLCAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0xOTAyLDExICsxOTAyLDYgQEAgcHVibGljOgogICAgIH0KIAogI2lmIEVOQUJMRShNQVNNX1BS
T0JFKQotICAgIC8vIE1ldGhvZHMgcmVxdWlyZWQgYnkgdGhlIE1BU01fUFJPQkUgbWVjaGFuaXNt
IGFzIGRlZmluZWQgaW4KLSAgICAvLyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmguIAotICAgIHN0
YXRpYyB2b2lkIHByaW50Q1BVUmVnaXN0ZXJzKENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0g
MCk7Ci0gICAgc3RhdGljIHZvaWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIFJlZ2lzdGVySUQp
OwotICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQp
OwogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFy
ZzIgPSAwKTsKICNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKworI2lmIEVO
QUJMRShNQVNNX1BST0JFKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3VzaW5nIENQVVN0YXRlID0gTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOwor
dXNpbmcgUHJvYmVDb250ZXh0ID0gTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4dDsKK3VzaW5n
IFJlZ2lzdGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRDsKK3VzaW5nIEZQUmVnaXN0
ZXJJRCA9IE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CisKKy8vIFRoZXNlIHByaW50ZXJz
IHdpbGwgcHJpbnQgYSBibG9jayBvZiBpbmZvcm1hdGlvbi4gVGhhdCBibG9jayBtYXkgYmUKKy8v
IGluZGVudGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbmRlbnRhdGlvbi4KK3ZvaWQgcHJpbnRDUFUo
Q1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKK3ZvaWQgcHJpbnRDUFVSZWdpc3RlcnMo
Q1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKKworLy8gVGhlc2UgcHJpbnRlcnMgd2ls
bCBwcmludCB0aGUgc3BlY2lmaWVkIGluZm9ybWF0aW9uIGluIGxpbmUgaW4gdGhlCisvLyBwcmlu
dCBzdHJlYW0uIEhlbmNlLCBubyBpbmRlbnRhdGlvbiB3aWxsIGJlIGFwcGxpZWQuCit2b2lkIHBy
aW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKK3ZvaWQgcHJpbnRSZWdpc3RlcihD
UFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CisgICAgCitzdGF0aWMgdm9pZCBwcmludEluZGVudChp
bnQgaW5kZW50YXRpb24pCit7CisgICAgZm9yICg7IGluZGVudGF0aW9uID4gMDsgaW5kZW50YXRp
b24tLSkKKyAgICAgICAgZGF0YUxvZygiICAgICIpOworfQorCisjZGVmaW5lIElOREVOVCBwcmlu
dEluZGVudChpbmRlbnRhdGlvbikKKyAgICAKK3ZvaWQgcHJpbnRDUFUoQ1BVU3RhdGUmIGNwdSwg
aW50IGluZGVudGF0aW9uKQoreworICAgIElOREVOVCwgZGF0YUxvZygiY3B1OiB7XG4iKTsKKyAg
ICBwcmludENQVVJlZ2lzdGVycyhjcHUsIGluZGVudGF0aW9uICsgMSk7CisgICAgSU5ERU5ULCBk
YXRhTG9nKCJ9XG4iKTsKK30KKwordm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYgY3B1
LCBpbnQgaW5kZW50YXRpb24pCit7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAjZGVmaW5l
IElOVFBUUl9IRVhfVkFMVUVfRk9STUFUICIweCUwOGx4IgorI2Vsc2UKKyAgICAjZGVmaW5lIElO
VFBUUl9IRVhfVkFMVUVfRk9STUFUICIweCUwMTZseCIKKyNlbmRpZgorCisgICAgI2RlZmluZSBQ
UklOVF9HUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCisgICAgICAgIGludHB0cl90IHZh
bHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY3B1Ll9yZWdOYW1lKTsgXAorICAgICAg
ICBJTkRFTlQsIGRhdGFMb2dGKCIlNnM6ICIgSU5UUFRSX0hFWF9WQUxVRV9GT1JNQVQgIiAgJWxk
XG4iLCAjX3JlZ05hbWUsIHZhbHVlLCB2YWx1ZSkgOyBcCisgICAgfQorICAgIEZPUl9FQUNIX0NQ
VV9HUFJFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxf
UkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKKyAgICAjdW5kZWYgUFJJTlRfR1BSRUdJU1RFUgor
ICAgICN1bmRlZiBJTlRQVFJfSEVYX1ZBTFVFX0ZPUk1BVAorICAgIAorICAgICNkZWZpbmUgUFJJ
TlRfRlBSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsgXAorICAgICAgICB1aW50NjRfdCogdSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmY3B1Ll9yZWdOYW1lKTsgXAorICAgICAgICBk
b3VibGUqIGQgPSByZWludGVycHJldF9jYXN0PGRvdWJsZSo+KCZjcHUuX3JlZ05hbWUpOyBcCisg
ICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU2czogMHglMDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdO
YW1lLCAqdSwgKmQpOyBcCisgICAgfQorICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFBSSU5U
X0ZQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5UX0ZQUkVHSVNURVIKK30KKwordm9pZCBwcmlu
dFJlZ2lzdGVyKENQVVN0YXRlJiBjcHUsIFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAgY29uc3Qg
Y2hhciogbmFtZSA9IENQVVN0YXRlOjpyZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVuaW9uIHsK
KyAgICAgICAgdm9pZCogdm9pZFB0cjsKKyAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7Cisg
ICAgfSB1OworICAgIHUudm9pZFB0ciA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKKyAgICBk
YXRhTG9nRigiJXM6PCVwICVsZD4iLCBuYW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFsdWUpOwor
fQorCit2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmIGNwdSwgRlBSZWdpc3RlcklEIHJlZ0lE
KQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lE
KTsKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICAgICAgdWlu
dDY0X3QgdWludDY0VmFsdWU7CisgICAgfSB1OworICAgIHUuZG91YmxlVmFsdWUgPSBjcHUucmVn
aXN0ZXJWYWx1ZShyZWdJRCk7CisgICAgZGF0YUxvZ0YoIiVzOjwweCUwMTZsbHggJS4xM2c+Iiwg
bmFtZSwgdS51aW50NjRWYWx1ZSwgdS5kb3VibGVWYWx1ZSk7Cit9CisKK3ZvaWQgTWFjcm9Bc3Nl
bWJsZXJQcmludGVyOjpwcmludENhbGxiYWNrKFByb2JlQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICB0eXBlZGVmIFByaW50QXJnIEFyZzsKKyAgICBQcmludEFyZ3NMaXN0JiBhcmdzTGlzdCA9Cisg
ICAgKnJlaW50ZXJwcmV0X2Nhc3Q8UHJpbnRBcmdzTGlzdCo+KGNvbnRleHQtPmFyZzEpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnc0xpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
YXV0byYgYXJnID0gYXJnc0xpc3RbaV07CisgICAgICAgIHN3aXRjaCAoYXJnLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBBcmc6OlR5cGU6OkFsbFJlZ2lzdGVyczoKKyAgICAgICAgICAgIHByaW50Q1BV
KGNvbnRleHQtPmNwdSwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcmc6
OlR5cGU6OlJlZ2lzdGVySUQ6CisgICAgICAgICAgICBwcmludFJlZ2lzdGVyKGNvbnRleHQtPmNw
dSwgYXJnLnUuZ3BSZWdpc3RlcklEKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEFyZzo6VHlwZTo6RlBSZWdpc3RlcklEOgorICAgICAgICAgICAgcHJpbnRSZWdpc3Rlcihjb250
ZXh0LT5jcHUsIGFyZy51LmZwUmVnaXN0ZXJJRCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBcmc6OlR5cGU6OkNvbnN0Q2hhclB0cjoKKyAgICAgICAgICAgIGRhdGFMb2coYXJn
LnUuY29uc3RDaGFyUHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFyZzo6
VHlwZTo6Q29uc3RWb2lkUHRyOgorICAgICAgICAgICAgZGF0YUxvZ0YoIiVwIiwgYXJnLnUuY29u
c3RWb2lkUHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFyZzo6VHlwZTo6
SW50cHRyVmFsdWU6CisgICAgICAgICAgICBkYXRhTG9nKGFyZy51LmludHB0clZhbHVlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFyZzo6VHlwZTo6VWludHB0clZhbHVlOgor
ICAgICAgICAgICAgZGF0YUxvZyhhcmcudS51aW50cHRyVmFsdWUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gRU5BQkxFKE1BU01fUFJPQkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNYWNyb0Fzc2VtYmxlclByaW50ZXJfaAor
I2RlZmluZSBNYWNyb0Fzc2VtYmxlclByaW50ZXJfaAorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUp
CisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworLy8g
V2hhdCBpcyBNYWNyb0Fzc2VtYmxlcjo6cHJpbnQoKT8KKy8vID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy8vIFRoZSBNYWNyb0Fzc3NlbWJsZXI6OnByaW50KCkgbWFrZXMgaXQgZWFz
eSB0byBhZGQgcHJpbnQgbG9nZ2luZworLy8gZnJvbSBKSVQgY29tcGlsZWQgY29kZSwgYW5kIGNh
biBiZSB1c2VkIHRvIHByaW50IGFsbCB0eXBlcyBvZiB2YWx1ZXMKKy8vIGF0IHJ1bnRpbWUgZS5n
LiBDUFUgcmVnaXN0ZXIgdmFsdWVzIGJlaW5nIG9wZXJhdGVkIG9uIGJ5IHRoZSBjb21waWxlZAor
Ly8gY29kZS4KKy8vCisvLyBwcmludCgpIGlzIGJ1aWx0IG9uIHRvcCBvZiBNYWNyb0Fzc3NlbWJs
ZXI6OnByb2JlKCksIGFuZCBoZW5jZQorLy8gaW5zZXJ0aW5nIGxvZ2dpbmcgaW4gSklUIGNvbXBp
bGVkIGNvZGUgd2lsbCBub3QgcGVydHVyYiByZWdpc3RlciB2YWx1ZXMuCisvLyBUaGUgb25seSBy
ZWdpc3RlciB2YWx1ZSB0aGF0IGlzIHBlcnR1cmJlZCBpcyB0aGUgUEMgKHByb2dyYW0gY291bnRl
cikKKy8vIHNpbmNlIHRoZXJlIGlzIG5vdyBtb3JlIGNvbXBpbGVkIGNvZGUgdG8gZG8gdGhlIHBy
aW50aW5nLgorLy8KKy8vIEhvdyB0byB1c2UgdGhlIE1hY3JvQXNzZW1ibGVyIHByaW50KCk/Cisv
LyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAxLiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJQcmludGVyLmgiIGluIHRoZSBKSVQgZmlsZSB3aGVyZSB5b3Ugd2FudCB0
byB1c2UgcHJpbnQoKS4KKy8vCisvLyAyLiBBZGQgcHJpbnQoKSBjYWxscyBsaWtlIHRoZXNlIGlu
IHlvdXIgSklUIGNvZGU6CisvLworLy8gICAgICBqaXQucHJpbnQoIkhlbGxvIHdvcmxkXG4iKTsg
Ly8gRW1pdHMgY29kZSB0byBwcmludCB0aGUgc3RyaW5nLgorLy8KKy8vICAgICAgQ29kZUJsb2Nr
KiBjYiA9IC4uLjsKKy8vICAgICAgaml0LnByaW50KGNiLCAiXG4iKTsgICAgICAgIC8vIEVtaXRz
IGNvZGUgdG8gcHJpbnQgdGhlIHBvaW50ZXIgdmFsdWUuCisvLworLy8gICAgICBSZWdpc3RlcklE
IHJlZ0lEID0gLi4uOworLy8gICAgICBqaXQucHJpbnQocmVnSUQsICJcbiIpOyAgICAgLy8gRW1p
dHMgY29kZSB0byBwcmludCB0aGUgcmVnaXN0ZXIgdmFsdWUgKG5vdCB0aGUgaWQpLgorLy8KKy8v
ICAgICAgLy8gRW1pdHMgY29kZSB0byBwcmludCBhbGwgcmVnaXN0ZXJzLiBVbmxpa2Ugb3RoZXIg
aXRlbXMsIHRoaXMgcHJpbnRzCisvLyAgICAgIC8vIG11bHRpcGxlIGxpbmVzIGFzIGZvbGxvd3M6
CisvLyAgICAgIC8vICAgICAgY3B1IHsKKy8vICAgICAgLy8gICAgICAgICAgZWF4OiAweDEyMzQ1
Njc4OQorLy8gICAgICAvLyAgICAgICAgICBlYng6IDB4MDAwMDAwYWJjCisvLyAgICAgIC8vICAg
ICAgICAgIC4uLgorLy8gICAgICAvLyAgICAgIH0KKy8vICAgICAgaml0LnByaW50KEFsbFJlZ2lz
dGVycygpKTsKKy8vCisvLyAgICAgIC8vIFByaW50IG11bHRpcGxlIHRoaW5ncyBhdCBvbmNlLiBU
aGlzIGluY3VycyB0aGUgcHJvYmUgb3ZlcmhlYWQgb25seSBvbmNlCisvLyAgICAgIC8vIHRvIHBy
aW50IGFsbCB0aGUgaXRlbXMuCisvLyAgICAgIGppdC5wcmludCgiY2I6IiwgY2IsICIgcmVnSUQ6
IiwgcmVnSUQsICIgY3B1OlxuIiwgQWxsUmVnaXN0ZXJzKCkpOworLy8KKy8vICAgVGhlIHR5cGUg
b2YgdmFsdWVzIHRoYXQgY2FuIGJlIHByaW50ZWQgaXMgZW5jYXBzdWxhdGVkIGluIHRoZSBQcmlu
dEFyZyBzdHJ1Y3QgYmVsb3cuCisvLworLy8gICBOb3RlOiBwcmludCgpIGRvZXMgbm90IGF1dG9t
YXRpY2FsbHkgaW5zZXJ0IGEgJ1xuJyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgorLy8gICBJZiB5
b3Ugd2FudCBhICdcbicsIHlvdSdsbCBoYXZlIHRvIGFkZCBpdCBleHBsaWNpdGx5IChhcyBpbiB0
aGUgZXhhbXBsZXMgYWJvdmUpLgorCisKKy8vIFRoaXMgaXMgYSBtYXJrZXIgdHlwZSBvbmx5IHVz
ZWQgd2l0aCBNYWNyb0Fzc2VtYmxlclByaW50ZXI6OnByaW50KCkuCisvLyBTZWUgTWFjcm9Bc3Nl
bWJsZXJQcmludGVyOjpwcmludCgpIGJlbG93IGZvciBkZXRhaWxzLgorc3RydWN0IEFsbFJlZ2lz
dGVycyB7IH07CisKK2NsYXNzIE1hY3JvQXNzZW1ibGVyUHJpbnRlciB7CisgICAgdXNpbmcgQ1BV
U3RhdGUgPSBNYWNyb0Fzc2VtYmxlcjo6Q1BVU3RhdGU7CisgICAgdXNpbmcgUHJvYmVDb250ZXh0
ID0gTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4dDsKKyAgICB1c2luZyBSZWdpc3RlcklEID0g
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ7CisgICAgdXNpbmcgRlBSZWdpc3RlcklEID0gTWFj
cm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRDsKKyAgICAKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIHZvaWQgcHJpbnQoTWFjcm9Bc3NlbWJs
ZXIqIG1hc20sIEFyZ3VtZW50cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgYXV0byBhcmdzTGlz
dCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRBcmdzTGlzdD4oKTsKKyAgICAgICAgYXBwZW5kUHJp
bnRBcmcoYXJnc0xpc3QuZ2V0KCksIGFyZ3MuLi4pOworICAgICAgICBtYXNtLT5wcm9iZShwcmlu
dENhbGxiYWNrLCBhcmdzTGlzdC5yZWxlYXNlKCkpOworICAgIH0KKyAgICAKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFByaW50QXJnIHsKKworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAg
ICAgICAgQWxsUmVnaXN0ZXJzLAorICAgICAgICAgICAgUmVnaXN0ZXJJRCwKKyAgICAgICAgICAg
IEZQUmVnaXN0ZXJJRCwKKyAgICAgICAgICAgIENvbnN0Q2hhclB0ciwKKyAgICAgICAgICAgIENv
bnN0Vm9pZFB0ciwKKyAgICAgICAgICAgIEludHB0clZhbHVlLAorICAgICAgICAgICAgVWludHB0
clZhbHVlLAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgUHJpbnRBcmcoQWxsUmVnaXN0
ZXJzJikKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpBbGxSZWdpc3RlcnMpCisgICAgICAgIHsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUHJpbnRBcmcoUmVnaXN0ZXJJRCByZWdJRCkK
KyAgICAgICAgICAgIDogdHlwZShUeXBlOjpSZWdpc3RlcklEKQorICAgICAgICB7CisgICAgICAg
ICAgICB1LmdwUmVnaXN0ZXJJRCA9IHJlZ0lEOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBQcmludEFyZyhGUFJlZ2lzdGVySUQgcmVnSUQpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6
RlBSZWdpc3RlcklEKQorICAgICAgICB7CisgICAgICAgICAgICB1LmZwUmVnaXN0ZXJJRCA9IHJl
Z0lEOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBQcmludEFyZyhjb25zdCBjaGFyKiBw
dHIpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6Q29uc3RDaGFyUHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICB1LmNvbnN0Q2hhclB0ciA9IHB0cjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgUHJpbnRBcmcoY29uc3Qgdm9pZCogcHRyKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6
OkNvbnN0Vm9pZFB0cikKKyAgICAgICAgeworICAgICAgICAgICAgdS5jb25zdFZvaWRQdHIgPSBw
dHI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFByaW50QXJnKGludCB2YWx1ZSkKKyAg
ICAgICAgICAgIDogdHlwZShUeXBlOjpJbnRwdHJWYWx1ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgdS5pbnRwdHJWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBQ
cmludEFyZyh1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpVaW50cHRy
VmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgUHJpbnRBcmcoaW50cHRyX3QgdmFsdWUpCisgICAg
ICAgICAgICA6IHR5cGUoVHlwZTo6SW50cHRyVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUHJp
bnRBcmcodWludHB0cl90IHZhbHVlKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OlVpbnRwdHJW
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS51aW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICB1bmlvbiB7Cisg
ICAgICAgICAgICBSZWdpc3RlcklEIGdwUmVnaXN0ZXJJRDsKKyAgICAgICAgICAgIEZQUmVnaXN0
ZXJJRCBmcFJlZ2lzdGVySUQ7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdENoYXJQdHI7
CisgICAgICAgICAgICBjb25zdCB2b2lkKiBjb25zdFZvaWRQdHI7CisgICAgICAgICAgICBpbnRw
dHJfdCBpbnRwdHJWYWx1ZTsKKyAgICAgICAgICAgIHVpbnRwdHJfdCB1aW50cHRyVmFsdWU7Cisg
ICAgICAgIH0gdTsKKyAgICB9OworCisgICAgdHlwZWRlZiBWZWN0b3I8UHJpbnRBcmc+IFByaW50
QXJnc0xpc3Q7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RBcmcsIHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFyZyhQcmludEFyZ3NM
aXN0KiBhcmdzTGlzdCwgRmlyc3RBcmcmIGZpcnN0QXJnLCBBcmd1bWVudHMuLi4gb3RoZXJBcmdz
KQorICAgIHsKKyAgICAgICAgYXJnc0xpc3QtPmFwcGVuZChQcmludEFyZyhmaXJzdEFyZykpOwor
ICAgICAgICBhcHBlbmRQcmludEFyZyhhcmdzTGlzdCwgb3RoZXJBcmdzLi4uKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIHZvaWQgYXBwZW5kUHJpbnRBcmcoUHJpbnRBcmdzTGlzdCopIHsgfQor
Citwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIHByaW50Q2FsbGJhY2soUHJvYmVDb250ZXh0Kik7
Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIE1hY3JvQXNzZW1i
bGVyOjpwcmludChBcmd1bWVudHMuLi4gYXJncykKK3sKKyAgICBNYWNyb0Fzc2VtYmxlclByaW50
ZXI6OnByaW50KHRoaXMsIGFyZ3MuLi4pOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorCisjZW5kaWYgLy8gTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCShyZXZpc2lvbiAxODkxMjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw1OCArMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
I2lmIEVOQUJMRShNQVNNX1BST0JFKQogCi0jZGVmaW5lIElOREVOVCBwcmludEluZGVudChpbmRl
bnRhdGlvbikKLQotdm9pZCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRDUFVSZWdpc3Rl
cnMoTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OkNQVVN0YXRlJiBjcHUsIGludCBpbmRlbnRhdGlv
bikKLXsKLSNpZiBDUFUoWDg2KQotICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwg
X3JlZ05hbWUpIHsgXAotICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQzMl90PihjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU2czog
MHglMDh4ICAlZFxuIiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAotICAgIH0KLSNlbGlm
IENQVShYODZfNjQpCi0gICAgI2RlZmluZSBQUklOVF9HUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFt
ZSkgeyBcCi0gICAgICAgIGludDY0X3QgdmFsdWUgPSByZWludGVycHJldF9jYXN0PGludDY0X3Q+
KGNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTZzOiAweCUwMTZs
bHggICVsbGRcbiIsICNfcmVnTmFtZSwgdmFsdWUsIHZhbHVlKSA7IFwKLSAgICB9Ci0jZW5kaWYK
LSAgICBGT1JfRUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQotICAgIEZPUl9F
QUNIX0NQVV9TUEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCi0gICAgI3VuZGVmIFBS
SU5UX0dQUkVHSVNURVIKLQotICAgICNkZWZpbmUgUFJJTlRfRlBSRUdJU1RFUihfdHlwZSwgX3Jl
Z05hbWUpIHsgXAotICAgICAgICB1aW50NjRfdCogdSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0
X3QqPigmY3B1Ll9yZWdOYW1lKTsgXAotICAgICAgICBkb3VibGUqIGQgPSByZWludGVycHJldF9j
YXN0PGRvdWJsZSo+KCZjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0YUxvZ0Yo
IiU2czogMHglMDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdOYW1lLCAqdSwgKmQpOyBcCi0gICAgfQot
ICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFBSSU5UX0ZQUkVHSVNURVIpCi0gICAgI3VuZGVm
IFBSSU5UX0ZQUkVHSVNURVIKLX0KLQotI3VuZGVmIElOREVOVAotCi12b2lkIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpDUFVT
dGF0ZSYgY3B1LCBSZWdpc3RlcklEIHJlZ0lEKQotewotICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBD
UFVTdGF0ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHZvaWQq
IHZvaWRQdHI7Ci0gICAgICAgIGludHB0cl90IGludHB0clZhbHVlOwotICAgIH0gdTsKLSAgICB1
LnZvaWRQdHIgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7Ci0gICAgZGF0YUxvZ0YoIiVzOjwl
cCAlbGQ+IiwgbmFtZSwgdS52b2lkUHRyLCB1LmludHB0clZhbHVlKTsKLX0KLQotdm9pZCBNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6Q1BVU3RhdGUmIGNwdSwgRlBSZWdpc3RlcklEIHJlZ0lEKQotewotICAgIGNvbnN0IGNoYXIq
IG5hbWUgPSBDUFVTdGF0ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKLSAgICB1bmlvbiB7Ci0gICAg
ICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKLSAgICAgICAgdWludDY0X3QgdWludDY0VmFsdWU7Ci0g
ICAgfSB1OwotICAgIHUuZG91YmxlVmFsdWUgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7Ci0g
ICAgZGF0YUxvZ0YoIiVzOjwweCUwMTZsbHggJS4xM2c+IiwgbmFtZSwgdS51aW50NjRWYWx1ZSwg
dS5kb3VibGVWYWx1ZSk7Ci19Ci0KIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9s
aW5lKCk7CiAKIC8vIFdoYXQgY29kZSBpcyBlbWl0dGVkIGZvciB0aGUgcHJvYmU/CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAxODkxMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNC0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTQ5MSwxMSArMTQ5MSw2IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUo
TUFTTV9QUk9CRSkKLSAgICAvLyBNZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBNQVNNX1BST0JFIG1l
Y2hhbmlzbSBhcyBkZWZpbmVkIGluCi0gICAgLy8gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oLiAK
LSAgICBzdGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYsIGludCBpbmRlbnRh
dGlvbiA9IDApOwotICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBSZWdp
c3RlcklEKTsKLSAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiwgRlBSZWdp
c3RlcklEKTsKICAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rpb24sIHZvaWQqIGFyZzEgPSAwLCB2
b2lkKiBhcmcyID0gMCk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260188</attachid>
            <date>2015-08-28 15:54:06 -0700</date>
            <delta_ts>2015-08-28 15:55:22 -0700</delta_ts>
            <desc>fix 2: remove those accidental newlines in VC project files.</desc>
            <filename>bug-148595.patch</filename>
            <type>text/plain</type>
            <size>41773</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MTI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBA
CisyMDE1LTA4LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciB0aGUgSklUIHByaW50ZXIgb3V0IG9mIHRoZSBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
IGludG8gTWFjcm9Bc3NlbWJsZXJQcmludGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2h5IGRvIHRoaXM/CisgICAgICAgIDEuIE1hY3JvQXNzZW1i
bGVyOjpwcmludCgpIGNvZGUgKGV4Y2VwdCBmb3IgdGhlIHByb3RvdHlwZSkgbmVlZCBubyBsb25n
ZXIgYmUgcGFyc2VkCisgICAgICAgICAgIHdoZW4gY29tcGlsaW5nIEMrKyBmaWxlcyB0aGF0IGRv
bid0IG5lZWQgaXQuCisgICAgICAgIDIuIEFkZGluZyBzdXBwb3J0IGZvciBtb3JlIHByaW50YWJs
ZSB0eXBlcyB0byBNYWNyb0Fzc2VtYmxlclByaW50ZXI6OlByaW50QXJnCisgICAgICAgICAgIHRy
aWdnZXJzIHJlY29tcGlsYXRpb24gb2YgbGVzcyBmaWxlcy4KKyAgICAgICAgMy4gVGhlIHByaW50
aW5nIGNvZGUgaXMgZm9yIG1vc3QgdGhlIHBhcnQgY29tbW9uIGJldHdlZW4gYWxsIHRhcmdldCBw
bGF0Zm9ybXMgYW5kCisgICAgICAgICAgIHdhcyBwcmV2aW91c2x5IGR1cGxpY2F0ZWQgYnkgY3V0
LWFuZC1wYXN0ZSB0byBhbGwgdGhlIHZhcmlldGllcyBvZiBNYWNyb0Fzc2VtYmxlcnMKKyAgICAg
ICAgICAgdGhhdCBzdXBwb3J0IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlzbS4gIE5vdywgdGhlcmUg
aXMgb25seSBvbmUgY29weSBpbgorICAgICAgICAgICBNYWNyb0Fzc2VtYmxlclByaW50ZXIuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIGFzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OlByb2JlQ29udGV4dDo6cHJpbnQpOiBEZWxldGVkLgorICAgICAgICAtIFJlbW92ZWQg
dGhpcyBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwgc2luY2Ugd2UgaGF2
ZSB0aGlzIG1vcmUKKyAgICAgICAgICBmbGV4aWJsZSBwcmludCgpIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cHJpbnRJbmRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpwcmludENQVSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnByaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6UHJpbnRBcmc6OlBy
aW50QXJnKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
YXBwZW5kUHJpbnRBcmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpwcmludEludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6cHJpbnRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIC0gVGhlc2Ug
Z290IG1vdmVkIGludG8gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcC4KKworICAgICAgICAqIGFz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHA6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwcmludENQVVJl
Z2lzdGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwcmlu
dFJlZ2lzdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHA6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnByaW50Q1BVUmVnaXN0ZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJpbnRSZWdpc3Rlcik6IERl
bGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaDoKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRDUFVSZWdpc3RlcnMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3Rlcik6IERl
bGV0ZWQuCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6Cisg
ICAgICAgIC0gRGVsZXRlZCBhIHdob2xlIGJ1bmNoIG9mIG1vc3RseSBkdXBsaWNhdGVkIGNvZGUu
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OnByaW50SW5kZW50KToKKyAgICAgICAgKEpTQzo6cHJpbnRDUFUpOgor
ICAgICAgICAoSlNDOjpwcmludENQVVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OnByaW50UmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclByaW50ZXI6OnByaW50Q2FsbGJh
Y2spOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuaDogQWRkZWQu
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUHJpbnRlcjo6cHJpbnQpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclByaW50ZXI6OlByaW50QXJnOjpQcmludEFyZyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUHJpbnRlcjo6YXBwZW5kUHJpbnRBcmcpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlcjo6cHJpbnQpOgorCiAyMDE1LTA4LTI4ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIE1vdmUgc3RkOjpmdW5jdGlvbiBm
cm9tIEpTRnVuY3Rpb24gaW50byBOYXRpdmVTdGRGdW5jdGlvbkNlbGwgdG8gY29ycmVjdGx5IGRl
c3Ryb3kgdGhlIGhlYXAgYWxsb2NhdGVkIHN0ZDo6ZnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBz
ZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5j
cHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCiAgICAgYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuY3BwCisgICAgYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRl
ci5jcHAKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCiAKICAgICBi
aW5kaW5ncy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMwNSw2ICszMDUsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
QVBJXE9wYXF1ZUpTU3RyaW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFz
c2VtYmxlclxMaW5rQnVmZmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFz
c2VtYmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xTY3JpcHRGdW5jdGlvbkNhbGwuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcU2NyaXB0T2JqZWN0LmNw
cCIgLz4KQEAgLTk4Niw2ICs5ODcsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXENvZGVMb2NhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXExpbmtCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxNYWNyb0Fzc2VtYmxlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNz
ZW1ibGVyXE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxhc3NlbWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclg4Nl82NC5oIiAv
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzIsNiArMTMyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2Vt
YmxlclxNYWNyb0Fzc2VtYmxlci5jcHAiPgogICAgICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFzc2VtYmxl
clxNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YXNzZW1ibGVyPC9G
aWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhc3Nl
bWJsZXJcTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+YXNzZW1i
bGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xOTgwLDYgKzE5ODMsOSBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyLmgiPgogICAg
ICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGFzc2VtYmxlclxNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCI+Cisg
ICAgICA8RmlsdGVyPmFzc2VtYmxlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYXNzZW1ibGVyXE1hY3JvQXNzZW1ibGVyWDg2LmgiPgogICAg
ICAgPEZpbHRlcj5hc3NlbWJsZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODkxMjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTc1MSw2ICsxNzUxLDggQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlE
QUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRT
b3VyY2VEdW1wLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50
cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJ
RkU1OTMyQTgxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0ND
IC8qIFZNRW50cnlTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUZFNjhDNjM3MUI5MERFMDQwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
NjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTY4QzYzODFCOTBE
RTBCMDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovOyB9OwogCQlGRTdCQTYwRjFBMUE3Q0VDMDBG
MUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIu
Y3BwICovOyB9OwogCQlGRTdCQTYxMDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTdCQTYwRTFB
MUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJy
ZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2NDMsNiArMzY0NSw4IEBACiAJ
CUZFNTA2ODY2MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJyZWRTb3VyY2VEdW1wLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBW
TUVudHJ5U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNjE4
M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZNRW50cnlTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTY4QzYzNTFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNC
MyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFN0JBNjBEMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFZlcmlmaWVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEUxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVmVyaWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU5MEJCM0ExQjdDRjY0RTAwNkIzRjAzIC8q
IFZNSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUlubGluZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NjksNiArNTQ3Myw4IEBACiAJCQkJ
ODZBREQxNDQwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCAqLywKIAkJ
CQk4NjNCMjNERjBGQzYwRTYyMDA3MDNBQTQgLyogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmggKi8s
CiAJCQkJODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICov
LAorCQkJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIu
Y3BwICovLAorCQkJCUZFNjhDNjM2MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaCAqLywKIAkJCQk4NkFFNjRBNjEzNUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJs
ZXJTSDQuaCAqLywKIAkJCQk4NjAxNjFFMDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaCAqLywKQEAgLTYxMzksNiArNjE0NSw3IEBACiAJCQkJMEYyQjlDRUQxOUQwQkE3
RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA0RDkwNzE3QTBCQUE4MDA2QkE1NTQgLyogREZHTWVyZ2VNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQ
cmludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyog
REZHTWluaWZpZWRHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRTg5MkQxNkQwMkJBRjAw
OUU0RkQyIC8qIERGR01pbmlmaWVkSUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzQ2MTUy
MjgwMjAwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzk2
Nyw2ICs3OTc0LDcgQEAKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29w
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRUQ5NEYyRTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0
Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8q
IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qjk4RDEzNjFC
NjBDRDVGMDAyM0IxQTQgLyogSlNXQVNNTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
OTE5RDI1MTU4NTNDRTAwMDRBNEU3RCAvKiBXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MDgsOTkgKzkwOCw4IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogYXJnMTsKICAgICAg
ICAgdm9pZCogYXJnMjsKICAgICAgICAgQ1BVU3RhdGUgY3B1OwotCi0gICAgICAgIHZvaWQgcHJp
bnQoaW50IGluZGVudGF0aW9uID0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgI2RlZmluZSBJ
TkRFTlQgTWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmludEluZGVudChpbmRlbnRhdGlvbikKLQotICAg
ICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiUHJvYmVDb250ZXh0ICVwIHtcbiIsIHRoaXMpOwot
ICAgICAgICAgICAgaW5kZW50YXRpb24rKzsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBJTkRFTlQsIGRhdGFMb2dGKCJwcm9iZUZ1bmN0aW9uOiAlcFxuIiwgcHJvYmVGdW5jdGlvbik7
Ci0gICAgICAgICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiYXJnMTogJXAgJWxsdVxuIiwgYXJn
MSwgcmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90PihhcmcxKSk7Ci0gICAgICAgICAgICAgICAgSU5E
RU5ULCBkYXRhTG9nRigiYXJnMjogJXAgJWxsdVxuIiwgYXJnMiwgcmVpbnRlcnByZXRfY2FzdDxp
bnQ2NF90PihhcmcyKSk7Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmlu
dENQVShjcHUsIGluZGVudGF0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGluZGVu
dGF0aW9uLS07Ci0gICAgICAgICAgICBJTkRFTlQsIGRhdGFMb2coIn1cbiIpOwotCi0gICAgICAg
ICAgICAjdW5kZWYgSU5ERU5UCi0gICAgICAgIH0KICAgICB9OwogCi0gICAgc3RhdGljIHZvaWQg
cHJpbnRJbmRlbnQoaW50IGluZGVudGF0aW9uKQotICAgIHsKLSAgICAgICAgZm9yICg7IGluZGVu
dGF0aW9uID4gMDsgaW5kZW50YXRpb24tLSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAiKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBwcmludENQVShDUFVTdGF0ZSYgY3B1LCBpbnQgaW5k
ZW50YXRpb24gPSAwKQotICAgIHsKLSAgICAgICAgI2RlZmluZSBJTkRFTlQgcHJpbnRJbmRlbnQo
aW5kZW50YXRpb24pCi0KLSAgICAgICAgSU5ERU5ULCBkYXRhTG9nKCJjcHU6IHtcbiIpOwotICAg
ICAgICBNYWNyb0Fzc2VtYmxlclR5cGU6OnByaW50Q1BVUmVnaXN0ZXJzKGNwdSwgaW5kZW50YXRp
b24gKyAxKTsKLSAgICAgICAgSU5ERU5ULCBkYXRhTG9nKCJ9XG4iKTsKLQotICAgICAgICAjdW5k
ZWYgSU5ERU5UCi0gICAgfQotCi0gICAgLy8gVGhpcyBpcyBhIG1hcmtlciB0eXBlIG9ubHkgdXNl
ZCB3aXRoIHByaW50KCkuIFNlZSBwcmludCgpIGJlbG93IGZvciBkZXRhaWxzLgotICAgIHN0cnVj
dCBBbGxSZWdpc3RlcnMgeyB9OwotCi0gICAgLy8gRW1pdHMgY29kZSB3aGljaCB3aWxsIHByaW50
IGRlYnVnZ2luZyBpbmZvIGF0IHJ1bnRpbWUuIFRoZSB0eXBlIG9mIHZhbHVlcyB0aGF0Ci0gICAg
Ly8gY2FuIGJlIHByaW50ZWQgaXMgZW5jYXBzdWxhdGVkIGluIHRoZSBQcmludEFyZyBzdHJ1Y3Qg
YmVsb3cuIEhlcmUgYXJlIHNvbWUKLSAgICAvLyBleGFtcGxlczoKLSAgICAvLwotICAgIC8vICAg
ICAgcHJpbnQoIkhlbGxvIHdvcmxkXG4iKTsgLy8gRW1pdHMgY29kZSB0byBwcmludCB0aGUgc3Ry
aW5nLgotICAgIC8vCi0gICAgLy8gICAgICBDb2RlQmxvY2sqIGNiID0gLi4uOwotICAgIC8vICAg
ICAgcHJpbnQoY2IpOyAgICAgICAgICAgICAgLy8gRW1pdHMgY29kZSB0byBwcmludCB0aGUgcG9p
bnRlciB2YWx1ZS4KLSAgICAvLwotICAgIC8vICAgICAgUmVnaXN0ZXJJRCByZWdJRCA9IC4uLjsK
LSAgICAvLyAgICAgIHByaW50KHJlZ0lEKTsgICAgICAgICAgIC8vIEVtaXRzIGNvZGUgdG8gcHJp
bnQgdGhlIHJlZ2lzdGVyIHZhbHVlIChub3QgdGhlIGlkKS4KLSAgICAvLwotICAgIC8vICAgICAg
Ly8gRW1pdHMgY29kZSB0byBwcmludCBhbGwgcmVnaXN0ZXJzLiAgVW5saWtlIG90aGVyIGl0ZW1z
LCB0aGlzIHByaW50cwotICAgIC8vICAgICAgLy8gbXVsdGlwbGUgbGluZXMgYXMgZm9sbG93czoK
LSAgICAvLyAgICAgIC8vICAgICAgY3B1IHsKLSAgICAvLyAgICAgIC8vICAgICAgICAgIGVheDog
MHgxMjM0NTY3ODkKLSAgICAvLyAgICAgIC8vICAgICAgICAgIGVieDogMHgwMDAwMDBhYmMKLSAg
ICAvLyAgICAgIC8vICAgICAgICAgIC4uLgotICAgIC8vICAgICAgLy8gICAgICB9Ci0gICAgLy8g
ICAgICBwcmludChBbGxSZWdpc3RlcnMoKSk7Ci0gICAgLy8KLSAgICAvLyAgICAgIC8vIFByaW50
IG11bHRpcGxlIHRoaW5ncyBhdCBvbmNlLiBUaGlzIGluY3VycyB0aGUgcHJvYmUgb3ZlcmhlYWQg
b25seSBvbmNlCi0gICAgLy8gICAgICAvLyB0byBwcmludCBhbGwgdGhlIGl0ZW1zLgotICAgIC8v
ICAgICAgcHJpbnQoImNiOiIsIGNiLCAiIHJlZ0lEOiIsIHJlZ0lELCAiIGNwdTpcbiIsIEFsbFJl
Z2lzdGVycygpKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICB2
b2lkIHByaW50KEFyZ3VtZW50cy4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgcHJpbnRJbnRlcm5h
bChzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlclR5cGUqPih0aGlzKSwgYXJncy4uLik7Ci0gICAg
fQotCi0gICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBwcmludENQVSgpIHRv
IHByaW50IHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAvLyB0YXJnZXQgc3BlY2lmaWMgcmVnaXN0
ZXJzIHdoaWNoIGFyZSBzYXZlZCBhd2F5IGluIHRoZSBDUFVTdGF0ZSBzdHJ1Y3QuCi0gICAgLy8g
cHJpbnRDUFVSZWdpc3RlcnMoKSBzaG91bGQgbWFrZSB1c2Ugb2YgcHJpbnRJbmRlbnRhdGlvbigp
IHRvIHByaW50IHRoZQotICAgIC8vIHJlZ2lzdGVycyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBhbW91
bnQgb2YgaW5kZW50YXRpb24uCi0gICAgLy8KLSAgICAvLyBOb3RlOiBwcmludENQVVJlZ2lzdGVy
cygpIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgdGFyZ2V0IHNwZWNpZmljCi0gICAgLy8g
TWFjcm9Bc3NlbWJsZXIuIFRoaXMgcHJvdG90eXBlIGlzIG9ubHkgcHJvdmlkZWQgaGVyZSB0byBk
b2N1bWVudCB0aGUKLSAgICAvLyBpbnRlcmZhY2UuCi0KLSAgICBzdGF0aWMgdm9pZCBwcmludENQ
VVJlZ2lzdGVycyhDUFVTdGF0ZSYsIGludCBpbmRlbnRhdGlvbiA9IDApOwotCi0gICAgLy8gVGhp
cyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBwcmludCgpIHRvIHByaW50IHRoZSBjb250ZW50
cyBvZiBhCi0gICAgLy8gc3BlY2lmaWMgcmVnaXN0ZXIgKGZyb20gdGhlIENQVVN0YXRlKSBpbiBs
aW5lIHdpdGggb3RoZXIgaXRlbXMgaW4gdGhlCi0gICAgLy8gcHJpbnQgc3RyZWFtLiBIZW5jZSwg
bm8gaW5kZW50YXRpb24gaXMgbmVlZGVkLgotICAgIC8vCi0gICAgLy8gTm90ZTogcHJpbnRSZWdp
c3RlcigpIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgdGFyZ2V0IHNwZWNpZmljCi0gICAg
Ly8gTWFjcm9Bc3NlbWJsZXIuIFRoZXNlIHByb3RvdHlwZXMgYXJlIG9ubHkgcHJvdmlkZWQgaGVy
ZSB0byBkb2N1bWVudCB0aGVpcgotICAgIC8vIGludGVyZmFjZS4KLQotICAgIHN0YXRpYyB2b2lk
IHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKLSAgICBzdGF0aWMgdm9pZCBw
cmludFJlZ2lzdGVyKENQVVN0YXRlJiwgRlBSZWdpc3RlcklEKTsKLQogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gZW1pdHMgY29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BVU3RhdGUgKGUuZy4gcmVnaXN0ZXJz
KSwKICAgICAvLyBjYWxsIGEgdXNlciBzdXBwbGllZCBwcm9iZSBmdW5jdGlvbiwgYW5kIHJlc3Rv
cmUgdGhlIENQVVN0YXRlIGJlZm9yZQogICAgIC8vIGNvbnRpbnVpbmcgd2l0aCBvdGhlciBKSVQg
Z2VuZXJhdGVkIGNvZGUuCkBAIC0xMTg2LDEzOSArMTA5NSw2IEBAIHByb3RlY3RlZDoKIAogcHJp
dmF0ZToKIAotI2lmIEVOQUJMRShNQVNNX1BST0JFKQotCi0gICAgc3RydWN0IFByaW50QXJnIHsK
LSAgICAKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgICAgIEFsbFJlZ2lzdGVy
cywKLSAgICAgICAgICAgIFJlZ2lzdGVySUQsCi0gICAgICAgICAgICBGUFJlZ2lzdGVySUQsCi0g
ICAgICAgICAgICBDb25zdENoYXJQdHIsCi0gICAgICAgICAgICBDb25zdFZvaWRQdHIsCi0gICAg
ICAgICAgICBJbnRwdHJWYWx1ZSwKLSAgICAgICAgICAgIFVpbnRwdHJWYWx1ZSwKLSAgICAgICAg
fTsKLQotICAgICAgICBQcmludEFyZyhBbGxSZWdpc3RlcnMmKQotICAgICAgICAgICAgOiB0eXBl
KFR5cGU6OkFsbFJlZ2lzdGVycykKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgUHJp
bnRBcmcoUmVnaXN0ZXJJRCByZWdJRCkKLSAgICAgICAgICAgIDogdHlwZShUeXBlOjpSZWdpc3Rl
cklEKQotICAgICAgICB7Ci0gICAgICAgICAgICB1LmdwUmVnaXN0ZXJJRCA9IHJlZ0lEOwotICAg
ICAgICB9Ci0KLSAgICAgICAgUHJpbnRBcmcoRlBSZWdpc3RlcklEIHJlZ0lEKQotICAgICAgICAg
ICAgOiB0eXBlKFR5cGU6OkZQUmVnaXN0ZXJJRCkKLSAgICAgICAgewotICAgICAgICAgICAgdS5m
cFJlZ2lzdGVySUQgPSByZWdJRDsKLSAgICAgICAgfQotCi0gICAgICAgIFByaW50QXJnKGNvbnN0
IGNoYXIqIHB0cikKLSAgICAgICAgICAgIDogdHlwZShUeXBlOjpDb25zdENoYXJQdHIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHUuY29uc3RDaGFyUHRyID0gcHRyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgUHJpbnRBcmcoY29uc3Qgdm9pZCogcHRyKQotICAgICAgICAgICAgOiB0eXBlKFR5cGU6
OkNvbnN0Vm9pZFB0cikKLSAgICAgICAgewotICAgICAgICAgICAgdS5jb25zdFZvaWRQdHIgPSBw
dHI7Ci0gICAgICAgIH0KLQotICAgICAgICBQcmludEFyZyhpbnQgdmFsdWUpCi0gICAgICAgICAg
ICA6IHR5cGUoVHlwZTo6SW50cHRyVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHUuaW50
cHRyVmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIFByaW50QXJnKHVuc2lnbmVk
IHZhbHVlKQotICAgICAgICAgICAgOiB0eXBlKFR5cGU6OlVpbnRwdHJWYWx1ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgdS5pbnRwdHJWYWx1ZSA9IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgUHJpbnRBcmcoaW50cHRyX3QgdmFsdWUpCi0gICAgICAgICAgICA6IHR5cGUoVHlwZTo6SW50
cHRyVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIFByaW50QXJnKHVpbnRwdHJfdCB2YWx1ZSkKLSAgICAgICAg
ICAgIDogdHlwZShUeXBlOjpVaW50cHRyVmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHUu
dWludHB0clZhbHVlID0gdmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBUeXBlIHR5cGU7Ci0g
ICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIFJlZ2lzdGVySUQgZ3BSZWdpc3RlcklEOwotICAg
ICAgICAgICAgRlBSZWdpc3RlcklEIGZwUmVnaXN0ZXJJRDsKLSAgICAgICAgICAgIGNvbnN0IGNo
YXIqIGNvbnN0Q2hhclB0cjsKLSAgICAgICAgICAgIGNvbnN0IHZvaWQqIGNvbnN0Vm9pZFB0cjsK
LSAgICAgICAgICAgIGludHB0cl90IGludHB0clZhbHVlOwotICAgICAgICAgICAgdWludHB0cl90
IHVpbnRwdHJWYWx1ZTsKLSAgICAgICAgfSB1OwotICAgIH07Ci0KLSAgICB0eXBlZGVmIFZlY3Rv
cjxQcmludEFyZz4gUHJpbnRBcmdzTGlzdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0
QXJnLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgc3RhdGljIHZvaWQgYXBwZW5kUHJpbnRB
cmcoUHJpbnRBcmdzTGlzdCogYXJnc0xpc3QsIEZpcnN0QXJnJiBmaXJzdEFyZywgQXJndW1lbnRz
Li4uIG90aGVyQXJncykKLSAgICB7Ci0gICAgICAgIGFyZ3NMaXN0LT5hcHBlbmQoUHJpbnRBcmco
Zmlyc3RBcmcpKTsKLSAgICAgICAgYXBwZW5kUHJpbnRBcmcoYXJnc0xpc3QsIG90aGVyQXJncy4u
Lik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgYXBwZW5kUHJpbnRBcmcoUHJpbnRBcmdzTGlz
dCopIHsgfQotCi0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAg
IHN0YXRpYyB2b2lkIHByaW50SW50ZXJuYWwoTWFjcm9Bc3NlbWJsZXJUeXBlKiBtYXNtLCBBcmd1
bWVudHMuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIGF1dG8gYXJnc0xpc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByaW50QXJnc0xpc3Q+KCk7Ci0gICAgICAgIGFwcGVuZFByaW50QXJnKGFyZ3NMaXN0
LmdldCgpLCBhcmdzLi4uKTsKLSAgICAgICAgbWFzbS0+cHJvYmUocHJpbnRDYWxsYmFjaywgYXJn
c0xpc3QucmVsZWFzZSgpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBwcmludENhbGxiYWNr
KFByb2JlQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUHJpbnRBcmcg
QXJnOwotICAgICAgICBQcmludEFyZ3NMaXN0JiBhcmdzTGlzdCA9Ci0gICAgICAgICAgICAqcmVp
bnRlcnByZXRfY2FzdDxQcmludEFyZ3NMaXN0Kj4oY29udGV4dC0+YXJnMSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJnc0xpc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAg
IGF1dG8mIGFyZyA9IGFyZ3NMaXN0W2ldOwotICAgICAgICAgICAgc3dpdGNoIChhcmcudHlwZSkg
ewotICAgICAgICAgICAgY2FzZSBBcmc6OlR5cGU6OkFsbFJlZ2lzdGVyczoKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlclR5cGU6OnByaW50Q1BVKGNvbnRleHQtPmNwdSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFyZzo6VHlwZTo6UmVnaXN0ZXJJRDoK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlclR5cGU6OnByaW50UmVnaXN0ZXIoY29udGV4
dC0+Y3B1LCBhcmcudS5ncFJlZ2lzdGVySUQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBBcmc6OlR5cGU6OkZQUmVnaXN0ZXJJRDoKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlclR5cGU6OnByaW50UmVnaXN0ZXIoY29udGV4dC0+Y3B1LCBhcmcudS5mcFJl
Z2lzdGVySUQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBcmc6
OlR5cGU6OkNvbnN0Q2hhclB0cjoKLSAgICAgICAgICAgICAgICBkYXRhTG9nKGFyZy51LmNvbnN0
Q2hhclB0cik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFyZzo6
VHlwZTo6Q29uc3RWb2lkUHRyOgotICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIlcCIsIGFyZy51
LmNvbnN0Vm9pZFB0cik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IEFyZzo6VHlwZTo6SW50cHRyVmFsdWU6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZyhhcmcudS5p
bnRwdHJWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFy
Zzo6VHlwZTo6VWludHB0clZhbHVlOgotICAgICAgICAgICAgICAgIGRhdGFMb2coYXJnLnUudWlu
dHB0clZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQotCiB9OyAvLyBjbGFz
cyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2
aXNpb24gMTg5MTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgzLDYgKzE1ODMsMTMgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgdXJzaGlmdDMyKHNyYywgdHJ1c3RlZEltbTMyRm9yU2hpZnQoYW1vdW50
KSwgZGVzdCk7CiAgICAgfQorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisgICAgLy8gTGV0J3Mg
eW91IHByaW50IGZyb20geW91ciBKSVQgZ2VuZXJhdGVkIGNvZGUuCisgICAgLy8gU2VlIGNvbW1l
bnRzIGluIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGZvciBleGFtcGxlcyBvZiBob3cgdG8gdXNl
IHRoaXMuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgcHJp
bnQoQXJndW1lbnRzLi4uIGFyZ3MpOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uY3BwCShyZXZpc2lvbiAxODkxMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTk3
LDUxICs5Nyw2IEBAIHZvaWQgTWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMldpdGhVbmFsaWcKIAog
I2lmIEVOQUJMRShNQVNNX1BST0JFKQogCi0jZGVmaW5lIElOREVOVCBwcmludEluZGVudChpbmRl
bnRhdGlvbikKLQotdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6cHJpbnRDUFVSZWdpc3RlcnMoQ1BV
U3RhdGUmIGNwdSwgaW50IGluZGVudGF0aW9uKQotewotICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJ
U1RFUihfdHlwZSwgX3JlZ05hbWUpIHsgXAotICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRl
cnByZXRfY2FzdDxpbnQzMl90PihjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0
YUxvZ0YoIiU1czogMHglMDh4ICAlZFxuIiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAot
ICAgIH0KLSAgICBGT1JfRUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQotICAg
IEZPUl9FQUNIX0NQVV9TUEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCi0gICAgI3Vu
ZGVmIFBSSU5UX0dQUkVHSVNURVIKLQotICAgICNkZWZpbmUgUFJJTlRfRlBSRUdJU1RFUihfdHlw
ZSwgX3JlZ05hbWUpIHsgXAotICAgICAgICB1aW50NjRfdCogdSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDY0X3QqPigmY3B1Ll9yZWdOYW1lKTsgXAotICAgICAgICBkb3VibGUqIGQgPSByZWludGVy
cHJldF9jYXN0PGRvdWJsZSo+KCZjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0
YUxvZ0YoIiU1czogMHglMDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdOYW1lLCAqdSwgKmQpOyBcCi0g
ICAgfQotICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFBSSU5UX0ZQUkVHSVNURVIpCi0gICAg
I3VuZGVmIFBSSU5UX0ZQUkVHSVNURVIKLX0KLQotI3VuZGVmIElOREVOVAotCi12b2lkIE1hY3Jv
QXNzZW1ibGVyQVJNOjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNOjpDUFVTdGF0ZSYg
Y3B1LCBSZWdpc3RlcklEIHJlZ0lEKQotewotICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0
ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHZvaWQqIHZvaWRQ
dHI7Ci0gICAgICAgIGludHB0cl90IGludHB0clZhbHVlOwotICAgIH0gdTsKLSAgICB1LnZvaWRQ
dHIgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7Ci0gICAgZGF0YUxvZ0YoIiVzOjwlcCAlbGQ+
IiwgbmFtZSwgdS52b2lkUHRyLCB1LmludHB0clZhbHVlKTsKLX0KLQotdm9pZCBNYWNyb0Fzc2Vt
YmxlckFSTTo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTTo6Q1BVU3RhdGUmIGNwdSwg
RlBSZWdpc3RlcklEIHJlZ0lEKQotewotICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0ZTo6
cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKLSAgICB1bmlvbiB7Ci0gICAgICAgIGRvdWJsZSBkb3VibGVW
YWx1ZTsKLSAgICAgICAgdWludDY0X3QgdWludDY0VmFsdWU7Ci0gICAgfSB1OwotICAgIHUuZG91
YmxlVmFsdWUgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7Ci0gICAgZGF0YUxvZ0YoIiVzOjww
eCUwMTZsbHggJS4xM2c+IiwgbmFtZSwgdS51aW50NjRWYWx1ZSwgdS5kb3VibGVWYWx1ZSk7Ci19
Ci0KIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CiAKIC8vIEZvciBk
ZXRhaWxzIG9uICJXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHByb2JlPyIgYW5kICJXaGF0
IHZhbHVlcyBhcmUgaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLgog
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFVuaXZlcnNpdHkgb2YgU3plZ2VkCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTE0MzMsMTEgKzE0MzMsNiBAQCBwdWJsaWM6CiAgICAg
fQogCiAjaWYgRU5BQkxFKE1BU01fUFJPQkUpCi0gICAgLy8gTWV0aG9kcyByZXF1aXJlZCBieSB0
aGUgTUFTTV9QUk9CRSBtZWNoYW5pc20gYXMgZGVmaW5lZCBpbgotICAgIC8vIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaC4gCi0gICAgc3RhdGljIHZvaWQgcHJpbnRDUFVSZWdpc3RlcnMoQ1BVU3Rh
dGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKLSAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVy
KENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7Ci0gICAgc3RhdGljIHZvaWQgcHJpbnRSZWdpc3RlcihD
UFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2
b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BS
T0JFKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNdjcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzIsNTEgKzMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUo
TUFTTV9QUk9CRSkKIAotI2RlZmluZSBJTkRFTlQgcHJpbnRJbmRlbnQoaW5kZW50YXRpb24pCi0K
LXZvaWQgTWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJpbnRDUFVSZWdpc3RlcnMoQ1BVU3RhdGUmIGNw
dSwgaW50IGluZGVudGF0aW9uKQotewotICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlw
ZSwgX3JlZ05hbWUpIHsgXAotICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQzMl90PihjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1
czogMHglMDh4ICAlZFxuIiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAotICAgIH0KLSAg
ICBGT1JfRUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQotICAgIEZPUl9FQUNI
X0NQVV9TUEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCi0gICAgI3VuZGVmIFBSSU5U
X0dQUkVHSVNURVIKLQotICAgICNkZWZpbmUgUFJJTlRfRlBSRUdJU1RFUihfdHlwZSwgX3JlZ05h
bWUpIHsgXAotICAgICAgICB1aW50NjRfdCogdSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qq
PigmY3B1Ll9yZWdOYW1lKTsgXAotICAgICAgICBkb3VibGUqIGQgPSByZWludGVycHJldF9jYXN0
PGRvdWJsZSo+KCZjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1
czogMHglMDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdOYW1lLCAqdSwgKmQpOyBcCi0gICAgfQotICAg
IEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFBSSU5UX0ZQUkVHSVNURVIpCi0gICAgI3VuZGVmIFBS
SU5UX0ZQUkVHSVNURVIKLX0KLQotI3VuZGVmIElOREVOVAotCi12b2lkIE1hY3JvQXNzZW1ibGVy
QVJNdjc6OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk12Nzo6Q1BVU3RhdGUmIGNwdSwg
UmVnaXN0ZXJJRCByZWdJRCkKLXsKLSAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJl
Z2lzdGVyTmFtZShyZWdJRCk7Ci0gICAgdW5pb24gewotICAgICAgICB2b2lkKiB2b2lkUHRyOwot
ICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKLSAgICB9IHU7Ci0gICAgdS52b2lkUHRyID0g
Y3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOwotICAgIGRhdGFMb2dGKCIlczo8JXAgJWxkPiIsIG5h
bWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Ci19Ci0KLXZvaWQgTWFjcm9Bc3NlbWJsZXJB
Uk12Nzo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTXY3OjpDUFVTdGF0ZSYgY3B1LCBG
UFJlZ2lzdGVySUQgcmVnSUQpCi17Ci0gICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRlOjpy
ZWdpc3Rlck5hbWUocmVnSUQpOwotICAgIHVuaW9uIHsKLSAgICAgICAgZG91YmxlIGRvdWJsZVZh
bHVlOwotICAgICAgICB1aW50NjRfdCB1aW50NjRWYWx1ZTsKLSAgICB9IHU7Ci0gICAgdS5kb3Vi
bGVWYWx1ZSA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKLSAgICBkYXRhTG9nRigiJXM6PDB4
JTAxNmxseCAlLjEzZz4iLCBuYW1lLCB1LnVpbnQ2NFZhbHVlLCB1LmRvdWJsZVZhbHVlKTsKLX0K
LQogZXh0ZXJuICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAogLy8gRm9yIGRl
dGFpbHMgb24gIldoYXQgY29kZSBpcyBlbWl0dGVkIGZvciB0aGUgcHJvYmU/IiBhbmQgIldoYXQg
dmFsdWVzIGFyZSBpbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDE4OTEyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAxMCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMTkwMiwxMSArMTkwMiw2IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoTUFTTV9Q
Uk9CRSkKLSAgICAvLyBNZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlz
bSBhcyBkZWZpbmVkIGluCi0gICAgLy8gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oLiAKLSAgICBz
dGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYsIGludCBpbmRlbnRhdGlvbiA9
IDApOwotICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklE
KTsKLSAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiwgRlBSZWdpc3RlcklE
KTsKICAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rpb24sIHZvaWQqIGFyZzEgPSAwLCB2b2lkKiBh
cmcyID0gMCk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJp
bnRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgiCisKKyNpZiBF
TkFCTEUoTUFTTV9QUk9CRSkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCit1c2luZyBDUFVTdGF0ZSA9IE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTsK
K3VzaW5nIFByb2JlQ29udGV4dCA9IE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQ7Cit1c2lu
ZyBSZWdpc3RlcklEID0gTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ7Cit1c2luZyBGUFJlZ2lz
dGVySUQgPSBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEOworCisvLyBUaGVzZSBwcmludGVy
cyB3aWxsIHByaW50IGEgYmxvY2sgb2YgaW5mb3JtYXRpb24uIFRoYXQgYmxvY2sgbWF5IGJlCisv
LyBpbmRlbnRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW5kZW50YXRpb24uCit2b2lkIHByaW50Q1BV
KENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7Cit2b2lkIHByaW50Q1BVUmVnaXN0ZXJz
KENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7CisKKy8vIFRoZXNlIHByaW50ZXJzIHdp
bGwgcHJpbnQgdGhlIHNwZWNpZmllZCBpbmZvcm1hdGlvbiBpbiBsaW5lIGluIHRoZQorLy8gcHJp
bnQgc3RyZWFtLiBIZW5jZSwgbm8gaW5kZW50YXRpb24gd2lsbCBiZSBhcHBsaWVkLgordm9pZCBw
cmludFJlZ2lzdGVyKENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7Cit2b2lkIHByaW50UmVnaXN0ZXIo
Q1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQpOworICAgIAorc3RhdGljIHZvaWQgcHJpbnRJbmRlbnQo
aW50IGluZGVudGF0aW9uKQoreworICAgIGZvciAoOyBpbmRlbnRhdGlvbiA+IDA7IGluZGVudGF0
aW9uLS0pCisgICAgICAgIGRhdGFMb2coIiAgICAiKTsKK30KKworI2RlZmluZSBJTkRFTlQgcHJp
bnRJbmRlbnQoaW5kZW50YXRpb24pCisgICAgCit2b2lkIHByaW50Q1BVKENQVVN0YXRlJiBjcHUs
IGludCBpbmRlbnRhdGlvbikKK3sKKyAgICBJTkRFTlQsIGRhdGFMb2coImNwdToge1xuIik7Cisg
ICAgcHJpbnRDUFVSZWdpc3RlcnMoY3B1LCBpbmRlbnRhdGlvbiArIDEpOworICAgIElOREVOVCwg
ZGF0YUxvZygifVxuIik7Cit9CisKK3ZvaWQgcHJpbnRDUFVSZWdpc3RlcnMoQ1BVU3RhdGUmIGNw
dSwgaW50IGluZGVudGF0aW9uKQoreworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgI2RlZmlu
ZSBJTlRQVFJfSEVYX1ZBTFVFX0ZPUk1BVCAiMHglMDhseCIKKyNlbHNlCisgICAgI2RlZmluZSBJ
TlRQVFJfSEVYX1ZBTFVFX0ZPUk1BVCAiMHglMDE2bHgiCisjZW5kaWYKKworICAgICNkZWZpbmUg
UFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsgXAorICAgICAgICBpbnRwdHJfdCB2
YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNwdS5fcmVnTmFtZSk7IFwKKyAgICAg
ICAgSU5ERU5ULCBkYXRhTG9nRigiJTZzOiAiIElOVFBUUl9IRVhfVkFMVUVfRk9STUFUICIgICVs
ZFxuIiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9D
UFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgIEZPUl9FQUNIX0NQVV9TUEVDSUFM
X1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5UX0dQUkVHSVNURVIK
KyAgICAjdW5kZWYgSU5UUFRSX0hFWF9WQUxVRV9GT1JNQVQKKyAgICAKKyAgICAjZGVmaW5lIFBS
SU5UX0ZQUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSB7IFwKKyAgICAgICAgdWludDY0X3QqIHUg
PSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4oJmNwdS5fcmVnTmFtZSk7IFwKKyAgICAgICAg
ZG91YmxlKiBkID0gcmVpbnRlcnByZXRfY2FzdDxkb3VibGUqPigmY3B1Ll9yZWdOYW1lKTsgXAor
ICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCIlNnM6IDB4JTAxNmxseCAgJS4xM2dcbiIsICNfcmVn
TmFtZSwgKnUsICpkKTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklO
VF9GUFJFR0lTVEVSKQorICAgICN1bmRlZiBQUklOVF9GUFJFR0lTVEVSCit9CisKK3ZvaWQgcHJp
bnRSZWdpc3RlcihDUFVTdGF0ZSYgY3B1LCBSZWdpc3RlcklEIHJlZ0lEKQoreworICAgIGNvbnN0
IGNoYXIqIG5hbWUgPSBDUFVTdGF0ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKKyAgICB1bmlvbiB7
CisgICAgICAgIHZvaWQqIHZvaWRQdHI7CisgICAgICAgIGludHB0cl90IGludHB0clZhbHVlOwor
ICAgIH0gdTsKKyAgICB1LnZvaWRQdHIgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7CisgICAg
ZGF0YUxvZ0YoIiVzOjwlcCAlbGQ+IiwgbmFtZSwgdS52b2lkUHRyLCB1LmludHB0clZhbHVlKTsK
K30KKwordm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiBjcHUsIEZQUmVnaXN0ZXJJRCByZWdJ
RCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJ
RCk7CisgICAgdW5pb24geworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgICAgIHVp
bnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIH0gdTsKKyAgICB1LmRvdWJsZVZhbHVlID0gY3B1LnJl
Z2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8MHglMDE2bGx4ICUuMTNnPiIs
IG5hbWUsIHUudWludDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOworfQorCit2b2lkIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlcjo6cHJpbnRDYWxsYmFjayhQcm9iZUNvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgdHlwZWRlZiBQcmludEFyZyBBcmc7CisgICAgUHJpbnRBcmdzTGlzdCYgYXJnc0xpc3QgPQor
ICAgICpyZWludGVycHJldF9jYXN0PFByaW50QXJnc0xpc3QqPihjb250ZXh0LT5hcmcxKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3NMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAg
IGF1dG8mIGFyZyA9IGFyZ3NMaXN0W2ldOworICAgICAgICBzd2l0Y2ggKGFyZy50eXBlKSB7Cisg
ICAgICAgIGNhc2UgQXJnOjpUeXBlOjpBbGxSZWdpc3RlcnM6CisgICAgICAgICAgICBwcmludENQ
VShjb250ZXh0LT5jcHUsIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXJn
OjpUeXBlOjpSZWdpc3RlcklEOgorICAgICAgICAgICAgcHJpbnRSZWdpc3Rlcihjb250ZXh0LT5j
cHUsIGFyZy51LmdwUmVnaXN0ZXJJRCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBcmc6OlR5cGU6OkZQUmVnaXN0ZXJJRDoKKyAgICAgICAgICAgIHByaW50UmVnaXN0ZXIoY29u
dGV4dC0+Y3B1LCBhcmcudS5mcFJlZ2lzdGVySUQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQXJnOjpUeXBlOjpDb25zdENoYXJQdHI6CisgICAgICAgICAgICBkYXRhTG9nKGFy
Zy51LmNvbnN0Q2hhclB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcmc6
OlR5cGU6OkNvbnN0Vm9pZFB0cjoKKyAgICAgICAgICAgIGRhdGFMb2dGKCIlcCIsIGFyZy51LmNv
bnN0Vm9pZFB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcmc6OlR5cGU6
OkludHB0clZhbHVlOgorICAgICAgICAgICAgZGF0YUxvZyhhcmcudS5pbnRwdHJWYWx1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBcmc6OlR5cGU6OlVpbnRwdHJWYWx1ZToK
KyAgICAgICAgICAgIGRhdGFMb2coYXJnLnUudWludHB0clZhbHVlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShNQVNNX1BST0JFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUHJpbnRlci5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclByaW50ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWFjcm9Bc3NlbWJsZXJQcmludGVyX2gK
KyNkZWZpbmUgTWFjcm9Bc3NlbWJsZXJQcmludGVyX2gKKworI2lmIEVOQUJMRShNQVNNX1BST0JF
KQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKy8v
IFdoYXQgaXMgTWFjcm9Bc3NlbWJsZXI6OnByaW50KCk/CisvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CisvLyBUaGUgTWFjcm9Bc3NzZW1ibGVyOjpwcmludCgpIG1ha2VzIGl0IGVh
c3kgdG8gYWRkIHByaW50IGxvZ2dpbmcKKy8vIGZyb20gSklUIGNvbXBpbGVkIGNvZGUsIGFuZCBj
YW4gYmUgdXNlZCB0byBwcmludCBhbGwgdHlwZXMgb2YgdmFsdWVzCisvLyBhdCBydW50aW1lIGUu
Zy4gQ1BVIHJlZ2lzdGVyIHZhbHVlcyBiZWluZyBvcGVyYXRlZCBvbiBieSB0aGUgY29tcGlsZWQK
Ky8vIGNvZGUuCisvLworLy8gcHJpbnQoKSBpcyBidWlsdCBvbiB0b3Agb2YgTWFjcm9Bc3NzZW1i
bGVyOjpwcm9iZSgpLCBhbmQgaGVuY2UKKy8vIGluc2VydGluZyBsb2dnaW5nIGluIEpJVCBjb21w
aWxlZCBjb2RlIHdpbGwgbm90IHBlcnR1cmIgcmVnaXN0ZXIgdmFsdWVzLgorLy8gVGhlIG9ubHkg
cmVnaXN0ZXIgdmFsdWUgdGhhdCBpcyBwZXJ0dXJiZWQgaXMgdGhlIFBDIChwcm9ncmFtIGNvdW50
ZXIpCisvLyBzaW5jZSB0aGVyZSBpcyBub3cgbW9yZSBjb21waWxlZCBjb2RlIHRvIGRvIHRoZSBw
cmludGluZy4KKy8vCisvLyBIb3cgdG8gdXNlIHRoZSBNYWNyb0Fzc2VtYmxlciBwcmludCgpPwor
Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gMS4gI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIiBpbiB0aGUgSklUIGZpbGUgd2hlcmUgeW91IHdhbnQg
dG8gdXNlIHByaW50KCkuCisvLworLy8gMi4gQWRkIHByaW50KCkgY2FsbHMgbGlrZSB0aGVzZSBp
biB5b3VyIEpJVCBjb2RlOgorLy8KKy8vICAgICAgaml0LnByaW50KCJIZWxsbyB3b3JsZFxuIik7
IC8vIEVtaXRzIGNvZGUgdG8gcHJpbnQgdGhlIHN0cmluZy4KKy8vCisvLyAgICAgIENvZGVCbG9j
ayogY2IgPSAuLi47CisvLyAgICAgIGppdC5wcmludChjYiwgIlxuIik7ICAgICAgICAvLyBFbWl0
cyBjb2RlIHRvIHByaW50IHRoZSBwb2ludGVyIHZhbHVlLgorLy8KKy8vICAgICAgUmVnaXN0ZXJJ
RCByZWdJRCA9IC4uLjsKKy8vICAgICAgaml0LnByaW50KHJlZ0lELCAiXG4iKTsgICAgIC8vIEVt
aXRzIGNvZGUgdG8gcHJpbnQgdGhlIHJlZ2lzdGVyIHZhbHVlIChub3QgdGhlIGlkKS4KKy8vCisv
LyAgICAgIC8vIEVtaXRzIGNvZGUgdG8gcHJpbnQgYWxsIHJlZ2lzdGVycy4gVW5saWtlIG90aGVy
IGl0ZW1zLCB0aGlzIHByaW50cworLy8gICAgICAvLyBtdWx0aXBsZSBsaW5lcyBhcyBmb2xsb3dz
OgorLy8gICAgICAvLyAgICAgIGNwdSB7CisvLyAgICAgIC8vICAgICAgICAgIGVheDogMHgxMjM0
NTY3ODkKKy8vICAgICAgLy8gICAgICAgICAgZWJ4OiAweDAwMDAwMGFiYworLy8gICAgICAvLyAg
ICAgICAgICAuLi4KKy8vICAgICAgLy8gICAgICB9CisvLyAgICAgIGppdC5wcmludChBbGxSZWdp
c3RlcnMoKSk7CisvLworLy8gICAgICAvLyBQcmludCBtdWx0aXBsZSB0aGluZ3MgYXQgb25jZS4g
VGhpcyBpbmN1cnMgdGhlIHByb2JlIG92ZXJoZWFkIG9ubHkgb25jZQorLy8gICAgICAvLyB0byBw
cmludCBhbGwgdGhlIGl0ZW1zLgorLy8gICAgICBqaXQucHJpbnQoImNiOiIsIGNiLCAiIHJlZ0lE
OiIsIHJlZ0lELCAiIGNwdTpcbiIsIEFsbFJlZ2lzdGVycygpKTsKKy8vCisvLyAgIFRoZSB0eXBl
IG9mIHZhbHVlcyB0aGF0IGNhbiBiZSBwcmludGVkIGlzIGVuY2Fwc3VsYXRlZCBpbiB0aGUgUHJp
bnRBcmcgc3RydWN0IGJlbG93LgorLy8KKy8vICAgTm90ZTogcHJpbnQoKSBkb2VzIG5vdCBhdXRv
bWF0aWNhbGx5IGluc2VydCBhICdcbicgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KKy8vICAgSWYg
eW91IHdhbnQgYSAnXG4nLCB5b3UnbGwgaGF2ZSB0byBhZGQgaXQgZXhwbGljaXRseSAoYXMgaW4g
dGhlIGV4YW1wbGVzIGFib3ZlKS4KKworCisvLyBUaGlzIGlzIGEgbWFya2VyIHR5cGUgb25seSB1
c2VkIHdpdGggTWFjcm9Bc3NlbWJsZXJQcmludGVyOjpwcmludCgpLgorLy8gU2VlIE1hY3JvQXNz
ZW1ibGVyUHJpbnRlcjo6cHJpbnQoKSBiZWxvdyBmb3IgZGV0YWlscy4KK3N0cnVjdCBBbGxSZWdp
c3RlcnMgeyB9OworCitjbGFzcyBNYWNyb0Fzc2VtYmxlclByaW50ZXIgeworICAgIHVzaW5nIENQ
VVN0YXRlID0gTWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOworICAgIHVzaW5nIFByb2JlQ29udGV4
dCA9IE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQ7CisgICAgdXNpbmcgUmVnaXN0ZXJJRCA9
IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEOworICAgIHVzaW5nIEZQUmVnaXN0ZXJJRCA9IE1h
Y3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ7CisgICAgCitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyB2b2lkIHByaW50KE1hY3JvQXNzZW1i
bGVyKiBtYXNtLCBBcmd1bWVudHMuLi4gYXJncykKKyAgICB7CisgICAgICAgIGF1dG8gYXJnc0xp
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFByaW50QXJnc0xpc3Q+KCk7CisgICAgICAgIGFwcGVuZFBy
aW50QXJnKGFyZ3NMaXN0LmdldCgpLCBhcmdzLi4uKTsKKyAgICAgICAgbWFzbS0+cHJvYmUocHJp
bnRDYWxsYmFjaywgYXJnc0xpc3QucmVsZWFzZSgpKTsKKyAgICB9CisgICAgCitwcml2YXRlOgor
ICAgIHN0cnVjdCBQcmludEFyZyB7CisKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAg
ICAgICAgIEFsbFJlZ2lzdGVycywKKyAgICAgICAgICAgIFJlZ2lzdGVySUQsCisgICAgICAgICAg
ICBGUFJlZ2lzdGVySUQsCisgICAgICAgICAgICBDb25zdENoYXJQdHIsCisgICAgICAgICAgICBD
b25zdFZvaWRQdHIsCisgICAgICAgICAgICBJbnRwdHJWYWx1ZSwKKyAgICAgICAgICAgIFVpbnRw
dHJWYWx1ZSwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIFByaW50QXJnKEFsbFJlZ2lz
dGVycyYpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6QWxsUmVnaXN0ZXJzKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFByaW50QXJnKFJlZ2lzdGVySUQgcmVnSUQp
CisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6UmVnaXN0ZXJJRCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdS5ncFJlZ2lzdGVySUQgPSByZWdJRDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgUHJpbnRBcmcoRlBSZWdpc3RlcklEIHJlZ0lEKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6
OkZQUmVnaXN0ZXJJRCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5mcFJlZ2lzdGVySUQgPSBy
ZWdJRDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUHJpbnRBcmcoY29uc3QgY2hhciog
cHRyKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OkNvbnN0Q2hhclB0cikKKyAgICAgICAgewor
ICAgICAgICAgICAgdS5jb25zdENoYXJQdHIgPSBwdHI7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIFByaW50QXJnKGNvbnN0IHZvaWQqIHB0cikKKyAgICAgICAgICAgIDogdHlwZShUeXBl
OjpDb25zdFZvaWRQdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuY29uc3RWb2lkUHRyID0g
cHRyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBQcmludEFyZyhpbnQgdmFsdWUpCisg
ICAgICAgICAgICA6IHR5cGUoVHlwZTo6SW50cHRyVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
UHJpbnRBcmcodW5zaWduZWQgdmFsdWUpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6VWludHB0
clZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludHB0clZhbHVlID0gdmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFByaW50QXJnKGludHB0cl90IHZhbHVlKQorICAg
ICAgICAgICAgOiB0eXBlKFR5cGU6OkludHB0clZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICB1LmludHB0clZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFBy
aW50QXJnKHVpbnRwdHJfdCB2YWx1ZSkKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpVaW50cHRy
VmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUudWludHB0clZhbHVlID0gdmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgdW5pb24gewor
ICAgICAgICAgICAgUmVnaXN0ZXJJRCBncFJlZ2lzdGVySUQ7CisgICAgICAgICAgICBGUFJlZ2lz
dGVySUQgZnBSZWdpc3RlcklEOworICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3RDaGFyUHRy
OworICAgICAgICAgICAgY29uc3Qgdm9pZCogY29uc3RWb2lkUHRyOworICAgICAgICAgICAgaW50
cHRyX3QgaW50cHRyVmFsdWU7CisgICAgICAgICAgICB1aW50cHRyX3QgdWludHB0clZhbHVlOwor
ICAgICAgICB9IHU7CisgICAgfTsKKworICAgIHR5cGVkZWYgVmVjdG9yPFByaW50QXJnPiBQcmlu
dEFyZ3NMaXN0OworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZpcnN0QXJnLCB0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIHZvaWQgYXBwZW5kUHJpbnRBcmcoUHJpbnRBcmdz
TGlzdCogYXJnc0xpc3QsIEZpcnN0QXJnJiBmaXJzdEFyZywgQXJndW1lbnRzLi4uIG90aGVyQXJn
cykKKyAgICB7CisgICAgICAgIGFyZ3NMaXN0LT5hcHBlbmQoUHJpbnRBcmcoZmlyc3RBcmcpKTsK
KyAgICAgICAgYXBwZW5kUHJpbnRBcmcoYXJnc0xpc3QsIG90aGVyQXJncy4uLik7CisgICAgfQor
ICAgIAorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFByaW50QXJnKFByaW50QXJnc0xpc3QqKSB7IH0K
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBwcmludENhbGxiYWNrKFByb2JlQ29udGV4dCop
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBNYWNyb0Fzc2Vt
Ymxlcjo6cHJpbnQoQXJndW1lbnRzLi4uIGFyZ3MpCit7CisgICAgTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyOjpwcmludCh0aGlzLCBhcmdzLi4uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworI2VuZGlmIC8vIE1hY3JvQXNzZW1ibGVyUHJp
bnRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNwcAkocmV2aXNpb24gMTg5MTI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNTggKzMyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKIAotI2RlZmluZSBJTkRFTlQgcHJpbnRJbmRlbnQoaW5k
ZW50YXRpb24pCi0KLXZvaWQgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50Q1BVUmVnaXN0
ZXJzKE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpDUFVTdGF0ZSYgY3B1LCBpbnQgaW5kZW50YXRp
b24pCi17Ci0jaWYgQ1BVKFg4NikKLSAgICAjZGVmaW5lIFBSSU5UX0dQUkVHSVNURVIoX3R5cGUs
IF9yZWdOYW1lKSB7IFwKLSAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50MzJfdD4oY3B1Ll9yZWdOYW1lKTsgXAotICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCIlNnM6
IDB4JTA4eCAgJWRcbiIsICNfcmVnTmFtZSwgdmFsdWUsIHZhbHVlKSA7IFwKLSAgICB9Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05h
bWUpIHsgXAotICAgICAgICBpbnQ2NF90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ2NF90
PihjcHUuX3JlZ05hbWUpOyBcCi0gICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU2czogMHglMDE2
bGx4ICAlbGxkXG4iLCAjX3JlZ05hbWUsIHZhbHVlLCB2YWx1ZSkgOyBcCi0gICAgfQotI2VuZGlm
Ci0gICAgRk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKLSAgICBGT1Jf
RUFDSF9DUFVfU1BFQ0lBTF9SRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQotICAgICN1bmRlZiBQ
UklOVF9HUFJFR0lTVEVSCi0KLSAgICAjZGVmaW5lIFBSSU5UX0ZQUkVHSVNURVIoX3R5cGUsIF9y
ZWdOYW1lKSB7IFwKLSAgICAgICAgdWludDY0X3QqIHUgPSByZWludGVycHJldF9jYXN0PHVpbnQ2
NF90Kj4oJmNwdS5fcmVnTmFtZSk7IFwKLSAgICAgICAgZG91YmxlKiBkID0gcmVpbnRlcnByZXRf
Y2FzdDxkb3VibGUqPigmY3B1Ll9yZWdOYW1lKTsgXAotICAgICAgICBJTkRFTlQsIGRhdGFMb2dG
KCIlNnM6IDB4JTAxNmxseCAgJS4xM2dcbiIsICNfcmVnTmFtZSwgKnUsICpkKTsgXAotICAgIH0K
LSAgICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklOVF9GUFJFR0lTVEVSKQotICAgICN1bmRl
ZiBQUklOVF9GUFJFR0lTVEVSCi19Ci0KLSN1bmRlZiBJTkRFTlQKLQotdm9pZCBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6Q1BV
U3RhdGUmIGNwdSwgUmVnaXN0ZXJJRCByZWdJRCkKLXsKLSAgICBjb25zdCBjaGFyKiBuYW1lID0g
Q1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7Ci0gICAgdW5pb24gewotICAgICAgICB2b2lk
KiB2b2lkUHRyOwotICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKLSAgICB9IHU7Ci0gICAg
dS52b2lkUHRyID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOwotICAgIGRhdGFMb2dGKCIlczo8
JXAgJWxkPiIsIG5hbWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Ci19Ci0KLXZvaWQgTWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJYODZDb21t
b246OkNQVVN0YXRlJiBjcHUsIEZQUmVnaXN0ZXJJRCByZWdJRCkKLXsKLSAgICBjb25zdCBjaGFy
KiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7Ci0gICAgdW5pb24gewotICAg
ICAgICBkb3VibGUgZG91YmxlVmFsdWU7Ci0gICAgICAgIHVpbnQ2NF90IHVpbnQ2NFZhbHVlOwot
ICAgIH0gdTsKLSAgICB1LmRvdWJsZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOwot
ICAgIGRhdGFMb2dGKCIlczo8MHglMDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWludDY0VmFsdWUs
IHUuZG91YmxlVmFsdWUpOwotfQotCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBv
bGluZSgpOwogCiAvLyBXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHByb2JlPwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTg5MTI0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE0OTEsMTEgKzE0OTEsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgRU5BQkxF
KE1BU01fUFJPQkUpCi0gICAgLy8gTWV0aG9kcyByZXF1aXJlZCBieSB0aGUgTUFTTV9QUk9CRSBt
ZWNoYW5pc20gYXMgZGVmaW5lZCBpbgotICAgIC8vIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaC4g
Ci0gICAgc3RhdGljIHZvaWQgcHJpbnRDUFVSZWdpc3RlcnMoQ1BVU3RhdGUmLCBpbnQgaW5kZW50
YXRpb24gPSAwKTsKLSAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiwgUmVn
aXN0ZXJJRCk7Ci0gICAgc3RhdGljIHZvaWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIEZQUmVn
aXN0ZXJJRCk7CiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBhcmcxID0gMCwg
dm9pZCogYXJnMiA9IDApOwogI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCg==
</data>
<flag name="review"
          id="285388"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>