<?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>103000</bug_id>
          
          <creation_ts>2012-11-21 18:16:27 -0800</creation_ts>
          <short_desc>Any function that can log things should be able to easily log them to a memory buffer as well</short_desc>
          <delta_ts>2012-11-23 19:17:52 -0800</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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>102999</blocked>
    
    <blocked>103009</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>ojan</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>773463</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 18:16:27 -0800</bug_when>
    <thetext>So anytime that we can do:

thing-&gt;dump();

We should be able to *also* optionally do something like:

StringStream stream;
thing-&gt;dump(stream);
String string = stream.string();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773518</commentid>
    <comment_count>1</comment_count>
      <attachid>175573</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 20:12:53 -0800</bug_when>
    <thetext>Created attachment 175573
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773530</commentid>
    <comment_count>2</comment_count>
      <attachid>175577</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 20:47:05 -0800</bug_when>
    <thetext>Created attachment 175577
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773531</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 20:49:15 -0800</bug_when>
    <thetext>Attachment 175577 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/WTF/wtf/DataLog.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/PrintStream.h:85:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WTF/wtf/PrintStream.cpp:101:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773537</commentid>
    <comment_count>4</comment_count>
      <attachid>175577</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-21 20:55:58 -0800</bug_when>
    <thetext>Comment on attachment 175577
the patch

Attachment 175577 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14969200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773539</commentid>
    <comment_count>5</comment_count>
      <attachid>175577</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-21 20:58:56 -0800</bug_when>
    <thetext>Comment on attachment 175577
the patch

Attachment 175577 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14962232</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773540</commentid>
    <comment_count>6</comment_count>
      <attachid>175581</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 21:06:31 -0800</bug_when>
    <thetext>Created attachment 175581
the patch

Rabased and fixed some #include bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773542</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-21 21:09:21 -0800</bug_when>
    <thetext>Attachment 175581 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/WTF/wtf/DataLog.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WTF/wtf/PrintStream.h:85:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WTF/wtf/PrintStream.cpp:101:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 3 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773543</commentid>
    <comment_count>8</comment_count>
      <attachid>175582</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-21 21:15:14 -0800</bug_when>
    <thetext>Created attachment 175582
the patch

Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773598</commentid>
    <comment_count>9</comment_count>
      <attachid>175582</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-21 23:03:56 -0800</bug_when>
    <thetext>Comment on attachment 175582
the patch

Attachment 175582 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14966224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773623</commentid>
    <comment_count>10</comment_count>
      <attachid>175582</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-21 23:36:12 -0800</bug_when>
    <thetext>Comment on attachment 175582
the patch

Attachment 175582 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14969237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773662</commentid>
    <comment_count>11</comment_count>
      <attachid>175603</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-22 00:09:26 -0800</bug_when>
    <thetext>Created attachment 175603
the patch

More build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773936</commentid>
    <comment_count>12</comment_count>
      <attachid>175603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-22 07:10:33 -0800</bug_when>
    <thetext>Comment on attachment 175603
the patch

Attachment 175603 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14967379

New failing tests:
platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774180</commentid>
    <comment_count>13</comment_count>
      <attachid>175728</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-22 20:18:47 -0800</bug_when>
    <thetext>Created attachment 175728
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774748</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-23 19:17:52 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/135640</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175573</attachid>
            <date>2012-11-21 20:12:53 -0800</date>
            <delta_ts>2012-11-21 20:47:05 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>44604</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBkdW1wT3BlcmFuZHMoKSBjbGFpbXMgdGhhdCBpdCBuZWVkcyBhIG5vbi1jb25zdCBPcGVy
YW5kcyYgd2hlbiB0aGF0IGlzIGNvbXBsZXRlbHkgZmFsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCShyZXZpc2lvbiAxMzUzNTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKLQorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Myw3ICs0Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBPcGVyYW5kVmFsdWUKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgT3Bl
cmFuZFZhbHVlVHJhaXRzIHsKICAgICBzdGF0aWMgVCBkZWZhdWx0VmFsdWUoKSB7IHJldHVybiBU
KCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IFQmIHZhbHVlLCBGSUxFKiBvdXQpIHsg
dmFsdWUuZHVtcChvdXQpOyB9CisgICAgc3RhdGljIHZvaWQgZHVtcChjb25zdCBUJiB2YWx1ZSwg
UHJpbnRTdHJlYW0mIG91dCkgeyB2YWx1ZS5kdW1wKG91dCk7IH0KIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IE9wZXJhbmRWYWx1ZVRyYWl0czxUPiA+CkBAIC0x
OTAsMzEgKzE5MCwyMSBAQCBwcml2YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVHJhaXRzPgotdm9pZCBkdW1wT3BlcmFuZHMoT3BlcmFuZHM8VCwgVHJhaXRzPiYgb3Bl
cmFuZHMsIEZJTEUqIG91dCkKK3ZvaWQgZHVtcE9wZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRy
YWl0cz4mIG9wZXJhbmRzLCBQcmludFN0cmVhbSYgb3V0KQogewogICAgIGZvciAoc2l6ZV90IGFy
Z3VtZW50ID0gMDsgYXJndW1lbnQgPCBvcGVyYW5kcy5udW1iZXJPZkFyZ3VtZW50cygpOyArK2Fy
Z3VtZW50KSB7CiAgICAgICAgIGlmIChhcmd1bWVudCkKLSAgICAgICAgICAgIGZwcmludGYob3V0
LCAiICIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICIpOwogICAgICAgICBUcmFpdHM6OmR1
bXAob3BlcmFuZHMuYXJndW1lbnQoYXJndW1lbnQpLCBvdXQpOwogICAgIH0KLSAgICBmcHJpbnRm
KG91dCwgIiA6ICIpOworICAgIG91dC5wcmludGYoIiA6ICIpOwogICAgIGZvciAoc2l6ZV90IGxv
Y2FsID0gMDsgbG9jYWwgPCBvcGVyYW5kcy5udW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7CiAg
ICAgICAgIGlmIChsb2NhbCkKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiICIpOwogICAgICAgICBUcmFpdHM6OmR1bXAob3BlcmFuZHMubG9j
YWwobG9jYWwpLCBvdXQpOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVHJhaXRzPgotdm9pZCBkdW1wT3BlcmFuZHMoY29uc3QgT3BlcmFuZHM8VCwgVHJhaXRzPiYg
b3BlcmFuZHMsIEZJTEUqIG91dCkKLXsKLSAgICAvLyBVc2UgY29uc3QtY2FzdCBiZWNhdXNlOgot
ICAgIC8vIDEpIEkgZG9uJ3QgZmVlbCBsaWtlIHdyaXRpbmcgdGhpcyBjb2RlIHR3aWNlLCBhbmQK
LSAgICAvLyAyKSBTb21lIGR1bXAoKSBtZXRob2RzIG1heSBub3QgYmUgY29uc3QsIGFuZCBJIGRv
bid0IHJlYWxseSBjYXJlIGlmIHRoYXQncwotICAgIC8vICAgIHRoZSBjYXNlLgotICAgIGR1bXBP
cGVyYW5kcygqY29uc3RfY2FzdDxPcGVyYW5kczxULCBUcmFpdHM+Kj4oJm9wZXJhbmRzKSwgb3V0
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBPcGVyYW5kc19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJl
dmlzaW9uIDEzNTM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBAIGlubGluZSBib29s
IEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVzdGluYXRpb24ubWVy
Z2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJTEUqIG91dCkKK3Zv
aWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewogICAgIGJvb2wgZmly
c3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9jay0+c2l6ZSgpOyAr
K2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChGSUxF
KiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwotICAgICAgICBmcHJp
bnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5kZXgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50ZigiQCVsdToiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2YWx1ZS5kdW1wKG91
dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyArMTgwLDcgQEAg
cHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wgbWVyZ2VUb1N1Y2Nl
c3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqIG91
dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAogcHJpdmF0ZToKICAg
ICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWduZWQgaW5kZXhJbkJs
b2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5oCShyZXZpc2lvbiAxMzUzNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEsMTUgQEAgc3RydWN0
IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRoZSBjb2RlLgogICAg
IH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50ZihvdXQsICIoJXMs
ICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9kZXNUb1N0cmluZyht
X2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywgIiwgc3BlY3VsYXRp
b25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJheU1vZGVzKSk7CiAg
ICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAgICAgICAgZGF0YUxv
ZygiLCAiKTsKKyAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKICAgICAgICAgbV9mdXR1cmVQb3Nz
aWJsZVN0cnVjdHVyZS5kdW1wKG91dCk7CiAgICAgICAgIGlmICghIW1fdmFsdWUpCi0gICAgICAg
ICAgICBmcHJpbnRmKG91dCwgIiwgJXMiLCBtX3ZhbHVlLmRlc2NyaXB0aW9uKCkpOwotICAgICAg
ICBmcHJpbnRmKG91dCwgIikiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiwgJXMiLCBtX3Zh
bHVlLmRlc2NyaXB0aW9uKCkpOworICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogICAg
IAogICAgIC8vIEEgZ3JlYXQgd2F5IHRvIHRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbmNlIGJldHdl
ZW4gbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDEzNTM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDEyICs5MiwxMiBAQCBzdGF0
aWMgY29uc3QgQmxvY2tJbmRleCBOb0Jsb2NrID0gVUlOVF9NCiAKIHN0cnVjdCBOb2RlSW5kZXhU
cmFpdHMgewogICAgIHN0YXRpYyBOb2RlSW5kZXggZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gTm9O
b2RlOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIEZJTEUqIG91dCkK
KyAgICBzdGF0aWMgdm9pZCBkdW1wKE5vZGVJbmRleCB2YWx1ZSwgUHJpbnRTdHJlYW0mIG91dCkK
ICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOb05vZGUpCi0gICAgICAgICAgICBmcHJpbnRm
KG91dCwgIi0iKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIi0iKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZnByaW50ZihvdXQsICJAJXUiLCB2YWx1ZSk7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJAJXUiLCB2YWx1ZSk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlz
aW9uIDEzNTM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTgsMTcgKzI5OCwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKICAgICB9
CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqIG91dCkgY29uc3QKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc1RvcCgpKSB7Ci0gICAg
ICAgICAgICBmcHJpbnRmKG91dCwgIlRPUCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiVE9Q
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGZw
cmludGYob3V0LCAiWyIpOworICAgICAgICBvdXQucHJpbnRmKCJbIik7CiAgICAgICAgIGlmICht
X3N0cnVjdHVyZSkKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiJXAiLCBtX3N0cnVjdHVyZSk7
Ci0gICAgICAgIGZwcmludGYob3V0LCAiXSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXAi
LCBtX3N0cnVjdHVyZSk7CisgICAgICAgIG91dC5wcmludGYoIl0iKTsKICAgICB9CiAKIHByaXZh
dGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVu
dC5jcHAJKHJldmlzaW9uIDEzNTM1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyaWFibGVFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXZvaWQgVmFyaWFibGVFdmVudDo6ZHVt
cChGSUxFKiBvdXQpIGNvbnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGtpbmQoKSkgewogICAgIGNhc2UgUmVzZXQ6Ci0g
ICAgICAgIGZwcmludGYob3V0LCAiUmVzZXQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiUmVzZXQi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCaXJ0aFRvRmlsbDoKICAgICAgICAgZHVtcEZp
bGxJbmZvKCJCaXJ0aFRvRmlsbCIsIG91dCk7CkBAIC01MiwxMyArNTIsMTMgQEAgdm9pZCBWYXJp
YWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgICAgICBkdW1wU3BpbGxJbmZvKCJT
cGlsbCIsIG91dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGVhdGg6Ci0gICAgICAgIGZw
cmludGYob3V0LCAiRGVhdGgoQCV1KSIsIG5vZGVJbmRleCgpKTsKKyAgICAgICAgb3V0LnByaW50
ZigiRGVhdGgoQCV1KSIsIG5vZGVJbmRleCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
b3ZIaW50OgotICAgICAgICBmcHJpbnRmKG91dCwgIk1vdkhpbnQoQCV1LCByJWQpIiwgbm9kZUlu
ZGV4KCksIG9wZXJhbmQoKSk7CisgICAgICAgIG91dC5wcmludGYoIk1vdkhpbnQoQCV1LCByJWQp
Iiwgbm9kZUluZGV4KCksIG9wZXJhbmQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0
TG9jYWxFdmVudDoKLSAgICAgICAgZnByaW50ZihvdXQsICJTZXRMb2NhbChyJWQsICVzKSIsIG9w
ZXJhbmQoKSwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFGb3JtYXQoKSkpOworICAgICAgICBvdXQu
cHJpbnRmKCJTZXRMb2NhbChyJWQsICVzKSIsIG9wZXJhbmQoKSwgZGF0YUZvcm1hdFRvU3RyaW5n
KGRhdGFGb3JtYXQoKSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY2LDIzICs2NiwyMyBAQCB2b2lkIFZhcmlhYmxlRXZl
bnQ6OmR1bXAoRklMRSogb3V0KSBjb25zCiAgICAgfQogfQogCi12b2lkIFZhcmlhYmxlRXZlbnQ6
OmR1bXBGaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNvbnN0Cit2b2lkIFZh
cmlhYmxlRXZlbnQ6OmR1bXBGaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewotICAgIGZwcmludGYob3V0LCAiJXMoQCV1LCAiLCBuYW1lLCBub2RlSW5k
ZXgoKSk7CisgICAgb3V0LnByaW50ZigiJXMoQCV1LCAiLCBuYW1lLCBub2RlSW5kZXgoKSk7CiAg
ICAgaWYgKGRhdGFGb3JtYXQoKSA9PSBEYXRhRm9ybWF0RG91YmxlKQotICAgICAgICBmcHJpbnRm
KG91dCwgIiVzIiwgRlBSSW5mbzo6ZGVidWdOYW1lKGZwcigpKSk7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzIiwgRlBSSW5mbzo6ZGVidWdOYW1lKGZwcigpKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBlbHNlIGlmIChkYXRhRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpCi0gICAgICAgIGZw
cmludGYob3V0LCAiJXM6JXMiLCBHUFJJbmZvOjpkZWJ1Z05hbWUodGFnR1BSKCkpLCBHUFJJbmZv
OjpkZWJ1Z05hbWUocGF5bG9hZEdQUigpKSk7CisgICAgICAgIG91dC5wcmludGYoIiVzOiVzIiwg
R1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQUigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRH
UFIoKSkpOwogI2VuZGlmCiAgICAgZWxzZQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzIiwgR1BS
SW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7Ci0gICAgZnByaW50ZihvdXQsICIsICVzKSIsIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMiLCBH
UFJJbmZvOjpkZWJ1Z05hbWUoZ3ByKCkpKTsKKyAgICBvdXQucHJpbnRmKCIsICVzKSIsIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKIH0KIAotdm9pZCBWYXJpYWJsZUV2ZW50Ojpk
dW1wU3BpbGxJbmZvKGNvbnN0IGNoYXIqIG5hbWUsIEZJTEUqIG91dCkgY29uc3QKK3ZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogewotICAgIGZwcmludGYob3V0LCAiJXMoQCV1LCByJWQsICVzKSIsIG5hbWUs
IG5vZGVJbmRleCgpLCB2aXJ0dWFsUmVnaXN0ZXIoKSwgZGF0YUZvcm1hdFRvU3RyaW5nKGRhdGFG
b3JtYXQoKSkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgciVkLCAlcykiLCBuYW1lLCBub2Rl
SW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0
KCkpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUV2ZW50LmgJKHJldmlzaW9uIDEzNTM1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDAsMTEgKzI0MCwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgY29uc3QgVmFyaWFi
bGVSZXByZXNlbnRhdGlvbiYgdmFyaWFibGVSZXByZXNlbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHU7IH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSopIGNvbnN0OworICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIGR1bXBGaWxsSW5m
byhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7Ci0gICAgdm9pZCBkdW1wU3BpbGxJbmZv
KGNvbnN0IGNoYXIqIG5hbWUsIEZJTEUqKSBjb25zdDsKKyAgICB2b2lkIGR1bXBGaWxsSW5mbyhj
b25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYpIGNvbnN0OworICAgIHZvaWQgZHVtcFNwaWxs
SW5mbyhjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIE5v
ZGVJbmRleCBtX2luZGV4OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzUzNTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxOCArMjYsMTcgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUg
RGlzYXNzZW1ibGVyX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOwogCiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwg
RklMRSogb3V0KTsKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKICNlbHNl
Ci1pbmxpbmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYsIHNpemVfdCwgY29uc3QgY2hhciosIEZJTEUqKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3Nl
bWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBQ
cmludFN0cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVy
LmNwcAkocmV2aXNpb24gMTM1MzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1ib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJl
Zml4LCBGSUxFKiBvdXQpCitib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmlu
dFN0cmVhbSYgb3V0KQogewogICAgIHVkX3QgZGlzYXNzZW1ibGVyOwogICAgIHVkX2luaXQoJmRp
c2Fzc2VtYmxlcik7CkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25z
dCBNYWNyb0Fzc2VtYmwKICAgICB3aGlsZSAodWRfZGlzYXNzZW1ibGUoJmRpc2Fzc2VtYmxlcikp
IHsKICAgICAgICAgY2hhciBwY1N0cmluZ1syMF07CiAgICAgICAgIHNucHJpbnRmKHBjU3RyaW5n
LCBzaXplb2YocGNTdHJpbmcpLCAiMHglbHgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihj
dXJyZW50UEMpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIlcyUxNnM6ICVzXG4iLCBwcmVmaXgs
IHBjU3RyaW5nLCB1ZF9pbnNuX2FzbSgmZGlzYXNzZW1ibGVyKSk7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNTdHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3Nl
bWJsZXIpKTsKICAgICAgICAgY3VycmVudFBDID0gZGlzYXNzZW1ibGVyLnBjOwogICAgIH0KICAg
ICAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzU0NjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGlu
Z3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBh
cyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDMwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBoYXZlIGEgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB3ZSBwYXNzIGFyb3VuZCBhIEZJTEUqIGFz
IGEgdGFyZ2V0IHRvIHdoaWNoIHRvIHByaW50CisgICAgICAgIHNvbWUgbG9nZ2luZyBpbmZvcm1h
dGlvbi4gQnV0IHRoZSBwdXJwb3NlIG9mIHBhc3NpbmcgRklMRSogaW5zdGVhZCBvZiBhbHdheXMg
YXNzdW1pbmcKKyAgICAgICAgdGhhdCB3ZSBzaG91bGQgZHVtcCB0byBzdGRlcnIgaXMgdGhhdCBp
dCBtYXkgYmUgc29tZXRpbWVzIHVzZWZ1bCB0byBzZW5kIHRoZSBsb2dnaW5nCisgICAgICAgIGlu
Zm9ybWF0aW9uIGVsc3doZXJlLiBVbmZvcnR1bmF0ZWx5LCBGSUxFKiBpc24ndCBxdWl0ZSBwb3dl
cmZ1bCBlbm91Z2g6IGl0J3MgY29tYmVyc29tZQorICAgICAgICB0byB1c2UgaXQgdG8gc2VuZCBs
b2dnaW5nIHRvIGEgc3RyaW5nLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgCisgICAgICAgIFdlIGNv
dWxkIGdldCBhcm91bmQgdGhpcyBieSB1c2luZyA8aW9zdHJlYW0+IGFuZCA8c3N0cmVhbT4sIGJ1
dCBzbyBmYXIgdGhpcyBhc3BlY3Qgb2YKKyAgICAgICAgQysrIGhhcyBub3QgYmVlbiBwYXJ0IG9m
IHRoZSBXZWJLaXQgY29kaW5nIGNvbnZlbnRpb25zLiBQZXJzb25hbGx5IEkgZmluZCA8aW9zdHJl
YW0+CisgICAgICAgIGF3a3dhcmQgZHVlIHRvIGl0cyBhYnVzZSBvZiBvcGVyYXRvciBvdmVybG9h
ZGluZy4KKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3
IGNsb3NlbHkgcmVsYXRlZCBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgCisgICAg
ICAgIDEpIFRoZSBQcmludFN0cmVhbSBhYnN0cmFjdCBjbGFzcywgd2hpY2ggb2ZmZXJzIHByaW50
Zi1saWtlIGZ1bmN0aW9uYWxpdHkgd2hpbGUKKyAgICAgICAgICAgY29tcGxldGVseSBhYnN0cmFj
dGluZyB0aGUgZGVzdGluYXRpb24gYW5kIG1lY2hhbmlzbSBvZiB0aGUgcHJpbnRpbmcgb3V0cHV0
LiBJdAorICAgICAgICAgICB3b3VsZCBiZSB0cml2aWFsIHRvIGltcGxlbWVudCBhIFN0cmluZ1By
aW50U3RyZWFtLCBmb3IgZXhhbXBsZS4gVGhpcyB3aWxsIGZlZWQKKyAgICAgICAgICAgaW50byB3
b3JrIG9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5OTkKKyAg
ICAgICAgCisgICAgICAgIDIpIFRlbXBsYXRpemVkIHByaW50KCkgYW5kIHByaW50bG4oKSBtZXRo
b2RzIHRoYXQgYWxsb3cgc2F5aW5nIHRoaW5ncyBsaWtlCisgICAgICAgICAgIHByaW50bG4ob3V0
LCAiY291bnQgPSAiLCBjb3VudCkuIFRoaXMgd2lsbCBmZWVkIGludG8gd29yayBvbgorICAgICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDA5CisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hhbmdlcyBkYXRhTG9nKCkgdG8gdXNlIEZp
bGVQcmludFN0cmVhbSBpbnRlcm5hbGx5LCBhbmQgV1RGOjpkYXRhRmlsZSgpCisgICAgICAgIG5v
dyByZXR1cm5zIGEgRmlsZVByaW50U3RyZWFtJi4gQW55IHByZXZpb3VzIHVzZXJzIG9mIFdURjo6
ZGF0YUZpbGUoKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBleHBlY3QgYSBQcmludFN0
cmVhbSYuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5w
cm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpp
bml0aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTG9nRmlsZSk6
CisgICAgICAgIChXVEY6OmRhdGFGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0YUxvZ1YpOgorICAg
ICAgICAoV1RGOjpkYXRhTG9nU3RyaW5nKToKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5oOgorICAg
ICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDogQWRkZWQuCisg
ICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OkZpbGVQcmludFN0
cmVhbSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6fkZpbGVQcmludFN0cmVhbSk6
CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6
OkZpbGVQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0u
aDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoRmlsZVByaW50U3RyZWFtKToKKyAg
ICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpmaWxlKToKKyAgICAgICAgKiB3dGYvUHJpbnRT
dHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OlByaW50U3Ry
ZWFtOjpQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjp+UHJpbnRTdHJl
YW0pOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRmKToKKyAgICAgICAgKFdURjo6
UHJpbnRTdHJlYW06OnByaW50KToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50bG4p
OgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAoV1RGOjpwcmlu
dCk6CisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKFByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6cHJpbnQpOgorICAgICAgICAo
V1RGOjpwcmludGxuKToKKyAgICAgICAgKiB3dGYvUmF3UG9pbnRlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdURik6CisgICAgICAgIChSYXdQb2ludGVyKToKKyAgICAgICAgKFdURjo6UmF3UG9pbnRl
cjo6UmF3UG9pbnRlcik6CisgICAgICAgIChXVEY6OlJhd1BvaW50ZXI6OnZhbHVlKToKKwogMjAx
Mi0xMS0yMSAgQW50aG9ueSBHLiBCYXNpbGUgIDxibHVlbmVzc0BnZW50b28ub3JnPgogCiAgICAg
ICAgIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwOiBmaXggYnVpbGQgb24gYSB1Q2xpYmMg
c3lzdGVtCkluZGV4OiBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzUzNTQpCisrKyBT
b3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDggQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aCBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAgXAogICAgIFNvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaCBcCisgICAgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNw
cCBcCisgICAgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL0ZpeGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvRmxvYXQzMkFycmF5Lmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oIFwKQEAgLTEyNiw5ICsxMjgsMTIg
QEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1Bhc3NUcmFpdHMuaCBcCiAg
ICAgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBcCiAgICAgU291cmNlL1dURi93dGYvUG9zc2li
bHlOdWxsLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcCBcCisgICAgU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvUmFuZG9tTnVt
YmVyLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvUmFuZG9tTnVtYmVyLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL1JhbmRvbU51bWJlclNlZWQuaCBcCisgICAgU291cmNlL1dURi93dGYvUmF3UG9p
bnRlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SZWRCbGFja1RyZWUuaCBcCiAgICAgU291cmNl
L1dURi93dGYvUmVmQ291bnRlZC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJy
YXkuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9XVEYucHJvCShyZXZpc2lvbiAxMzUzNTQpCisrKyBTb3VyY2UvV1RGL1dURi5wcm8JKHdvcmtp
bmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgRXhwb3J0TWFjcm9z
LmggXAogICAgIEZhc3RBbGxvY0Jhc2UuaCBcCiAgICAgRmFzdE1hbGxvYy5oIFwKKyAgICBGaWxl
UHJpbnRTdHJlYW0uaCBcCiAgICAgRml4ZWRBcnJheS5oIFwKICAgICBGbG9hdDMyQXJyYXkuaCBc
CiAgICAgRmxvYXQ2NEFycmF5LmggXApAQCAtMTI2LDggKzEyNywxMCBAQCBIRUFERVJTICs9IFwK
ICAgICBQYXNzVHJhaXRzLmggXAogICAgIFBsYXRmb3JtLmggXAogICAgIFBvc3NpYmx5TnVsbC5o
IFwKKyAgICBQcmludFN0cmVhbS5oIFwKICAgICBSYW5kb21OdW1iZXIuaCBcCiAgICAgUmFuZG9t
TnVtYmVyU2VlZC5oIFwKKyAgICBSYXdQb2ludGVyLmggXAogICAgIFJlZEJsYWNrVHJlZS5oIFwK
ICAgICBSZWZDb3VudGVkLmggXAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oIFwKQEAgLTIw
Nyw2ICsyMTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkdG9hL2ZpeGVkLWR0b2EuY2MgXAogICAg
IGR0b2Evc3RydG9kLmNjIFwKICAgICBGYXN0TWFsbG9jLmNwcCBcCisgICAgRmlsZVByaW50U3Ry
ZWFtLmNwcCBcCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIFwKICAgICBnb2JqZWN0L0dPd25Q
dHIuY3BwIFwKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwIFwKQEAgLTIyNCw2ICsyMjgsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIFwKICAgICBQYWdlQmxv
Y2suY3BwIFwKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBcCisgICAgUHJpbnRTdHJlYW0u
Y3BwIFwKICAgICBSYW5kb21OdW1iZXIuY3BwIFwKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIu
Y3BwIFwKICAgICBTSEExLmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagkocmV2
aXNpb24gMTM1MzU0KQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTc4MSw2ICs3ODEsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8RmlsZQor
CQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmNwcCIKKwkJCT4KKwkJPC9G
aWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmgi
CisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXEZpeGVk
QXJyYXkuaCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtMTA4OSw2ICsxMDk3LDE0IEBACiAJCQk+CiAJ
CTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFByaW50U3RyZWFtLmNw
cCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcUHJp
bnRTdHJlYW0uaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIu
Llx3dGZcUmFuZG9tTnVtYmVyLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtMTEwMSw2ICsxMTE3
LDEwIEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3Rm
XFJhd1BvaW50ZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRo
PSIuLlx3dGZcUmVkQmxhY2tUcmVlLmgiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM1MzU0KQorKysgU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjEsNiArMjEsMTEgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwRjlEMzM2MDE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJl
YW0uY3BwICovOyB9OworCQkwRjlEMzM2MTE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlE
MzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi87IH07CisJCTBGOUQz
MzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJp
bnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9OworCQkwRjlE
MzM2NDE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUYxNjVEQkE3MzAwNUFEMzg3IC8qIFJh
d1BvaW50ZXIuaCAqLzsgfTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRW
ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJB
TVNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkxNDNGNjEy
MDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwpAQCAtMzEyLDYgKzMxNywx
MSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkwRjlEMzM1QjE2NURCQTczMDA1QUQzODcg
LyogRmlsZVByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZpbGVQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludFN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQ
cmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludFN0cmVh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM1RjE2NURCQTczMDA1QUQz
ODcgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXdQ
b2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0RkIyMkUw
MDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYx
MUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUkFNU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJBTVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTcwNyw2ICs3MTcsOCBAQAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0
VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2Mu
Y3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmggKi8s
CisJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi8s
CisJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovLAog
CQkJCUE4QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggKi8sCiAJCQkJQThB
NDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovLAogCQkJCUE4QTQ3MkE1
MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDY0QXJyYXkuaCAqLywKQEAgLTc4MywxMyArNzk1LDE1
IEBACiAJCQkJQThBNDcyRUQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCAqLywKIAkJ
CQlBOEE0NzJFRTE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1RyYWl0cy5oICovLAogCQkJCUE4QTQ3
MkVGMTUxQTgyNUIwMDQxMjNGRiAvKiBQbGF0Zm9ybS5oICovLAotCQkJCUE4NzZEQkQ3MTUxODE2
RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJCUE4QTQ3MkYzMTUxQTgyNUIwMDQxMjNG
RiAvKiBQb3NzaWJseU51bGwuaCAqLywKKwkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyog
UHJpbnRTdHJlYW0uY3BwICovLAorCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmlu
dFN0cmVhbS5oICovLAogCQkJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNw
cCAqLywKIAkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovLAogCQkJ
CUE4QTQ3MkZCMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4
QTQ3MkZDMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuaCAqLywKIAkJCQlBOEE0NzJG
RDE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovLAorCQkJCTBGOUQzMzVG
MTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggKi8sCiAJCQkJQThBNDcyRkUxNTFBODI1
QjAwNDEyM0ZGIC8qIFJlZEJsYWNrVHJlZS5oICovLAogCQkJCUE4QTQ3MkZGMTUxQTgyNUIwMDQx
MjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJQThBNDczMDAxNTFBODI1QjAwNDEyM0ZGIC8q
IFJlZkNvdW50ZWRBcnJheS5oICovLApAQCAtODQ4LDYgKzg2Miw3IEBACiAJCQkJQThBNDczNzIx
NTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLAogCQkJCUE4QTQ3MzdBMTUxQTgyNUIwMDQx
MjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKIAkJCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGVGhyZWFkRGF0YS5oICovLAorCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAv
KiBQbGF0Zm9ybS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTIxNiw2ICsxMjMxLDkgQEAKIAkJCQlBOEE0NzQ4MDE1MUE4MjVCMDA0
MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RDMzNjEx
NjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjlEMzM2NDE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0xMzgzLDYgKzE0MDEsOCBAQAogCQkJCUE4QTQ3NDY5MTUxQTgyNUIwMDQxMjNGRiAv
KiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAv
KiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDMzNjAxNjVE
QkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM1MzU0KQorKysgU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAgU0VU
KFdURl9IRUFERVJTCiAgICAgRW5jb2Rlci5oCiAgICAgRmFzdEFsbG9jQmFzZS5oCiAgICAgRmFz
dE1hbGxvYy5oCisgICAgRmlsZVByaW50U3RyZWFtLmgKICAgICBGaXhlZEFycmF5LmgKICAgICBG
b3J3YXJkLmgKICAgICBHZXRQdHIuaApAQCAtNzUsOCArNzYsMTAgQEAgU0VUKFdURl9IRUFERVJT
CiAgICAgUGFyYWxsZWxKb2JzT3Blbk1QLmgKICAgICBQbGF0Zm9ybS5oCiAgICAgUG9zc2libHlO
dWxsLmgKKyAgICBQcmludFN0cmVhbS5oCiAgICAgUmFuZG9tTnVtYmVyLmgKICAgICBSYW5kb21O
dW1iZXJTZWVkLmgKKyAgICBSYXdQb2ludGVyLmgKICAgICBSZWRCbGFja1RyZWUuaAogICAgIFJl
ZkNvdW50ZWQuaAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCkBAIC0xNTAsNiArMTUzLDcg
QEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBEeW5hbWljQW5u
b3RhdGlvbnMuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKKyAgICBGaWxlUHJpbnRTdHJlYW0uY3Bw
CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuY3BwCiAgICAgSGFzaFRhYmxlLmNwcAogICAgIE1ENS5j
cHAKQEAgLTE2Miw2ICsxNjYsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBQYWdlQWxsb2NhdGlv
bkFsaWduZWQuY3BwCiAgICAgUGFnZUJsb2NrLmNwcAogICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMu
Y3BwCisgICAgUHJpbnRTdHJlYW0uY3BwCiAgICAgUmFuZG9tTnVtYmVyLmNwcAogICAgIFJlZkNv
dW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBTSEExLmNwcApJbmRleDogU291cmNlL1dURi93dGYv
RGF0YUxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHJl
dmlzaW9uIDEzNTM1NCkKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGF0YUxvZy5oIgogI2luY2x1ZGUgPHN0
ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVBy
aW50U3RyZWFtLmg+CiAKICNkZWZpbmUgREFUQV9MT0dfVE9fRklMRSAwCiAKQEAgLTM1LDM0ICsz
NiwzNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIERBVEFfTE9HX1RPX0ZJTEUKLXN0YXRp
YyBGSUxFKiBmaWxlOworI2lmIFVTRShQVEhSRUFEUykKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBp
bml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsKKyNlbmRpZgorCitz
dGF0aWMgRmlsZVByaW50U3RyZWFtKiBmaWxlOwogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9n
RmlsZU9uY2UoKQogeworI2lmIERBVEFfTE9HX1RPX0ZJTEUKICNpZmRlZiBEQVRBX0xPR19GSUxF
TkFNRQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREFUQV9MT0dfRklMRU5BTUU7CiAjZWxz
ZQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9MT0dfRklMRU5B
TUUiKTsKICNlbmRpZgogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAgICBmaWxlID0gZm9wZW4o
ZmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkKKyAgICAgICAgRklMRSogcmF3Rmls
ZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAocmF3RmlsZSkKKyAgICAgICAg
ICAgIGZpbGUgPSBuZXcgRmlsZVByaW50U3RyZWFtKHJhd0ZpbGUpOworICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxkIG5vdCBvcGVuIGxvZyBm
aWxlICVzIGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOwogICAgIH0KKyNlbmRpZiAvLyBEQVRB
X0xPR19UT19GSUxFCiAgICAgaWYgKCFmaWxlKQotICAgICAgICBmaWxlID0gc3RkZXJyOworICAg
ICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmludFN0cmVhbTo6
Qm9ycm93KTsKICAgICAKLSAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05CRiwgMCk7IC8vIFByZWZl
ciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1cG9uIGNyYXNo
IG9yIGRlYWRsb2NrLgorICAgIHNldHZidWYoZmlsZS0+ZmlsZSgpLCAwLCBfSU9OQkYsIDApOyAv
LyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVsbCBsb2cgdXBv
biBjcmFzaCBvciBkZWFkbG9jay4KIH0KIAotI2lmIE9TKERBUldJTikKLXN0YXRpYyBwdGhyZWFk
X29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsKLSNl
bmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiB7Ci0jaWYgT1MoREFSV0lO
KQorI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxpemVMb2dGaWxl
T25jZUtleSwgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKTsKICNlbHNlCiAgICAgaWYgKCFmaWxlKQpA
QCAtNzAsMjEgKzc0LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlKCkKICNlbmRp
ZgogfQogCi1GSUxFKiBkYXRhRmlsZSgpCitGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCkKIHsK
ICAgICBpbml0aWFsaXplTG9nRmlsZSgpOwotICAgIHJldHVybiBmaWxlOworICAgIHJldHVybiAq
ZmlsZTsKIH0KLSNlbHNlIC8vIERBVEFfTE9HX1RPX0ZJTEUKLUZJTEUqIGRhdGFGaWxlKCkKLXsK
LSAgICByZXR1cm4gc3RkZXJyOwotfQotI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJTEUKIAogdm9p
ZCBkYXRhTG9nVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKIHsKLSAgICB2
ZnByaW50ZihkYXRhRmlsZSgpLCBmb3JtYXQsIGFyZ0xpc3QpOworICAgIGRhdGFGaWxlKCkudnBy
aW50Zihmb3JtYXQsIGFyZ0xpc3QpOwogfQogCiB2b2lkIGRhdGFMb2coY29uc3QgY2hhciogZm9y
bWF0LCAuLi4pCkBAIC05Nyw3ICs5NSw3IEBAIHZvaWQgZGF0YUxvZyhjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikKIAogdm9pZCBkYXRhTG9nU3RyaW5nKGNvbnN0IGNoYXIqIHN0cikKIHsKLSAgICBm
cHV0cyhzdHIsIGRhdGFGaWxlKCkpOworICAgIGRhdGFGaWxlKCkucHJpbnQoc3RyKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxvZy5oCShyZXZpc2lvbiAxMzUzNTQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxMyBA
QAogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3
dGYvRmlsZVByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotV1RGX0VYUE9SVF9Q
UklWQVRFIEZJTEUqIGRhdGFGaWxlKCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgRmlsZVByaW50U3Ry
ZWFtJiBkYXRhRmlsZSgpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nVihjb25z
dCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApOwogV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZGF0YUxvZyhjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgV1RG
X0FUVFJJQlVURV9QUklOVEYoMSwgMik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlUHJp
bnRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdURiB7CisKK0ZpbGVQcmludFN0cmVhbTo6RmlsZVBy
aW50U3RyZWFtKEZJTEUqIGZpbGUsIEFkb3B0aW9uTW9kZSBhZG9wdGlvbk1vZGUpCisgICAgOiBt
X2ZpbGUoZmlsZSkKKyAgICAsIG1fYWRvcHRpb25Nb2RlKGFkb3B0aW9uTW9kZSkKK3sKK30KKwor
RmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKK3sKKyAgICBpZiAobV9hZG9wdGlv
bk1vZGUgPT0gQm9ycm93KQorICAgICAgICByZXR1cm47CisgICAgZmNsb3NlKG1fZmlsZSk7Cit9
CisKK3ZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFf
bGlzdCBhcmdMaXN0KQoreworICAgIHZmcHJpbnRmKG1fZmlsZSwgZm9ybWF0LCBhcmdMaXN0KTsK
K30KKwordm9pZCBGaWxlUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKKyAgICBmZmx1c2gobV9maWxl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0ZpbGVQ
cmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVh
bS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWxlUHJpbnRTdHJlYW1faAorI2RlZmluZSBGaWxl
UHJpbnRTdHJlYW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIEZpbGVQcmludFN0cmVhbSA6IHB1
YmxpYyBQcmludFN0cmVhbSB7CitwdWJsaWM6CisgICAgZW51bSBBZG9wdGlvbk1vZGUgeworICAg
ICAgICBBZG9wdCwKKyAgICAgICAgQm9ycm93CisgICAgfTsKKyAgICAKKyAgICBGaWxlUHJpbnRT
dHJlYW0oRklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsKKyAgICB2aXJ0dWFsIH5GaWxlUHJp
bnRTdHJlYW0oKTsKKyAgICAKKyAgICBGSUxFKiBmaWxlKCkgeyByZXR1cm4gbV9maWxlOyB9Cisg
ICAgCisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCk7CisgICAg
dm9pZCBmbHVzaCgpOworCitwcml2YXRlOgorICAgIEZJTEUqIG1fZmlsZTsKKyAgICBBZG9wdGlv
bk1vZGUgbV9hZG9wdGlvbk1vZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpGaWxlUHJpbnRTdHJlYW07CisKKyNlbmRpZiAvLyBGaWxlUHJpbnRTdHJlYW1faAorCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYv
UHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUHJpbnRTdHJlYW0uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk
ZSA8d3RmL0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK1ByaW50U3RyZWFtOjpQcmludFN0cmVhbSgpIHsgfQorUHJpbnRTdHJl
YW06On5QcmludFN0cmVhbSgpIHsgfSAvLyBGb3JjZSB0aGUgdnRhYmxlIHRvIGJlIGluIHRoaXMg
bW9kdWxlCisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKK3sKKyAgICB2YV9saXN0IGFyZ0xpc3Q7CisgICAgdmFfc3RhcnQoYXJnTGlzdCwgZm9ybWF0
KTsKKyAgICB2cHJpbnRmKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFfZW5kKGFyZ0xpc3QpOwor
fQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAg
cHJpbnRmKCIlcyIsIHN0cmluZyk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50KGNvbnN0
IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcuZGF0YSgpKTsKK30KKwordm9p
ZCBQcmludFN0cmVhbTo6cHJpbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcHJpbnQo
c3RyaW5nLnV0ZjgoKSk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50bG4oY29uc3QgY2hh
ciogc3RyaW5nKQoreworICAgIHByaW50KHN0cmluZyk7CisgICAgcHJpbnRsbigpOworfQorCit2
b2lkIFByaW50U3RyZWFtOjpwcmludGxuKGNvbnN0IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICBw
cmludChzdHJpbmcpOworICAgIHByaW50bG4oKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJp
bnRsbihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcpOworICAgIHBy
aW50bG4oKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRsbigpCit7CisgICAgcHJpbnRm
KCJcbiIpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpmbHVzaCgpCit7Cit9CisKK3ZvaWQgcHJp
bnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpCisg
ICAgICAgIHN0cmVhbS5wcmludGYoInRydWUiKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmVhbS5w
cmludGYoImZhbHNlIik7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgaW50
IHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVkIiwgdmFsdWUpOworfQorCit2b2lkIHBy
aW50KFByaW50U3RyZWFtJiBzdHJlYW0sIHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICBzdHJl
YW0ucHJpbnRmKCIldSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3Ry
ZWFtLCBsb25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsZCIsIHZhbHVlKTsKK30K
Kwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQor
eworICAgIHN0cmVhbS5wcmludGYoIiVsdSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYgc3RyZWFtLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50Zigi
JWxsZCIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCB1bnNp
Z25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50ZigiJWxsdSIsIHZhbHVl
KTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBSYXdQb2ludGVyIHBvaW50
ZXIpCit7CisgICAgc3RyZWFtLnByaW50ZigiJXAiLCBwb2ludGVyLnZhbHVlKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQcmludFN0cmVhbV9oCisjZGVmaW5lIFByaW50U3RyZWFtX2gKKworI2luY2x1ZGUgPHN0
ZGFyZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1Jh
d1BvaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitjbGFzcyBDU3RyaW5nOworY2xhc3MgU3RyaW5nOworCitjbGFzcyBQcmludFN0cmVh
bSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKFBy
aW50U3RyZWFtKTsKK3B1YmxpYzoKKyAgICBQcmludFN0cmVhbSgpOworICAgIHZpcnR1YWwgflBy
aW50U3RyZWFtKCk7CisKKyAgICB2b2lkIHByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CisgICAgdmlydHVhbCB2b2lkIHZwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSA9IDA7CisgICAgdm9pZCBwcmludChjb25zdCBjaGFy
KiBzdHIpOworICAgIHZvaWQgcHJpbnQoY29uc3QgQ1N0cmluZyYpOworICAgIHZvaWQgcHJpbnQo
Y29uc3QgU3RyaW5nJik7IC8vIFBlcmZvcm1zIGxlbmllbnQgdXRmOCBjb252ZXJzaW9uLgorICAg
IHZvaWQgcHJpbnRsbihjb25zdCBjaGFyKiBzdHIpOworICAgIHZvaWQgcHJpbnRsbihjb25zdCBD
U3RyaW5nJik7CisgICAgdm9pZCBwcmludGxuKGNvbnN0IFN0cmluZyYpOyAvLyBQZXJmb3JtcyBs
ZW5pZW50IHV0ZjggY29udmVyc2lvbi4KKyAgICB2b2lkIHByaW50bG4oKTsKKworICAgIC8vIFR5
cGljYWxseSBhIG5vLW9wIGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRTdHJlYW0sIHRoaXMg
aXMgYSBoaW50IHRoYXQKKyAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZsdXNoIGl0
cyBidWZmZXJzIGlmIGl0IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgorICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpOworfTsKKworLy8gVXNlIHByaW50KCkgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBw
YXJ0IG9mIHRoZSBjbGFzcyB0byBhbGxvdyBmb3IgYW55b25lIHRvCisvLyBleHRlbmQgaXQuIFRo
ZSBjb252ZW50aW9uIGlzIHRoYXQgaWYgeW91IGhhdmUgYSBkYXRhdHlwZSB0aGF0IGlzIHdvcnRo
IHByaW50aW5nLAorLy8geW91IHNob3VsZCBpbXBsZW1lbnQgYSBtZXRob2Qgd2l0aCB0aGlzIHNp
Z25hdHVyZToKKy8vCisvLyB2b2lkIHByaW50KFByaW50U3RyZWFtJiwgY29uc3QgTXlDbGFzcyYp
CisKK2lubGluZSB2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIHN0
cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5nKTsKK30KKworaW5saW5lIHZvaWQgcHJp
bnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQoreworICAgIHN0
cmVhbS5wcmludChzdHJpbmcpOworfQorCitpbmxpbmUgdm9pZCBwcmludChQcmludFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5n
KTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYsIGJvb2wpOwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYsIGludCk7Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiwgdW5zaWduZWQgaW50KTsK
K3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nIGxvbmcpOwor
dm9pZCBwcmludChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit2b2lkIHByaW50
KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHByaW50KHN0cmVhbSwg
dmFsdWUyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1
ZTIsIFQzIHZhbHVlMykKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJpbnQo
c3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2
b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIFQxIHZhbHVlMSwgVDIgdmFsdWUyLCBUMyB2
YWx1ZTMsIFQ0IHZhbHVlNCkKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJp
bnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBwcmlu
dChzdHJlYW0sIHZhbHVlNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK3ZvaWQgcHJpbnQoUHJp
bnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFs
dWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHByaW50
KHN0cmVhbSwgdmFsdWUyKTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMyk7CisgICAgcHJpbnQo
c3RyZWFtLCB2YWx1ZTQpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWU1KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwg
VDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUsIFQ2
IHZhbHVlNikKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJpbnQoc3RyZWFt
LCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBwcmludChzdHJlYW0s
IHZhbHVlNCk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTUpOworICAgIHByaW50KHN0cmVhbSwg
dmFsdWU2KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDE+Cit2b2lkIHByaW50bG4oUHJpbnRT
dHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxKQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxKTsK
KyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEsIHZhbHVlMik7CisgICAgc3RyZWFt
LnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMz4KK3ZvaWQgcHJpbnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQy
IHZhbHVlMiwgVDMgdmFsdWUzKQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIs
IHZhbHVlMyk7CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2b2lkIHByaW50bG4o
UHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQg
dmFsdWU0KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFs
dWU0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lk
IHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZh
bHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEs
IHZhbHVlMiwgdmFsdWUzLCB2YWx1ZTQsIHZhbHVlNSk7CisgICAgc3RyZWFtLnByaW50bG4oKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnRsbihQcmludFN0
cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzLCBUNCB2YWx1ZTQs
IFQ1IHZhbHVlNSwgVDYgdmFsdWU2KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1
ZTIsIHZhbHVlMywgdmFsdWU0LCB2YWx1ZTUsIHZhbHVlNik7CisgICAgc3RyZWFtLnByaW50bG4o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UHJpbnRTdHJlYW07CisK
KyNlbmRpZiAvLyBQcmludFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBSYXdQb2ludGVyX2gKKyNkZWZpbmUgUmF3UG9pbnRlcl9oCisKK25hbWVzcGFjZSBX
VEYgeworCitjbGFzcyBSYXdQb2ludGVyIHsKK3B1YmxpYzoKKyAgICBSYXdQb2ludGVyKCkKKyAg
ICAgICAgOiBtX3ZhbHVlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBSYXdQ
b2ludGVyKHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCogbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gUmF3UG9pbnRlcl9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175577</attachid>
            <date>2012-11-21 20:47:05 -0800</date>
            <delta_ts>2012-11-21 21:06:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>44160</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5kIGRh
dGFMb2dGVigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IE9wZXJhbmRWYWx1ZVRyYWl0cyB7CiAgICAgc3Rh
dGljIFQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gVCgpOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBUJiB2YWx1ZSwgRklMRSogb3V0KSB7IHZhbHVlLmR1bXAob3V0KTsgfQorICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgVCYgdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpIHsgdmFsdWUu
ZHVtcChvdXQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMg
PSBPcGVyYW5kVmFsdWVUcmFpdHM8VD4gPgpAQCAtMTkwLDE3ICsxOTAsMTcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgZHVtcE9w
ZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRyYWl0cz4mIG9wZXJhbmRzLCBGSUxFKiBvdXQpCit2
b2lkIGR1bXBPcGVyYW5kcyhjb25zdCBPcGVyYW5kczxULCBUcmFpdHM+JiBvcGVyYW5kcywgUHJp
bnRTdHJlYW0mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgb3BlcmFuZHMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBp
ZiAoYXJndW1lbnQpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50
KGFyZ3VtZW50KSwgb3V0KTsKICAgICB9Ci0gICAgZnByaW50ZihvdXQsICIgOiAiKTsKKyAgICBv
dXQucHJpbnRmKCIgOiAiKTsKICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgb3Bl
cmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICBpZiAobG9jYWwpCi0g
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmxvY2FsKGxvY2FsKSwgb3V0KTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVz
dGluYXRpb24ubWVyZ2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJ
TEUqIG91dCkKK3ZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+c2l6ZSgpOyArK2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0
ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwot
ICAgICAgICBmcHJpbnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5kZXgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiQCVsdToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2
YWx1ZS5kdW1wKG91dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBk
dW1wKEZJTEUqIG91dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEs
MTUgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRo
ZSBjb2RlLgogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50
ZihvdXQsICIoJXMsICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9k
ZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywg
Iiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJh
eU1vZGVzKSk7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAg
ICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBpZiAoISFtX3Zh
bHVlKQotICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICAgICAKICAgICAvLyBBIGdyZWF0IHdheSB0byB0aGluayBhYm91dCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMiAr
OTIsMTIgQEAgc3RhdGljIGNvbnN0IEJsb2NrSW5kZXggTm9CbG9jayA9IFVJTlRfTQogCiBzdHJ1
Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRWYWx1ZSgp
IHsgcmV0dXJuIE5vTm9kZTsgfQotICAgIHN0YXRpYyB2b2lkIGR1bXAoTm9kZUluZGV4IHZhbHVl
LCBGSUxFKiBvdXQpCisgICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gTm9Ob2RlKQotICAgICAg
ICAgICAgZnByaW50ZihvdXQsICItIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCItIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiQCV1IiwgdmFsdWUpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiQCV1IiwgdmFsdWUpOwogICAgIH0KIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDE3ICsyOTgs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNU
b3AoKSkgewotICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlRPUCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgb3V0LnByaW50ZigiWyIpOwog
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwg
bV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVwIiwgbV9zdHJ1Y3R1cmUpOworICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAg
ICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhcmlh
YmxlRXZlbnQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBj
YXNlIFJlc2V0OgotICAgICAgICBmcHJpbnRmKG91dCwgIlJlc2V0Iik7CisgICAgICAgIG91dC5w
cmludGYoIlJlc2V0Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlydGhUb0ZpbGw6CiAg
ICAgICAgIGR1bXBGaWxsSW5mbygiQmlydGhUb0ZpbGwiLCBvdXQpOwpAQCAtNTIsMTMgKzUyLDEz
IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChGSUxFKiBvdXQpIGNvbnMKICAgICAgICAgZHVt
cFNwaWxsSW5mbygiU3BpbGwiLCBvdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERlYXRo
OgotICAgICAgICBmcHJpbnRmKG91dCwgIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CisgICAg
ICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgZnByaW50ZihvdXQsICJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnRmKCJNb3ZI
aW50KEAldSwgciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIGZwcmludGYob3V0LCAiU2V0TG9jYWwo
ciVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgb3V0LnByaW50ZigiU2V0TG9jYWwociVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NiwyMyArNjYsMjMgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgIH0KIH0KIAotdm9pZCBW
YXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSogb3V0KSBj
b25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgIiwg
bmFtZSwgbm9kZUluZGV4KCkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgIiwgbmFtZSwgbm9k
ZUluZGV4KCkpOwogICAgIGlmIChkYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAg
ICAgICAgZnByaW50ZihvdXQsICIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCgpICYgRGF0YUZvcm1hdEpT
KQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzOiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQ
UigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRHUFIoKSkpOworICAgICAgICBvdXQucHJp
bnRmKCIlczolcyIsIEdQUkluZm86OmRlYnVnTmFtZSh0YWdHUFIoKSksIEdQUkluZm86OmRlYnVn
TmFtZShwYXlsb2FkR1BSKCkpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihv
dXQsICIlcyIsIEdQUkluZm86OmRlYnVnTmFtZShncHIoKSkpOwotICAgIGZwcmludGYob3V0LCAi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CisgICAgICAgIG91dC5w
cmludGYoIiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7CisgICAgb3V0LnByaW50Zigi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKLXZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNv
bnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgciVk
LCAlcykiLCBuYW1lLCBub2RlSW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRU
b1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICBvdXQucHJpbnRmKCIlcyhAJXUsIHIlZCwgJXMp
IiwgbmFtZSwgbm9kZUluZGV4KCksIHZpcnR1YWxSZWdpc3RlcigpLCBkYXRhRm9ybWF0VG9TdHJp
bmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lv
biAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDExICsyNDAsMTEgQEAgcHVibGljOgogICAgIAogICAg
IGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiB1OyB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSopIGNvbnN0OwotICAgIHZvaWQg
ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKICAgICBOb2RlSW5kZXggbV9pbmRleDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMTM1
NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTggKzI2LDE3IEBACiAjaWZuZGVmIERpc2Fzc2VtYmxl
cl9oCiAjZGVmaW5lIERpc2Fzc2VtYmxlcl9oCiAKLSNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjsKIAogI2lmIEVOQUJMRShESVNBU1NFTUJMRVIpCi1ib29sIHRyeVRv
RGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiwgc2l6ZV90LCBjb25zdCBj
aGFyKiBwcmVmaXgsIEZJTEUqIG91dCk7Citib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJik7CiAjZWxzZQotaW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBGSUxFKikKK2lubGluZSBib29s
IHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiwgc2l6ZV90LCBj
b25zdCBjaGFyKiwgUHJpbnRTdHJlYW0mKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4
NkRpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotYm9vbCB0cnlUb0Rpc2Fzc2Vt
YmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNv
bnN0IGNoYXIqIHByZWZpeCwgRklMRSogb3V0KQorYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIq
IHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKIHsKICAgICB1ZF90IGRpc2Fzc2VtYmxlcjsKICAg
ICB1ZF9pbml0KCZkaXNhc3NlbWJsZXIpOwpAQCAtNTAsNyArNTAsNyBAQCBib29sIHRyeVRvRGlz
YXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsCiAgICAgd2hpbGUgKHVkX2Rpc2Fzc2VtYmxlKCZk
aXNhc3NlbWJsZXIpKSB7CiAgICAgICAgIGNoYXIgcGNTdHJpbmdbMjBdOwogICAgICAgICBzbnBy
aW50ZihwY1N0cmluZywgc2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oY3VycmVudFBDKSk7Ci0gICAgICAgIGZwcmludGYob3V0LCAiJXMlMTZzOiAl
c1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fzc2VtYmxlcikpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyUxNnM6ICVzXG4iLCBwcmVmaXgsIHBjU3RyaW5nLCB1ZF9pbnNu
X2FzbSgmZGlzYXNzZW1ibGVyKSk7CiAgICAgICAgIGN1cnJlbnRQQyA9IGRpc2Fzc2VtYmxlci5w
YzsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3OSBAQAorMjAxMi0xMS0yMSAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEFueSBmdW5jdGlvbiB0aGF0
IGNhbiBsb2cgdGhpbmdzIHNob3VsZCBiZSBhYmxlIHRvIGVhc2lseSBsb2cgdGhlbSB0byBhIG1l
bW9yeSBidWZmZXIgYXMgd2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAzMDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2UgaGF2ZSBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUgd2UgcGFzcyBhcm91
bmQgYSBGSUxFKiBhcyBhIHRhcmdldCB0byB3aGljaCB0byBwcmludAorICAgICAgICBzb21lIGxv
Z2dpbmcgaW5mb3JtYXRpb24uIEJ1dCB0aGUgcHVycG9zZSBvZiBwYXNzaW5nIEZJTEUqIGluc3Rl
YWQgb2YgYWx3YXlzIGFzc3VtaW5nCisgICAgICAgIHRoYXQgd2Ugc2hvdWxkIGR1bXAgdG8gc3Rk
ZXJyIGlzIHRoYXQgaXQgbWF5IGJlIHNvbWV0aW1lcyB1c2VmdWwgdG8gc2VuZCB0aGUgbG9nZ2lu
ZworICAgICAgICBpbmZvcm1hdGlvbiBlbHN3aGVyZS4gVW5mb3J0dW5hdGVseSwgRklMRSogaXNu
J3QgcXVpdGUgcG93ZXJmdWwgZW5vdWdoOiBpdCdzIGNvbWJlcnNvbWUKKyAgICAgICAgdG8gdXNl
IGl0IHRvIHNlbmQgbG9nZ2luZyB0byBhIHN0cmluZywgZm9yIGV4YW1wbGUuCisgICAgICAgIAor
ICAgICAgICBXZSBjb3VsZCBnZXQgYXJvdW5kIHRoaXMgYnkgdXNpbmcgPGlvc3RyZWFtPiBhbmQg
PHNzdHJlYW0+LCBidXQgc28gZmFyIHRoaXMgYXNwZWN0IG9mCisgICAgICAgIEMrKyBoYXMgbm90
IGJlZW4gcGFydCBvZiB0aGUgV2ViS2l0IGNvZGluZyBjb252ZW50aW9ucy4gUGVyc29uYWxseSBJ
IGZpbmQgPGlvc3RyZWFtPgorICAgICAgICBhd2t3YXJkIGR1ZSB0byBpdHMgYWJ1c2Ugb2Ygb3Bl
cmF0b3Igb3ZlcmxvYWRpbmcuCisgICAgICAgIAorICAgICAgICBTbyB0aGlzIHBhdGNoIGludHJv
ZHVjZXMgdHdvIG5ldyBjbG9zZWx5IHJlbGF0ZWQgcGllY2VzIG9mIGZ1bmN0aW9uYWxpdHk6Cisg
ICAgICAgIAorICAgICAgICAxKSBUaGUgUHJpbnRTdHJlYW0gYWJzdHJhY3QgY2xhc3MsIHdoaWNo
IG9mZmVycyBwcmludGYtbGlrZSBmdW5jdGlvbmFsaXR5IHdoaWxlCisgICAgICAgICAgIGNvbXBs
ZXRlbHkgYWJzdHJhY3RpbmcgdGhlIGRlc3RpbmF0aW9uIGFuZCBtZWNoYW5pc20gb2YgdGhlIHBy
aW50aW5nIG91dHB1dC4gSXQKKyAgICAgICAgICAgd291bGQgYmUgdHJpdmlhbCB0byBpbXBsZW1l
bnQgYSBTdHJpbmdQcmludFN0cmVhbSwgZm9yIGV4YW1wbGUuIFRoaXMgd2lsbCBmZWVkCisgICAg
ICAgICAgIGludG8gd29yayBvbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyOTk5CisgICAgICAgIAorICAgICAgICAyKSBUZW1wbGF0aXplZCBwcmludCgpIGFuZCBw
cmludGxuKCkgbWV0aG9kcyB0aGF0IGFsbG93IHNheWluZyB0aGluZ3MgbGlrZQorICAgICAgICAg
ICBwcmludGxuKG91dCwgImNvdW50ID0gIiwgY291bnQpLiBUaGlzIHdpbGwgZmVlZCBpbnRvIHdv
cmsgb24KKyAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzAwOQorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgZGF0YUxv
ZygpIHRvIHVzZSBGaWxlUHJpbnRTdHJlYW0gaW50ZXJuYWxseSwgYW5kIFdURjo6ZGF0YUZpbGUo
KQorICAgICAgICBub3cgcmV0dXJucyBhIEZpbGVQcmludFN0cmVhbSYuIEFueSBwcmV2aW91cyB1
c2VycyBvZiBXVEY6OmRhdGFGaWxlKCkgaGF2ZSBiZWVuIGNoYW5nZWQKKyAgICAgICAgdG8gZXhw
ZWN0IGEgUHJpbnRTdHJlYW0mLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGFMb2cuY3BwOgorICAgICAgICAoV1RGKToKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKToKKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZUxvZ0ZpbGUpOgorICAgICAgICAoV1RGOjpkYXRhRmlsZSk6CisgICAgICAgIChXVEY6OmRh
dGFMb2dWKToKKyAgICAgICAgKFdURjo6ZGF0YUxvZ1N0cmluZyk6CisgICAgICAgICogd3RmL0Rh
dGFMb2cuaDoKKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5j
cHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFt
OjpGaWxlUHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06On5GaWxl
UHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OnZwcmludGYpOgor
ICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OmZsdXNoKToKKyAgICAgICAgKiB3dGYvRmls
ZVByaW50U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKEZpbGVQcmlu
dFN0cmVhbSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6ZmlsZSk6CisgICAgICAg
ICogd3RmL1ByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAo
V1RGOjpQcmludFN0cmVhbTo6UHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpQcmludFN0cmVh
bTo6flByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50Zik6Cisg
ICAgICAgIChXVEY6OlByaW50U3RyZWFtOjpwcmludCk6CisgICAgICAgIChXVEY6OlByaW50U3Ry
ZWFtOjpwcmludGxuKToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OmZsdXNoKToKKyAgICAg
ICAgKFdURjo6cHJpbnQpOgorICAgICAgICAqIHd0Zi9QcmludFN0cmVhbS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OnByaW50
KToKKyAgICAgICAgKFdURjo6cHJpbnRsbik6CisgICAgICAgICogd3RmL1Jhd1BvaW50ZXIuaDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoUmF3UG9pbnRlcik6CisgICAgICAgIChX
VEY6OlJhd1BvaW50ZXI6OlJhd1BvaW50ZXIpOgorICAgICAgICAoV1RGOjpSYXdQb2ludGVyOjp2
YWx1ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5k
IGRhdGFMb2dGVigpCkluZGV4OiBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMzU0NzEp
CisrKyBTb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDggQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zhc3RCaXRW
ZWN0b3IuaCBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5jcHAgXAogICAgIFNvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBcCisgICAgU291cmNlL1dURi93dGYvRmlsZVByaW50U3Ry
ZWFtLmNwcCBcCisgICAgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0ZpeGVkQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvRmxvYXQzMkFy
cmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zsb2F0NjRBcnJheS5oIFwKQEAgLTEyNiw5ICsx
MjgsMTIgQEAgd3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL1Bhc3NUcmFpdHMu
aCBcCiAgICAgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBcCiAgICAgU291cmNlL1dURi93dGYv
UG9zc2libHlOdWxsLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmNwcCBcCisg
ICAgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvUmFu
ZG9tTnVtYmVyLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvUmFuZG9tTnVtYmVyLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL1JhbmRvbU51bWJlclNlZWQuaCBcCisgICAgU291cmNlL1dURi93dGYv
UmF3UG9pbnRlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SZWRCbGFja1RyZWUuaCBcCiAgICAg
U291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SZWZDb3Vu
dGVkQXJyYXkuaCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi5wcm8KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYucHJvCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvV1RGL1dURi5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgRXhwb3J0
TWFjcm9zLmggXAogICAgIEZhc3RBbGxvY0Jhc2UuaCBcCiAgICAgRmFzdE1hbGxvYy5oIFwKKyAg
ICBGaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgRml4ZWRBcnJheS5oIFwKICAgICBGbG9hdDMyQXJy
YXkuaCBcCiAgICAgRmxvYXQ2NEFycmF5LmggXApAQCAtMTI2LDggKzEyNywxMCBAQCBIRUFERVJT
ICs9IFwKICAgICBQYXNzVHJhaXRzLmggXAogICAgIFBsYXRmb3JtLmggXAogICAgIFBvc3NpYmx5
TnVsbC5oIFwKKyAgICBQcmludFN0cmVhbS5oIFwKICAgICBSYW5kb21OdW1iZXIuaCBcCiAgICAg
UmFuZG9tTnVtYmVyU2VlZC5oIFwKKyAgICBSYXdQb2ludGVyLmggXAogICAgIFJlZEJsYWNrVHJl
ZS5oIFwKICAgICBSZWZDb3VudGVkLmggXAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oIFwK
QEAgLTIwNyw2ICsyMTAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkdG9hL2ZpeGVkLWR0b2EuY2Mg
XAogICAgIGR0b2Evc3RydG9kLmNjIFwKICAgICBGYXN0TWFsbG9jLmNwcCBcCisgICAgRmlsZVBy
aW50U3RyZWFtLmNwcCBcCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIFwKICAgICBnb2JqZWN0
L0dPd25QdHIuY3BwIFwKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwIFwKQEAgLTIyNCw2ICsyMjgs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3BwIFwKICAgICBQ
YWdlQmxvY2suY3BwIFwKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBcCisgICAgUHJpbnRT
dHJlYW0uY3BwIFwKICAgICBSYW5kb21OdW1iZXIuY3BwIFwKICAgICBSZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwIFwKICAgICBTSEExLmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3Byb2ov
V1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJv
agkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTc4MSw2ICs3ODEsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgogCQk8
RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmNwcCIKKwkJCT4K
KwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmlsZVByaW50U3Ry
ZWFtLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3Rm
XEZpeGVkQXJyYXkuaCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtMTA4OSw2ICsxMDk3LDE0IEBACiAJ
CQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFByaW50U3Ry
ZWFtLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3
dGZcUHJpbnRTdHJlYW0uaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3dGZcUmFuZG9tTnVtYmVyLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtMTEwMSw2
ICsxMTE3LDEwIEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0i
Li5cd3RmXFJhd1BvaW50ZXIuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRp
dmVQYXRoPSIuLlx3dGZcUmVkQmxhY2tUcmVlLmgiCiAJCQk+CiAJCTwvRmlsZT4KSW5kZXg6IFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM1NDcxKQor
KysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsMTEgQEAKIC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkwRjlEMzM2MDE2NURCQTcz
MDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJp
bnRTdHJlYW0uY3BwICovOyB9OworCQkwRjlEMzM2MTE2NURCQTczMDA1QUQzODcgLyogRmlsZVBy
aW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi87IH07CisJ
CTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RDE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OworCQkwRjlEMzM2MzE2NURCQTczMDA1QUQzODcg
LyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovOyB9Owor
CQkwRjlEMzM2NDE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUYxNjVEQkE3MzAwNUFEMzg3
IC8qIFJhd1BvaW50ZXIuaCAqLzsgfTsKIAkJMEZEODFBQzUxNTRGQjIyRTAwOTgzRTcyIC8qIEZh
c3RCaXRWZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkx
NDNGNjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJB
TVNpemUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwpAQCAtMzEyLDYg
KzMxNywxMSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkwRjlEMzM1QjE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZpbGVQcmludFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVByaW50U3RyZWFtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmludFN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4
NyAvKiBQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmlu
dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM1RjE2NURCQTcz
MDA1QUQzODcgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSYXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgxQUM0MTU0
RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZhc3RCaXRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUkFNU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJBTVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTcwNyw2ICs3MTcsOCBAQAogCQkJCTBGRDgxQUM0MTU0RkIyMkUwMDk4M0U3MiAvKiBG
YXN0Qml0VmVjdG9yLmggKi8sCiAJCQkJQThBNDcyQTExNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RN
YWxsb2MuY3BwICovLAogCQkJCUE4QTQ3MkEyMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9j
LmggKi8sCisJCQkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5j
cHAgKi8sCisJCQkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5o
ICovLAogCQkJCUE4QTQ3MkEzMTUxQTgyNUEwMDQxMjNGRiAvKiBGaXhlZEFycmF5LmggKi8sCiAJ
CQkJQThBNDcyQTQxNTFBODI1QTAwNDEyM0ZGIC8qIEZsb2F0MzJBcnJheS5oICovLAogCQkJCUE4
QTQ3MkE1MTUxQTgyNUEwMDQxMjNGRiAvKiBGbG9hdDY0QXJyYXkuaCAqLywKQEAgLTc4MywxMyAr
Nzk1LDE1IEBACiAJCQkJQThBNDcyRUQxNTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCAq
LywKIAkJCQlBOEE0NzJFRTE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1RyYWl0cy5oICovLAogCQkJ
CUE4QTQ3MkVGMTUxQTgyNUIwMDQxMjNGRiAvKiBQbGF0Zm9ybS5oICovLAotCQkJCUE4NzZEQkQ3
MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJCUE4QTQ3MkYzMTUxQTgyNUIw
MDQxMjNGRiAvKiBQb3NzaWJseU51bGwuaCAqLywKKwkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQz
ODcgLyogUHJpbnRTdHJlYW0uY3BwICovLAorCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAv
KiBQcmludFN0cmVhbS5oICovLAogCQkJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1T
aXplLmNwcCAqLywKIAkJCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICov
LAogCQkJCUE4QTQ3MkZCMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwICovLAog
CQkJCUE4QTQ3MkZDMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuaCAqLywKIAkJCQlB
OEE0NzJGRDE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyU2VlZC5oICovLAorCQkJCTBG
OUQzMzVGMTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggKi8sCiAJCQkJQThBNDcyRkUx
NTFBODI1QjAwNDEyM0ZGIC8qIFJlZEJsYWNrVHJlZS5oICovLAogCQkJCUE4QTQ3MkZGMTUxQTgy
NUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJQThBNDczMDAxNTFBODI1QjAwNDEy
M0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLApAQCAtODQ4LDYgKzg2Miw3IEBACiAJCQkJQThB
NDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLAogCQkJCUE4QTQ3MzdBMTUxQTgy
NUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKIAkJCQlBOEE0NzM3QjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovLAorCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERB
REI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTIxNiw2ICsxMjMxLDkgQEAKIAkJCQlBOEE0NzQ4MDE1MUE4
MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5
RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjlEMzM2NDE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xMzgzLDYgKzE0MDEsOCBAQAogCQkJCUE4QTQ3NDY5MTUxQTgyNUIwMDQx
MjNGRiAvKiBVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQx
MjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0ODYxNTFBODI1
QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDMz
NjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTM1NDcxKQorKysgU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAgU0VUKFdURl9IRUFERVJTCiAgICAgRW5jb2Rlci5oCiAgICAgRmFzdEFsbG9jQmFzZS5oCiAg
ICAgRmFzdE1hbGxvYy5oCisgICAgRmlsZVByaW50U3RyZWFtLmgKICAgICBGaXhlZEFycmF5LmgK
ICAgICBGb3J3YXJkLmgKICAgICBHZXRQdHIuaApAQCAtNzUsOCArNzYsMTAgQEAgU0VUKFdURl9I
RUFERVJTCiAgICAgUGFyYWxsZWxKb2JzT3Blbk1QLmgKICAgICBQbGF0Zm9ybS5oCiAgICAgUG9z
c2libHlOdWxsLmgKKyAgICBQcmludFN0cmVhbS5oCiAgICAgUmFuZG9tTnVtYmVyLmgKICAgICBS
YW5kb21OdW1iZXJTZWVkLmgKKyAgICBSYXdQb2ludGVyLmgKICAgICBSZWRCbGFja1RyZWUuaAog
ICAgIFJlZkNvdW50ZWQuaAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCkBAIC0xNTAsNiAr
MTUzLDcgQEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBEeW5h
bWljQW5ub3RhdGlvbnMuY3BwCiAgICAgRmFzdE1hbGxvYy5jcHAKKyAgICBGaWxlUHJpbnRTdHJl
YW0uY3BwCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuY3BwCiAgICAgSGFzaFRhYmxlLmNwcAogICAg
IE1ENS5jcHAKQEAgLTE2Miw2ICsxNjYsNyBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICBQYWdlQWxs
b2NhdGlvbkFsaWduZWQuY3BwCiAgICAgUGFnZUJsb2NrLmNwcAogICAgIFBhcmFsbGVsSm9ic0dl
bmVyaWMuY3BwCisgICAgUHJpbnRTdHJlYW0uY3BwCiAgICAgUmFuZG9tTnVtYmVyLmNwcAogICAg
IFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBTSEExLmNwcApJbmRleDogU291cmNlL1dU
Ri93dGYvRGF0YUxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxvZy5j
cHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGF0YUxvZy5oIgogI2luY2x1
ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
RmlsZVByaW50U3RyZWFtLmg+CiAKICNkZWZpbmUgREFUQV9MT0dfVE9fRklMRSAwCiAKQEAgLTM1
LDM0ICszNiwzNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIERBVEFfTE9HX1RPX0ZJTEUK
LXN0YXRpYyBGSUxFKiBmaWxlOworI2lmIFVTRShQVEhSRUFEUykKK3N0YXRpYyBwdGhyZWFkX29u
Y2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsKKyNlbmRp
ZgorCitzdGF0aWMgRmlsZVByaW50U3RyZWFtKiBmaWxlOwogCiBzdGF0aWMgdm9pZCBpbml0aWFs
aXplTG9nRmlsZU9uY2UoKQogeworI2lmIERBVEFfTE9HX1RPX0ZJTEUKICNpZmRlZiBEQVRBX0xP
R19GSUxFTkFNRQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREFUQV9MT0dfRklMRU5BTUU7
CiAjZWxzZQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9MT0df
RklMRU5BTUUiKTsKICNlbmRpZgogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAgICBmaWxlID0g
Zm9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkKKyAgICAgICAgRklMRSog
cmF3RmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAocmF3RmlsZSkKKyAg
ICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZVByaW50U3RyZWFtKHJhd0ZpbGUpOworICAgICAgICBl
bHNlCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxkIG5vdCBvcGVu
IGxvZyBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOwogICAgIH0KKyNlbmRpZiAv
LyBEQVRBX0xPR19UT19GSUxFCiAgICAgaWYgKCFmaWxlKQotICAgICAgICBmaWxlID0gc3RkZXJy
OworICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmludFN0
cmVhbTo6Qm9ycm93KTsKICAgICAKLSAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05CRiwgMCk7IC8v
IFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1cG9u
IGNyYXNoIG9yIGRlYWRsb2NrLgorICAgIHNldHZidWYoZmlsZS0+ZmlsZSgpLCAwLCBfSU9OQkYs
IDApOyAvLyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVsbCBs
b2cgdXBvbiBjcmFzaCBvciBkZWFkbG9jay4KIH0KIAotI2lmIE9TKERBUldJTikKLXN0YXRpYyBw
dGhyZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiB7Ci0jaWYgT1Mo
REFSV0lOKQorI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxpemVM
b2dGaWxlT25jZUtleSwgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKTsKICNlbHNlCiAgICAgaWYgKCFm
aWxlKQpAQCAtNzAsMjEgKzc0LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxlKCkK
ICNlbmRpZgogfQogCi1GSUxFKiBkYXRhRmlsZSgpCitGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxl
KCkKIHsKICAgICBpbml0aWFsaXplTG9nRmlsZSgpOwotICAgIHJldHVybiBmaWxlOworICAgIHJl
dHVybiAqZmlsZTsKIH0KLSNlbHNlIC8vIERBVEFfTE9HX1RPX0ZJTEUKLUZJTEUqIGRhdGFGaWxl
KCkKLXsKLSAgICByZXR1cm4gc3RkZXJyOwotfQotI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJTEUK
IAogdm9pZCBkYXRhTG9nRlYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3QpCiB7
Ci0gICAgdmZwcmludGYoZGF0YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKKyAgICBkYXRhRmls
ZSgpLnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKIH0KIAogdm9pZCBkYXRhTG9nRihjb25zdCBj
aGFyKiBmb3JtYXQsIC4uLikKQEAgLTk3LDcgKzk1LDcgQEAgdm9pZCBkYXRhTG9nRihjb25zdCBj
aGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBkYXRhTG9nRlN0cmluZyhjb25zdCBjaGFyKiBzdHIp
CiB7Ci0gICAgZnB1dHMoc3RyLCBkYXRhRmlsZSgpKTsKKyAgICBkYXRhRmlsZSgpLnByaW50KHN0
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvRGF0YUxv
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24gMTM1
NDcxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
MiArMjgsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Cisj
aW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLVdU
Rl9FWFBPUlRfUFJJVkFURSBGSUxFKiBkYXRhRmlsZSgpOworV1RGX0VYUE9SVF9QUklWQVRFIEZp
bGVQcmludFN0cmVhbSYgZGF0YUZpbGUoKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGF0
YUxvZ0ZWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYo
MSwgMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nRihjb25zdCBjaGFyKiBmb3Jt
YXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0ZpbGVQ
cmludFN0cmVhbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGaWxlUHJpbnRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdURiB7CisKK0ZpbGVQcmludFN0
cmVhbTo6RmlsZVByaW50U3RyZWFtKEZJTEUqIGZpbGUsIEFkb3B0aW9uTW9kZSBhZG9wdGlvbk1v
ZGUpCisgICAgOiBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fYWRvcHRpb25Nb2RlKGFkb3B0aW9uTW9k
ZSkKK3sKK30KKworRmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKK3sKKyAgICBp
ZiAobV9hZG9wdGlvbk1vZGUgPT0gQm9ycm93KQorICAgICAgICByZXR1cm47CisgICAgZmNsb3Nl
KG1fZmlsZSk7Cit9CisKK3ZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNoYXIq
IGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQoreworICAgIHZmcHJpbnRmKG1fZmlsZSwgZm9ybWF0
LCBhcmdMaXN0KTsKK30KKwordm9pZCBGaWxlUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKKyAgICBm
Zmx1c2gobV9maWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zp
bGVQcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvRmlsZVByaW50
U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWxlUHJpbnRTdHJlYW1faAor
I2RlZmluZSBGaWxlUHJpbnRTdHJlYW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIEZpbGVQcmlu
dFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVhbSB7CitwdWJsaWM6CisgICAgZW51bSBBZG9wdGlv
bk1vZGUgeworICAgICAgICBBZG9wdCwKKyAgICAgICAgQm9ycm93CisgICAgfTsKKyAgICAKKyAg
ICBGaWxlUHJpbnRTdHJlYW0oRklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsKKyAgICB2aXJ0
dWFsIH5GaWxlUHJpbnRTdHJlYW0oKTsKKyAgICAKKyAgICBGSUxFKiBmaWxlKCkgeyByZXR1cm4g
bV9maWxlOyB9CisgICAgCisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFf
bGlzdCk7CisgICAgdm9pZCBmbHVzaCgpOworCitwcml2YXRlOgorICAgIEZJTEUqIG1fZmlsZTsK
KyAgICBBZG9wdGlvbk1vZGUgbV9hZG9wdGlvbk1vZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpGaWxlUHJpbnRTdHJlYW07CisKKyNlbmRpZiAvLyBGaWxlUHJpbnRT
dHJlYW1faAorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpbnRTdHJlYW0uaCIKKworI2luY2x1ZGUgPHN0ZGlv
Lmg+CisjaW5jbHVkZSA8d3RmL0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK1ByaW50U3RyZWFtOjpQcmludFN0cmVhbSgpIHsg
fQorUHJpbnRTdHJlYW06On5QcmludFN0cmVhbSgpIHsgfSAvLyBGb3JjZSB0aGUgdnRhYmxlIHRv
IGJlIGluIHRoaXMgbW9kdWxlCisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50Zihjb25zdCBjaGFy
KiBmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IGFyZ0xpc3Q7CisgICAgdmFfc3RhcnQoYXJn
TGlzdCwgZm9ybWF0KTsKKyAgICB2cHJpbnRmKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFfZW5k
KGFyZ0xpc3QpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludChjb25zdCBjaGFyKiBzdHJp
bmcpCit7CisgICAgcHJpbnRmKCIlcyIsIHN0cmluZyk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06
OnByaW50KGNvbnN0IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcuZGF0YSgp
KTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgcHJpbnQoc3RyaW5nLnV0ZjgoKSk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50
bG4oY29uc3QgY2hhciogc3RyaW5nKQoreworICAgIHByaW50KHN0cmluZyk7CisgICAgcHJpbnRs
bigpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludGxuKGNvbnN0IENTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBwcmludChzdHJpbmcpOworICAgIHByaW50bG4oKTsKK30KKwordm9pZCBQcmlu
dFN0cmVhbTo6cHJpbnRsbihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJp
bmcpOworICAgIHByaW50bG4oKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRsbigpCit7
CisgICAgcHJpbnRmKCJcbiIpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpmbHVzaCgpCit7Cit9
CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBp
ZiAodmFsdWUpCisgICAgICAgIHN0cmVhbS5wcmludGYoInRydWUiKTsKKyAgICBlbHNlCisgICAg
ICAgIHN0cmVhbS5wcmludGYoImZhbHNlIik7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0m
IHN0cmVhbSwgaW50IHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVkIiwgdmFsdWUpOwor
fQorCit2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIHVuc2lnbmVkIGludCB2YWx1ZSkK
K3sKKyAgICBzdHJlYW0ucHJpbnRmKCIldSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYgc3RyZWFtLCBsb25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsZCIs
IHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCB1bnNpZ25lZCBs
b25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsdSIsIHZhbHVlKTsKK30KKwordm9p
ZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3Ry
ZWFtLnByaW50ZigiJWxsZCIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYg
c3RyZWFtLCB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50Zigi
JWxsdSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBSYXdQ
b2ludGVyIHBvaW50ZXIpCit7CisgICAgc3RyZWFtLnByaW50ZigiJXAiLCBwb2ludGVyLnZhbHVl
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYvUHJp
bnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQcmludFN0cmVhbV9oCisjZGVmaW5lIFByaW50U3RyZWFtX2gKKwor
I2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1Jhd1BvaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBDU3RyaW5nOworY2xhc3MgU3RyaW5nOworCitjbGFz
cyBQcmludFN0cmVhbSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05P
TkNPUFlBQkxFKFByaW50U3RyZWFtKTsKK3B1YmxpYzoKKyAgICBQcmludFN0cmVhbSgpOworICAg
IHZpcnR1YWwgflByaW50U3RyZWFtKCk7CisKKyAgICB2b2lkIHByaW50Zihjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CisgICAgdmlydHVhbCB2b2lk
IHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSA9IDA7CisgICAgdm9pZCBwcmlu
dChjb25zdCBjaGFyKiBzdHIpOworICAgIHZvaWQgcHJpbnQoY29uc3QgQ1N0cmluZyYpOworICAg
IHZvaWQgcHJpbnQoY29uc3QgU3RyaW5nJik7IC8vIFBlcmZvcm1zIGxlbmllbnQgdXRmOCBjb252
ZXJzaW9uLgorICAgIHZvaWQgcHJpbnRsbihjb25zdCBjaGFyKiBzdHIpOworICAgIHZvaWQgcHJp
bnRsbihjb25zdCBDU3RyaW5nJik7CisgICAgdm9pZCBwcmludGxuKGNvbnN0IFN0cmluZyYpOyAv
LyBQZXJmb3JtcyBsZW5pZW50IHV0ZjggY29udmVyc2lvbi4KKyAgICB2b2lkIHByaW50bG4oKTsK
KworICAgIC8vIFR5cGljYWxseSBhIG5vLW9wIGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRT
dHJlYW0sIHRoaXMgaXMgYSBoaW50IHRoYXQKKyAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hv
dWxkIGZsdXNoIGl0cyBidWZmZXJzIGlmIGl0IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgorICAg
IHZpcnR1YWwgdm9pZCBmbHVzaCgpOworfTsKKworLy8gVXNlIHByaW50KCkgZnVuY3Rpb25zIHRo
YXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjbGFzcyB0byBhbGxvdyBmb3IgYW55b25lIHRvCisvLyBl
eHRlbmQgaXQuIFRoZSBjb252ZW50aW9uIGlzIHRoYXQgaWYgeW91IGhhdmUgYSBkYXRhdHlwZSB0
aGF0IGlzIHdvcnRoIHByaW50aW5nLAorLy8geW91IHNob3VsZCBpbXBsZW1lbnQgYSBtZXRob2Qg
d2l0aCB0aGlzIHNpZ25hdHVyZToKKy8vCisvLyB2b2lkIHByaW50KFByaW50U3RyZWFtJiwgY29u
c3QgTXlDbGFzcyYpCisKK2lubGluZSB2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIGNv
bnN0IGNoYXIqIHN0cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5nKTsKK30KKworaW5s
aW5lIHZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQ1N0cmluZyYgc3RyaW5n
KQoreworICAgIHN0cmVhbS5wcmludChzdHJpbmcpOworfQorCitpbmxpbmUgdm9pZCBwcmludChQ
cmludFN0cmVhbSYgc3RyZWFtLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzdHJlYW0u
cHJpbnQoc3RyaW5nKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYsIGJvb2wpOwordm9p
ZCBwcmludChQcmludFN0cmVhbSYsIGludCk7Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiwgdW5z
aWduZWQgaW50KTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nKTsKK3ZvaWQgcHJpbnQo
UHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBs
b25nIGxvbmcpOwordm9pZCBwcmludChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcgbG9uZyk7
Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEg
dmFsdWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHBy
aW50KHN0cmVhbSwgdmFsdWUyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFs
dWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMykKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7
CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQ+Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIFQxIHZhbHVlMSwgVDIg
dmFsdWUyLCBUMyB2YWx1ZTMsIFQ0IHZhbHVlNCkKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVl
MSk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUz
KTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK3Zv
aWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZh
bHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEp
OworICAgIHByaW50KHN0cmVhbSwgdmFsdWUyKTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMyk7
CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTQpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWU1KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJl
YW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBU
NSB2YWx1ZTUsIFQ2IHZhbHVlNikKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAg
cHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBw
cmludChzdHJlYW0sIHZhbHVlNCk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTUpOworICAgIHBy
aW50KHN0cmVhbSwgdmFsdWU2KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDE+Cit2b2lkIHBy
aW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxKQoreworICAgIHByaW50KHN0cmVh
bSwgdmFsdWUxKTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEg
dmFsdWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEsIHZhbHVlMik7
CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBU
MSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzKQoreworICAgIHByaW50KHN0cmVhbSwgdmFs
dWUxLCB2YWx1ZTIsIHZhbHVlMyk7CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2
b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQz
IHZhbHVlMywgVDQgdmFsdWU0KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIs
IHZhbHVlMywgdmFsdWU0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDU+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3Ry
ZWFtLCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzLCB2YWx1ZTQsIHZhbHVlNSk7CisgICAgc3RyZWFt
LnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJp
bnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUz
LCBUNCB2YWx1ZTQsIFQ1IHZhbHVlNSwgVDYgdmFsdWU2KQoreworICAgIHByaW50KHN0cmVhbSwg
dmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFsdWU0LCB2YWx1ZTUsIHZhbHVlNik7CisgICAgc3Ry
ZWFtLnByaW50bG4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UHJp
bnRTdHJlYW07CisKKyNlbmRpZiAvLyBQcmludFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1Jhd1BvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBSYXdQb2ludGVyX2gKKyNkZWZpbmUgUmF3UG9pbnRlcl9oCisK
K25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSYXdQb2ludGVyIHsKK3B1YmxpYzoKKyAgICBSYXdQ
b2ludGVyKCkKKyAgICAgICAgOiBtX3ZhbHVlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBl
eHBsaWNpdCBSYXdQb2ludGVyKHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUp
CisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCogbV92YWx1ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUmF3UG9pbnRlcl9oCisK
</data>
<flag name="commit-queue"
          id="191079"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175581</attachid>
            <date>2012-11-21 21:06:31 -0800</date>
            <delta_ts>2012-11-21 21:15:14 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>45516</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5kIGRh
dGFMb2dGVigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IE9wZXJhbmRWYWx1ZVRyYWl0cyB7CiAgICAgc3Rh
dGljIFQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gVCgpOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBUJiB2YWx1ZSwgRklMRSogb3V0KSB7IHZhbHVlLmR1bXAob3V0KTsgfQorICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgVCYgdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpIHsgdmFsdWUu
ZHVtcChvdXQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMg
PSBPcGVyYW5kVmFsdWVUcmFpdHM8VD4gPgpAQCAtMTkwLDE3ICsxOTAsMTcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgZHVtcE9w
ZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRyYWl0cz4mIG9wZXJhbmRzLCBGSUxFKiBvdXQpCit2
b2lkIGR1bXBPcGVyYW5kcyhjb25zdCBPcGVyYW5kczxULCBUcmFpdHM+JiBvcGVyYW5kcywgUHJp
bnRTdHJlYW0mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgb3BlcmFuZHMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBp
ZiAoYXJndW1lbnQpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50
KGFyZ3VtZW50KSwgb3V0KTsKICAgICB9Ci0gICAgZnByaW50ZihvdXQsICIgOiAiKTsKKyAgICBv
dXQucHJpbnRmKCIgOiAiKTsKICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgb3Bl
cmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICBpZiAobG9jYWwpCi0g
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmxvY2FsKGxvY2FsKSwgb3V0KTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVz
dGluYXRpb24ubWVyZ2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJ
TEUqIG91dCkKK3ZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+c2l6ZSgpOyArK2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0
ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwot
ICAgICAgICBmcHJpbnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5kZXgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiQCVsdToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2
YWx1ZS5kdW1wKG91dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBk
dW1wKEZJTEUqIG91dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEs
MTUgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRo
ZSBjb2RlLgogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50
ZihvdXQsICIoJXMsICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9k
ZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywg
Iiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJh
eU1vZGVzKSk7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAg
ICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBpZiAoISFtX3Zh
bHVlKQotICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICAgICAKICAgICAvLyBBIGdyZWF0IHdheSB0byB0aGluayBhYm91dCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMiAr
OTIsMTIgQEAgc3RhdGljIGNvbnN0IEJsb2NrSW5kZXggTm9CbG9jayA9IFVJTlRfTQogCiBzdHJ1
Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRWYWx1ZSgp
IHsgcmV0dXJuIE5vTm9kZTsgfQotICAgIHN0YXRpYyB2b2lkIGR1bXAoTm9kZUluZGV4IHZhbHVl
LCBGSUxFKiBvdXQpCisgICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gTm9Ob2RlKQotICAgICAg
ICAgICAgZnByaW50ZihvdXQsICItIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCItIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiQCV1IiwgdmFsdWUpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiQCV1IiwgdmFsdWUpOwogICAgIH0KIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDE3ICsyOTgs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNU
b3AoKSkgewotICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlRPUCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgb3V0LnByaW50ZigiWyIpOwog
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwg
bV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVwIiwgbV9zdHJ1Y3R1cmUpOworICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAg
ICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhcmlh
YmxlRXZlbnQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBj
YXNlIFJlc2V0OgotICAgICAgICBmcHJpbnRmKG91dCwgIlJlc2V0Iik7CisgICAgICAgIG91dC5w
cmludGYoIlJlc2V0Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlydGhUb0ZpbGw6CiAg
ICAgICAgIGR1bXBGaWxsSW5mbygiQmlydGhUb0ZpbGwiLCBvdXQpOwpAQCAtNTIsMTMgKzUyLDEz
IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChGSUxFKiBvdXQpIGNvbnMKICAgICAgICAgZHVt
cFNwaWxsSW5mbygiU3BpbGwiLCBvdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERlYXRo
OgotICAgICAgICBmcHJpbnRmKG91dCwgIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CisgICAg
ICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgZnByaW50ZihvdXQsICJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnRmKCJNb3ZI
aW50KEAldSwgciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIGZwcmludGYob3V0LCAiU2V0TG9jYWwo
ciVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgb3V0LnByaW50ZigiU2V0TG9jYWwociVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NiwyMyArNjYsMjMgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgIH0KIH0KIAotdm9pZCBW
YXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSogb3V0KSBj
b25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgIiwg
bmFtZSwgbm9kZUluZGV4KCkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgIiwgbmFtZSwgbm9k
ZUluZGV4KCkpOwogICAgIGlmIChkYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAg
ICAgICAgZnByaW50ZihvdXQsICIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCgpICYgRGF0YUZvcm1hdEpT
KQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzOiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQ
UigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRHUFIoKSkpOworICAgICAgICBvdXQucHJp
bnRmKCIlczolcyIsIEdQUkluZm86OmRlYnVnTmFtZSh0YWdHUFIoKSksIEdQUkluZm86OmRlYnVn
TmFtZShwYXlsb2FkR1BSKCkpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihv
dXQsICIlcyIsIEdQUkluZm86OmRlYnVnTmFtZShncHIoKSkpOwotICAgIGZwcmludGYob3V0LCAi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CisgICAgICAgIG91dC5w
cmludGYoIiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7CisgICAgb3V0LnByaW50Zigi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKLXZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNv
bnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgciVk
LCAlcykiLCBuYW1lLCBub2RlSW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRU
b1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICBvdXQucHJpbnRmKCIlcyhAJXUsIHIlZCwgJXMp
IiwgbmFtZSwgbm9kZUluZGV4KCksIHZpcnR1YWxSZWdpc3RlcigpLCBkYXRhRm9ybWF0VG9TdHJp
bmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lv
biAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDExICsyNDAsMTEgQEAgcHVibGljOgogICAgIAogICAg
IGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiB1OyB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSopIGNvbnN0OwotICAgIHZvaWQg
ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKICAgICBOb2RlSW5kZXggbV9pbmRleDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9u
IDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29k
ZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSogb3V0KQordm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHRy
eVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgZnByaW50ZihvdXQsICIlc2Rpc2Fzc2VtYmx5IG5vdCBhdmFpbGFibGUg
Zm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSArIHNpemUp
OworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2Ug
JXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxOCArMjYsMTcgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNz
ZW1ibGVyX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwog
CiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSog
b3V0KTsKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
LCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKICNlbHNlCi1pbmxp
bmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNp
emVfdCwgY29uc3QgY2hhciosIEZJTEUqKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBQcmludFN0
cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDUsNyArNDQsNyBAQCBpbmxpbmUg
Ym9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvCiAKIC8vIFByaW50cyBlaXRoZXIgdGhl
IGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1i
bHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzZXMuCi12
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29u
c3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpOwordm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJl
YW0mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgs
IEZJTEUqIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiBvdXQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1h
Y3JvQXNzZW1ibAogICAgIHdoaWxlICh1ZF9kaXNhc3NlbWJsZSgmZGlzYXNzZW1ibGVyKSkgewog
ICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNp
emVvZihwY1N0cmluZyksICIweCVseCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJl
bnRQQykpOwotICAgICAgICBmcHJpbnRmKG91dCwgIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNT
dHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3NlbWJsZXIpKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMlMTZzOiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fzc2VtYmxl
cikpOwogICAgICAgICBjdXJyZW50UEMgPSBkaXNhc3NlbWJsZXIucGM7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgZnVuY3Rpb24gdGhhdCBjYW4gbG9nIHRoaW5ncyBz
aG91bGQgYmUgYWJsZSB0byBlYXNpbHkgbG9nIHRoZW0gdG8gYSBtZW1vcnkgYnVmZmVyIGFzIHdl
bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhh
dmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIHBhc3MgYXJvdW5kIGEgRklMRSogYXMgYSB0
YXJnZXQgdG8gd2hpY2ggdG8gcHJpbnQKKyAgICAgICAgc29tZSBsb2dnaW5nIGluZm9ybWF0aW9u
LiBCdXQgdGhlIHB1cnBvc2Ugb2YgcGFzc2luZyBGSUxFKiBpbnN0ZWFkIG9mIGFsd2F5cyBhc3N1
bWluZworICAgICAgICB0aGF0IHdlIHNob3VsZCBkdW1wIHRvIHN0ZGVyciBpcyB0aGF0IGl0IG1h
eSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIHNlbmQgdGhlIGxvZ2dpbmcKKyAgICAgICAgaW5mb3Jt
YXRpb24gZWxzd2hlcmUuIFVuZm9ydHVuYXRlbHksIEZJTEUqIGlzbid0IHF1aXRlIHBvd2VyZnVs
IGVub3VnaDogaXQncyBjb21iZXJzb21lCisgICAgICAgIHRvIHVzZSBpdCB0byBzZW5kIGxvZ2dp
bmcgdG8gYSBzdHJpbmcsIGZvciBleGFtcGxlLgorICAgICAgICAKKyAgICAgICAgV2UgY291bGQg
Z2V0IGFyb3VuZCB0aGlzIGJ5IHVzaW5nIDxpb3N0cmVhbT4gYW5kIDxzc3RyZWFtPiwgYnV0IHNv
IGZhciB0aGlzIGFzcGVjdCBvZgorICAgICAgICBDKysgaGFzIG5vdCBiZWVuIHBhcnQgb2YgdGhl
IFdlYktpdCBjb2RpbmcgY29udmVudGlvbnMuIFBlcnNvbmFsbHkgSSBmaW5kIDxpb3N0cmVhbT4K
KyAgICAgICAgYXdrd2FyZCBkdWUgdG8gaXRzIGFidXNlIG9mIG9wZXJhdG9yIG92ZXJsb2FkaW5n
LgorICAgICAgICAKKyAgICAgICAgU28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgY2xv
c2VseSByZWxhdGVkIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5OgorICAgICAgICAKKyAgICAgICAg
MSkgVGhlIFByaW50U3RyZWFtIGFic3RyYWN0IGNsYXNzLCB3aGljaCBvZmZlcnMgcHJpbnRmLWxp
a2UgZnVuY3Rpb25hbGl0eSB3aGlsZQorICAgICAgICAgICBjb21wbGV0ZWx5IGFic3RyYWN0aW5n
IHRoZSBkZXN0aW5hdGlvbiBhbmQgbWVjaGFuaXNtIG9mIHRoZSBwcmludGluZyBvdXRwdXQuIEl0
CisgICAgICAgICAgIHdvdWxkIGJlIHRyaXZpYWwgdG8gaW1wbGVtZW50IGEgU3RyaW5nUHJpbnRT
dHJlYW0sIGZvciBleGFtcGxlLiBUaGlzIHdpbGwgZmVlZAorICAgICAgICAgICBpbnRvIHdvcmsg
b24gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjk5OQorICAgICAg
ICAKKyAgICAgICAgMikgVGVtcGxhdGl6ZWQgcHJpbnQoKSBhbmQgcHJpbnRsbigpIG1ldGhvZHMg
dGhhdCBhbGxvdyBzYXlpbmcgdGhpbmdzIGxpa2UKKyAgICAgICAgICAgcHJpbnRsbihvdXQsICJj
b3VudCA9ICIsIGNvdW50KS4gVGhpcyB3aWxsIGZlZWQgaW50byB3b3JrIG9uCisgICAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDkKKyAgICAgICAg
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIGRhdGFMb2coKSB0byB1c2UgRmlsZVBy
aW50U3RyZWFtIGludGVybmFsbHksIGFuZCBXVEY6OmRhdGFGaWxlKCkKKyAgICAgICAgbm93IHJl
dHVybnMgYSBGaWxlUHJpbnRTdHJlYW0mLiBBbnkgcHJldmlvdXMgdXNlcnMgb2YgV1RGOjpkYXRh
RmlsZSgpIGhhdmUgYmVlbiBjaGFuZ2VkCisgICAgICAgIHRvIGV4cGVjdCBhIFByaW50U3RyZWFt
Ji4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLnBybzoK
KyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIHd0Zi9EYXRhTG9nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVMb2dGaWxlT25jZSk6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVMb2dGaWxlKToKKyAg
ICAgICAgKFdURjo6ZGF0YUZpbGUpOgorICAgICAgICAoV1RGOjpkYXRhTG9nVik6CisgICAgICAg
IChXVEY6OmRhdGFMb2dTdHJpbmcpOgorICAgICAgICAqIHd0Zi9EYXRhTG9nLmg6CisgICAgICAg
IChXVEYpOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdURik6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6RmlsZVByaW50U3RyZWFt
KToKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKToKKyAg
ICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKToKKyAgICAgICAgKFdURjo6Rmls
ZVByaW50U3RyZWFtOjpmbHVzaCk6CisgICAgICAgICogd3RmL0ZpbGVQcmludFN0cmVhbS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChGaWxlUHJpbnRTdHJlYW0pOgorICAgICAg
ICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OmZpbGUpOgorICAgICAgICAqIHd0Zi9QcmludFN0cmVh
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06
OlByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06On5QcmludFN0cmVhbSk6
CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjpwcmludGYpOgorICAgICAgICAoV1RGOjpQcmlu
dFN0cmVhbTo6cHJpbnQpOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRsbik6Cisg
ICAgICAgIChXVEY6OlByaW50U3RyZWFtOjpmbHVzaCk6CisgICAgICAgIChXVEY6OnByaW50KToK
KyAgICAgICAgKiB3dGYvUHJpbnRTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAg
ICAgICAoUHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpwcmludCk6CisgICAgICAgIChXVEY6
OnByaW50bG4pOgorICAgICAgICAqIHd0Zi9SYXdQb2ludGVyLmg6IEFkZGVkLgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFJhd1BvaW50ZXIpOgorICAgICAgICAoV1RGOjpSYXdQb2ludGVyOjpS
YXdQb2ludGVyKToKKyAgICAgICAgKFdURjo6UmF3UG9pbnRlcjo6dmFsdWUpOgorCiAyMDEyLTEx
LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGRh
dGFMb2coKSBhbmQgZGF0YUxvZ1YoKSB0byBkYXRhTG9nRigpIGFuZCBkYXRhTG9nRlYoKQpJbmRl
eDogU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL1dURi9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIHd0Zl9z
b3VyY2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5jcHAgXAorICAgIFNv
dXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GaXhl
ZEFycmF5LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL0Zsb2F0MzJBcnJheS5oIFwKICAgICBTb3Vy
Y2UvV1RGL3d0Zi9GbG9hdDY0QXJyYXkuaCBcCkBAIC0xMjYsOSArMTI4LDEyIEBAIHd0Zl9zb3Vy
Y2VzICs9IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9QYXNzVHJhaXRzLmggXAogICAgIFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1Bvc3NpYmx5TnVsbC5oIFwK
KyAgICBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3Rm
L1ByaW50U3RyZWFtLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1JhbmRvbU51bWJlci5jcHAgXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1JhbmRvbU51bWJlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9S
YW5kb21OdW1iZXJTZWVkLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50ZXIuaCBcCiAg
ICAgU291cmNlL1dURi93dGYvUmVkQmxhY2tUcmVlLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWQuaCBcCiAgICAgU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmggXApJbmRl
eDogU291cmNlL1dURi9XVEYucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnBybwko
cmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL1dURi9XVEYucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw2ICs2MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIEV4cG9ydE1hY3Jvcy5oIFwKICAgICBG
YXN0QWxsb2NCYXNlLmggXAogICAgIEZhc3RNYWxsb2MuaCBcCisgICAgRmlsZVByaW50U3RyZWFt
LmggXAogICAgIEZpeGVkQXJyYXkuaCBcCiAgICAgRmxvYXQzMkFycmF5LmggXAogICAgIEZsb2F0
NjRBcnJheS5oIFwKQEAgLTEyNiw4ICsxMjcsMTAgQEAgSEVBREVSUyArPSBcCiAgICAgUGFzc1Ry
YWl0cy5oIFwKICAgICBQbGF0Zm9ybS5oIFwKICAgICBQb3NzaWJseU51bGwuaCBcCisgICAgUHJp
bnRTdHJlYW0uaCBcCiAgICAgUmFuZG9tTnVtYmVyLmggXAogICAgIFJhbmRvbU51bWJlclNlZWQu
aCBcCisgICAgUmF3UG9pbnRlci5oIFwKICAgICBSZWRCbGFja1RyZWUuaCBcCiAgICAgUmVmQ291
bnRlZC5oIFwKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCBcCkBAIC0yMDcsNiArMjEwLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgZHRvYS9maXhlZC1kdG9hLmNjIFwKICAgICBkdG9hL3N0cnRv
ZC5jYyBcCiAgICAgRmFzdE1hbGxvYy5jcHAgXAorICAgIEZpbGVQcmludFN0cmVhbS5jcHAgXAog
ICAgIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBcCiAgICAgZ29iamVjdC9HT3duUHRyLmNwcCBcCiAg
ICAgZ29iamVjdC9HUmVmUHRyLmNwcCBcCkBAIC0yMjQsNiArMjI4LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCiAgICAgUGFnZUJsb2NrLmNwcCBcCiAg
ICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgXAorICAgIFByaW50U3RyZWFtLmNwcCBcCiAgICAg
UmFuZG9tTnVtYmVyLmNwcCBcCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBcCiAgICAg
U0hBMS5jcHAgXApJbmRleDogU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oJKHJldmlzaW9uIDEzNTQ3
MSkKKysrIFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03ODEsNiArNzgxLDE0IEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZl
UGF0aD0iLi5cd3RmXEZpbGVQcmludFN0cmVhbS5jcHAiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZp
bGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXEZpbGVQcmludFN0cmVhbS5oIgorCQkJPgorCQk8
L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxGaXhlZEFycmF5LmgiCiAJ
CQk+CiAJCTwvRmlsZT4KQEAgLTEwODksNiArMTA5NywxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJ
CTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxQcmludFN0cmVhbS5jcHAiCisJCQk+CisJ
CTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFByaW50U3RyZWFtLmgi
CisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFJhbmRv
bU51bWJlci5jcHAiCiAJCQk+CiAJCTwvRmlsZT4KQEAgLTExMDEsNiArMTExNywxMCBAQAogCQkJ
PgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxSYXdQb2ludGVy
LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXFJl
ZEJsYWNrVHJlZS5oIgogCQkJPgogCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDEx
IEBACiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJMEY5RDMzNjAxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQ
cmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjlEMzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLzsg
fTsKKwkJMEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUMxNjVEQkE3
MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovOyB9OworCQkwRjlEMzM2MjE2NURCQTcz
MDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmNwcCAqLzsgfTsKKwkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RTE2
NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLzsgfTsKKwkJMEY5RDMzNjQxNjVEQkE3
MzAwNUFEMzg3IC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVGMTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmgg
Ki87IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZC
MjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CiAJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFEMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTMxMiw2ICszMTcsMTEgQEAKIC8qIEVu
ZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KKwkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlUHJp
bnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM1QzE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbGVQcmludFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRTdHJlYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzNUYxNjVEQkE3MzAwNUFEMzg3IC8qIFJhd1Bv
aW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmF3UG9pbnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyog
RmFzdEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYXN0Qml0
VmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFEMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJBTVNpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRTE1
NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSQU1TaXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDcsNiArNzE3
LDggQEAKIAkJCQkwRkQ4MUFDNDE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICov
LAogCQkJCUE4QTQ3MkExMTUxQTgyNUEwMDQxMjNGRiAvKiBGYXN0TWFsbG9jLmNwcCAqLywKIAkJ
CQlBOEE0NzJBMjE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5oICovLAorCQkJCTBGOUQz
MzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovLAorCQkJCTBGOUQz
MzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLywKIAkJCQlBOEE0NzJB
MzE1MUE4MjVBMDA0MTIzRkYgLyogRml4ZWRBcnJheS5oICovLAogCQkJCUE4QTQ3MkE0MTUxQTgy
NUEwMDQxMjNGRiAvKiBGbG9hdDMyQXJyYXkuaCAqLywKIAkJCQlBOEE0NzJBNTE1MUE4MjVBMDA0
MTIzRkYgLyogRmxvYXQ2NEFycmF5LmggKi8sCkBAIC03ODMsMTMgKzc5NSwxNSBAQAogCQkJCUE4
QTQ3MkVEMTUxQTgyNUIwMDQxMjNGRiAvKiBQYXNzUmVmUHRyLmggKi8sCiAJCQkJQThBNDcyRUUx
NTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzJFRjE1MUE4MjVC
MDA0MTIzRkYgLyogUGxhdGZvcm0uaCAqLywKLQkJCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUg
LyogUGxhdGZvcm0uaCAqLywKIAkJCQlBOEE0NzJGMzE1MUE4MjVCMDA0MTIzRkYgLyogUG9zc2li
bHlOdWxsLmggKi8sCisJCQkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmNwcCAqLywKKwkJCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAq
LywKIAkJCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8sCiAJCQkJ
MTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLywKIAkJCQlBOEE0NzJGQjE1
MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzJGQzE1MUE4
MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyLmggKi8sCiAJCQkJQThBNDcyRkQxNTFBODI1QjAw
NDEyM0ZGIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLywKKwkJCQkwRjlEMzM1RjE2NURCQTczMDA1
QUQzODcgLyogUmF3UG9pbnRlci5oICovLAogCQkJCUE4QTQ3MkZFMTUxQTgyNUIwMDQxMjNGRiAv
KiBSZWRCbGFja1RyZWUuaCAqLywKIAkJCQlBOEE0NzJGRjE1MUE4MjVCMDA0MTIzRkYgLyogUmVm
Q291bnRlZC5oICovLAogCQkJCUE4QTQ3MzAwMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVk
QXJyYXkuaCAqLywKQEAgLTg0OCw2ICs4NjIsNyBAQAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQx
MjNGRiAvKiBWTVRhZ3MuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRo
cmVhZERhdGEuaCAqLywKKwkJCQlBODc2REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0u
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTEyMTYsNiArMTIzMSw5IEBACiAJCQkJQThBNDc0ODAxNTFBODI1QjAwNDEyM0ZGIC8qIFZN
VGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0NDYxNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlN0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8q
IFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUQzMzYxMTY1REJBNzMwMDVB
RDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUQzMzYzMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5RDMz
NjQxNjVEQkE3MzAwNUFEMzg3IC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTM4
Myw2ICsxNDAxLDggQEAKIAkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDg2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4
NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5RDMzNjIxNjVE
QkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBAIFNFVChXVEZfSEVBREVS
UwogICAgIEVuY29kZXIuaAogICAgIEZhc3RBbGxvY0Jhc2UuaAogICAgIEZhc3RNYWxsb2MuaAor
ICAgIEZpbGVQcmludFN0cmVhbS5oCiAgICAgRml4ZWRBcnJheS5oCiAgICAgRm9yd2FyZC5oCiAg
ICAgR2V0UHRyLmgKQEAgLTc1LDggKzc2LDEwIEBAIFNFVChXVEZfSEVBREVSUwogICAgIFBhcmFs
bGVsSm9ic09wZW5NUC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBvc3NpYmx5TnVsbC5oCisgICAg
UHJpbnRTdHJlYW0uaAogICAgIFJhbmRvbU51bWJlci5oCiAgICAgUmFuZG9tTnVtYmVyU2VlZC5o
CisgICAgUmF3UG9pbnRlci5oCiAgICAgUmVkQmxhY2tUcmVlLmgKICAgICBSZWZDb3VudGVkLmgK
ICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaApAQCAtMTUwLDYgKzE1Myw3IEBAIFNFVChXVEZf
U09VUkNFUwogICAgIERlY2ltYWxOdW1iZXIuY3BwCiAgICAgRHluYW1pY0Fubm90YXRpb25zLmNw
cAogICAgIEZhc3RNYWxsb2MuY3BwCisgICAgRmlsZVByaW50U3RyZWFtLmNwcAogICAgIEdyZWdv
cmlhbkRhdGVUaW1lLmNwcAogICAgIEhhc2hUYWJsZS5jcHAKICAgICBNRDUuY3BwCkBAIC0xNjIs
NiArMTY2LDcgQEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNw
cAogICAgIFBhZ2VCbG9jay5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcAorICAgIFBy
aW50U3RyZWFtLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwCiAgICAgU0hBMS5jcHAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCShyZXZpc2lvbiAxMzU0
NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkRhdGFMb2cuaCIKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5o
PgogCiAjZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMAogCkBAIC0zNSwzNCArMzYsMzcgQEAKIAog
bmFtZXNwYWNlIFdURiB7CiAKLSNpZiBEQVRBX0xPR19UT19GSUxFCi1zdGF0aWMgRklMRSogZmls
ZTsKKyNpZiBVU0UoUFRIUkVBRFMpCitzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdGlhbGl6ZUxv
Z0ZpbGVPbmNlS2V5ID0gUFRIUkVBRF9PTkNFX0lOSVQ7CisjZW5kaWYKKworc3RhdGljIEZpbGVQ
cmludFN0cmVhbSogZmlsZTsKIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKCkK
IHsKKyNpZiBEQVRBX0xPR19UT19GSUxFCiAjaWZkZWYgREFUQV9MT0dfRklMRU5BTUUKICAgICBj
b25zdCBjaGFyKiBmaWxlbmFtZSA9IERBVEFfTE9HX0ZJTEVOQU1FOwogI2Vsc2UKICAgICBjb25z
dCBjaGFyKiBmaWxlbmFtZSA9IGdldGVudigiV1RGX0RBVEFfTE9HX0ZJTEVOQU1FIik7CiAjZW5k
aWYKICAgICBpZiAoZmlsZW5hbWUpIHsKLSAgICAgICAgZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAi
dyIpOwotICAgICAgICBpZiAoIWZpbGUpCisgICAgICAgIEZJTEUqIHJhd0ZpbGUgPSBmb3Blbihm
aWxlbmFtZSwgInciKTsKKyAgICAgICAgaWYgKHJhd0ZpbGUpCisgICAgICAgICAgICBmaWxlID0g
bmV3IEZpbGVQcmludFN0cmVhbShyYXdGaWxlKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJXYXJuaW5nOiBDb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSAlcyBmb3Ig
d3JpdGluZy5cbiIsIGZpbGVuYW1lKTsKICAgICB9CisjZW5kaWYgLy8gREFUQV9MT0dfVE9fRklM
RQogICAgIGlmICghZmlsZSkKLSAgICAgICAgZmlsZSA9IHN0ZGVycjsKKyAgICAgICAgZmlsZSA9
IG5ldyBGaWxlUHJpbnRTdHJlYW0oc3RkZXJyLCBGaWxlUHJpbnRTdHJlYW06OkJvcnJvdyk7CiAg
ICAgCi0gICAgc2V0dmJ1ZihmaWxlLCAwLCBfSU9OQkYsIDApOyAvLyBQcmVmZXIgdW5idWZmZXJl
ZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVsbCBsb2cgdXBvbiBjcmFzaCBvciBkZWFkbG9j
ay4KKyAgICBzZXR2YnVmKGZpbGUtPmZpbGUoKSwgMCwgX0lPTkJGLCAwKTsgLy8gUHJlZmVyIHVu
YnVmZmVyZWQgb3V0cHV0LCBzbyB0aGF0IHdlIGdldCBhIGZ1bGwgbG9nIHVwb24gY3Jhc2ggb3Ig
ZGVhZGxvY2suCiB9CiAKLSNpZiBPUyhEQVJXSU4pCi1zdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5p
dGlhbGl6ZUxvZ0ZpbGVPbmNlS2V5ID0gUFRIUkVBRF9PTkNFX0lOSVQ7Ci0jZW5kaWYKLQogc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZUxvZ0ZpbGUoKQogewotI2lmIE9TKERBUldJTikKKyNpZiBVU0Uo
UFRIUkVBRFMpCiAgICAgcHRocmVhZF9vbmNlKCZpbml0aWFsaXplTG9nRmlsZU9uY2VLZXksIGlu
aXRpYWxpemVMb2dGaWxlT25jZSk7CiAjZWxzZQogICAgIGlmICghZmlsZSkKQEAgLTcwLDIxICs3
NCwxNSBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiAjZW5kaWYKIH0KIAotRklM
RSogZGF0YUZpbGUoKQorRmlsZVByaW50U3RyZWFtJiBkYXRhRmlsZSgpCiB7CiAgICAgaW5pdGlh
bGl6ZUxvZ0ZpbGUoKTsKLSAgICByZXR1cm4gZmlsZTsKKyAgICByZXR1cm4gKmZpbGU7CiB9Ci0j
ZWxzZSAvLyBEQVRBX0xPR19UT19GSUxFCi1GSUxFKiBkYXRhRmlsZSgpCi17Ci0gICAgcmV0dXJu
IHN0ZGVycjsKLX0KLSNlbmRpZiAvLyBEQVRBX0xPR19UT19GSUxFCiAKIHZvaWQgZGF0YUxvZ0ZW
KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQogewotICAgIHZmcHJpbnRmKGRh
dGFGaWxlKCksIGZvcm1hdCwgYXJnTGlzdCk7CisgICAgZGF0YUZpbGUoKS52cHJpbnRmKGZvcm1h
dCwgYXJnTGlzdCk7CiB9CiAKIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
CkBAIC05Nyw3ICs5NSw3IEBAIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hhciogZm9ybWF0LCAuLi4p
CiAKIHZvaWQgZGF0YUxvZ0ZTdHJpbmcoY29uc3QgY2hhciogc3RyKQogewotICAgIGZwdXRzKHN0
ciwgZGF0YUZpbGUoKSk7CisgICAgZGF0YUZpbGUoKS5wcmludChzdHIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmgJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9X
VEYvd3RmL0RhdGFMb2cuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDEzIEBACiAKICNp
bmNsdWRlIDxzdGRhcmcuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9GaWxl
UHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi1XVEZfRVhQT1JUX1BSSVZBVEUg
RklMRSogZGF0YUZpbGUoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBGaWxlUHJpbnRTdHJlYW0mIGRh
dGFGaWxlKCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRhdGFMb2dGVihjb25zdCBjaGFy
KiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDApOwogV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGF0YUxvZ0YoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRS
SUJVVEVfUFJJTlRGKDEsIDIpOwpJbmRleDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZVByaW50U3Ry
ZWFtLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitGaWxlUHJpbnRTdHJlYW06OkZpbGVQcmludFN0
cmVhbShGSUxFKiBmaWxlLCBBZG9wdGlvbk1vZGUgYWRvcHRpb25Nb2RlKQorICAgIDogbV9maWxl
KGZpbGUpCisgICAgLCBtX2Fkb3B0aW9uTW9kZShhZG9wdGlvbk1vZGUpCit7Cit9CisKK0ZpbGVQ
cmludFN0cmVhbTo6fkZpbGVQcmludFN0cmVhbSgpCit7CisgICAgaWYgKG1fYWRvcHRpb25Nb2Rl
ID09IEJvcnJvdykKKyAgICAgICAgcmV0dXJuOworICAgIGZjbG9zZShtX2ZpbGUpOworfQorCit2
b2lkIEZpbGVQcmludFN0cmVhbTo6dnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3Qg
YXJnTGlzdCkKK3sKKyAgICB2ZnByaW50ZihtX2ZpbGUsIGZvcm1hdCwgYXJnTGlzdCk7Cit9CisK
K3ZvaWQgRmlsZVByaW50U3RyZWFtOjpmbHVzaCgpCit7CisgICAgZmZsdXNoKG1fZmlsZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRmlsZVByaW50U3RyZWFtX2gKKyNkZWZpbmUgRmlsZVByaW50
U3RyZWFtX2gKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBGaWxlUHJpbnRTdHJlYW0gOiBwdWJsaWMg
UHJpbnRTdHJlYW0geworcHVibGljOgorICAgIGVudW0gQWRvcHRpb25Nb2RlIHsKKyAgICAgICAg
QWRvcHQsCisgICAgICAgIEJvcnJvdworICAgIH07CisgICAgCisgICAgRmlsZVByaW50U3RyZWFt
KEZJTEUqLCBBZG9wdGlvbk1vZGUgPSBBZG9wdCk7CisgICAgdmlydHVhbCB+RmlsZVByaW50U3Ry
ZWFtKCk7CisgICAgCisgICAgRklMRSogZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQorICAgIAor
ICAgIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpOworICAgIHZvaWQg
Zmx1c2goKTsKKworcHJpdmF0ZToKKyAgICBGSUxFKiBtX2ZpbGU7CisgICAgQWRvcHRpb25Nb2Rl
IG1fYWRvcHRpb25Nb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
RmlsZVByaW50U3RyZWFtOworCisjZW5kaWYgLy8gRmlsZVByaW50U3RyZWFtX2gKKwpJbmRleDog
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1ByaW50
U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlByaW50U3RyZWFtLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK1ByaW50U3RyZWFtOjpQcmludFN0cmVhbSgpIHsgfQorUHJpbnRTdHJl
YW06On5QcmludFN0cmVhbSgpIHsgfSAvLyBGb3JjZSB0aGUgdnRhYmxlIHRvIGJlIGluIHRoaXMg
bW9kdWxlCisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4u
LikKK3sKKyAgICB2YV9saXN0IGFyZ0xpc3Q7CisgICAgdmFfc3RhcnQoYXJnTGlzdCwgZm9ybWF0
KTsKKyAgICB2cHJpbnRmKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgdmFfZW5kKGFyZ0xpc3QpOwor
fQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAg
cHJpbnRmKCIlcyIsIHN0cmluZyk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50KGNvbnN0
IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcuZGF0YSgpKTsKK30KKwordm9p
ZCBQcmludFN0cmVhbTo6cHJpbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgcHJpbnQo
c3RyaW5nLnV0ZjgoKSk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50bG4oY29uc3QgY2hh
ciogc3RyaW5nKQoreworICAgIHByaW50KHN0cmluZyk7CisgICAgcHJpbnRsbigpOworfQorCit2
b2lkIFByaW50U3RyZWFtOjpwcmludGxuKGNvbnN0IENTdHJpbmcmIHN0cmluZykKK3sKKyAgICBw
cmludChzdHJpbmcpOworICAgIHByaW50bG4oKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJp
bnRsbihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcpOworICAgIHBy
aW50bG4oKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRsbigpCit7CisgICAgcHJpbnRm
KCJcbiIpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpmbHVzaCgpCit7Cit9CisKK3ZvaWQgcHJp
bnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgYm9vbCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpCisg
ICAgICAgIHN0cmVhbS5wcmludGYoInRydWUiKTsKKyAgICBlbHNlCisgICAgICAgIHN0cmVhbS5w
cmludGYoImZhbHNlIik7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgaW50
IHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVkIiwgdmFsdWUpOworfQorCit2b2lkIHBy
aW50KFByaW50U3RyZWFtJiBzdHJlYW0sIHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKyAgICBzdHJl
YW0ucHJpbnRmKCIldSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3Ry
ZWFtLCBsb25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsZCIsIHZhbHVlKTsKK30K
Kwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCB1bnNpZ25lZCBsb25nIHZhbHVlKQor
eworICAgIHN0cmVhbS5wcmludGYoIiVsdSIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYgc3RyZWFtLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50Zigi
JWxsZCIsIHZhbHVlKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCB1bnNp
Z25lZCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50ZigiJWxsdSIsIHZhbHVl
KTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBSYXdQb2ludGVyIHBvaW50
ZXIpCit7CisgICAgc3RyZWFtLnByaW50ZigiJXAiLCBwb2ludGVyLnZhbHVlKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBQcmludFN0cmVhbV9oCisjZGVmaW5lIFByaW50U3RyZWFtX2gKKworI2luY2x1ZGUgPHN0
ZGFyZy5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1Jh
d1BvaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitjbGFzcyBDU3RyaW5nOworY2xhc3MgU3RyaW5nOworCitjbGFzcyBQcmludFN0cmVh
bSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNPUFlBQkxFKFBy
aW50U3RyZWFtKTsKK3B1YmxpYzoKKyAgICBQcmludFN0cmVhbSgpOworICAgIHZpcnR1YWwgflBy
aW50U3RyZWFtKCk7CisKKyAgICB2b2lkIHByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikg
V1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMyk7CisgICAgdmlydHVhbCB2b2lkIHZwcmludGYoY29u
c3QgY2hhciogZm9ybWF0LCB2YV9saXN0KSA9IDA7CisgICAgdm9pZCBwcmludChjb25zdCBjaGFy
KiBzdHIpOworICAgIHZvaWQgcHJpbnQoY29uc3QgQ1N0cmluZyYpOworICAgIHZvaWQgcHJpbnQo
Y29uc3QgU3RyaW5nJik7IC8vIFBlcmZvcm1zIGxlbmllbnQgdXRmOCBjb252ZXJzaW9uLgorICAg
IHZvaWQgcHJpbnRsbihjb25zdCBjaGFyKiBzdHIpOworICAgIHZvaWQgcHJpbnRsbihjb25zdCBD
U3RyaW5nJik7CisgICAgdm9pZCBwcmludGxuKGNvbnN0IFN0cmluZyYpOyAvLyBQZXJmb3JtcyBs
ZW5pZW50IHV0ZjggY29udmVyc2lvbi4KKyAgICB2b2lkIHByaW50bG4oKTsKKworICAgIC8vIFR5
cGljYWxseSBhIG5vLW9wIGZvciBtYW55IHN1YmNsYXNzZXMgb2YgUHJpbnRTdHJlYW0sIHRoaXMg
aXMgYSBoaW50IHRoYXQKKyAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZsdXNoIGl0
cyBidWZmZXJzIGlmIGl0IGhhZCBub3QgZG9uZSBzbyBhbHJlYWR5LgorICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpOworfTsKKworLy8gVXNlIHByaW50KCkgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBw
YXJ0IG9mIHRoZSBjbGFzcyB0byBhbGxvdyBmb3IgYW55b25lIHRvCisvLyBleHRlbmQgaXQuIFRo
ZSBjb252ZW50aW9uIGlzIHRoYXQgaWYgeW91IGhhdmUgYSBkYXRhdHlwZSB0aGF0IGlzIHdvcnRo
IHByaW50aW5nLAorLy8geW91IHNob3VsZCBpbXBsZW1lbnQgYSBtZXRob2Qgd2l0aCB0aGlzIHNp
Z25hdHVyZToKKy8vCisvLyB2b2lkIHByaW50KFByaW50U3RyZWFtJiwgY29uc3QgTXlDbGFzcyYp
CisKK2lubGluZSB2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIGNvbnN0IGNoYXIqIHN0
cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5nKTsKK30KKworaW5saW5lIHZvaWQgcHJp
bnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQoreworICAgIHN0
cmVhbS5wcmludChzdHJpbmcpOworfQorCitpbmxpbmUgdm9pZCBwcmludChQcmludFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5n
KTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYsIGJvb2wpOwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYsIGludCk7Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiwgdW5zaWduZWQgaW50KTsK
K3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nIGxvbmcpOwor
dm9pZCBwcmludChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit2b2lkIHByaW50
KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBl
bmFtZSBUMj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHByaW50KHN0cmVhbSwg
dmFsdWUyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMz4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1
ZTIsIFQzIHZhbHVlMykKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJpbnQo
c3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2
b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIFQxIHZhbHVlMSwgVDIgdmFsdWUyLCBUMyB2
YWx1ZTMsIFQ0IHZhbHVlNCkKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJp
bnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBwcmlu
dChzdHJlYW0sIHZhbHVlNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBU
MiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK3ZvaWQgcHJpbnQoUHJp
bnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFs
dWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHByaW50
KHN0cmVhbSwgdmFsdWUyKTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMyk7CisgICAgcHJpbnQo
c3RyZWFtLCB2YWx1ZTQpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWU1KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5
cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwg
VDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUsIFQ2
IHZhbHVlNikKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJpbnQoc3RyZWFt
LCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBwcmludChzdHJlYW0s
IHZhbHVlNCk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTUpOworICAgIHByaW50KHN0cmVhbSwg
dmFsdWU2KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDE+Cit2b2lkIHByaW50bG4oUHJpbnRT
dHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxKQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxKTsK
KyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5h
bWUgVDI+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEsIHZhbHVlMik7CisgICAgc3RyZWFt
LnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMz4KK3ZvaWQgcHJpbnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQy
IHZhbHVlMiwgVDMgdmFsdWUzKQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIs
IHZhbHVlMyk7CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2b2lkIHByaW50bG4o
UHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQg
dmFsdWU0KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFs
dWU0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwg
dHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Cit2b2lk
IHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZh
bHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEs
IHZhbHVlMiwgdmFsdWUzLCB2YWx1ZTQsIHZhbHVlNSk7CisgICAgc3RyZWFtLnByaW50bG4oKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnRsbihQcmludFN0
cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzLCBUNCB2YWx1ZTQs
IFQ1IHZhbHVlNSwgVDYgdmFsdWU2KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1
ZTIsIHZhbHVlMywgdmFsdWU0LCB2YWx1ZTUsIHZhbHVlNik7CisgICAgc3RyZWFtLnByaW50bG4o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UHJpbnRTdHJlYW07CisK
KyNlbmRpZiAvLyBQcmludFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Jhd1BvaW50
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBSYXdQb2ludGVyX2gKKyNkZWZpbmUgUmF3UG9pbnRlcl9oCisKK25hbWVzcGFjZSBX
VEYgeworCitjbGFzcyBSYXdQb2ludGVyIHsKK3B1YmxpYzoKKyAgICBSYXdQb2ludGVyKCkKKyAg
ICAgICAgOiBtX3ZhbHVlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBSYXdQ
b2ludGVyKHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgdm9pZCogbV92YWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCisjZW5kaWYgLy8gUmF3UG9pbnRlcl9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175582</attachid>
            <date>2012-11-21 21:15:14 -0800</date>
            <delta_ts>2012-11-22 00:09:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>45528</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5kIGRh
dGFMb2dGVigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IE9wZXJhbmRWYWx1ZVRyYWl0cyB7CiAgICAgc3Rh
dGljIFQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gVCgpOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBUJiB2YWx1ZSwgRklMRSogb3V0KSB7IHZhbHVlLmR1bXAob3V0KTsgfQorICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgVCYgdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpIHsgdmFsdWUu
ZHVtcChvdXQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMg
PSBPcGVyYW5kVmFsdWVUcmFpdHM8VD4gPgpAQCAtMTkwLDE3ICsxOTAsMTcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgZHVtcE9w
ZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRyYWl0cz4mIG9wZXJhbmRzLCBGSUxFKiBvdXQpCit2
b2lkIGR1bXBPcGVyYW5kcyhjb25zdCBPcGVyYW5kczxULCBUcmFpdHM+JiBvcGVyYW5kcywgUHJp
bnRTdHJlYW0mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgb3BlcmFuZHMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBp
ZiAoYXJndW1lbnQpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50
KGFyZ3VtZW50KSwgb3V0KTsKICAgICB9Ci0gICAgZnByaW50ZihvdXQsICIgOiAiKTsKKyAgICBv
dXQucHJpbnRmKCIgOiAiKTsKICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgb3Bl
cmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICBpZiAobG9jYWwpCi0g
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmxvY2FsKGxvY2FsKSwgb3V0KTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVz
dGluYXRpb24ubWVyZ2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJ
TEUqIG91dCkKK3ZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+c2l6ZSgpOyArK2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0
ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwot
ICAgICAgICBmcHJpbnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5kZXgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiQCVsdToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2
YWx1ZS5kdW1wKG91dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBk
dW1wKEZJTEUqIG91dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEs
MTUgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRo
ZSBjb2RlLgogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50
ZihvdXQsICIoJXMsICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9k
ZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywg
Iiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJh
eU1vZGVzKSk7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAg
ICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBpZiAoISFtX3Zh
bHVlKQotICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICAgICAKICAgICAvLyBBIGdyZWF0IHdheSB0byB0aGluayBhYm91dCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMiAr
OTIsMTIgQEAgc3RhdGljIGNvbnN0IEJsb2NrSW5kZXggTm9CbG9jayA9IFVJTlRfTQogCiBzdHJ1
Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRWYWx1ZSgp
IHsgcmV0dXJuIE5vTm9kZTsgfQotICAgIHN0YXRpYyB2b2lkIGR1bXAoTm9kZUluZGV4IHZhbHVl
LCBGSUxFKiBvdXQpCisgICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gTm9Ob2RlKQotICAgICAg
ICAgICAgZnByaW50ZihvdXQsICItIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCItIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiQCV1IiwgdmFsdWUpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiQCV1IiwgdmFsdWUpOwogICAgIH0KIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDE3ICsyOTgs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNU
b3AoKSkgewotICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlRPUCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgb3V0LnByaW50ZigiWyIpOwog
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwg
bV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVwIiwgbV9zdHJ1Y3R1cmUpOworICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAg
ICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhcmlh
YmxlRXZlbnQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBj
YXNlIFJlc2V0OgotICAgICAgICBmcHJpbnRmKG91dCwgIlJlc2V0Iik7CisgICAgICAgIG91dC5w
cmludGYoIlJlc2V0Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlydGhUb0ZpbGw6CiAg
ICAgICAgIGR1bXBGaWxsSW5mbygiQmlydGhUb0ZpbGwiLCBvdXQpOwpAQCAtNTIsMTMgKzUyLDEz
IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChGSUxFKiBvdXQpIGNvbnMKICAgICAgICAgZHVt
cFNwaWxsSW5mbygiU3BpbGwiLCBvdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERlYXRo
OgotICAgICAgICBmcHJpbnRmKG91dCwgIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CisgICAg
ICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgZnByaW50ZihvdXQsICJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnRmKCJNb3ZI
aW50KEAldSwgciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIGZwcmludGYob3V0LCAiU2V0TG9jYWwo
ciVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgb3V0LnByaW50ZigiU2V0TG9jYWwociVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NiwyMyArNjYsMjMgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgIH0KIH0KIAotdm9pZCBW
YXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSogb3V0KSBj
b25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgIiwg
bmFtZSwgbm9kZUluZGV4KCkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgIiwgbmFtZSwgbm9k
ZUluZGV4KCkpOwogICAgIGlmIChkYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAg
ICAgICAgZnByaW50ZihvdXQsICIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCgpICYgRGF0YUZvcm1hdEpT
KQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzOiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQ
UigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRHUFIoKSkpOworICAgICAgICBvdXQucHJp
bnRmKCIlczolcyIsIEdQUkluZm86OmRlYnVnTmFtZSh0YWdHUFIoKSksIEdQUkluZm86OmRlYnVn
TmFtZShwYXlsb2FkR1BSKCkpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihv
dXQsICIlcyIsIEdQUkluZm86OmRlYnVnTmFtZShncHIoKSkpOwotICAgIGZwcmludGYob3V0LCAi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CisgICAgICAgIG91dC5w
cmludGYoIiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7CisgICAgb3V0LnByaW50Zigi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKLXZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNv
bnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgciVk
LCAlcykiLCBuYW1lLCBub2RlSW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRU
b1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICBvdXQucHJpbnRmKCIlcyhAJXUsIHIlZCwgJXMp
IiwgbmFtZSwgbm9kZUluZGV4KCksIHZpcnR1YWxSZWdpc3RlcigpLCBkYXRhRm9ybWF0VG9TdHJp
bmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lv
biAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDExICsyNDAsMTEgQEAgcHVibGljOgogICAgIAogICAg
IGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiB1OyB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSopIGNvbnN0OwotICAgIHZvaWQg
ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKICAgICBOb2RlSW5kZXggbV9pbmRleDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9u
IDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29k
ZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSogb3V0KQordm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHRy
eVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgZnByaW50ZihvdXQsICIlc2Rpc2Fzc2VtYmx5IG5vdCBhdmFpbGFibGUg
Zm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSArIHNpemUp
OworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2Ug
JXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxOCArMjYsMTcgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNz
ZW1ibGVyX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwog
CiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSog
b3V0KTsKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
LCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKICNlbHNlCi1pbmxp
bmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNp
emVfdCwgY29uc3QgY2hhciosIEZJTEUqKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBQcmludFN0
cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDUsNyArNDQsNyBAQCBpbmxpbmUg
Ym9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvCiAKIC8vIFByaW50cyBlaXRoZXIgdGhl
IGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1i
bHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzZXMuCi12
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29u
c3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpOwordm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJl
YW0mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgs
IEZJTEUqIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiBvdXQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1h
Y3JvQXNzZW1ibAogICAgIHdoaWxlICh1ZF9kaXNhc3NlbWJsZSgmZGlzYXNzZW1ibGVyKSkgewog
ICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNp
emVvZihwY1N0cmluZyksICIweCVseCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJl
bnRQQykpOwotICAgICAgICBmcHJpbnRmKG91dCwgIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNT
dHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3NlbWJsZXIpKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMlMTZzOiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fzc2VtYmxl
cikpOwogICAgICAgICBjdXJyZW50UEMgPSBkaXNhc3NlbWJsZXIucGM7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgZnVuY3Rpb24gdGhhdCBjYW4gbG9nIHRoaW5ncyBz
aG91bGQgYmUgYWJsZSB0byBlYXNpbHkgbG9nIHRoZW0gdG8gYSBtZW1vcnkgYnVmZmVyIGFzIHdl
bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhh
dmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIHBhc3MgYXJvdW5kIGEgRklMRSogYXMgYSB0
YXJnZXQgdG8gd2hpY2ggdG8gcHJpbnQKKyAgICAgICAgc29tZSBsb2dnaW5nIGluZm9ybWF0aW9u
LiBCdXQgdGhlIHB1cnBvc2Ugb2YgcGFzc2luZyBGSUxFKiBpbnN0ZWFkIG9mIGFsd2F5cyBhc3N1
bWluZworICAgICAgICB0aGF0IHdlIHNob3VsZCBkdW1wIHRvIHN0ZGVyciBpcyB0aGF0IGl0IG1h
eSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIHNlbmQgdGhlIGxvZ2dpbmcKKyAgICAgICAgaW5mb3Jt
YXRpb24gZWxzZXdoZXJlLiBVbmZvcnR1bmF0ZWx5LCBGSUxFKiBpc24ndCBxdWl0ZSBwb3dlcmZ1
bCBlbm91Z2g6IGl0J3MgY29tYmVyc29tZQorICAgICAgICB0byB1c2UgaXQgdG8gc2VuZCBsb2dn
aW5nIHRvIGEgc3RyaW5nLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgCisgICAgICAgIFdlIGNvdWxk
IGdldCBhcm91bmQgdGhpcyBieSB1c2luZyA8aW9zdHJlYW0+IGFuZCA8c3N0cmVhbT4sIGJ1dCBz
byBmYXIgdGhpcyBhc3BlY3Qgb2YKKyAgICAgICAgQysrIGhhcyBub3QgYmVlbiBwYXJ0IG9mIHRo
ZSBXZWJLaXQgY29kaW5nIGNvbnZlbnRpb25zLiBQZXJzb25hbGx5IEkgZmluZCA8aW9zdHJlYW0+
CisgICAgICAgIGF3a3dhcmQgZHVlIHRvIGl0cyBhYnVzZSBvZiBvcGVyYXRvciBvdmVybG9hZGlu
Zy4KKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IGNs
b3NlbHkgcmVsYXRlZCBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgCisgICAgICAg
IDEpIFRoZSBQcmludFN0cmVhbSBhYnN0cmFjdCBjbGFzcywgd2hpY2ggb2ZmZXJzIHByaW50Zi1s
aWtlIGZ1bmN0aW9uYWxpdHkgd2hpbGUKKyAgICAgICAgICAgY29tcGxldGVseSBhYnN0cmFjdGlu
ZyB0aGUgZGVzdGluYXRpb24gYW5kIG1lY2hhbmlzbSBvZiB0aGUgcHJpbnRpbmcgb3V0cHV0LiBJ
dAorICAgICAgICAgICB3b3VsZCBiZSB0cml2aWFsIHRvIGltcGxlbWVudCBhIFN0cmluZ1ByaW50
U3RyZWFtLCBmb3IgZXhhbXBsZS4gVGhpcyB3aWxsIGZlZWQKKyAgICAgICAgICAgaW50byB3b3Jr
IG9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5OTkKKyAgICAg
ICAgCisgICAgICAgIDIpIFRlbXBsYXRpemVkIHByaW50KCkgYW5kIHByaW50bG4oKSBtZXRob2Rz
IHRoYXQgYWxsb3cgc2F5aW5nIHRoaW5ncyBsaWtlCisgICAgICAgICAgIHByaW50bG4ob3V0LCAi
Y291bnQgPSAiLCBjb3VudCkuIFRoaXMgd2lsbCBmZWVkIGludG8gd29yayBvbgorICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDA5CisgICAgICAg
IAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hhbmdlcyBkYXRhTG9nKCkgdG8gdXNlIEZpbGVQ
cmludFN0cmVhbSBpbnRlcm5hbGx5LCBhbmQgV1RGOjpkYXRhRmlsZSgpCisgICAgICAgIG5vdyBy
ZXR1cm5zIGEgRmlsZVByaW50U3RyZWFtJi4gQW55IHByZXZpb3VzIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBleHBlY3QgYSBQcmludFN0cmVh
bSYuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5wcm86
CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTG9nRmlsZSk6Cisg
ICAgICAgIChXVEY6OmRhdGFGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0YUxvZ1YpOgorICAgICAg
ICAoV1RGOjpkYXRhTG9nU3RyaW5nKToKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5oOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEYpOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OkZpbGVQcmludFN0cmVh
bSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6fkZpbGVQcmludFN0cmVhbSk6Cisg
ICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6OkZp
bGVQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uaDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoRmlsZVByaW50U3RyZWFtKToKKyAgICAg
ICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpmaWxlKToKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJl
YW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFt
OjpQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjp+UHJpbnRTdHJlYW0p
OgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRmKToKKyAgICAgICAgKFdURjo6UHJp
bnRTdHJlYW06OnByaW50KToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50bG4pOgor
ICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAoV1RGOjpwcmludCk6
CisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAg
ICAgICAgKFByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6cHJpbnQpOgorICAgICAgICAoV1RG
OjpwcmludGxuKToKKyAgICAgICAgKiB3dGYvUmF3UG9pbnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdURik6CisgICAgICAgIChSYXdQb2ludGVyKToKKyAgICAgICAgKFdURjo6UmF3UG9pbnRlcjo6
UmF3UG9pbnRlcik6CisgICAgICAgIChXVEY6OlJhd1BvaW50ZXI6OnZhbHVlKToKKwogMjAxMi0x
MS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBk
YXRhTG9nKCkgYW5kIGRhdGFMb2dWKCkgdG8gZGF0YUxvZ0YoKSBhbmQgZGF0YUxvZ0ZWKCkKSW5k
ZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCB3dGZf
c291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKKyAgICBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvRml4
ZWRBcnJheS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCiAgICAgU291
cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXApAQCAtMTI2LDkgKzEyOCwxMiBAQCB3dGZfc291
cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvUGFzc1RyYWl0cy5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9Qb3NzaWJseU51bGwuaCBc
CisgICAgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwIFwKKyAgICBTb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SYW5kb21OdW1iZXIuY3BwIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9SYW5kb21OdW1iZXIuaCBcCiAgICAgU291cmNlL1dURi93dGYv
UmFuZG9tTnVtYmVyU2VlZC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1JlZEJsYWNrVHJlZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIFwKSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8J
KHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBFeHBvcnRNYWNyb3MuaCBcCiAgICAg
RmFzdEFsbG9jQmFzZS5oIFwKICAgICBGYXN0TWFsbG9jLmggXAorICAgIEZpbGVQcmludFN0cmVh
bS5oIFwKICAgICBGaXhlZEFycmF5LmggXAogICAgIEZsb2F0MzJBcnJheS5oIFwKICAgICBGbG9h
dDY0QXJyYXkuaCBcCkBAIC0xMjYsOCArMTI3LDEwIEBAIEhFQURFUlMgKz0gXAogICAgIFBhc3NU
cmFpdHMuaCBcCiAgICAgUGxhdGZvcm0uaCBcCiAgICAgUG9zc2libHlOdWxsLmggXAorICAgIFBy
aW50U3RyZWFtLmggXAogICAgIFJhbmRvbU51bWJlci5oIFwKICAgICBSYW5kb21OdW1iZXJTZWVk
LmggXAorICAgIFJhd1BvaW50ZXIuaCBcCiAgICAgUmVkQmxhY2tUcmVlLmggXAogICAgIFJlZkNv
dW50ZWQuaCBcCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmggXApAQCAtMjA3LDYgKzIxMCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGR0b2EvZml4ZWQtZHRvYS5jYyBcCiAgICAgZHRvYS9zdHJ0
b2QuY2MgXAogICAgIEZhc3RNYWxsb2MuY3BwIFwKKyAgICBGaWxlUHJpbnRTdHJlYW0uY3BwIFwK
ICAgICBHcmVnb3JpYW5EYXRlVGltZS5jcHAgXAogICAgIGdvYmplY3QvR093blB0ci5jcHAgXAog
ICAgIGdvYmplY3QvR1JlZlB0ci5jcHAgXApAQCAtMjI0LDYgKzIyOCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAgXAogICAgIFBhZ2VCbG9jay5jcHAgXAog
ICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIFwKKyAgICBQcmludFN0cmVhbS5jcHAgXAogICAg
IFJhbmRvbU51bWJlci5jcHAgXAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogICAg
IFNIQTEuY3BwIFwKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCShyZXZpc2lvbiAxMzU0
NzEpCisrKyBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzgxLDYgKzc4MSwxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxG
aWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uaCIKKwkJCT4KKwkJ
PC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRml4ZWRBcnJheS5oIgog
CQkJPgogCQk8L0ZpbGU+CkBAIC0xMDg5LDYgKzEwOTcsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgog
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcUHJpbnRTdHJlYW0uY3BwIgorCQkJPgor
CQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxQcmludFN0cmVhbS5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxSYW5k
b21OdW1iZXIuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkBAIC0xMTAxLDYgKzExMTcsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcUmF3UG9pbnRl
ci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxS
ZWRCbGFja1RyZWUuaCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSwx
MSBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi87
IH07CisJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVDMTY1REJB
NzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLzsgfTsKKwkJMEY5RDMzNjIxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi87IH07CisJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUx
NjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87IH07CisJCTBGOUQzMzY0MTY1REJB
NzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RjE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5o
ICovOyB9OwogCQkwRkQ4MUFDNTE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBQzQxNTRG
QjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9ICgpOyB9OyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1
NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0zMTIsNiArMzE3LDExIEBACiAvKiBF
bmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCisJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJp
bnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVBy
aW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzNUMxNjVE
QkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaWxlUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzVGMTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQ
b2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8q
IEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1NjVGMEY5
MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSQU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUx
NTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA3LDYgKzcx
Nyw4IEBACiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
LywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJ
CQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKKwkJCQkwRjlE
MzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKKwkJCQkwRjlE
MzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQThBNDcy
QTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLywKIAkJCQlBOEE0NzJBNDE1MUE4
MjVBMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQThBNDcyQTUxNTFBODI1QTAw
NDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovLApAQCAtNzgzLDEzICs3OTUsMTUgQEAKIAkJCQlB
OEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1JlZlB0ci5oICovLAogCQkJCUE4QTQ3MkVF
MTUxQTgyNUIwMDQxMjNGRiAvKiBQYXNzVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyRUYxNTFBODI1
QjAwNDEyM0ZGIC8qIFBsYXRmb3JtLmggKi8sCi0JCQkJQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1
IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJQThBNDcyRjMxNTFBODI1QjAwNDEyM0ZGIC8qIFBvc3Np
Ymx5TnVsbC5oICovLAorCQkJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi8sCisJCQkJMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmgg
Ki8sCiAJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovLAogCQkJ
CTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8sCiAJCQkJQThBNDcyRkIx
NTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyRkMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oICovLAogCQkJCUE4QTQ3MkZEMTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi8sCisJCQkJMEY5RDMzNUYxNjVEQkE3MzAw
NUFEMzg3IC8qIFJhd1BvaW50ZXIuaCAqLywKIAkJCQlBOEE0NzJGRTE1MUE4MjVCMDA0MTIzRkYg
LyogUmVkQmxhY2tUcmVlLmggKi8sCiAJCQkJQThBNDcyRkYxNTFBODI1QjAwNDEyM0ZGIC8qIFJl
ZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRl
ZEFycmF5LmggKi8sCkBAIC04NDgsNiArODYyLDcgQEAKIAkJCQlBOEE0NzM3MjE1MUE4MjVCMDA0
MTIzRkYgLyogVk1UYWdzLmggKi8sCiAJCQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuY3BwICovLAogCQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmggKi8sCisJCQkJQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3Jt
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xMjE2LDYgKzEyMzEsOSBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAv
KiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzM2MTE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzM2MzE2
NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUQz
MzY0MTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEz
ODMsNiArMTQwMSw4IEBACiAJCQkJQThBNDc0NjkxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUQzMzYyMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBTRVQoV1RGX0hFQURF
UlMKICAgICBFbmNvZGVyLmgKICAgICBGYXN0QWxsb2NCYXNlLmgKICAgICBGYXN0TWFsbG9jLmgK
KyAgICBGaWxlUHJpbnRTdHJlYW0uaAogICAgIEZpeGVkQXJyYXkuaAogICAgIEZvcndhcmQuaAog
ICAgIEdldFB0ci5oCkBAIC03NSw4ICs3NiwxMCBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBQYXJh
bGxlbEpvYnNPcGVuTVAuaAogICAgIFBsYXRmb3JtLmgKICAgICBQb3NzaWJseU51bGwuaAorICAg
IFByaW50U3RyZWFtLmgKICAgICBSYW5kb21OdW1iZXIuaAogICAgIFJhbmRvbU51bWJlclNlZWQu
aAorICAgIFJhd1BvaW50ZXIuaAogICAgIFJlZEJsYWNrVHJlZS5oCiAgICAgUmVmQ291bnRlZC5o
CiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKQEAgLTE1MCw2ICsxNTMsNyBAQCBTRVQoV1RG
X1NPVVJDRVMKICAgICBEZWNpbWFsTnVtYmVyLmNwcAogICAgIER5bmFtaWNBbm5vdGF0aW9ucy5j
cHAKICAgICBGYXN0TWFsbG9jLmNwcAorICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAgICBHcmVn
b3JpYW5EYXRlVGltZS5jcHAKICAgICBIYXNoVGFibGUuY3BwCiAgICAgTUQ1LmNwcApAQCAtMTYy
LDYgKzE2Niw3IEBAIFNFVChXVEZfU09VUkNFUwogICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5j
cHAKICAgICBQYWdlQmxvY2suY3BwCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKKyAgICBQ
cmludFN0cmVhbS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtD
b3VudGVyLmNwcAogICAgIFNIQTEuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2aXNpb24gMTM1
NDcxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhTG9nLmgiCiAj
aW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKQEAg
LTM1LDM0ICszNiwzNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIERBVEFfTE9HX1RPX0ZJ
TEUKLXN0YXRpYyBGSUxFKiBmaWxlOworI2lmIFVTRShQVEhSRUFEUykKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsKKyNl
bmRpZgorCitzdGF0aWMgRmlsZVByaW50U3RyZWFtKiBmaWxlOwogCiBzdGF0aWMgdm9pZCBpbml0
aWFsaXplTG9nRmlsZU9uY2UoKQogeworI2lmIERBVEFfTE9HX1RPX0ZJTEUKICNpZmRlZiBEQVRB
X0xPR19GSUxFTkFNRQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREFUQV9MT0dfRklMRU5B
TUU7CiAjZWxzZQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9M
T0dfRklMRU5BTUUiKTsKICNlbmRpZgogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAgICBmaWxl
ID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkKKyAgICAgICAgRklM
RSogcmF3RmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAocmF3RmlsZSkK
KyAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZVByaW50U3RyZWFtKHJhd0ZpbGUpOworICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxkIG5vdCBv
cGVuIGxvZyBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOwogICAgIH0KKyNlbmRp
ZiAvLyBEQVRBX0xPR19UT19GSUxFCiAgICAgaWYgKCFmaWxlKQotICAgICAgICBmaWxlID0gc3Rk
ZXJyOworICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmlu
dFN0cmVhbTo6Qm9ycm93KTsKICAgICAKLSAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05CRiwgMCk7
IC8vIFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1
cG9uIGNyYXNoIG9yIGRlYWRsb2NrLgorICAgIHNldHZidWYoZmlsZS0+ZmlsZSgpLCAwLCBfSU9O
QkYsIDApOyAvLyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVs
bCBsb2cgdXBvbiBjcmFzaCBvciBkZWFkbG9jay4KIH0KIAotI2lmIE9TKERBUldJTikKLXN0YXRp
YyBwdGhyZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiB7Ci0jaWYg
T1MoREFSV0lOKQorI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxp
emVMb2dGaWxlT25jZUtleSwgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKTsKICNlbHNlCiAgICAgaWYg
KCFmaWxlKQpAQCAtNzAsMjEgKzc0LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxl
KCkKICNlbmRpZgogfQogCi1GSUxFKiBkYXRhRmlsZSgpCitGaWxlUHJpbnRTdHJlYW0mIGRhdGFG
aWxlKCkKIHsKICAgICBpbml0aWFsaXplTG9nRmlsZSgpOwotICAgIHJldHVybiBmaWxlOworICAg
IHJldHVybiAqZmlsZTsKIH0KLSNlbHNlIC8vIERBVEFfTE9HX1RPX0ZJTEUKLUZJTEUqIGRhdGFG
aWxlKCkKLXsKLSAgICByZXR1cm4gc3RkZXJyOwotfQotI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJ
TEUKIAogdm9pZCBkYXRhTG9nRlYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3Qp
CiB7Ci0gICAgdmZwcmludGYoZGF0YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKKyAgICBkYXRh
RmlsZSgpLnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKIH0KIAogdm9pZCBkYXRhTG9nRihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTk3LDcgKzk1LDcgQEAgdm9pZCBkYXRhTG9nRihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBkYXRhTG9nRlN0cmluZyhjb25zdCBjaGFyKiBz
dHIpCiB7Ci0gICAgZnB1dHMoc3RyLCBkYXRhRmlsZSgpKTsKKyAgICBkYXRhRmlsZSgpLnByaW50
KHN0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvRGF0
YUxvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24g
MTM1NDcxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMiArMjgsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
LVdURl9FWFBPUlRfUFJJVkFURSBGSUxFKiBkYXRhRmlsZSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IEZpbGVQcmludFN0cmVhbSYgZGF0YUZpbGUoKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZGF0YUxvZ0ZWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklO
VEYoMSwgMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nRihjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zp
bGVQcmludFN0cmVhbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGaWxlUHJpbnRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdURiB7CisKK0ZpbGVQcmlu
dFN0cmVhbTo6RmlsZVByaW50U3RyZWFtKEZJTEUqIGZpbGUsIEFkb3B0aW9uTW9kZSBhZG9wdGlv
bk1vZGUpCisgICAgOiBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fYWRvcHRpb25Nb2RlKGFkb3B0aW9u
TW9kZSkKK3sKK30KKworRmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKK3sKKyAg
ICBpZiAobV9hZG9wdGlvbk1vZGUgPT0gQm9ycm93KQorICAgICAgICByZXR1cm47CisgICAgZmNs
b3NlKG1fZmlsZSk7Cit9CisKK3ZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQoreworICAgIHZmcHJpbnRmKG1fZmlsZSwgZm9y
bWF0LCBhcmdMaXN0KTsKK30KKwordm9pZCBGaWxlUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKKyAg
ICBmZmx1c2gobV9maWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0ZpbGVQcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvRmlsZVBy
aW50U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWxlUHJpbnRTdHJlYW1f
aAorI2RlZmluZSBGaWxlUHJpbnRTdHJlYW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIEZpbGVQ
cmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVhbSB7CitwdWJsaWM6CisgICAgZW51bSBBZG9w
dGlvbk1vZGUgeworICAgICAgICBBZG9wdCwKKyAgICAgICAgQm9ycm93CisgICAgfTsKKyAgICAK
KyAgICBGaWxlUHJpbnRTdHJlYW0oRklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsKKyAgICB2
aXJ0dWFsIH5GaWxlUHJpbnRTdHJlYW0oKTsKKyAgICAKKyAgICBGSUxFKiBmaWxlKCkgeyByZXR1
cm4gbV9maWxlOyB9CisgICAgCisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCk7CisgICAgdm9pZCBmbHVzaCgpOworCitwcml2YXRlOgorICAgIEZJTEUqIG1fZmls
ZTsKKyAgICBBZG9wdGlvbk1vZGUgbV9hZG9wdGlvbk1vZGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpGaWxlUHJpbnRTdHJlYW07CisKKyNlbmRpZiAvLyBGaWxlUHJp
bnRTdHJlYW1faAorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QcmludFN0cmVhbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJpbnRTdHJlYW0uaCIKKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworUHJpbnRTdHJlYW06OlByaW50U3Ry
ZWFtKCkgeyB9CitQcmludFN0cmVhbTo6flByaW50U3RyZWFtKCkgeyB9IC8vIEZvcmNlIHRoZSB2
dGFibGUgdG8gYmUgaW4gdGhpcyBtb2R1bGUKKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRmKGNv
bnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9z
dGFydChhcmdMaXN0LCBmb3JtYXQpOworICAgIHZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKyAg
ICB2YV9lbmQoYXJnTGlzdCk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50KGNvbnN0IGNo
YXIqIHN0cmluZykKK3sKKyAgICBwcmludGYoIiVzIiwgc3RyaW5nKTsKK30KKwordm9pZCBQcmlu
dFN0cmVhbTo6cHJpbnQoY29uc3QgQ1N0cmluZyYgc3RyaW5nKQoreworICAgIHByaW50KHN0cmlu
Zy5kYXRhKCkpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludChjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBwcmludChzdHJpbmcudXRmOCgpKTsKK30KKwordm9pZCBQcmludFN0cmVh
bTo6cHJpbnRsbihjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgcHJpbnQoc3RyaW5nKTsKKyAg
ICBwcmludGxuKCk7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OnByaW50bG4oY29uc3QgQ1N0cmlu
ZyYgc3RyaW5nKQoreworICAgIHByaW50KHN0cmluZyk7CisgICAgcHJpbnRsbigpOworfQorCit2
b2lkIFByaW50U3RyZWFtOjpwcmludGxuKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHBy
aW50KHN0cmluZyk7CisgICAgcHJpbnRsbigpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpwcmlu
dGxuKCkKK3sKKyAgICBwcmludGYoIlxuIik7Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OmZsdXNo
KCkKK3sKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBib29sIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3RyZWFtLnByaW50ZigidHJ1ZSIpOworICAgIGVs
c2UKKyAgICAgICAgc3RyZWFtLnByaW50ZigiZmFsc2UiKTsKK30KKwordm9pZCBwcmludChQcmlu
dFN0cmVhbSYgc3RyZWFtLCBpbnQgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50ZigiJWQiLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgdW5zaWduZWQgdmFs
dWUpCit7CisgICAgc3RyZWFtLnByaW50ZigiJXUiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQo
UHJpbnRTdHJlYW0mIHN0cmVhbSwgbG9uZyB2YWx1ZSkKK3sKKyAgICBzdHJlYW0ucHJpbnRmKCIl
bGQiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgdW5zaWdu
ZWQgbG9uZyB2YWx1ZSkKK3sKKyAgICBzdHJlYW0ucHJpbnRmKCIlbHUiLCB2YWx1ZSk7Cit9CisK
K3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgbG9uZyBsb25nIHZhbHVlKQoreworICAg
IHN0cmVhbS5wcmludGYoIiVsbGQiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJl
YW0mIHN0cmVhbSwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmlu
dGYoIiVsbHUiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwg
UmF3UG9pbnRlciBwb2ludGVyKQoreworICAgIHN0cmVhbS5wcmludGYoIiVwIiwgcG9pbnRlci52
YWx1ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUHJpbnRTdHJlYW1faAorI2RlZmluZSBQcmludFN0cmVhbV9o
CisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgQ1N0cmluZzsKK2NsYXNzIFN0cmluZzsKKwor
Y2xhc3MgUHJpbnRTdHJlYW0geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFL
RV9OT05DT1BZQUJMRShQcmludFN0cmVhbSk7CitwdWJsaWM6CisgICAgUHJpbnRTdHJlYW0oKTsK
KyAgICB2aXJ0dWFsIH5QcmludFN0cmVhbSgpOworCisgICAgdm9pZCBwcmludGYoY29uc3QgY2hh
ciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworICAgIHZpcnR1YWwg
dm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgPSAwOworICAgIHZvaWQg
cHJpbnQoY29uc3QgY2hhciogc3RyKTsKKyAgICB2b2lkIHByaW50KGNvbnN0IENTdHJpbmcmKTsK
KyAgICB2b2lkIHByaW50KGNvbnN0IFN0cmluZyYpOyAvLyBQZXJmb3JtcyBsZW5pZW50IHV0Zjgg
Y29udmVyc2lvbi4KKyAgICB2b2lkIHByaW50bG4oY29uc3QgY2hhciogc3RyKTsKKyAgICB2b2lk
IHByaW50bG4oY29uc3QgQ1N0cmluZyYpOworICAgIHZvaWQgcHJpbnRsbihjb25zdCBTdHJpbmcm
KTsgLy8gUGVyZm9ybXMgbGVuaWVudCB1dGY4IGNvbnZlcnNpb24uCisgICAgdm9pZCBwcmludGxu
KCk7CisKKyAgICAvLyBUeXBpY2FsbHkgYSBuby1vcCBmb3IgbWFueSBzdWJjbGFzc2VzIG9mIFBy
aW50U3RyZWFtLCB0aGlzIGlzIGEgaGludCB0aGF0CisgICAgLy8gdGhlIGltcGxlbWVudGF0aW9u
IHNob3VsZCBmbHVzaCBpdHMgYnVmZmVycyBpZiBpdCBoYWQgbm90IGRvbmUgc28gYWxyZWFkeS4K
KyAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKK307CisKKy8vIFVzZSBwcmludCgpIGZ1bmN0aW9u
cyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY2xhc3MgdG8gYWxsb3cgZm9yIGFueW9uZSB0bwor
Ly8gZXh0ZW5kIGl0LiBUaGUgY29udmVudGlvbiBpcyB0aGF0IGlmIHlvdSBoYXZlIGEgZGF0YXR5
cGUgdGhhdCBpcyB3b3J0aCBwcmludGluZywKKy8vIHlvdSBzaG91bGQgaW1wbGVtZW50IGEgbWV0
aG9kIHdpdGggdGhpcyBzaWduYXR1cmU6CisvLworLy8gdm9pZCBwcmludChQcmludFN0cmVhbSYs
IGNvbnN0IE15Q2xhc3MmKQorCitpbmxpbmUgdm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFt
LCBjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgc3RyZWFtLnByaW50KHN0cmluZyk7Cit9CisK
K2lubGluZSB2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIGNvbnN0IENTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5nKTsKK30KKworaW5saW5lIHZvaWQgcHJp
bnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3Ry
ZWFtLnByaW50KHN0cmluZyk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBib29sKTsK
K3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBpbnQpOwordm9pZCBwcmludChQcmludFN0cmVhbSYs
IHVuc2lnbmVkKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nKTsKK3ZvaWQgcHJpbnQo
UHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBs
b25nIGxvbmcpOwordm9pZCBwcmludChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcgbG9uZyk7
Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEg
dmFsdWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHBy
aW50KHN0cmVhbSwgdmFsdWUyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFs
dWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMykKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7
CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQ+Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIFQxIHZhbHVlMSwgVDIg
dmFsdWUyLCBUMyB2YWx1ZTMsIFQ0IHZhbHVlNCkKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVl
MSk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUz
KTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK3Zv
aWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZh
bHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEp
OworICAgIHByaW50KHN0cmVhbSwgdmFsdWUyKTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMyk7
CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTQpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWU1KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlw
ZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJl
YW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBU
NSB2YWx1ZTUsIFQ2IHZhbHVlNikKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAg
cHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBw
cmludChzdHJlYW0sIHZhbHVlNCk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTUpOworICAgIHBy
aW50KHN0cmVhbSwgdmFsdWU2KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDE+Cit2b2lkIHBy
aW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxKQoreworICAgIHByaW50KHN0cmVh
bSwgdmFsdWUxKTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUMSwgdHlwZW5hbWUgVDI+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEg
dmFsdWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEsIHZhbHVlMik7
CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVu
YW1lIFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBU
MSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzKQoreworICAgIHByaW50KHN0cmVhbSwgdmFs
dWUxLCB2YWx1ZTIsIHZhbHVlMyk7CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2
b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQz
IHZhbHVlMywgVDQgdmFsdWU0KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIs
IHZhbHVlMywgdmFsdWU0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5h
bWUgVDU+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2
YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3Ry
ZWFtLCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzLCB2YWx1ZTQsIHZhbHVlNSk7CisgICAgc3RyZWFt
LnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBl
bmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJp
bnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUz
LCBUNCB2YWx1ZTQsIFQ1IHZhbHVlNSwgVDYgdmFsdWU2KQoreworICAgIHByaW50KHN0cmVhbSwg
dmFsdWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFsdWU0LCB2YWx1ZTUsIHZhbHVlNik7CisgICAgc3Ry
ZWFtLnByaW50bG4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UHJp
bnRTdHJlYW07CisKKyNlbmRpZiAvLyBQcmludFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1Jhd1BvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVy
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBSYXdQb2ludGVyX2gKKyNkZWZpbmUgUmF3UG9pbnRlcl9oCisK
K25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSYXdQb2ludGVyIHsKK3B1YmxpYzoKKyAgICBSYXdQ
b2ludGVyKCkKKyAgICAgICAgOiBtX3ZhbHVlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBl
eHBsaWNpdCBSYXdQb2ludGVyKHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUp
CisgICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCogbV92YWx1ZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUmF3UG9pbnRlcl9oCisK
</data>
<flag name="commit-queue"
          id="191095"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175603</attachid>
            <date>2012-11-22 00:09:26 -0800</date>
            <delta_ts>2012-11-22 20:18:47 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>45582</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5kIGRh
dGFMb2dGVigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAkocmV2aXNpb24gMTM1NDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IE9wZXJhbmRWYWx1ZVRyYWl0cyB7CiAgICAgc3Rh
dGljIFQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gVCgpOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBUJiB2YWx1ZSwgRklMRSogb3V0KSB7IHZhbHVlLmR1bXAob3V0KTsgfQorICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgVCYgdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpIHsgdmFsdWUu
ZHVtcChvdXQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMg
PSBPcGVyYW5kVmFsdWVUcmFpdHM8VD4gPgpAQCAtMTkwLDE3ICsxOTAsMTcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgZHVtcE9w
ZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRyYWl0cz4mIG9wZXJhbmRzLCBGSUxFKiBvdXQpCit2
b2lkIGR1bXBPcGVyYW5kcyhjb25zdCBPcGVyYW5kczxULCBUcmFpdHM+JiBvcGVyYW5kcywgUHJp
bnRTdHJlYW0mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgb3BlcmFuZHMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBp
ZiAoYXJndW1lbnQpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50
KGFyZ3VtZW50KSwgb3V0KTsKICAgICB9Ci0gICAgZnByaW50ZihvdXQsICIgOiAiKTsKKyAgICBv
dXQucHJpbnRmKCIgOiAiKTsKICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgb3Bl
cmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICBpZiAobG9jYWwpCi0g
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmxvY2FsKGxvY2FsKSwgb3V0KTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVz
dGluYXRpb24ubWVyZ2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJ
TEUqIG91dCkKK3ZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+c2l6ZSgpOyArK2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0
ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwot
ICAgICAgICBmcHJpbnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5kZXgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiQCVsdToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2
YWx1ZS5kdW1wKG91dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBk
dW1wKEZJTEUqIG91dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEs
MTUgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRo
ZSBjb2RlLgogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50
ZihvdXQsICIoJXMsICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9k
ZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywg
Iiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJh
eU1vZGVzKSk7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAg
ICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBpZiAoISFtX3Zh
bHVlKQotICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICAgICAKICAgICAvLyBBIGdyZWF0IHdheSB0byB0aGluayBhYm91dCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMiAr
OTIsMTIgQEAgc3RhdGljIGNvbnN0IEJsb2NrSW5kZXggTm9CbG9jayA9IFVJTlRfTQogCiBzdHJ1
Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRWYWx1ZSgp
IHsgcmV0dXJuIE5vTm9kZTsgfQotICAgIHN0YXRpYyB2b2lkIGR1bXAoTm9kZUluZGV4IHZhbHVl
LCBGSUxFKiBvdXQpCisgICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gTm9Ob2RlKQotICAgICAg
ICAgICAgZnByaW50ZihvdXQsICItIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCItIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiQCV1IiwgdmFsdWUpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiQCV1IiwgdmFsdWUpOwogICAgIH0KIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDE3ICsyOTgs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNU
b3AoKSkgewotICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlRPUCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgb3V0LnByaW50ZigiWyIpOwog
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwg
bV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVwIiwgbV9zdHJ1Y3R1cmUpOworICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAg
ICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhcmlh
YmxlRXZlbnQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBj
YXNlIFJlc2V0OgotICAgICAgICBmcHJpbnRmKG91dCwgIlJlc2V0Iik7CisgICAgICAgIG91dC5w
cmludGYoIlJlc2V0Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlydGhUb0ZpbGw6CiAg
ICAgICAgIGR1bXBGaWxsSW5mbygiQmlydGhUb0ZpbGwiLCBvdXQpOwpAQCAtNTIsMTMgKzUyLDEz
IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChGSUxFKiBvdXQpIGNvbnMKICAgICAgICAgZHVt
cFNwaWxsSW5mbygiU3BpbGwiLCBvdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERlYXRo
OgotICAgICAgICBmcHJpbnRmKG91dCwgIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CisgICAg
ICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgZnByaW50ZihvdXQsICJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnRmKCJNb3ZI
aW50KEAldSwgciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIGZwcmludGYob3V0LCAiU2V0TG9jYWwo
ciVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgb3V0LnByaW50ZigiU2V0TG9jYWwociVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NiwyMyArNjYsMjMgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgIH0KIH0KIAotdm9pZCBW
YXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSogb3V0KSBj
b25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgIiwg
bmFtZSwgbm9kZUluZGV4KCkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgIiwgbmFtZSwgbm9k
ZUluZGV4KCkpOwogICAgIGlmIChkYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAg
ICAgICAgZnByaW50ZihvdXQsICIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCgpICYgRGF0YUZvcm1hdEpT
KQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzOiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQ
UigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRHUFIoKSkpOworICAgICAgICBvdXQucHJp
bnRmKCIlczolcyIsIEdQUkluZm86OmRlYnVnTmFtZSh0YWdHUFIoKSksIEdQUkluZm86OmRlYnVn
TmFtZShwYXlsb2FkR1BSKCkpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihv
dXQsICIlcyIsIEdQUkluZm86OmRlYnVnTmFtZShncHIoKSkpOwotICAgIGZwcmludGYob3V0LCAi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CisgICAgICAgIG91dC5w
cmludGYoIiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7CisgICAgb3V0LnByaW50Zigi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKLXZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNv
bnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgciVk
LCAlcykiLCBuYW1lLCBub2RlSW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRU
b1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICBvdXQucHJpbnRmKCIlcyhAJXUsIHIlZCwgJXMp
IiwgbmFtZSwgbm9kZUluZGV4KCksIHZpcnR1YWxSZWdpc3RlcigpLCBkYXRhRm9ybWF0VG9TdHJp
bmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lv
biAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDExICsyNDAsMTEgQEAgcHVibGljOgogICAgIAogICAg
IGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiB1OyB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSopIGNvbnN0OwotICAgIHZvaWQg
ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKICAgICBOb2RlSW5kZXggbV9pbmRleDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9u
IDEzNTQ3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29k
ZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSogb3V0KQordm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHRy
eVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgZnByaW50ZihvdXQsICIlc2Rpc2Fzc2VtYmx5IG5vdCBhdmFpbGFibGUg
Zm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSArIHNpemUp
OworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2Ug
JXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxOCArMjYsMTcgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNz
ZW1ibGVyX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwog
CiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSog
b3V0KTsKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
LCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKICNlbHNlCi1pbmxp
bmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNp
emVfdCwgY29uc3QgY2hhciosIEZJTEUqKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBQcmludFN0
cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDUsNyArNDQsNyBAQCBpbmxpbmUg
Ym9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvCiAKIC8vIFByaW50cyBlaXRoZXIgdGhl
IGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1i
bHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzZXMuCi12
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29u
c3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpOwordm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJl
YW0mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgs
IEZJTEUqIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiBvdXQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1h
Y3JvQXNzZW1ibAogICAgIHdoaWxlICh1ZF9kaXNhc3NlbWJsZSgmZGlzYXNzZW1ibGVyKSkgewog
ICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNp
emVvZihwY1N0cmluZyksICIweCVseCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJl
bnRQQykpOwotICAgICAgICBmcHJpbnRmKG91dCwgIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNT
dHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3NlbWJsZXIpKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMlMTZzOiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fzc2VtYmxl
cikpOwogICAgICAgICBjdXJyZW50UEMgPSBkaXNhc3NlbWJsZXIucGM7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgZnVuY3Rpb24gdGhhdCBjYW4gbG9nIHRoaW5ncyBz
aG91bGQgYmUgYWJsZSB0byBlYXNpbHkgbG9nIHRoZW0gdG8gYSBtZW1vcnkgYnVmZmVyIGFzIHdl
bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhh
dmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIHBhc3MgYXJvdW5kIGEgRklMRSogYXMgYSB0
YXJnZXQgdG8gd2hpY2ggdG8gcHJpbnQKKyAgICAgICAgc29tZSBsb2dnaW5nIGluZm9ybWF0aW9u
LiBCdXQgdGhlIHB1cnBvc2Ugb2YgcGFzc2luZyBGSUxFKiBpbnN0ZWFkIG9mIGFsd2F5cyBhc3N1
bWluZworICAgICAgICB0aGF0IHdlIHNob3VsZCBkdW1wIHRvIHN0ZGVyciBpcyB0aGF0IGl0IG1h
eSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIHNlbmQgdGhlIGxvZ2dpbmcKKyAgICAgICAgaW5mb3Jt
YXRpb24gZWxzZXdoZXJlLiBVbmZvcnR1bmF0ZWx5LCBGSUxFKiBpc24ndCBxdWl0ZSBwb3dlcmZ1
bCBlbm91Z2g6IGl0J3MgY29tYmVyc29tZQorICAgICAgICB0byB1c2UgaXQgdG8gc2VuZCBsb2dn
aW5nIHRvIGEgc3RyaW5nLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgCisgICAgICAgIFdlIGNvdWxk
IGdldCBhcm91bmQgdGhpcyBieSB1c2luZyA8aW9zdHJlYW0+IGFuZCA8c3N0cmVhbT4sIGJ1dCBz
byBmYXIgdGhpcyBhc3BlY3Qgb2YKKyAgICAgICAgQysrIGhhcyBub3QgYmVlbiBwYXJ0IG9mIHRo
ZSBXZWJLaXQgY29kaW5nIGNvbnZlbnRpb25zLiBQZXJzb25hbGx5IEkgZmluZCA8aW9zdHJlYW0+
CisgICAgICAgIGF3a3dhcmQgZHVlIHRvIGl0cyBhYnVzZSBvZiBvcGVyYXRvciBvdmVybG9hZGlu
Zy4KKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0d28gbmV3IGNs
b3NlbHkgcmVsYXRlZCBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgCisgICAgICAg
IDEpIFRoZSBQcmludFN0cmVhbSBhYnN0cmFjdCBjbGFzcywgd2hpY2ggb2ZmZXJzIHByaW50Zi1s
aWtlIGZ1bmN0aW9uYWxpdHkgd2hpbGUKKyAgICAgICAgICAgY29tcGxldGVseSBhYnN0cmFjdGlu
ZyB0aGUgZGVzdGluYXRpb24gYW5kIG1lY2hhbmlzbSBvZiB0aGUgcHJpbnRpbmcgb3V0cHV0LiBJ
dAorICAgICAgICAgICB3b3VsZCBiZSB0cml2aWFsIHRvIGltcGxlbWVudCBhIFN0cmluZ1ByaW50
U3RyZWFtLCBmb3IgZXhhbXBsZS4gVGhpcyB3aWxsIGZlZWQKKyAgICAgICAgICAgaW50byB3b3Jr
IG9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5OTkKKyAgICAg
ICAgCisgICAgICAgIDIpIFRlbXBsYXRpemVkIHByaW50KCkgYW5kIHByaW50bG4oKSBtZXRob2Rz
IHRoYXQgYWxsb3cgc2F5aW5nIHRoaW5ncyBsaWtlCisgICAgICAgICAgIHByaW50bG4ob3V0LCAi
Y291bnQgPSAiLCBjb3VudCkuIFRoaXMgd2lsbCBmZWVkIGludG8gd29yayBvbgorICAgICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMDA5CisgICAgICAg
IAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hhbmdlcyBkYXRhTG9nKCkgdG8gdXNlIEZpbGVQ
cmludFN0cmVhbSBpbnRlcm5hbGx5LCBhbmQgV1RGOjpkYXRhRmlsZSgpCisgICAgICAgIG5vdyBy
ZXR1cm5zIGEgRmlsZVByaW50U3RyZWFtJi4gQW55IHByZXZpb3VzIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBleHBlY3QgYSBQcmludFN0cmVh
bSYuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdURi5wcm86
CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAqIFdURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTG9nRmlsZSk6Cisg
ICAgICAgIChXVEY6OmRhdGFGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0YUxvZ1YpOgorICAgICAg
ICAoV1RGOjpkYXRhTG9nU3RyaW5nKToKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5oOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDogQWRkZWQuCisgICAg
ICAgIChXVEYpOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OkZpbGVQcmludFN0cmVh
bSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6fkZpbGVQcmludFN0cmVhbSk6Cisg
ICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAgICAgIChXVEY6OkZp
bGVQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAqIHd0Zi9GaWxlUHJpbnRTdHJlYW0uaDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoRmlsZVByaW50U3RyZWFtKToKKyAgICAg
ICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpmaWxlKToKKyAgICAgICAgKiB3dGYvUHJpbnRTdHJl
YW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFt
OjpQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjp+UHJpbnRTdHJlYW0p
OgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRmKToKKyAgICAgICAgKFdURjo6UHJp
bnRTdHJlYW06OnByaW50KToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50bG4pOgor
ICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAoV1RGOjpwcmludCk6
CisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6IEFkZGVkLgorICAgICAgICAoV1RGKToKKyAg
ICAgICAgKFByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6cHJpbnQpOgorICAgICAgICAoV1RG
OjpwcmludGxuKToKKyAgICAgICAgKiB3dGYvUmF3UG9pbnRlci5oOiBBZGRlZC4KKyAgICAgICAg
KFdURik6CisgICAgICAgIChSYXdQb2ludGVyKToKKyAgICAgICAgKFdURjo6UmF3UG9pbnRlcjo6
UmF3UG9pbnRlcik6CisgICAgICAgIChXVEY6OlJhd1BvaW50ZXI6OnZhbHVlKToKKwogMjAxMi0x
MS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBk
YXRhTG9nKCkgYW5kIGRhdGFMb2dWKCkgdG8gZGF0YUxvZ0YoKSBhbmQgZGF0YUxvZ0ZWKCkKSW5k
ZXg6IFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCB3dGZf
c291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKKyAgICBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvRml4
ZWRBcnJheS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCiAgICAgU291
cmNlL1dURi93dGYvRmxvYXQ2NEFycmF5LmggXApAQCAtMTI2LDkgKzEyOCwxMiBAQCB3dGZfc291
cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvUGFzc1RyYWl0cy5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9Qb3NzaWJseU51bGwuaCBc
CisgICAgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwIFwKKyAgICBTb3VyY2UvV1RGL3d0
Zi9QcmludFN0cmVhbS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SYW5kb21OdW1iZXIuY3BwIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi9SYW5kb21OdW1iZXIuaCBcCiAgICAgU291cmNlL1dURi93dGYv
UmFuZG9tTnVtYmVyU2VlZC5oIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL1JlZEJsYWNrVHJlZS5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIFwKSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi5wcm8J
KHJldmlzaW9uIDEzNTQ3MSkKKysrIFNvdXJjZS9XVEYvV1RGLnBybwkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBFeHBvcnRNYWNyb3MuaCBcCiAgICAg
RmFzdEFsbG9jQmFzZS5oIFwKICAgICBGYXN0TWFsbG9jLmggXAorICAgIEZpbGVQcmludFN0cmVh
bS5oIFwKICAgICBGaXhlZEFycmF5LmggXAogICAgIEZsb2F0MzJBcnJheS5oIFwKICAgICBGbG9h
dDY0QXJyYXkuaCBcCkBAIC0xMjYsOCArMTI3LDEwIEBAIEhFQURFUlMgKz0gXAogICAgIFBhc3NU
cmFpdHMuaCBcCiAgICAgUGxhdGZvcm0uaCBcCiAgICAgUG9zc2libHlOdWxsLmggXAorICAgIFBy
aW50U3RyZWFtLmggXAogICAgIFJhbmRvbU51bWJlci5oIFwKICAgICBSYW5kb21OdW1iZXJTZWVk
LmggXAorICAgIFJhd1BvaW50ZXIuaCBcCiAgICAgUmVkQmxhY2tUcmVlLmggXAogICAgIFJlZkNv
dW50ZWQuaCBcCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmggXApAQCAtMjA3LDYgKzIxMCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGR0b2EvZml4ZWQtZHRvYS5jYyBcCiAgICAgZHRvYS9zdHJ0
b2QuY2MgXAogICAgIEZhc3RNYWxsb2MuY3BwIFwKKyAgICBGaWxlUHJpbnRTdHJlYW0uY3BwIFwK
ICAgICBHcmVnb3JpYW5EYXRlVGltZS5jcHAgXAogICAgIGdvYmplY3QvR093blB0ci5jcHAgXAog
ICAgIGdvYmplY3QvR1JlZlB0ci5jcHAgXApAQCAtMjI0LDYgKzIyOCw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAgXAogICAgIFBhZ2VCbG9jay5jcHAgXAog
ICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIFwKKyAgICBQcmludFN0cmVhbS5jcHAgXAogICAg
IFJhbmRvbU51bWJlci5jcHAgXAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgXAogICAg
IFNIQTEuY3BwIFwKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCShyZXZpc2lvbiAxMzU0
NzEpCisrKyBTb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzgxLDYgKzc4MSwxNCBAQAogCQkJPgogCQk8L0ZpbGU+CiAJCTxGaWxlCisJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxG
aWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxGaWxlUHJpbnRTdHJlYW0uaCIKKwkJCT4KKwkJ
PC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRml4ZWRBcnJheS5oIgog
CQkJPgogCQk8L0ZpbGU+CkBAIC0xMDg5LDYgKzEwOTcsMTQgQEAKIAkJCT4KIAkJPC9GaWxlPgog
CQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcUHJpbnRTdHJlYW0uY3BwIgorCQkJPgor
CQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxQcmludFN0cmVhbS5o
IgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxSYW5k
b21OdW1iZXIuY3BwIgogCQkJPgogCQk8L0ZpbGU+CkBAIC0xMTAxLDYgKzExMTcsMTAgQEAKIAkJ
CT4KIAkJPC9GaWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcUmF3UG9pbnRl
ci5oIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0ZlxS
ZWRCbGFja1RyZWUuaCIKIAkJCT4KIAkJPC9GaWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSwx
MSBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTBGOUQzMzYwMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxl
UHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5jcHAgKi87
IH07CisJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVDMTY1REJB
NzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAqLzsgfTsKKwkJMEY5RDMzNjIxNjVEQkE3
MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi87IH07CisJCTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUUx
NjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggKi87IH07CisJCTBGOUQzMzY0MTY1REJB
NzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1RjE2NURCQTczMDA1QUQzODcgLyogUmF3UG9pbnRlci5o
ICovOyB9OwogCQkwRkQ4MUFDNTE1NEZCMjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBQzQxNTRG
QjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9ICgpOyB9OyB9OwogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRDE1
NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0M0Y2MTIwMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CkBAIC0zMTIsNiArMzE3LDExIEBACiAvKiBF
bmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCisJCTBGOUQzMzVCMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJp
bnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVBy
aW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzNUMxNjVE
QkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaWxlUHJpbnRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50U3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOUQzMzVGMTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQ
b2ludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhd1BvaW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8q
IEZhc3RCaXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJp
dFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1NjVGMEY5
MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSQU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUx
NTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA3LDYgKzcx
Nyw4IEBACiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAq
LywKIAkJCQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJ
CQkJQThBNDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKKwkJCQkwRjlE
MzM1QjE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKKwkJCQkwRjlE
MzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQThBNDcy
QTMxNTFBODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLywKIAkJCQlBOEE0NzJBNDE1MUE4
MjVBMDA0MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQThBNDcyQTUxNTFBODI1QTAw
NDEyM0ZGIC8qIEZsb2F0NjRBcnJheS5oICovLApAQCAtNzgzLDEzICs3OTUsMTUgQEAKIAkJCQlB
OEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1JlZlB0ci5oICovLAogCQkJCUE4QTQ3MkVF
MTUxQTgyNUIwMDQxMjNGRiAvKiBQYXNzVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyRUYxNTFBODI1
QjAwNDEyM0ZGIC8qIFBsYXRmb3JtLmggKi8sCi0JCQkJQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1
IC8qIFBsYXRmb3JtLmggKi8sCiAJCQkJQThBNDcyRjMxNTFBODI1QjAwNDEyM0ZGIC8qIFBvc3Np
Ymx5TnVsbC5oICovLAorCQkJCTBGOUQzMzVEMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVh
bS5jcHAgKi8sCisJCQkJMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmgg
Ki8sCiAJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovLAogCQkJ
CTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8sCiAJCQkJQThBNDcyRkIx
NTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyRkMxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oICovLAogCQkJCUE4QTQ3MkZEMTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi8sCisJCQkJMEY5RDMzNUYxNjVEQkE3MzAw
NUFEMzg3IC8qIFJhd1BvaW50ZXIuaCAqLywKIAkJCQlBOEE0NzJGRTE1MUE4MjVCMDA0MTIzRkYg
LyogUmVkQmxhY2tUcmVlLmggKi8sCiAJCQkJQThBNDcyRkYxNTFBODI1QjAwNDEyM0ZGIC8qIFJl
ZkNvdW50ZWQuaCAqLywKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRl
ZEFycmF5LmggKi8sCkBAIC04NDgsNiArODYyLDcgQEAKIAkJCQlBOEE0NzM3MjE1MUE4MjVCMDA0
MTIzRkYgLyogVk1UYWdzLmggKi8sCiAJCQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdU
RlRocmVhZERhdGEuY3BwICovLAogCQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmggKi8sCisJCQkJQTg3NkRCRDcxNTE4MTZFNTAwREFEQjk1IC8qIFBsYXRmb3Jt
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xMjE2LDYgKzEyMzEsOSBAQAogCQkJCUE4QTQ3NDgwMTUxQTgyNUIwMDQxMjNGRiAvKiBW
TVRhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBX
VEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAv
KiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzM2MTE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjlEMzM2MzE2
NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOUQz
MzY0MTY1REJBNzMwMDVBRDM4NyAvKiBSYXdQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEz
ODMsNiArMTQwMSw4IEBACiAJCQkJQThBNDc0NjkxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmlu
Zy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RG
VGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlEMzM2MDE2NURCQTczMDA1QUQz
ODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGOUQzMzYyMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzU0NzEpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQCBTRVQoV1RGX0hFQURF
UlMKICAgICBFbmNvZGVyLmgKICAgICBGYXN0QWxsb2NCYXNlLmgKICAgICBGYXN0TWFsbG9jLmgK
KyAgICBGaWxlUHJpbnRTdHJlYW0uaAogICAgIEZpeGVkQXJyYXkuaAogICAgIEZvcndhcmQuaAog
ICAgIEdldFB0ci5oCkBAIC03NSw4ICs3NiwxMCBAQCBTRVQoV1RGX0hFQURFUlMKICAgICBQYXJh
bGxlbEpvYnNPcGVuTVAuaAogICAgIFBsYXRmb3JtLmgKICAgICBQb3NzaWJseU51bGwuaAorICAg
IFByaW50U3RyZWFtLmgKICAgICBSYW5kb21OdW1iZXIuaAogICAgIFJhbmRvbU51bWJlclNlZWQu
aAorICAgIFJhd1BvaW50ZXIuaAogICAgIFJlZEJsYWNrVHJlZS5oCiAgICAgUmVmQ291bnRlZC5o
CiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKQEAgLTE1MCw2ICsxNTMsNyBAQCBTRVQoV1RG
X1NPVVJDRVMKICAgICBEZWNpbWFsTnVtYmVyLmNwcAogICAgIER5bmFtaWNBbm5vdGF0aW9ucy5j
cHAKICAgICBGYXN0TWFsbG9jLmNwcAorICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAgICBHcmVn
b3JpYW5EYXRlVGltZS5jcHAKICAgICBIYXNoVGFibGUuY3BwCiAgICAgTUQ1LmNwcApAQCAtMTYy
LDYgKzE2Niw3IEBAIFNFVChXVEZfU09VUkNFUwogICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC5j
cHAKICAgICBQYWdlQmxvY2suY3BwCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKKyAgICBQ
cmludFN0cmVhbS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtD
b3VudGVyLmNwcAogICAgIFNIQTEuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2aXNpb24gMTM1
NDcxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhTG9nLmgiCiAj
aW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDAKQEAg
LTM1LDM0ICszNiwzNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIERBVEFfTE9HX1RPX0ZJ
TEUKLXN0YXRpYyBGSUxFKiBmaWxlOworI2lmIFVTRShQVEhSRUFEUykKK3N0YXRpYyBwdGhyZWFk
X29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5JVDsKKyNl
bmRpZgorCitzdGF0aWMgRmlsZVByaW50U3RyZWFtKiBmaWxlOwogCiBzdGF0aWMgdm9pZCBpbml0
aWFsaXplTG9nRmlsZU9uY2UoKQogeworI2lmIERBVEFfTE9HX1RPX0ZJTEUKICNpZmRlZiBEQVRB
X0xPR19GSUxFTkFNRQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREFUQV9MT0dfRklMRU5B
TUU7CiAjZWxzZQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZfREFUQV9M
T0dfRklMRU5BTUUiKTsKICNlbmRpZgogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAgICBmaWxl
ID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkKKyAgICAgICAgRklM
RSogcmF3RmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAocmF3RmlsZSkK
KyAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZVByaW50U3RyZWFtKHJhd0ZpbGUpOworICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxkIG5vdCBv
cGVuIGxvZyBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOwogICAgIH0KKyNlbmRp
ZiAvLyBEQVRBX0xPR19UT19GSUxFCiAgICAgaWYgKCFmaWxlKQotICAgICAgICBmaWxlID0gc3Rk
ZXJyOworICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZpbGVQcmlu
dFN0cmVhbTo6Qm9ycm93KTsKICAgICAKLSAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05CRiwgMCk7
IC8vIFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxsIGxvZyB1
cG9uIGNyYXNoIG9yIGRlYWRsb2NrLgorICAgIHNldHZidWYoZmlsZS0+ZmlsZSgpLCAwLCBfSU9O
QkYsIDApOyAvLyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0IGEgZnVs
bCBsb2cgdXBvbiBjcmFzaCBvciBkZWFkbG9jay4KIH0KIAotI2lmIE9TKERBUldJTikKLXN0YXRp
YyBwdGhyZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0Vf
SU5JVDsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiB7Ci0jaWYg
T1MoREFSV0lOKQorI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX29uY2UoJmluaXRpYWxp
emVMb2dGaWxlT25jZUtleSwgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKTsKICNlbHNlCiAgICAgaWYg
KCFmaWxlKQpAQCAtNzAsMjEgKzc0LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVMb2dGaWxl
KCkKICNlbmRpZgogfQogCi1GSUxFKiBkYXRhRmlsZSgpCitGaWxlUHJpbnRTdHJlYW0mIGRhdGFG
aWxlKCkKIHsKICAgICBpbml0aWFsaXplTG9nRmlsZSgpOwotICAgIHJldHVybiBmaWxlOworICAg
IHJldHVybiAqZmlsZTsKIH0KLSNlbHNlIC8vIERBVEFfTE9HX1RPX0ZJTEUKLUZJTEUqIGRhdGFG
aWxlKCkKLXsKLSAgICByZXR1cm4gc3RkZXJyOwotfQotI2VuZGlmIC8vIERBVEFfTE9HX1RPX0ZJ
TEUKIAogdm9pZCBkYXRhTG9nRlYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ0xpc3Qp
CiB7Ci0gICAgdmZwcmludGYoZGF0YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKKyAgICBkYXRh
RmlsZSgpLnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKIH0KIAogdm9pZCBkYXRhTG9nRihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTk3LDcgKzk1LDcgQEAgdm9pZCBkYXRhTG9nRihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBkYXRhTG9nRlN0cmluZyhjb25zdCBjaGFyKiBz
dHIpCiB7Ci0gICAgZnB1dHMoc3RyLCBkYXRhRmlsZSgpKTsKKyAgICBkYXRhRmlsZSgpLnByaW50
KHN0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dURi93dGYvRGF0
YUxvZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAkocmV2aXNpb24g
MTM1NDcxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwxMiArMjgsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
LVdURl9FWFBPUlRfUFJJVkFURSBGSUxFKiBkYXRhRmlsZSgpOworV1RGX0VYUE9SVF9QUklWQVRF
IEZpbGVQcmludFN0cmVhbSYgZGF0YUZpbGUoKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZGF0YUxvZ0ZWKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklO
VEYoMSwgMCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkYXRhTG9nRihjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikgV1RGX0FUVFJJQlVURV9QUklOVEYoMSwgMik7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Zp
bGVQcmludFN0cmVhbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJp
bnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJGaWxlUHJpbnRTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdURiB7CisKK0ZpbGVQcmlu
dFN0cmVhbTo6RmlsZVByaW50U3RyZWFtKEZJTEUqIGZpbGUsIEFkb3B0aW9uTW9kZSBhZG9wdGlv
bk1vZGUpCisgICAgOiBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fYWRvcHRpb25Nb2RlKGFkb3B0aW9u
TW9kZSkKK3sKK30KKworRmlsZVByaW50U3RyZWFtOjp+RmlsZVByaW50U3RyZWFtKCkKK3sKKyAg
ICBpZiAobV9hZG9wdGlvbk1vZGUgPT0gQm9ycm93KQorICAgICAgICByZXR1cm47CisgICAgZmNs
b3NlKG1fZmlsZSk7Cit9CisKK3ZvaWQgRmlsZVByaW50U3RyZWFtOjp2cHJpbnRmKGNvbnN0IGNo
YXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdMaXN0KQoreworICAgIHZmcHJpbnRmKG1fZmlsZSwgZm9y
bWF0LCBhcmdMaXN0KTsKK30KKwordm9pZCBGaWxlUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKKyAg
ICBmZmx1c2gobV9maWxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0ZpbGVQcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvRmlsZVBy
aW50U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGaWxlUHJpbnRTdHJlYW1f
aAorI2RlZmluZSBGaWxlUHJpbnRTdHJlYW1faAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIEZpbGVQ
cmludFN0cmVhbSA6IHB1YmxpYyBQcmludFN0cmVhbSB7CitwdWJsaWM6CisgICAgZW51bSBBZG9w
dGlvbk1vZGUgeworICAgICAgICBBZG9wdCwKKyAgICAgICAgQm9ycm93CisgICAgfTsKKyAgICAK
KyAgICBGaWxlUHJpbnRTdHJlYW0oRklMRSosIEFkb3B0aW9uTW9kZSA9IEFkb3B0KTsKKyAgICB2
aXJ0dWFsIH5GaWxlUHJpbnRTdHJlYW0oKTsKKyAgICAKKyAgICBGSUxFKiBmaWxlKCkgeyByZXR1
cm4gbV9maWxlOyB9CisgICAgCisgICAgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwg
dmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgdm9pZCBmbHVzaCgpOwor
Citwcml2YXRlOgorICAgIEZJTEUqIG1fZmlsZTsKKyAgICBBZG9wdGlvbk1vZGUgbV9hZG9wdGlv
bk1vZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpGaWxlUHJpbnRT
dHJlYW07CisKKyNlbmRpZiAvLyBGaWxlUHJpbnRTdHJlYW1faAorCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9QcmludFN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHJpbnRT
dHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJp
bnRTdHJlYW0uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworUHJpbnRTdHJlYW06OlByaW50U3RyZWFtKCkgeyB9CitQcmludFN0cmVhbTo6flByaW50
U3RyZWFtKCkgeyB9IC8vIEZvcmNlIHRoZSB2dGFibGUgdG8gYmUgaW4gdGhpcyBtb2R1bGUKKwor
dm9pZCBQcmludFN0cmVhbTo6cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQoreworICAg
IHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9zdGFydChhcmdMaXN0LCBmb3JtYXQpOworICAgIHZw
cmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKyAgICB2YV9lbmQoYXJnTGlzdCk7Cit9CisKK3ZvaWQg
UHJpbnRTdHJlYW06OnByaW50KGNvbnN0IGNoYXIqIHN0cmluZykKK3sKKyAgICBwcmludGYoIiVz
Iiwgc3RyaW5nKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnQoY29uc3QgQ1N0cmluZyYg
c3RyaW5nKQoreworICAgIHByaW50KHN0cmluZy5kYXRhKCkpOworfQorCit2b2lkIFByaW50U3Ry
ZWFtOjpwcmludChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBwcmludChzdHJpbmcudXRm
OCgpKTsKK30KKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRsbihjb25zdCBjaGFyKiBzdHJpbmcp
Cit7CisgICAgcHJpbnQoc3RyaW5nKTsKKyAgICBwcmludGxuKCk7Cit9CisKK3ZvaWQgUHJpbnRT
dHJlYW06OnByaW50bG4oY29uc3QgQ1N0cmluZyYgc3RyaW5nKQoreworICAgIHByaW50KHN0cmlu
Zyk7CisgICAgcHJpbnRsbigpOworfQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludGxuKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIHByaW50KHN0cmluZyk7CisgICAgcHJpbnRsbigpOwor
fQorCit2b2lkIFByaW50U3RyZWFtOjpwcmludGxuKCkKK3sKKyAgICBwcmludGYoIlxuIik7Cit9
CisKK3ZvaWQgUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKK30KKwordm9pZCBwcmludChQcmludFN0
cmVhbSYgc3RyZWFtLCBib29sIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgc3Ry
ZWFtLnByaW50ZigidHJ1ZSIpOworICAgIGVsc2UKKyAgICAgICAgc3RyZWFtLnByaW50ZigiZmFs
c2UiKTsKK30KKwordm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBpbnQgdmFsdWUpCit7
CisgICAgc3RyZWFtLnByaW50ZigiJWQiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRT
dHJlYW0mIHN0cmVhbSwgdW5zaWduZWQgdmFsdWUpCit7CisgICAgc3RyZWFtLnByaW50ZigiJXUi
LCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgbG9uZyB2YWx1
ZSkKK3sKKyAgICBzdHJlYW0ucHJpbnRmKCIlbGQiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQo
UHJpbnRTdHJlYW0mIHN0cmVhbSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKK3sKKyAgICBzdHJlYW0u
cHJpbnRmKCIlbHUiLCB2YWx1ZSk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVh
bSwgbG9uZyBsb25nIHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsbGQiLCB2YWx1ZSk7
Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgdW5zaWduZWQgbG9uZyBsb25n
IHZhbHVlKQoreworICAgIHN0cmVhbS5wcmludGYoIiVsbHUiLCB2YWx1ZSk7Cit9CisKK3ZvaWQg
cHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgUmF3UG9pbnRlciBwb2ludGVyKQoreworICAgIHN0
cmVhbS5wcmludGYoIiVwIiwgcG9pbnRlci52YWx1ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJpbnRTdHJl
YW1faAorI2RlZmluZSBQcmludFN0cmVhbV9oCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNs
dWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SYXdQb2ludGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
Q1N0cmluZzsKK2NsYXNzIFN0cmluZzsKKworY2xhc3MgUHJpbnRTdHJlYW0geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmludFN0cmVhbSk7Citw
dWJsaWM6CisgICAgUHJpbnRTdHJlYW0oKTsKKyAgICB2aXJ0dWFsIH5QcmludFN0cmVhbSgpOwor
CisgICAgdm9pZCBwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVf
UFJJTlRGKDIsIDMpOworICAgIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1h
dCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCkgPSAwOworICAgIHZvaWQgcHJp
bnQoY29uc3QgY2hhciogc3RyKTsKKyAgICB2b2lkIHByaW50KGNvbnN0IENTdHJpbmcmKTsKKyAg
ICB2b2lkIHByaW50KGNvbnN0IFN0cmluZyYpOyAvLyBQZXJmb3JtcyBsZW5pZW50IHV0ZjggY29u
dmVyc2lvbi4KKyAgICB2b2lkIHByaW50bG4oY29uc3QgY2hhciogc3RyKTsKKyAgICB2b2lkIHBy
aW50bG4oY29uc3QgQ1N0cmluZyYpOworICAgIHZvaWQgcHJpbnRsbihjb25zdCBTdHJpbmcmKTsg
Ly8gUGVyZm9ybXMgbGVuaWVudCB1dGY4IGNvbnZlcnNpb24uCisgICAgdm9pZCBwcmludGxuKCk7
CisKKyAgICAvLyBUeXBpY2FsbHkgYSBuby1vcCBmb3IgbWFueSBzdWJjbGFzc2VzIG9mIFByaW50
U3RyZWFtLCB0aGlzIGlzIGEgaGludCB0aGF0CisgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uIHNo
b3VsZCBmbHVzaCBpdHMgYnVmZmVycyBpZiBpdCBoYWQgbm90IGRvbmUgc28gYWxyZWFkeS4KKyAg
ICB2aXJ0dWFsIHZvaWQgZmx1c2goKTsKK307CisKKy8vIFVzZSBwcmludCgpIGZ1bmN0aW9ucyB0
aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY2xhc3MgdG8gYWxsb3cgZm9yIGFueW9uZSB0bworLy8g
ZXh0ZW5kIGl0LiBUaGUgY29udmVudGlvbiBpcyB0aGF0IGlmIHlvdSBoYXZlIGEgZGF0YXR5cGUg
dGhhdCBpcyB3b3J0aCBwcmludGluZywKKy8vIHlvdSBzaG91bGQgaW1wbGVtZW50IGEgbWV0aG9k
IHdpdGggdGhpcyBzaWduYXR1cmU6CisvLworLy8gdm9pZCBwcmludChQcmludFN0cmVhbSYsIGNv
bnN0IE15Q2xhc3MmKQorCitpbmxpbmUgdm9pZCBwcmludChQcmludFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgc3RyZWFtLnByaW50KHN0cmluZyk7Cit9CisKK2lu
bGluZSB2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIGNvbnN0IENTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBzdHJlYW0ucHJpbnQoc3RyaW5nKTsKK30KKworaW5saW5lIHZvaWQgcHJpbnQo
UHJpbnRTdHJlYW0mIHN0cmVhbSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgc3RyZWFt
LnByaW50KHN0cmluZyk7Cit9CisKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBib29sKTsKK3Zv
aWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBpbnQpOwordm9pZCBwcmludChQcmludFN0cmVhbSYsIHVu
c2lnbmVkKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJp
bnRTdHJlYW0mLCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mLCBsb25n
IGxvbmcpOwordm9pZCBwcmludChQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit2
b2lkIHByaW50KFByaW50U3RyZWFtJiwgUmF3UG9pbnRlcik7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBUMj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFs
dWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOworICAgIHByaW50
KHN0cmVhbSwgdmFsdWUyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQy
LCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUx
LCBUMiB2YWx1ZTIsIFQzIHZhbHVlMykKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7Cisg
ICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQ+Cit2b2lkIHByaW50KFByaW50U3RyZWFtJiBzdHJlYW0sIFQxIHZhbHVlMSwgVDIgdmFs
dWUyLCBUMyB2YWx1ZTMsIFQ0IHZhbHVlNCkKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7
CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsK
KyAgICBwcmludChzdHJlYW0sIHZhbHVlNCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0
eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KK3ZvaWQg
cHJpbnQoUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVl
MywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEpOwor
ICAgIHByaW50KHN0cmVhbSwgdmFsdWUyKTsKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMyk7Cisg
ICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTQpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWU1KTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5h
bWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnQoUHJpbnRTdHJlYW0m
IHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2
YWx1ZTUsIFQ2IHZhbHVlNikKK3sKKyAgICBwcmludChzdHJlYW0sIHZhbHVlMSk7CisgICAgcHJp
bnQoc3RyZWFtLCB2YWx1ZTIpOworICAgIHByaW50KHN0cmVhbSwgdmFsdWUzKTsKKyAgICBwcmlu
dChzdHJlYW0sIHZhbHVlNCk7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTUpOworICAgIHByaW50
KHN0cmVhbSwgdmFsdWU2KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDE+Cit2b2lkIHByaW50
bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxKQoreworICAgIHByaW50KHN0cmVhbSwg
dmFsdWUxKTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
MSwgdHlwZW5hbWUgVDI+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFs
dWUxLCBUMiB2YWx1ZTIpCit7CisgICAgcHJpbnQoc3RyZWFtLCB2YWx1ZTEsIHZhbHVlMik7Cisg
ICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyLCB0eXBlbmFtZSBUMz4KK3ZvaWQgcHJpbnRsbihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2
YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzKQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUx
LCB2YWx1ZTIsIHZhbHVlMyk7CisgICAgc3RyZWFtLnByaW50bG4oKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Cit2b2lk
IHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1ZTIsIFQzIHZh
bHVlMywgVDQgdmFsdWU0KQoreworICAgIHByaW50KHN0cmVhbSwgdmFsdWUxLCB2YWx1ZTIsIHZh
bHVlMywgdmFsdWU0KTsKKyAgICBzdHJlYW0ucHJpbnRsbigpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUg
VDU+Cit2b2lkIHByaW50bG4oUHJpbnRTdHJlYW0mIHN0cmVhbSwgVDEgdmFsdWUxLCBUMiB2YWx1
ZTIsIFQzIHZhbHVlMywgVDQgdmFsdWU0LCBUNSB2YWx1ZTUpCit7CisgICAgcHJpbnQoc3RyZWFt
LCB2YWx1ZTEsIHZhbHVlMiwgdmFsdWUzLCB2YWx1ZTQsIHZhbHVlNSk7CisgICAgc3RyZWFtLnBy
aW50bG4oKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFt
ZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KK3ZvaWQgcHJpbnRs
bihQcmludFN0cmVhbSYgc3RyZWFtLCBUMSB2YWx1ZTEsIFQyIHZhbHVlMiwgVDMgdmFsdWUzLCBU
NCB2YWx1ZTQsIFQ1IHZhbHVlNSwgVDYgdmFsdWU2KQoreworICAgIHByaW50KHN0cmVhbSwgdmFs
dWUxLCB2YWx1ZTIsIHZhbHVlMywgdmFsdWU0LCB2YWx1ZTUsIHZhbHVlNik7CisgICAgc3RyZWFt
LnByaW50bG4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6UHJpbnRT
dHJlYW07CisKKyNlbmRpZiAvLyBQcmludFN0cmVhbV9oCisKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1Jhd1BvaW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV1RGL3d0Zi9SYXdQb2ludGVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBSYXdQb2ludGVyX2gKKyNkZWZpbmUgUmF3UG9pbnRlcl9oCisKK25h
bWVzcGFjZSBXVEYgeworCitjbGFzcyBSYXdQb2ludGVyIHsKK3B1YmxpYzoKKyAgICBSYXdQb2lu
dGVyKCkKKyAgICAgICAgOiBtX3ZhbHVlKDApCisgICAgeworICAgIH0KKyAgICAKKyAgICBleHBs
aWNpdCBSYXdQb2ludGVyKHZvaWQqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICB2b2lkKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCogbV92YWx1ZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCisjZW5kaWYgLy8gUmF3UG9pbnRlcl9oCisK
</data>
<flag name="commit-queue"
          id="191185"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175728</attachid>
            <date>2012-11-22 20:18:47 -0800</date>
            <delta_ts>2012-11-23 14:29:04 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>printstream.patch</filename>
            <type>text/plain</type>
            <size>38480</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NTAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTExLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QW55IGZ1bmN0aW9uIHRoYXQgY2FuIGxvZyB0aGluZ3Mgc2hvdWxkIGJlIGFibGUgdG8gZWFzaWx5
IGxvZyB0aGVtIHRvIGEgbWVtb3J5IGJ1ZmZlciBhcyB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMwMDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgYWxsIHVzZXJzIG9mIFdURjo6ZGF0
YUZpbGUoKSB0byBleHBlY3QgYSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4gYSBGSUxFKi4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgIChKU0M6Ok9wZXJhbmRWYWx1
ZVRyYWl0czo6ZHVtcCk6CisgICAgICAgIChKU0M6OmR1bXBPcGVyYW5kcyk6CisgICAgICAgIChK
U0MpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFN0YXRlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0
ZS5oOgorICAgICAgICAoQWJzdHJhY3RTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAg
ICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZUluZGV4VHJhaXRz
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAq
IGRmZy9ERkdWYXJpYWJsZUV2ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2
ZW50OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbElu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8pOgor
ICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUV2ZW50Lmg6CisgICAgICAgIChWYXJpYWJsZUV2ZW50
KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxlKToKKyAgICAgICAgKiBkaXNhc3NlbWJs
ZXIvVURpczg2RGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJs
ZSk6CisKIDIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW5hbWUgZGF0YUxvZygpIGFuZCBkYXRhTG9nVigpIHRvIGRhdGFMb2dGKCkgYW5kIGRh
dGFMb2dGVigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMu
aAkocmV2aXNpb24gMTM1NTAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KKyNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAt
NDMsNyArNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgT3BlcmFuZFZhbHVlCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IE9wZXJhbmRWYWx1ZVRyYWl0cyB7CiAgICAgc3Rh
dGljIFQgZGVmYXVsdFZhbHVlKCkgeyByZXR1cm4gVCgpOyB9Ci0gICAgc3RhdGljIHZvaWQgZHVt
cChjb25zdCBUJiB2YWx1ZSwgRklMRSogb3V0KSB7IHZhbHVlLmR1bXAob3V0KTsgfQorICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgVCYgdmFsdWUsIFByaW50U3RyZWFtJiBvdXQpIHsgdmFsdWUu
ZHVtcChvdXQpOyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMg
PSBPcGVyYW5kVmFsdWVUcmFpdHM8VD4gPgpAQCAtMTkwLDE3ICsxOTAsMTcgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4KLXZvaWQgZHVtcE9w
ZXJhbmRzKGNvbnN0IE9wZXJhbmRzPFQsIFRyYWl0cz4mIG9wZXJhbmRzLCBGSUxFKiBvdXQpCit2
b2lkIGR1bXBPcGVyYW5kcyhjb25zdCBPcGVyYW5kczxULCBUcmFpdHM+JiBvcGVyYW5kcywgUHJp
bnRTdHJlYW0mIG91dCkKIHsKICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgb3BlcmFuZHMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBp
ZiAoYXJndW1lbnQpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAiKTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmFyZ3VtZW50
KGFyZ3VtZW50KSwgb3V0KTsKICAgICB9Ci0gICAgZnByaW50ZihvdXQsICIgOiAiKTsKKyAgICBv
dXQucHJpbnRmKCIgOiAiKTsKICAgICBmb3IgKHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgb3Bl
cmFuZHMubnVtYmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgewogICAgICAgICBpZiAobG9jYWwpCi0g
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAi
KTsKICAgICAgICAgVHJhaXRzOjpkdW1wKG9wZXJhbmRzLmxvY2FsKGxvY2FsKSwgb3V0KTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDEzNTUwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NDIsNyArMTk0Miw3IEBA
IGlubGluZSBib29sIEFic3RyYWN0U3RhdGU6Om1lcmdlVmFyaWFibGUKICAgICByZXR1cm4gZGVz
dGluYXRpb24ubWVyZ2Uoc291cmNlKTsKIH0KIAotdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJ
TEUqIG91dCkKK3ZvaWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KQogewog
ICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9j
ay0+c2l6ZSgpOyArK2kpIHsKQEAgLTE5NTMsOCArMTk1Myw4IEBAIHZvaWQgQWJzdHJhY3RTdGF0
ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIGlmIChmaXJzdCkKICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiICIpOwot
ICAgICAgICBmcHJpbnRmKG91dCwgIkAlbHU6Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5kZXgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiQCVsdToiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbmRleCkpOwogICAgICAgICB2
YWx1ZS5kdW1wKG91dCk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDEzNTUwMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAs
NyArMTgwLDcgQEAgcHVibGljOgogICAgIC8vIE1lcmdlVG9TdWNjZXNzb3JzLgogICAgIGJvb2wg
bWVyZ2VUb1N1Y2Nlc3NvcnMoR3JhcGgmLCBCYXNpY0Jsb2NrKik7CiAgICAgCi0gICAgdm9pZCBk
dW1wKEZJTEUqIG91dCk7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAog
cHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJXb3JsZChjb25zdCBDb2RlT3JpZ2luJiwgdW5zaWdu
ZWQgaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDE1ICszNzEs
MTUgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBjb21wbGV4aXR5IG9mIHRo
ZSBjb2RlLgogICAgIH0KICAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKLSAgICAgICAgZnByaW50
ZihvdXQsICIoJXMsICVzLCAiLCBzcGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSksIGFycmF5TW9k
ZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKCVzLCAlcywg
Iiwgc3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpLCBhcnJheU1vZGVzVG9TdHJpbmcobV9hcnJh
eU1vZGVzKSk7CiAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKLSAg
ICAgICAgZGF0YUxvZ0YoIiwgIik7CisgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBpZiAoISFtX3Zh
bHVlKQotICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlv
bigpKTsKLSAgICAgICAgZnByaW50ZihvdXQsICIpIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgb3V0LnByaW50ZigiKSIp
OwogICAgIH0KICAgICAKICAgICAvLyBBIGdyZWF0IHdheSB0byB0aGluayBhYm91dCB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMiAr
OTIsMTIgQEAgc3RhdGljIGNvbnN0IEJsb2NrSW5kZXggTm9CbG9jayA9IFVJTlRfTQogCiBzdHJ1
Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRWYWx1ZSgp
IHsgcmV0dXJuIE5vTm9kZTsgfQotICAgIHN0YXRpYyB2b2lkIGR1bXAoTm9kZUluZGV4IHZhbHVl
LCBGSUxFKiBvdXQpCisgICAgc3RhdGljIHZvaWQgZHVtcChOb2RlSW5kZXggdmFsdWUsIFByaW50
U3RyZWFtJiBvdXQpCiAgICAgewogICAgICAgICBpZiAodmFsdWUgPT0gTm9Ob2RlKQotICAgICAg
ICAgICAgZnByaW50ZihvdXQsICItIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCItIik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiQCV1IiwgdmFsdWUpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiQCV1IiwgdmFsdWUpOwogICAgIH0KIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDE3ICsyOTgs
MTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNU
b3AoKSkgewotICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIlRPUCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgb3V0LnByaW50ZigiWyIpOwog
ICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVwIiwg
bV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVwIiwgbV9zdHJ1Y3R1cmUpOworICAgICAgICBvdXQucHJpbnRmKCJdIik7CiAg
ICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJp
YWJsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhcmlhYmxlRXZlbnQuY3BwCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSAr
MzMsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi12b2lkIFZhcmlh
YmxlRXZlbnQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChraW5kKCkpIHsKICAgICBj
YXNlIFJlc2V0OgotICAgICAgICBmcHJpbnRmKG91dCwgIlJlc2V0Iik7CisgICAgICAgIG91dC5w
cmludGYoIlJlc2V0Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQmlydGhUb0ZpbGw6CiAg
ICAgICAgIGR1bXBGaWxsSW5mbygiQmlydGhUb0ZpbGwiLCBvdXQpOwpAQCAtNTIsMTMgKzUyLDEz
IEBAIHZvaWQgVmFyaWFibGVFdmVudDo6ZHVtcChGSUxFKiBvdXQpIGNvbnMKICAgICAgICAgZHVt
cFNwaWxsSW5mbygiU3BpbGwiLCBvdXQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERlYXRo
OgotICAgICAgICBmcHJpbnRmKG91dCwgIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CisgICAg
ICAgIG91dC5wcmludGYoIkRlYXRoKEAldSkiLCBub2RlSW5kZXgoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTW92SGludDoKLSAgICAgICAgZnByaW50ZihvdXQsICJNb3ZIaW50KEAldSwg
ciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOworICAgICAgICBvdXQucHJpbnRmKCJNb3ZI
aW50KEAldSwgciVkKSIsIG5vZGVJbmRleCgpLCBvcGVyYW5kKCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNldExvY2FsRXZlbnQ6Ci0gICAgICAgIGZwcmludGYob3V0LCAiU2V0TG9jYWwo
ciVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFGb3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsK
KyAgICAgICAgb3V0LnByaW50ZigiU2V0TG9jYWwociVkLCAlcykiLCBvcGVyYW5kKCksIGRhdGFG
b3JtYXRUb1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02NiwyMyArNjYsMjMgQEAgdm9p
ZCBWYXJpYWJsZUV2ZW50OjpkdW1wKEZJTEUqIG91dCkgY29ucwogICAgIH0KIH0KIAotdm9pZCBW
YXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSogb3V0KSBj
b25zdAordm9pZCBWYXJpYWJsZUV2ZW50OjpkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgIiwg
bmFtZSwgbm9kZUluZGV4KCkpOworICAgIG91dC5wcmludGYoIiVzKEAldSwgIiwgbmFtZSwgbm9k
ZUluZGV4KCkpOwogICAgIGlmIChkYXRhRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkKLSAg
ICAgICAgZnByaW50ZihvdXQsICIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcyIsIEZQUkluZm86OmRlYnVnTmFtZShmcHIoKSkpOwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgZWxzZSBpZiAoZGF0YUZvcm1hdCgpICYgRGF0YUZvcm1hdEpT
KQotICAgICAgICBmcHJpbnRmKG91dCwgIiVzOiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKHRhZ0dQ
UigpKSwgR1BSSW5mbzo6ZGVidWdOYW1lKHBheWxvYWRHUFIoKSkpOworICAgICAgICBvdXQucHJp
bnRmKCIlczolcyIsIEdQUkluZm86OmRlYnVnTmFtZSh0YWdHUFIoKSksIEdQUkluZm86OmRlYnVn
TmFtZShwYXlsb2FkR1BSKCkpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihv
dXQsICIlcyIsIEdQUkluZm86OmRlYnVnTmFtZShncHIoKSkpOwotICAgIGZwcmludGYob3V0LCAi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CisgICAgICAgIG91dC5w
cmludGYoIiVzIiwgR1BSSW5mbzo6ZGVidWdOYW1lKGdwcigpKSk7CisgICAgb3V0LnByaW50Zigi
LCAlcykiLCBkYXRhRm9ybWF0VG9TdHJpbmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKLXZvaWQgVmFy
aWFibGVFdmVudDo6ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKiBvdXQpIGNv
bnN0Cit2b2lkIFZhcmlhYmxlRXZlbnQ6OmR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwg
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKG91dCwgIiVzKEAldSwgciVk
LCAlcykiLCBuYW1lLCBub2RlSW5kZXgoKSwgdmlydHVhbFJlZ2lzdGVyKCksIGRhdGFGb3JtYXRU
b1N0cmluZyhkYXRhRm9ybWF0KCkpKTsKKyAgICBvdXQucHJpbnRmKCIlcyhAJXUsIHIlZCwgJXMp
IiwgbmFtZSwgbm9kZUluZGV4KCksIHZpcnR1YWxSZWdpc3RlcigpLCBkYXRhRm9ybWF0VG9TdHJp
bmcoZGF0YUZvcm1hdCgpKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVFdmVudC5oCShyZXZpc2lv
biAxMzU1MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlRXZlbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDExICsyNDAsMTEgQEAgcHVibGljOgogICAgIAogICAg
IGNvbnN0IFZhcmlhYmxlUmVwcmVzZW50YXRpb24mIHZhcmlhYmxlUmVwcmVzZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiB1OyB9CiAgICAgCi0gICAgdm9pZCBkdW1wKEZJTEUqKSBjb25zdDsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkdW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgRklMRSopIGNvbnN0OwotICAgIHZvaWQg
ZHVtcFNwaWxsSW5mbyhjb25zdCBjaGFyKiBuYW1lLCBGSUxFKikgY29uc3Q7CisgICAgdm9pZCBk
dW1wRmlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsKKyAgICB2
b2lkIGR1bXBTcGlsbEluZm8oY29uc3QgY2hhciogbmFtZSwgUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKICAgICBOb2RlSW5kZXggbV9pbmRleDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9u
IDEzNTUwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1i
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29k
ZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSogb3V0KQordm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgaWYgKHRy
eVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgZnByaW50ZihvdXQsICIlc2Rpc2Fzc2VtYmx5IG5vdCBhdmFpbGFibGUg
Zm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSArIHNpemUp
OworICAgIG91dC5wcmludGYoIiVzZGlzYXNzZW1ibHkgbm90IGF2YWlsYWJsZSBmb3IgcmFuZ2Ug
JXAuLi4lcFxuIiwgcHJlZml4LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19j
YXN0PGNoYXIqPihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgc2l6ZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxl
ci9EaXNhc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxOCArMjYsMTcgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNz
ZW1ibGVyX2gKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwog
CiAjaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgRklMRSog
b3V0KTsKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
LCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mKTsKICNlbHNlCi1pbmxp
bmUgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNp
emVfdCwgY29uc3QgY2hhciosIEZJTEUqKQoraW5saW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShj
b25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqLCBQcmludFN0
cmVhbSYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDUsNyArNDQsNyBAQCBpbmxpbmUg
Ym9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvCiAKIC8vIFByaW50cyBlaXRoZXIgdGhl
IGRpc2Fzc2VtYmx5LCBvciBhIGxpbmUgb2YgdGV4dCBpbmRpY2F0aW5nIHRoYXQgZGlzYXNzZW1i
bHkgZmFpbGVkIGFuZAogLy8gdGhlIHJhbmdlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzZXMuCi12
b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29u
c3QgY2hhciogcHJlZml4LCBGSUxFKiBvdXQpOwordm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJl
YW0mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L1VEaXM4NkRpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgs
IEZJTEUqIG91dCkKK2Jvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGNvZGVQdHIsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiBvdXQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRfaW5pdCgmZGlzYXNz
ZW1ibGVyKTsKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1h
Y3JvQXNzZW1ibAogICAgIHdoaWxlICh1ZF9kaXNhc3NlbWJsZSgmZGlzYXNzZW1ibGVyKSkgewog
ICAgICAgICBjaGFyIHBjU3RyaW5nWzIwXTsKICAgICAgICAgc25wcmludGYocGNTdHJpbmcsIHNp
emVvZihwY1N0cmluZyksICIweCVseCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGN1cnJl
bnRQQykpOwotICAgICAgICBmcHJpbnRmKG91dCwgIiVzJTE2czogJXNcbiIsIHByZWZpeCwgcGNT
dHJpbmcsIHVkX2luc25fYXNtKCZkaXNhc3NlbWJsZXIpKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMlMTZzOiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgdWRfaW5zbl9hc20oJmRpc2Fzc2VtYmxl
cikpOwogICAgICAgICBjdXJyZW50UEMgPSBkaXNhc3NlbWJsZXIucGM7CiAgICAgfQogICAgIApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNTUwMSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTItMTEtMjEgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBBbnkgZnVuY3Rpb24gdGhhdCBjYW4gbG9nIHRoaW5ncyBz
aG91bGQgYmUgYWJsZSB0byBlYXNpbHkgbG9nIHRoZW0gdG8gYSBtZW1vcnkgYnVmZmVyIGFzIHdl
bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhh
dmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIHBhc3MgYXJvdW5kIGEgRklMRSogYXMgYSB0
YXJnZXQgdG8gd2hpY2ggdG8gcHJpbnQKKyAgICAgICAgc29tZSBsb2dnaW5nIGluZm9ybWF0aW9u
LiBCdXQgdGhlIHB1cnBvc2Ugb2YgcGFzc2luZyBGSUxFKiBpbnN0ZWFkIG9mIGFsd2F5cyBhc3N1
bWluZworICAgICAgICB0aGF0IHdlIHNob3VsZCBkdW1wIHRvIHN0ZGVyciBpcyB0aGF0IGl0IG1h
eSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIHNlbmQgdGhlIGxvZ2dpbmcKKyAgICAgICAgaW5mb3Jt
YXRpb24gZWxzZXdoZXJlLiBVbmZvcnR1bmF0ZWx5LCBGSUxFKiBpc24ndCBxdWl0ZSBwb3dlcmZ1
bCBlbm91Z2g6IGl0J3MgY29tYmVyc29tZQorICAgICAgICB0byB1c2UgaXQgdG8gc2VuZCBsb2dn
aW5nIHRvIGEgc3RyaW5nLCBmb3IgZXhhbXBsZS4KKyAgICAgICAgCisgICAgICAgIFdlIGNvdWxk
IGdldCBhcm91bmQgdGhpcyBieSB1c2luZyA8aW9zdHJlYW0+IGFuZCA8c3N0cmVhbT4sIGJ1dCBz
byBmYXIgdGhpcyBhc3BlY3Qgb2YKKyAgICAgICAgQysrIGhhcyBub3QgYmVlbiBwYXJ0IG9mIHRo
ZSBXZWJLaXQgY29kaW5nIGNvbnZlbnRpb25zLiBQZXJzb25hbGx5IEkgZmluZCA8aW9zdHJlYW0+
CisgICAgICAgIGF3a3dhcmQgZHVlIHRvIGl0cyBhYnVzZSBvZiBvcGVyYXRvciBvdmVybG9hZGlu
Zy4KKyAgICAgICAgCisgICAgICAgIFNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgUHJpbnRT
dHJlYW0gYWJzdHJhY3QgY2xhc3MsIHdoaWNoIG9mZmVycyBwcmludGYtbGlrZQorICAgICAgICBm
dW5jdGlvbmFsaXR5IHdoaWxlIGNvbXBsZXRlbHkgYWJzdHJhY3RpbmcgdGhlIGRlc3RpbmF0aW9u
IGFuZCBtZWNoYW5pc20gb2YgdGhlIHByaW50aW5nCisgICAgICAgIG91dHB1dC4gSXQgd291bGQg
YmUgdHJpdmlhbCB0byBpbXBsZW1lbnQgYSBTdHJpbmdQcmludFN0cmVhbSwgZm9yIGV4YW1wbGUu
IFRoaXMgd2lsbCBmZWVkCisgICAgICAgIGludG8gd29yayBvbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTk5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNv
IHNldHMgdXMgdXAgZm9yIGNyZWF0aW5nIHRlbXBsYXRpemVkIHByaW50KCkgYW5kIHByaW50bG4o
KSBtZXRob2RzIHRoYXQgd2lsbAorICAgICAgICBhbGxvdyB1cyB0byBzYXkgdGhpbmdzIGxpa2Ug
b3V0LnByaW50KCJjb3VudCA9ICIsIGNvdW50LCAiXG4iKSwgYnV0IHRoYXQgaXMgdGhlIHRvcGlj
CisgICAgICAgIG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMw
MDkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hhbmdlcyBkYXRhTG9nKCkg
dG8gdXNlIEZpbGVQcmludFN0cmVhbSBpbnRlcm5hbGx5LCBhbmQgV1RGOjpkYXRhRmlsZSgpCisg
ICAgICAgIG5vdyByZXR1cm5zIGEgRmlsZVByaW50U3RyZWFtJi4gQW55IHByZXZpb3VzIHVzZXJz
IG9mIFdURjo6ZGF0YUZpbGUoKSBoYXZlIGJlZW4gY2hhbmdlZAorICAgICAgICB0byBleHBlY3Qg
YSBQcmludFN0cmVhbSYuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFdURi5wcm86CisgICAgICAgICogV1RGLnZjcHJvai9XVEYudmNwcm9qOgorICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRGF0YUxvZy5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAg
ICAoV1RGOjppbml0aWFsaXplTG9nRmlsZU9uY2UpOgorICAgICAgICAoV1RGOjppbml0aWFsaXpl
TG9nRmlsZSk6CisgICAgICAgIChXVEY6OmRhdGFGaWxlKToKKyAgICAgICAgKFdURjo6ZGF0YUxv
Z1YpOgorICAgICAgICAoV1RGOjpkYXRhTG9nU3RyaW5nKToKKyAgICAgICAgKiB3dGYvRGF0YUxv
Zy5oOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvRmlsZVByaW50U3RyZWFtLmNwcDog
QWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpGaWxlUHJpbnRTdHJlYW06OkZp
bGVQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6fkZpbGVQcmlu
dFN0cmVhbSk6CisgICAgICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6dnByaW50Zik6CisgICAg
ICAgIChXVEY6OkZpbGVQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAqIHd0Zi9GaWxlUHJp
bnRTdHJlYW0uaDogQWRkZWQuCisgICAgICAgIChXVEYpOgorICAgICAgICAoRmlsZVByaW50U3Ry
ZWFtKToKKyAgICAgICAgKFdURjo6RmlsZVByaW50U3RyZWFtOjpmaWxlKToKKyAgICAgICAgKiB3
dGYvUHJpbnRTdHJlYW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6
OlByaW50U3RyZWFtOjpQcmludFN0cmVhbSk6CisgICAgICAgIChXVEY6OlByaW50U3RyZWFtOjp+
UHJpbnRTdHJlYW0pOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6cHJpbnRmKToKKyAgICAg
ICAgKFdURjo6UHJpbnRTdHJlYW06OnByaW50KToKKyAgICAgICAgKFdURjo6UHJpbnRTdHJlYW06
OnByaW50bG4pOgorICAgICAgICAoV1RGOjpQcmludFN0cmVhbTo6Zmx1c2gpOgorICAgICAgICAo
V1RGOjpwcmludCk6CisgICAgICAgICogd3RmL1ByaW50U3RyZWFtLmg6IEFkZGVkLgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKFByaW50U3RyZWFtKToKKyAgICAgICAgKFdURjo6cHJpbnQpOgor
ICAgICAgICAoV1RGOjpwcmludGxuKToKKwogMjAxMi0xMS0yMiAgTWljaGFlbCBTYWJvZmYgIDxt
c2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MIGludGVnZXIgcGFyc2luZyBmdW5jdGlv
bnMgZG9uJ3QgbmF0aXZlbHkgaGFuZGxlIDggYml0IHN0cmluZ3MKSW5kZXg6IFNvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDEzNTUwMSkKKysrIFNvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCB3dGZfc291cmNlcyArPSBcCiAg
ICAgU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9G
YXN0TWFsbG9jLmNwcCBcCiAgICAgU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIFwKKyAgICBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwIFwKKyAgICBTb3VyY2UvV1RGL3d0Zi9G
aWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgU291cmNlL1dURi93dGYvRml4ZWRBcnJheS5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9GbG9hdDMyQXJyYXkuaCBcCiAgICAgU291cmNlL1dURi93dGYvRmxv
YXQ2NEFycmF5LmggXApAQCAtMTI2LDYgKzEyOCw4IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9QYXNzVHJhaXRzLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1Bvc3NpYmx5TnVsbC5oIFwKKyAgICBTb3VyY2UvV1RG
L3d0Zi9QcmludFN0cmVhbS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgg
XAogICAgIFNvdXJjZS9XVEYvd3RmL1JhbmRvbU51bWJlci5jcHAgXAogICAgIFNvdXJjZS9XVEYv
d3RmL1JhbmRvbU51bWJlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9SYW5kb21OdW1iZXJTZWVk
LmggXApJbmRleDogU291cmNlL1dURi9XVEYuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L1dURi5neXBpCShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3VyY2UvV1RGL1dURi5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICAgICAnd3RmL0VuY29kZXIuaCcs
CiAgICAgICAgICAgICAnd3RmL0Zhc3RBbGxvY0Jhc2UuaCcsCiAgICAgICAgICAgICAnd3RmL0Zh
c3RNYWxsb2MuaCcsCisgICAgICAgICAgICAnd3RmL0ZpbGVQcmludFN0cmVhbS5oJywKICAgICAg
ICAgICAgICd3dGYvRml4ZWRBcnJheS5oJywKICAgICAgICAgICAgICd3dGYvRm9yd2FyZC5oJywK
ICAgICAgICAgICAgICd3dGYvRnVuY3Rpb25hbC5oJywKQEAgLTgwLDYgKzgxLDcgQEAKICAgICAg
ICAgICAgICd3dGYvUGxhdGZvcm0uaCcsCiAgICAgICAgICAgICAnd3RmL1BsYXRmb3JtLmgnLAog
ICAgICAgICAgICAgJ3d0Zi9Qb3NzaWJseU51bGwuaCcsCisgICAgICAgICAgICAnd3RmL1ByaW50
U3RyZWFtLmgnLAogICAgICAgICAgICAgJ3d0Zi9SYW5kb21OdW1iZXIuaCcsCiAgICAgICAgICAg
ICAnd3RmL1JlZkNvdW50ZWQuaCcsCiAgICAgICAgICAgICAnd3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5oJywKQEAgLTE1NSw2ICsxNTcsNyBAQAogICAgICAgICAgICAgJ3d0Zi9EeW5hbWljQW5u
b3RhdGlvbnMuY3BwJywKICAgICAgICAgICAgICd3dGYvRHluYW1pY0Fubm90YXRpb25zLmgnLAog
ICAgICAgICAgICAgJ3d0Zi9GYXN0TWFsbG9jLmNwcCcsCisgICAgICAgICAgICAnd3RmL0ZpbGVQ
cmludFN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9GbG9hdDMyQXJyYXkuaCcsCiAgICAg
ICAgICAgICAnd3RmL0Zsb2F0NjRBcnJheS5oJywKICAgICAgICAgICAgICd3dGYvR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwJywKQEAgLTE4NCw2ICsxODcsNyBAQAogICAgICAgICAgICAgJ3d0Zi9QYXJh
bGxlbEpvYnNHZW5lcmljLmgnLAogICAgICAgICAgICAgJ3d0Zi9QYXJhbGxlbEpvYnNMaWJkaXNw
YXRjaC5oJywKICAgICAgICAgICAgICd3dGYvUGFyYWxsZWxKb2JzT3Blbk1QLmgnLAorICAgICAg
ICAgICAgJ3d0Zi9QcmludFN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ3d0Zi9SYW5kb21OdW1i
ZXIuY3BwJywKICAgICAgICAgICAgICd3dGYvUmFuZG9tTnVtYmVyU2VlZC5oJywKICAgICAgICAg
ICAgICd3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCcsCkluZGV4OiBTb3VyY2UvV1RGL1dU
Ri5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYucHJvCShyZXZpc2lvbiAxMzU1MDEp
CisrKyBTb3VyY2UvV1RGL1dURi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAg
SEVBREVSUyArPSBcCiAgICAgRXhwb3J0TWFjcm9zLmggXAogICAgIEZhc3RBbGxvY0Jhc2UuaCBc
CiAgICAgRmFzdE1hbGxvYy5oIFwKKyAgICBGaWxlUHJpbnRTdHJlYW0uaCBcCiAgICAgRml4ZWRB
cnJheS5oIFwKICAgICBGbG9hdDMyQXJyYXkuaCBcCiAgICAgRmxvYXQ2NEFycmF5LmggXApAQCAt
MTI2LDYgKzEyNyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFBhc3NUcmFpdHMuaCBcCiAgICAgUGxh
dGZvcm0uaCBcCiAgICAgUG9zc2libHlOdWxsLmggXAorICAgIFByaW50U3RyZWFtLmggXAogICAg
IFJhbmRvbU51bWJlci5oIFwKICAgICBSYW5kb21OdW1iZXJTZWVkLmggXAogICAgIFJlZEJsYWNr
VHJlZS5oIFwKQEAgLTIwNyw2ICsyMDksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkdG9hL2ZpeGVk
LWR0b2EuY2MgXAogICAgIGR0b2Evc3RydG9kLmNjIFwKICAgICBGYXN0TWFsbG9jLmNwcCBcCisg
ICAgRmlsZVByaW50U3RyZWFtLmNwcCBcCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIFwKICAg
ICBnb2JqZWN0L0dPd25QdHIuY3BwIFwKICAgICBnb2JqZWN0L0dSZWZQdHIuY3BwIFwKQEAgLTIy
NCw2ICsyMjcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQuY3Bw
IFwKICAgICBQYWdlQmxvY2suY3BwIFwKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBcCisg
ICAgUHJpbnRTdHJlYW0uY3BwIFwKICAgICBSYW5kb21OdW1iZXIuY3BwIFwKICAgICBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwIFwKICAgICBTSEExLmNwcCBcCkluZGV4OiBTb3VyY2UvV1RGL1dU
Ri52Y3Byb2ovV1RGLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi52Y3Byb2ov
V1RGLnZjcHJvagkocmV2aXNpb24gMTM1NTAxKQorKysgU291cmNlL1dURi9XVEYudmNwcm9qL1dU
Ri52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc4MSw2ICs3ODEsMTQgQEAKIAkJCT4KIAkJPC9G
aWxlPgogCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmlsZVByaW50U3RyZWFtLmNw
cCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcRmls
ZVByaW50U3RyZWFtLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0
aD0iLi5cd3RmXEZpeGVkQXJyYXkuaCIKIAkJCT4KIAkJPC9GaWxlPgpAQCAtMTA4OSw2ICsxMDk3
LDE0IEBACiAJCQk+CiAJCTwvRmlsZT4KIAkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cd3Rm
XFByaW50U3RyZWFtLmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlx3dGZcUHJpbnRTdHJlYW0uaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJ
UmVsYXRpdmVQYXRoPSIuLlx3dGZcUmFuZG9tTnVtYmVyLmNwcCIKIAkJCT4KIAkJPC9GaWxlPgpJ
bmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
MzU1MDEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw2ICsyMSwxMCBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTBGOUQzMzYw
MTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8q
IEZpbGVQcmludFN0cmVhbS5jcHAgKi87IH07CisJCTBGOUQzMzYxMTY1REJBNzMwMDVBRDM4NyAv
KiBGaWxlUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOUQzMzVDMTY1REJBNzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uaCAq
LzsgfTsKKwkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVEMTY1REJB
NzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgKi87IH07CisJCTBGOUQzMzYzMTY1REJBNzMw
MDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY5RDMzNUUxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmgg
Ki87IH07CiAJCTBGRDgxQUM1MTU0RkIyMkUwMDk4M0U3MiAvKiBGYXN0Qml0VmVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4MUFDNDE1NEZC
MjJFMDA5ODNFNzIgLyogRmFzdEJpdFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKCk7IH07IH07CiAJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFEMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKQEAgLTMxMiw2ICszMTYsMTAgQEAKIC8qIEVu
ZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KKwkJMEY5RDMzNUIxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmlu
dFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlUHJp
bnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjlEMzM1QzE2NURC
QTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbGVQcmludFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRTdHJlYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RC
aXRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFzdEJpdFZlY3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUx
NEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
QU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA3LDYgKzcxNSw4IEBA
CiAJCQkJMEZEODFBQzQxNTRGQjIyRTAwOTgzRTcyIC8qIEZhc3RCaXRWZWN0b3IuaCAqLywKIAkJ
CQlBOEE0NzJBMTE1MUE4MjVBMDA0MTIzRkYgLyogRmFzdE1hbGxvYy5jcHAgKi8sCiAJCQkJQThB
NDcyQTIxNTFBODI1QTAwNDEyM0ZGIC8qIEZhc3RNYWxsb2MuaCAqLywKKwkJCQkwRjlEMzM1QjE2
NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCAqLywKKwkJCQkwRjlEMzM1QzE2
NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggKi8sCiAJCQkJQThBNDcyQTMxNTFB
ODI1QTAwNDEyM0ZGIC8qIEZpeGVkQXJyYXkuaCAqLywKIAkJCQlBOEE0NzJBNDE1MUE4MjVBMDA0
MTIzRkYgLyogRmxvYXQzMkFycmF5LmggKi8sCiAJCQkJQThBNDcyQTUxNTFBODI1QTAwNDEyM0ZG
IC8qIEZsb2F0NjRBcnJheS5oICovLApAQCAtNzgzLDggKzc5Myw5IEBACiAJCQkJQThBNDcyRUQx
NTFBODI1QjAwNDEyM0ZGIC8qIFBhc3NSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzJFRTE1MUE4MjVC
MDA0MTIzRkYgLyogUGFzc1RyYWl0cy5oICovLAogCQkJCUE4QTQ3MkVGMTUxQTgyNUIwMDQxMjNG
RiAvKiBQbGF0Zm9ybS5oICovLAotCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0
Zm9ybS5oICovLAogCQkJCUE4QTQ3MkYzMTUxQTgyNUIwMDQxMjNGRiAvKiBQb3NzaWJseU51bGwu
aCAqLywKKwkJCQkwRjlEMzM1RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICov
LAorCQkJCTBGOUQzMzVFMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oICovLAogCQkJ
CTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLywKIAkJCQkxNDNGNjEx
RTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovLAogCQkJCUE4QTQ3MkZCMTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwICovLApAQCAtODQ4LDYgKzg1OSw3IEBACiAJCQkJ
QThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICovLAogCQkJCUE4QTQ3MzdBMTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKIAkJCQlBOEE0NzM3QjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oICovLAorCQkJCUE4NzZEQkQ3MTUxODE2RTUw
MERBREI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTIxNiw2ICsxMjI4LDggQEAKIAkJCQlBOEE0NzQ4MDE1
MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ0NjE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4
NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5RDMzNjExNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY5RDMzNjMxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTEzODMsNiArMTM5Nyw4IEBACiAJCQkJQThBNDc0NjkxNTFBODI1QjAwNDEy
M0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFBODI1QjAwNDEy
M0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ4NjE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjlEMzM2
MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzU1MDEpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QCBTRVQoV1RGX0hFQURFUlMKICAgICBFbmNvZGVyLmgKICAgICBGYXN0QWxsb2NCYXNlLmgKICAg
ICBGYXN0TWFsbG9jLmgKKyAgICBGaWxlUHJpbnRTdHJlYW0uaAogICAgIEZpeGVkQXJyYXkuaAog
ICAgIEZvcndhcmQuaAogICAgIEdldFB0ci5oCkBAIC03NSw2ICs3Niw3IEBAIFNFVChXVEZfSEVB
REVSUwogICAgIFBhcmFsbGVsSm9ic09wZW5NUC5oCiAgICAgUGxhdGZvcm0uaAogICAgIFBvc3Np
Ymx5TnVsbC5oCisgICAgUHJpbnRTdHJlYW0uaAogICAgIFJhbmRvbU51bWJlci5oCiAgICAgUmFu
ZG9tTnVtYmVyU2VlZC5oCiAgICAgUmVkQmxhY2tUcmVlLmgKQEAgLTE1MCw2ICsxNTIsNyBAQCBT
RVQoV1RGX1NPVVJDRVMKICAgICBEZWNpbWFsTnVtYmVyLmNwcAogICAgIER5bmFtaWNBbm5vdGF0
aW9ucy5jcHAKICAgICBGYXN0TWFsbG9jLmNwcAorICAgIEZpbGVQcmludFN0cmVhbS5jcHAKICAg
ICBHcmVnb3JpYW5EYXRlVGltZS5jcHAKICAgICBIYXNoVGFibGUuY3BwCiAgICAgTUQ1LmNwcApA
QCAtMTYyLDYgKzE2NSw3IEBAIFNFVChXVEZfU09VUkNFUwogICAgIFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5jcHAKICAgICBQYWdlQmxvY2suY3BwCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAK
KyAgICBQcmludFN0cmVhbS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRl
ZExlYWtDb3VudGVyLmNwcAogICAgIFNIQTEuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9EYXRh
TG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAkocmV2aXNp
b24gMTM1NTAxKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhTG9n
LmgiCiAjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVQcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogI2RlZmluZSBEQVRBX0xPR19UT19GSUxF
IDAKQEAgLTM1LDM0ICszNiwzNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIERBVEFfTE9H
X1RPX0ZJTEUKLXN0YXRpYyBGSUxFKiBmaWxlOworI2lmIFVTRShQVEhSRUFEUykKK3N0YXRpYyBw
dGhyZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFEX09OQ0VfSU5J
VDsKKyNlbmRpZgorCitzdGF0aWMgRmlsZVByaW50U3RyZWFtKiBmaWxlOwogCiBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplTG9nRmlsZU9uY2UoKQogeworI2lmIERBVEFfTE9HX1RPX0ZJTEUKICNpZmRl
ZiBEQVRBX0xPR19GSUxFTkFNRQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gREFUQV9MT0df
RklMRU5BTUU7CiAjZWxzZQogICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gZ2V0ZW52KCJXVEZf
REFUQV9MT0dfRklMRU5BTUUiKTsKICNlbmRpZgogICAgIGlmIChmaWxlbmFtZSkgewotICAgICAg
ICBmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7Ci0gICAgICAgIGlmICghZmlsZSkKKyAgICAg
ICAgRklMRSogcmF3RmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAidyIpOworICAgICAgICBpZiAocmF3
RmlsZSkKKyAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZVByaW50U3RyZWFtKHJhd0ZpbGUpOwor
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIldhcm5pbmc6IENvdWxk
IG5vdCBvcGVuIGxvZyBmaWxlICVzIGZvciB3cml0aW5nLlxuIiwgZmlsZW5hbWUpOwogICAgIH0K
KyNlbmRpZiAvLyBEQVRBX0xPR19UT19GSUxFCiAgICAgaWYgKCFmaWxlKQotICAgICAgICBmaWxl
ID0gc3RkZXJyOworICAgICAgICBmaWxlID0gbmV3IEZpbGVQcmludFN0cmVhbShzdGRlcnIsIEZp
bGVQcmludFN0cmVhbTo6Qm9ycm93KTsKICAgICAKLSAgICBzZXR2YnVmKGZpbGUsIDAsIF9JT05C
RiwgMCk7IC8vIFByZWZlciB1bmJ1ZmZlcmVkIG91dHB1dCwgc28gdGhhdCB3ZSBnZXQgYSBmdWxs
IGxvZyB1cG9uIGNyYXNoIG9yIGRlYWRsb2NrLgorICAgIHNldHZidWYoZmlsZS0+ZmlsZSgpLCAw
LCBfSU9OQkYsIDApOyAvLyBQcmVmZXIgdW5idWZmZXJlZCBvdXRwdXQsIHNvIHRoYXQgd2UgZ2V0
IGEgZnVsbCBsb2cgdXBvbiBjcmFzaCBvciBkZWFkbG9jay4KIH0KIAotI2lmIE9TKERBUldJTikK
LXN0YXRpYyBwdGhyZWFkX29uY2VfdCBpbml0aWFsaXplTG9nRmlsZU9uY2VLZXkgPSBQVEhSRUFE
X09OQ0VfSU5JVDsKLSNlbmRpZgotCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplTG9nRmlsZSgpCiB7
Ci0jaWYgT1MoREFSV0lOKQorI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX29uY2UoJmlu
aXRpYWxpemVMb2dGaWxlT25jZUtleSwgaW5pdGlhbGl6ZUxvZ0ZpbGVPbmNlKTsKICNlbHNlCiAg
ICAgaWYgKCFmaWxlKQpAQCAtNzAsMjEgKzc0LDE1IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVM
b2dGaWxlKCkKICNlbmRpZgogfQogCi1GSUxFKiBkYXRhRmlsZSgpCitGaWxlUHJpbnRTdHJlYW0m
IGRhdGFGaWxlKCkKIHsKICAgICBpbml0aWFsaXplTG9nRmlsZSgpOwotICAgIHJldHVybiBmaWxl
OworICAgIHJldHVybiAqZmlsZTsKIH0KLSNlbHNlIC8vIERBVEFfTE9HX1RPX0ZJTEUKLUZJTEUq
IGRhdGFGaWxlKCkKLXsKLSAgICByZXR1cm4gc3RkZXJyOwotfQotI2VuZGlmIC8vIERBVEFfTE9H
X1RPX0ZJTEUKIAogdm9pZCBkYXRhTG9nRlYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFy
Z0xpc3QpCiB7Ci0gICAgdmZwcmludGYoZGF0YUZpbGUoKSwgZm9ybWF0LCBhcmdMaXN0KTsKKyAg
ICBkYXRhRmlsZSgpLnZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKIH0KIAogdm9pZCBkYXRhTG9n
Rihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTk3LDcgKzk1LDcgQEAgdm9pZCBkYXRhTG9n
Rihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBkYXRhTG9nRlN0cmluZyhjb25zdCBj
aGFyKiBzdHIpCiB7Ci0gICAgZnB1dHMoc3RyLCBkYXRhRmlsZSgpKTsKKyAgICBkYXRhRmlsZSgp
LnByaW50ZigiJXMiLCBzdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0RhdGFMb2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRhTG9n
LmgJKHJldmlzaW9uIDEzNTUwMSkKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsMTIgKzI4LDEzIEBACiAKICNpbmNsdWRlIDxzdGRhcmcuaD4KICNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCi1XVEZfRVhQT1JUX1BSSVZBVEUgRklMRSogZGF0YUZpbGUoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBGaWxlUHJpbnRTdHJlYW0mIGRhdGFGaWxlKCk7CiAKIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIGRhdGFMb2dGVihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9B
VFRSSUJVVEVfUFJJTlRGKDEsIDApOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGF0YUxvZ0Yo
Y29uc3QgY2hhciogZm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDEsIDIpOwpJbmRl
eDogU291cmNlL1dURi93dGYvRmlsZVByaW50U3RyZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dU
Ri93dGYvRmlsZVByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRmlsZVByaW50U3RyZWFtLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCitGaWxlUHJpbnRTdHJlYW06OkZpbGVQcmludFN0cmVhbShGSUxFKiBmaWxlLCBBZG9wdGlv
bk1vZGUgYWRvcHRpb25Nb2RlKQorICAgIDogbV9maWxlKGZpbGUpCisgICAgLCBtX2Fkb3B0aW9u
TW9kZShhZG9wdGlvbk1vZGUpCit7Cit9CisKK0ZpbGVQcmludFN0cmVhbTo6fkZpbGVQcmludFN0
cmVhbSgpCit7CisgICAgaWYgKG1fYWRvcHRpb25Nb2RlID09IEJvcnJvdykKKyAgICAgICAgcmV0
dXJuOworICAgIGZjbG9zZShtX2ZpbGUpOworfQorCit2b2lkIEZpbGVQcmludFN0cmVhbTo6dnBy
aW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnTGlzdCkKK3sKKyAgICB2ZnByaW50
ZihtX2ZpbGUsIGZvcm1hdCwgYXJnTGlzdCk7Cit9CisKK3ZvaWQgRmlsZVByaW50U3RyZWFtOjpm
bHVzaCgpCit7CisgICAgZmZsdXNoKG1fZmlsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
VEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRmls
ZVByaW50U3RyZWFtX2gKKyNkZWZpbmUgRmlsZVByaW50U3RyZWFtX2gKKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgewor
CitjbGFzcyBGaWxlUHJpbnRTdHJlYW0gOiBwdWJsaWMgUHJpbnRTdHJlYW0geworcHVibGljOgor
ICAgIGVudW0gQWRvcHRpb25Nb2RlIHsKKyAgICAgICAgQWRvcHQsCisgICAgICAgIEJvcnJvdwor
ICAgIH07CisgICAgCisgICAgRmlsZVByaW50U3RyZWFtKEZJTEUqLCBBZG9wdGlvbk1vZGUgPSBB
ZG9wdCk7CisgICAgdmlydHVhbCB+RmlsZVByaW50U3RyZWFtKCk7CisgICAgCisgICAgRklMRSog
ZmlsZSgpIHsgcmV0dXJuIG1fZmlsZTsgfQorICAgIAorICAgIHZvaWQgdnByaW50Zihjb25zdCBj
aGFyKiBmb3JtYXQsIHZhX2xpc3QpIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOworICAgIHZv
aWQgZmx1c2goKTsKKworcHJpdmF0ZToKKyAgICBGSUxFKiBtX2ZpbGU7CisgICAgQWRvcHRpb25N
b2RlIG1fYWRvcHRpb25Nb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6RmlsZVByaW50U3RyZWFtOworCisjZW5kaWYgLy8gRmlsZVByaW50U3RyZWFtX2gKKwpJbmRl
eDogU291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL1ByaW50U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1By
aW50U3RyZWFtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUHJpbnRTdHJlYW0uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworUHJpbnRTdHJlYW06OlByaW50U3RyZWFtKCkgeyB9CitQcmludFN0
cmVhbTo6flByaW50U3RyZWFtKCkgeyB9IC8vIEZvcmNlIHRoZSB2dGFibGUgdG8gYmUgaW4gdGhp
cyBtb2R1bGUKKwordm9pZCBQcmludFN0cmVhbTo6cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwg
Li4uKQoreworICAgIHZhX2xpc3QgYXJnTGlzdDsKKyAgICB2YV9zdGFydChhcmdMaXN0LCBmb3Jt
YXQpOworICAgIHZwcmludGYoZm9ybWF0LCBhcmdMaXN0KTsKKyAgICB2YV9lbmQoYXJnTGlzdCk7
Cit9CisKK3ZvaWQgUHJpbnRTdHJlYW06OmZsdXNoKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1ByaW50U3RyZWFtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUHJpbnRTdHJlYW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XVEYv
d3RmL1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQcmludFN0cmVh
bV9oCisjZGVmaW5lIFByaW50U3RyZWFtX2gKKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1
ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgQ1N0cmluZzsKK2NsYXNzIFN0cmluZzsKKworY2xh
c3MgUHJpbnRTdHJlYW0geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOyBXVEZfTUFLRV9O
T05DT1BZQUJMRShQcmludFN0cmVhbSk7CitwdWJsaWM6CisgICAgUHJpbnRTdHJlYW0oKTsKKyAg
ICB2aXJ0dWFsIH5QcmludFN0cmVhbSgpOworCisgICAgdm9pZCBwcmludGYoY29uc3QgY2hhciog
Zm9ybWF0LCAuLi4pIFdURl9BVFRSSUJVVEVfUFJJTlRGKDIsIDMpOworICAgIHZpcnR1YWwgdm9p
ZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgV1RGX0FUVFJJQlVURV9QUklO
VEYoMiwgMCkgPSAwOworCisgICAgLy8gVHlwaWNhbGx5IGEgbm8tb3AgZm9yIG1hbnkgc3ViY2xh
c3NlcyBvZiBQcmludFN0cmVhbSwgdGhpcyBpcyBhIGhpbnQgdGhhdAorICAgIC8vIHRoZSBpbXBs
ZW1lbnRhdGlvbiBzaG91bGQgZmx1c2ggaXRzIGJ1ZmZlcnMgaWYgaXQgaGFkIG5vdCBkb25lIHNv
IGFscmVhZHkuCisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpQcmludFN0cmVhbTsKKworI2VuZGlmIC8vIFByaW50U3RyZWFt
X2gKKwo=
</data>
<flag name="review"
          id="191266"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>