<?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>76001</bug_id>
          
          <creation_ts>2012-01-10 15:49:16 -0800</creation_ts>
          <short_desc>CodeBlock.h declares too many things</short_desc>
          <delta_ts>2012-01-10 16:19:35 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533429</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 15:49:16 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533435</commentid>
    <comment_count>1</comment_count>
      <attachid>121924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 15:51:05 -0800</bug_when>
    <thetext>Created attachment 121924
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533440</commentid>
    <comment_count>2</comment_count>
      <attachid>121926</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 15:53:42 -0800</bug_when>
    <thetext>Created attachment 121926
the patch

Actually wrote a change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533442</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 15:54:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/10672746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533444</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-10 15:55:37 -0800</bug_when>
    <thetext>Attachment 121924 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1

Source/JavaScriptCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 2 in 19 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>533445</commentid>
    <comment_count>5</comment_count>
      <attachid>121928</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 15:56:59 -0800</bug_when>
    <thetext>Created attachment 121928
the patch

Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533446</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-10 15:58:22 -0800</bug_when>
    <thetext>Attachment 121926 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/CallLinkInfo.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 19 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>533460</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 16:19:35 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/104646</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121924</attachid>
            <date>2012-01-10 15:51:05 -0800</date>
            <delta_ts>2012-01-10 15:53:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>refactorcodeblock_patch_1.diff</filename>
            <type>text/plain</type>
            <size>48434</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEyLTAxLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9DYWxsTGlua0luZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJ
bmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZvcik6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZv
Ojp+Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2Vlbk9uY2UpOgorICAgICAgICAoSlNDOjpD
YWxsTGlua0luZm86OnNldFNlZW4pOgorICAgICAgICAoSlNDOjpnZXRDYWxsTGlua0luZm9SZXR1
cm5Mb2NhdGlvbik6CisgICAgICAgIChKU0M6OmdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldDo6
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpnZXRDYWxs
UmV0dXJuT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVUeXBlLmg6
IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvR2xvYmFsUmVzb2x2ZUluZm8uaDogQWRkZWQuCisgICAgICAg
IChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZlSW5mbyk6CisgICAgICAgICog
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvTGluZUlu
Zm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5mbzo6cmVzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TWV0aG9kQ2FsbExpbmtJbmZvOjpNZXRob2RDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpN
ZXRob2RDYWxsTGlua0luZm86OnNlZW5PbmNlKToKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExp
bmtJbmZvOjpzZXRTZWVuKToKKyAgICAgICAgKEpTQzo6Z2V0TWV0aG9kQ2FsbExpbmtJbmZvUmV0
dXJuTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29k
ZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAg
ICAoSlNDOjpnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Z2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KToKKwogMjAxMi0wMS0xMCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmcgb3Blbmlu
ZyBtb3ZpZSB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDExIEBAIFNF
VChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZh
dGUuY3BwCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCisgICAgYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAKICAgICBieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9KdW1wVGFibGUuY3BwCisgICAgYnl0ZWNvZGUv
TWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAKICAgICBieXRl
Y29kZS9QcmVkaWN0ZWRUeXBlLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtODEsNiArODEsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4u
aCBcCkBAIC04OCw5ICs5MiwxNSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9IYW5kZWxlckluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1w
VGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlZGljdGVkVHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlz
aW9uIDEwNDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw5ICs0OSwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBhc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIFwK
ICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIFwKKyAgICBieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2suY3BwIFwKICAgICBieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAogICAgIGJ5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAorICAg
IGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogICAgIGJ5dGVjb2RlL09wY29kZS5j
cHAgXAogICAgIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9TYW1w
bGluZ1Rvb2wuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMDQ2MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCw2ICsxNDUwLDQ2IEBACiAJ
CQlOYW1lPSJieXRlY29kZSIKIAkJCT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxieXRlY29kZVxIYW5kbGVySW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDYWxsTGlua0luZm8uY3BwIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxM
aW5lSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZVR5cGUuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcRXhwcmVzc2lv
blJhbmdlSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8uY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDYWxsTGlu
a0luZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5cYnl0ZWNvZGVcR2xvYmFsUmVzb2x2ZUluZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZUJsb2NrLmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDE2IEBA
CiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0
NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3Jh
cnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2
MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzQTkxNEJDRjU2MjAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNB
QjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRG
IC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjBCODNBRDE0QkNGNjA0MDA4ODVCNEYgLyogTGluZUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FD
MTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxs
TGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgKi87IH07CisJ
CTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0
RiAvKiBDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovOyB9Owor
CQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVF
MDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEds
b2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNC
OTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRC
Q0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRC
N0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIw
MENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURE
NEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtODA1LDYgKzgxNSwxNiBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIg
LyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXpl
TGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1p
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzQUMxNEJDRjYwMjAwODg1QjRGIC8qIExpbmVJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbExpbmtJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsTGlu
a0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQjIxNEJDRjg1RTAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
QjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NCw2ICsyNDc0LDE2
IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzQjgxNEJDRjk1QjAwODg1
QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8sCisJCQkJMEYwQjgz
QjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8sCisJCQkJMEYwQjgz
QjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgKi8sCisJCQkJMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovLAorCQkJCTBG
MEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwICovLAorCQkJCTBGMEI4
M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLywKKwkJCQkwRjBCODNBQzE0
QkNGNjAyMDA4ODVCNEYgLyogTGluZUluZm8uaCAqLywKKwkJCQkwRjBCODNBQTE0QkNGNUI5MDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAorCQkJCTBGMEI4M0E4MTRCQ0Y1NUUw
MDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAorCQkJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2Rl
QmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2su
aCAqLywKIAkJCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovLApA
QCAtMjk4Myw2ICszMDEzLDE0IEBACiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1
REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0
QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
QjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCODNBRDE0QkNGNjA0MDA4ODVCNEYgLyogTGluZUluZm8uaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzQjkx
NEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTM1MTgsNiArMzU1Niw4IEBACiAJCQkJODY3MDRCODkxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNpb24gMTA0NjEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJERkdP
cGVyYXRpb25zLmgiCisjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgorCisjaWYgRU5BQkxFKEpJ
VCkKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxMaW5rSW5mbzo6dW5saW5rKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKK3sKKyAgICBB
U1NFUlQoaXNMaW5rZWQoKSk7CisgICAgCisgICAgaWYgKGlzREZHKSB7CisjaWYgRU5BQkxFKERG
R19KSVQpCisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKENvZGVMb2NhdGlvbkNhbGwoY2Fs
bFJldHVybkxvY2F0aW9uKSwgY2FsbFR5cGUgPT0gQ29uc3RydWN0ID8gREZHOjpvcGVyYXRpb25M
aW5rQ29uc3RydWN0IDogREZHOjpvcGVyYXRpb25MaW5rQ2FsbCk7CisjZWxzZQorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH0gZWxzZQorICAgICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25OZWFyQ2FsbChjYWxsUmV0dXJuTG9jYXRpb24pLCBj
YWxsVHlwZSA9PSBDb25zdHJ1Y3QgPyBnbG9iYWxEYXRhLmppdFN0dWJzLT5jdGlWaXJ0dWFsQ29u
c3RydWN0TGluaygpIDogZ2xvYmFsRGF0YS5qaXRTdHVicy0+Y3RpVmlydHVhbENhbGxMaW5rKCkp
OworICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7CisgICAgY2FsbGVlLmNsZWFyKCk7
CisKKyAgICAvLyBJdCB3aWxsIGJlIG9uIGEgbGlzdCBpZiB0aGUgY2FsbGVlIGhhcyBhIGNvZGUg
YmxvY2suCisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJlbW92ZSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIENhbGxMaW5rSW5mb19oCisjZGVmaW5lIENhbGxMaW5rSW5mb19o
CisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIu
aCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJM
RShKSVQpCisKK2NsYXNzIFJlcGF0Y2hCdWZmZXI7CisKK3N0cnVjdCBDYWxsTGlua0luZm8gOiBw
dWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiB7CisgICAgZW51bSBDYWxs
VHlwZSB7IE5vbmUsIENhbGwsIENhbGxWYXJhcmdzLCBDb25zdHJ1Y3QgfTsKKyAgICBzdGF0aWMg
Q2FsbFR5cGUgY2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgeworICAgICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCisgICAg
ICAgICAgICByZXR1cm4gQ2FsbDsKKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NvbnN0cnVj
dCkKKyAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7CisgICAgICAgIEFTU0VSVChvcGNvZGVJ
RCA9PSBvcF9jYWxsX3ZhcmFyZ3MpOworICAgICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7CisgICAg
fQorICAgICAgICAKKyAgICBDYWxsTGlua0luZm8oKQorICAgICAgICA6IGhhc1NlZW5TaG91bGRS
ZXBhdGNoKGZhbHNlKQorICAgICAgICAsIGlzREZHKGZhbHNlKQorICAgICAgICAsIGNhbGxUeXBl
KE5vbmUpCisgICAgeworICAgIH0KKyAgICAgICAgCisgICAgfkNhbGxMaW5rSW5mbygpCisgICAg
eworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0K
KworICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbjsgLy8gaXQncyBhIG5l
YXIgY2FsbCBpbiB0aGUgb2xkIEpJVCwgb3IgYSBub3JtYWwgY2FsbCBpbiBERkcKKyAgICBDb2Rl
TG9jYXRpb25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOworICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGhvdFBhdGhPdGhlcjsKKyAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVl
OworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBib29s
IGhhc1NlZW5TaG91bGRSZXBhdGNoIDogMTsKKyAgICBib29sIGlzREZHIDogMTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA6IDI7CisgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKKworICAgIGJv
b2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICB2b2lkIHVubGluayhKU0dsb2Jh
bERhdGEmLCBSZXBhdGNoQnVmZmVyJik7CisKKyAgICBib29sIHNlZW5PbmNlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBoYXNTZWVuU2hvdWxkUmVwYXRjaDsKKyAgICB9CisKKyAgICB2b2lkIHNl
dFNlZW4oKQorICAgIHsKKyAgICAgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSB0cnVlOworICAg
IH0KK307CisKK2lubGluZSB2b2lkKiBnZXRDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbihDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbykKK3sKKyAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKK30KKworaW5saW5lIHVuc2lnbmVk
IGdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
Cit7CisgICAgcmV0dXJuIGNhbGxMaW5rSW5mby0+Ynl0ZWNvZGVJbmRleDsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxMaW5r
SW5mb19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXRfaAorI2RlZmluZSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKyNpZiBFTkFCTEUoSklUKQorLy8gVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBtYXAgZnJv
bSBhIGNhbGwgcmV0dXJuIGxvY2F0aW9uCisvLyAoZ2l2ZW4gYXMgYW4gb2Zmc2V0IGluIGJ5dGVz
IGludG8gdGhlIEpJVCBjb2RlKSBiYWNrIHRvCisvLyB0aGUgYnl0ZWNvZGUgaW5kZXggb2YgdGhl
IGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGUgb3BlcmF0aW9uLgorLy8gVGhpcyBpcyB0aGVuIHVzZWQg
dG8gbG9vayB1cCB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyLgorLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIG1hZGUgaW5saW5pbmcgYXdhcmUhIEN1cnJlbnRseSBpdCBpc24ndAorLy8gYmVjYXVz
ZSB3ZSBuZXZlciBpbmxpbmUgY29kZSB0aGF0IGhhcyBleGNlcHRpb24gaGFuZGxlcnMuCitzdHJ1
Y3QgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQgeworICAgIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGNhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQorICAgICAgICA6IGNhbGxSZXR1cm5PZmZzZXQoY2FsbFJldHVybk9mZnNl
dCkKKyAgICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAg
fQorCisgICAgdW5zaWduZWQgY2FsbFJldHVybk9mZnNldDsKKyAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldDsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KiBwYykKK3sKKyAgICByZXR1cm4gcGMtPmNhbGxS
ZXR1cm5PZmZzZXQ7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldF9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDQ2MzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA1NiwzOCArMjA1Niw2IEBAIHZvaWQgQ29kZUJsb2NrOjpjcmVhdGVBY3RpdmF0
aW9uKENhbGxGcmEKIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQotdm9pZCBDYWxsTGlua0luZm86
OnVubGluayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hC
dWZmZXIpCi17Ci0gICAgQVNTRVJUKGlzTGlua2VkKCkpOwotICAgIAotICAgIGlmIChpc0RGRykg
ewotI2lmIEVOQUJMRShERkdfSklUKQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhDb2Rl
TG9jYXRpb25DYWxsKGNhbGxSZXR1cm5Mb2NhdGlvbiksIGNhbGxUeXBlID09IENvbnN0cnVjdCA/
IG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QgOiBvcGVyYXRpb25MaW5rQ2FsbCk7Ci0jZWxzZQotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25OZWFyQ2FsbChjYWxsUmV0dXJuTG9jYXRp
b24pLCBjYWxsVHlwZSA9PSBDb25zdHJ1Y3QgPyBnbG9iYWxEYXRhLmppdFN0dWJzLT5jdGlWaXJ0
dWFsQ29uc3RydWN0TGluaygpIDogZ2xvYmFsRGF0YS5qaXRTdHVicy0+Y3RpVmlydHVhbENhbGxM
aW5rKCkpOwotICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7Ci0gICAgY2FsbGVlLmNs
ZWFyKCk7Ci0KLSAgICAvLyBJdCB3aWxsIGJlIG9uIGEgbGlzdCBpZiB0aGUgY2FsbGVlIGhhcyBh
IGNvZGUgYmxvY2suCi0gICAgaWYgKGlzT25MaXN0KCkpCi0gICAgICAgIHJlbW92ZSgpOwotfQot
Ci12b2lkIE1ldGhvZENhbGxMaW5rSW5mbzo6cmVzZXQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1
ZmZlciwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQotewotICAgIGNhY2hlZFN0cnVjdHVyZS5j
bGVhclRvTWF4VW5zaWduZWQoKTsKLSAgICBjYWNoZWRQcm90b3R5cGUuY2xlYXIoKTsKLSAgICBj
YWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuY2xlYXJUb01heFVuc2lnbmVkKCk7Ci0gICAgY2FjaGVk
RnVuY3Rpb24uY2xlYXIoKTsKLSAgICAKLSAgICBBU1NFUlRfVU5VU0VEKGppdFR5cGUsIGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIAotICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9pZF9tZXRob2RfY2hlY2spOwot
fQotCiB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJu
YXRpdmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiAxMDQ2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIyICszMCwzMSBAQAogI2lmbmRlZiBDb2Rl
QmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgi
CisjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0
SklUQ29kZU1hcC5oIgogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3MuaCIKICNpbmNsdWRlICJERkdF
eGl0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR09TUkVudHJ5LmgiCiAjaW5jbHVkZSAiREZHT1NS
RXhpdC5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKKyNpbmNsdWRlICJFeHByZXNzaW9u
UmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2xvYmFsUmVzb2x2ZUluZm8uaCIKKyNpbmNsdWRlICJI
YW5kbGVySW5mby5oIgorI2luY2x1ZGUgIk1ldGhvZENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUu
aCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCIKICNpbmNs
dWRlICJWYWx1ZVByb2ZpbGUuaCIKQEAgLTUzLDEyICs2Miw4IEBACiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21l
bnRlZFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQogI2luY2x1ZGUgIlN0cnVjdHVy
ZVN0dWJJbmZvLmgiCi0jZW5kaWYKIAogLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVj
b2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIg
cmFuZ2VzOgogLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUs
IHNlZSBSZWdpc3RlckZpbGUuaC4KQEAgLTY4LDE5MSArNzMsMTMgQEAgc3RhdGljIGNvbnN0IGlu
dCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGVudW0g
SGFzU2VlblNob3VsZFJlcGF0Y2ggewotICAgICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaAotICAg
IH07Ci0KICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKIAot
ICAgIGVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07
Ci0KICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1l
bnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0gMTsgfQogCiAgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdUaGlzT2JqZWN0TWFya2VyKCkgeyByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQogCi0gICAgc3RydWN0IEhhbmRsZXJJ
bmZvIHsKLSAgICAgICAgdWludDMyX3Qgc3RhcnQ7Ci0gICAgICAgIHVpbnQzMl90IGVuZDsKLSAg
ICAgICAgdWludDMyX3QgdGFyZ2V0OwotICAgICAgICB1aW50MzJfdCBzY29wZURlcHRoOwotI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIG5hdGl2ZUNvZGU7Ci0jZW5k
aWYKLSAgICB9OwotCi0gICAgc3RydWN0IEV4cHJlc3Npb25SYW5nZUluZm8gewotICAgICAgICBl
bnVtIHsKLSAgICAgICAgICAgIE1heE9mZnNldCA9ICgxIDw8IDcpIC0gMSwgCi0gICAgICAgICAg
ICBNYXhEaXZvdCA9ICgxIDw8IDI1KSAtIDEKLSAgICAgICAgfTsKLSAgICAgICAgdWludDMyX3Qg
aW5zdHJ1Y3Rpb25PZmZzZXQgOiAyNTsKLSAgICAgICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1
OwotICAgICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7Ci0gICAgICAgIHVpbnQzMl90IGVu
ZE9mZnNldCA6IDc7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBMaW5lSW5mbyB7Ci0gICAgICAgIHVp
bnQzMl90IGluc3RydWN0aW9uT2Zmc2V0OwotICAgICAgICBpbnQzMl90IGxpbmVOdW1iZXI7Ci0g
ICAgfTsKLQotI2lmIEVOQUJMRShKSVQpCi0gICAgc3RydWN0IENhbGxMaW5rSW5mbyA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsKLSAgICAgICAgZW51bSBDYWxs
VHlwZSB7IE5vbmUsIENhbGwsIENhbGxWYXJhcmdzLCBDb25zdHJ1Y3QgfTsKLSAgICAgICAgc3Rh
dGljIENhbGxUeXBlIGNhbGxUeXBlRm9yKE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF9jYWxs
X2V2YWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENhbGw7Ci0gICAgICAgICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY29uc3RydWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7
Ci0gICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfY2FsbF92YXJhcmdzKTsKLSAgICAg
ICAgICAgIHJldHVybiBDYWxsVmFyYXJnczsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
Q2FsbExpbmtJbmZvKCkKLSAgICAgICAgICAgIDogaGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2Up
Ci0gICAgICAgICAgICAsIGlzREZHKGZhbHNlKQotICAgICAgICAgICAgLCBjYWxsVHlwZShOb25l
KQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5DYWxsTGlua0luZm8o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNPbkxpc3QoKSkKLSAgICAgICAgICAgICAg
ICByZW1vdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxS
ZXR1cm5Mb2NhdGlvbjsgLy8gaXQncyBhIG5lYXIgY2FsbCBpbiB0aGUgb2xkIEpJVCwgb3IgYSBu
b3JtYWwgY2FsbCBpbiBERkcKLSAgICAgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGhvdFBh
dGhCZWdpbjsKLSAgICAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOwotICAg
ICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwotICAgICAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxsZWU7Ci0gICAgICAgIGJvb2wgaGFzU2VlblNo
b3VsZFJlcGF0Y2ggOiAxOwotICAgICAgICBib29sIGlzREZHIDogMTsKLSAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgOiAyOwotICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4OwotCi0gICAg
ICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KLSAgICAgICAgdm9pZCB1bmxp
bmsoSlNHbG9iYWxEYXRhJiwgUmVwYXRjaEJ1ZmZlciYpOwotCi0gICAgICAgIGJvb2wgc2Vlbk9u
Y2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzU2VlblNob3VsZFJlcGF0Y2g7
Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNldFNlZW4oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9OwotCi0g
ICAgc3RydWN0IE1ldGhvZENhbGxMaW5rSW5mbyB7Ci0gICAgICAgIE1ldGhvZENhbGxMaW5rSW5m
bygpCi0gICAgICAgICAgICA6IHNlZW4oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgc2Vlbk9uY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2Vl
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0U2VlbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHNlZW4gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHJl
c2V0KFJlcGF0Y2hCdWZmZXImLCBKSVRDb2RlOjpKSVRUeXBlKTsKLQotICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZUluZGV4OwotICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2Nh
dGlvbjsKLSAgICAgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0dXJl
OwotICAgICAgICBKSVRXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBjYWNoZWRQcm90b3R5cGVTdHJ1
Y3R1cmU7Ci0gICAgICAgIC8vIFdlJ2QgbGlrZSB0aGlzIHRvIGFjdHVhbGx5IGJlIEpTRnVuY3Rp
b24sIGJ1dCBJbnRlcm5hbEZ1bmN0aW9uIGFuZCBKU0Z1bmN0aW9uCi0gICAgICAgIC8vIGRvbid0
IGhhdmUgYSBjb21tb24gcGFyZW50IGNsYXNzIGFuZCB3ZSBhbGxvdyBzcGVjaWFsaXNhdGlvbiBv
biBib3RoCi0gICAgICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkRnVuY3Rpb247
Ci0gICAgICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOwotICAg
ICAgICBib29sIHNlZW47Ci0gICAgfTsKLQotICAgIHN0cnVjdCBHbG9iYWxSZXNvbHZlSW5mbyB7
Ci0gICAgICAgIEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotICAg
ICAgICAgICAgOiBvZmZzZXQoMCkKLSAgICAgICAgICAgICwgYnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZTsKLSAgICAgICAgdW5zaWduZWQgb2Zmc2V0OwotICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldDsKLSAgICB9OwotCi0gICAgLy8gVGhpcyBzdHJ1Y3R1cmUg
aXMgdXNlZCB0byBtYXAgZnJvbSBhIGNhbGwgcmV0dXJuIGxvY2F0aW9uCi0gICAgLy8gKGdpdmVu
IGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBKSVQgY29kZSkgYmFjayB0bwotICAgIC8v
IHRoZSBieXRlY29kZSBpbmRleCBvZiB0aGUgY29ycmVzcG9uZGluZyBieXRlY29kZSBvcGVyYXRp
b24uCi0gICAgLy8gVGhpcyBpcyB0aGVuIHVzZWQgdG8gbG9vayB1cCB0aGUgY29ycmVzcG9uZGlu
ZyBoYW5kbGVyLgotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIGlubGluaW5nIGF3
YXJlISBDdXJyZW50bHkgaXQgaXNuJ3QKLSAgICAvLyBiZWNhdXNlIHdlIG5ldmVyIGlubGluZSBj
b2RlIHRoYXQgaGFzIGV4Y2VwdGlvbiBoYW5kbGVycy4KLSAgICBzdHJ1Y3QgQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQgewotICAgICAgICBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKLSAgICAgICAgICAgIDogY2FsbFJldHVybk9mZnNldChjYWxsUmV0dXJuT2Zmc2V0KQotICAg
ICAgICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKLSAgICAgICAgewotICAg
ICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgY2FsbFJldHVybk9mZnNldDsKLSAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgfTsKLQotICAgIC8vIHZhbHVlQXRQb3NpdGlvbiBo
ZWxwZXJzIGZvciB0aGUgYmluYXJ5U2VhcmNoIGFsZ29yaXRobS4KLQotICAgIGlubGluZSB2b2lk
KiBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHJ1Y3R1cmVTdHViSW5mbykKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTdHViSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotCi0gICAg
aW5saW5lIHVuc2lnbmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0ZWNvZGVJbmRleChTdHJ1Y3R1
cmVTdHViSW5mbyogc3RydWN0dXJlU3R1YkluZm8pCi0gICAgewotICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlU3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQq
IGdldENhbGxMaW5rSW5mb1JldHVybkxvY2F0aW9uKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9u
LmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHVuc2lnbmVkIGdldENh
bGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCi0gICAg
ewotICAgICAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5ieXRlY29kZUluZGV4OwotICAgIH0KLQot
ICAgIGlubGluZSB2b2lkKiBnZXRNZXRob2RDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbihNZXRo
b2RDYWxsTGlua0luZm8qIG1ldGhvZENhbGxMaW5rSW5mbykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtZXRob2RDYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpOwotICAgIH0KLQotICAgIGlubGluZSB1bnNpZ25lZCBnZXRNZXRob2RDYWxsTGlua0luZm9C
eXRlY29kZUluZGV4KE1ldGhvZENhbGxMaW5rSW5mbyogbWV0aG9kQ2FsbExpbmtJbmZvKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldCogcGMpCi0gICAgewotICAgICAgICByZXR1cm4gcGMtPmNh
bGxSZXR1cm5PZmZzZXQ7Ci0gICAgfQotI2VuZGlmCi0KICAgICBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlVHlwZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVUeXBl
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlVHlwZV9oCisjZGVmaW5lIENvZGVU
eXBlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBF
dmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07CisKK30KKworI2VuZGlmIC8vIENvZGVUeXBlX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhwcmVzc2lv
blJhbmdlSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4
cHJlc3Npb25SYW5nZUluZm9faAorI2RlZmluZSBFeHByZXNzaW9uUmFuZ2VJbmZvX2gKKworI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBF
eHByZXNzaW9uUmFuZ2VJbmZvIHsKKyAgICBlbnVtIHsKKyAgICAgICAgTWF4T2Zmc2V0ID0gKDEg
PDwgNykgLSAxLCAKKyAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAyNSkgLSAxCisgICAgfTsKKyAg
ICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OworICAgIHVpbnQzMl90IGRpdm90UG9p
bnQgOiAyNTsKKyAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7CisgICAgdWludDMyX3QgZW5k
T2Zmc2V0IDogNzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRXhwcmVz
c2lvblJhbmdlSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
bG9iYWxSZXNvbHZlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBHbG9iYWxSZXNvbHZlSW5mb19oCisjZGVmaW5lIEdsb2JhbFJlc29sdmVJbmZv
X2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3Ry
dWN0IEdsb2JhbFJlc29sdmVJbmZvIHsKKyAgICBHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKKyAgICAgICAgOiBvZmZzZXQoMCkKKyAgICAgICAgLCBieXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEdsb2JhbFJlc29sdmVJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0hhbmRsZXJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0hhbmRsZXJJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhh
bmRsZXJJbmZvX2gKKyNkZWZpbmUgSGFuZGxlckluZm9faAorCisjaW5jbHVkZSAiQ29kZUxvY2F0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgSGFuZGxlckluZm8geworICAgIHVpbnQzMl90IHN0YXJ0OworICAgIHVpbnQzMl90IGVu
ZDsKKyAgICB1aW50MzJfdCB0YXJnZXQ7CisgICAgdWludDMyX3Qgc2NvcGVEZXB0aDsKKyNpZiBF
TkFCTEUoSklUKQorICAgIENvZGVMb2NhdGlvbkxhYmVsIG5hdGl2ZUNvZGU7CisjZW5kaWYKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSGFuZGxlckluZm9faAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTGluZUluZm9faAorI2RlZmluZSBMaW5lSW5mb19oCisKKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgTGlu
ZUluZm8geworICAgIHVpbnQzMl90IGluc3RydWN0aW9uT2Zmc2V0OworICAgIGludDMyX3QgbGlu
ZU51bWJlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTGluZUluZm9f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJ
bmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXRob2RDYWxsTGlua0luZm8uaCIKKworI2lm
IEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIlJlcGF0Y2hC
dWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgTWV0aG9kQ2FsbExpbmtJbmZvOjpy
ZXNldChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5
cGUpCit7CisgICAgY2FjaGVkU3RydWN0dXJlLmNsZWFyVG9NYXhVbnNpZ25lZCgpOworICAgIGNh
Y2hlZFByb3RvdHlwZS5jbGVhcigpOworICAgIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5jbGVh
clRvTWF4VW5zaWduZWQoKTsKKyAgICBjYWNoZWRGdW5jdGlvbi5jbGVhcigpOworICAgIAorICAg
IEFTU0VSVF9VTlVTRUQoaml0VHlwZSwgaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgCisgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbFJldHVybkxvY2F0aW9uLCBjdGlf
b3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBNZXRob2RDYWxsTGlua0luZm9faAorI2RlZmluZSBNZXRob2RDYWxs
TGlua0luZm9faAorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiSklUQ29k
ZS5oIgorI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVQpCisKK2NsYXNzIFJlcGF0
Y2hCdWZmZXI7CisKK3N0cnVjdCBNZXRob2RDYWxsTGlua0luZm8geworICAgIE1ldGhvZENhbGxM
aW5rSW5mbygpCisgICAgICAgIDogc2VlbihmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgYm9v
bCBzZWVuT25jZSgpCisgICAgeworICAgICAgICByZXR1cm4gc2VlbjsKKyAgICB9CisKKyAgICB2
b2lkIHNldFNlZW4oKQorICAgIHsKKyAgICAgICAgc2VlbiA9IHRydWU7CisgICAgfQorICAgICAg
ICAKKyAgICB2b2lkIHJlc2V0KFJlcGF0Y2hCdWZmZXImLCBKSVRDb2RlOjpKSVRUeXBlKTsKKwor
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXg7CisgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0
dXJuTG9jYXRpb247CisgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gY2FjaGVkU3RydWN0
dXJlOworICAgIEpJVFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNhY2hlZFByb3RvdHlwZVN0cnVj
dHVyZTsKKyAgICAvLyBXZSdkIGxpa2UgdGhpcyB0byBhY3R1YWxseSBiZSBKU0Z1bmN0aW9uLCBi
dXQgSW50ZXJuYWxGdW5jdGlvbiBhbmQgSlNGdW5jdGlvbgorICAgIC8vIGRvbid0IGhhdmUgYSBj
b21tb24gcGFyZW50IGNsYXNzIGFuZCB3ZSBhbGxvdyBzcGVjaWFsaXNhdGlvbiBvbiBib3RoCisg
ICAgSklUV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjYWNoZWRGdW5jdGlvbjsKKyAgICBKSVRXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+IGNhY2hlZFByb3RvdHlwZTsKKyAgICBib29sIHNlZW47Cit9Owor
CitpbmxpbmUgdm9pZCogZ2V0TWV0aG9kQ2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpb24oTWV0aG9k
Q2FsbExpbmtJbmZvKiBtZXRob2RDYWxsTGlua0luZm8pCit7CisgICAgcmV0dXJuIG1ldGhvZENh
bGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7Cit9CisK
K2lubGluZSB1bnNpZ25lZCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4KE1ldGhv
ZENhbGxMaW5rSW5mbyogbWV0aG9kQ2FsbExpbmtJbmZvKQoreworICAgIHJldHVybiBtZXRob2RD
YWxsTGlua0luZm8tPmJ5dGVjb2RlSW5kZXg7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1ldGhvZENhbGxMaW5rSW5mb19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAkocmV2aXNpb24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw4ICsyMzEsMTgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIGhvdFBhdGhCZWdp
bjsKICAgICB9OwogCisgICAgaW5saW5lIHZvaWQqIGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJu
TG9jYXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0cnVjdHVyZVN0dWJJbmZvKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdW5zaWduZWQgZ2V0U3RydWN0dXJl
U3R1YkluZm9CeXRlY29kZUluZGV4KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5m
bykKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTdHViSW5mby0+Ynl0ZWNvZGVJbmRl
eDsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiAjZW5kaWYgLy8gU3RydWN0dXJlU3R1YkluZm9faAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121926</attachid>
            <date>2012-01-10 15:53:42 -0800</date>
            <delta_ts>2012-01-10 15:56:59 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>refactorcodeblock_patch_2.diff</filename>
            <type>text/plain</type>
            <size>48737</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTAxLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29kZUJsb2NrLmggZGVjbGFyZXMgdG9vIG1hbnkgdGhpbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBhbGwgbm9uLUNvZGVC
bG9jayB0eXBlIGRlY2xhcmF0aW9ucyBmcm9tIENvZGVCbG9jay5oLCBhbmQgcHV0IHRoZW0KKyAg
ICAgICAgaW50byBzZXBhcmF0ZSBoZWFkZXIgZmlsZXMuIEFsc28gcmVtb3ZlZCBhbGwgbm9uLUNv
ZGVCbG9jayBtZXRob2QgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGZyb20gQ29kZUJsb2NrLmNw
cCBhbmQgcHV0IHRoZW0gaW50byBjb3JyZXNwb25kaW5nIGNwcCBmaWxlcy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZm
ZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxM
aW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjp+Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2Vlbk9uY2Up
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFNlZW4pOgorICAgICAgICAoSlNDOjpn
ZXRDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbik6CisgICAgICAgIChKU0M6OmdldENhbGxMaW5r
SW5mb0J5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldDo6Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpnZXRDYWxsUmV0dXJuT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0V4cHJlc3Npb25S
YW5nZUluZm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvR2xvYmFsUmVzb2x2ZUluZm8u
aDogQWRkZWQuCisgICAgICAgIChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZl
SW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDogQWRkZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvTGluZUluZm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
Q2FsbExpbmtJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5m
bzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpNZXRob2RDYWxsTGlua0luZm8p
OgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86OnNlZW5PbmNlKToKKyAgICAgICAg
KEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpzZXRTZWVuKToKKyAgICAgICAgKEpTQzo6Z2V0TWV0
aG9kQ2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpnZXRNZXRob2RD
YWxsTGlua0luZm9CeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KToK
KwogMjAxMi0wMS0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhbmcgb3BlbmluZyBtb3ZpZSB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDQ2MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDkgKzM0LDExIEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL0pTV2Vh
a09iamVjdE1hcFJlZlByaXZhdGUuY3BwCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCisg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9KdW1wVGFibGUu
Y3BwCisgICAgYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL09w
Y29kZS5jcHAKICAgICBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcAogICAgIGJ5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiAxMDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMTAgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1i
bGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uaCBcCkBAIC04OCw5ICs5MiwxNSBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kZWxlckluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5l
SW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJ
bmZvLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
SW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSwxMSBAQCBTT1VSQ0VTICs9IFwK
ICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIFwK
KyAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2su
Y3BwIFwKICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAogICAgIGJ5dGVjb2RlL0p1
bXBUYWJsZS5jcHAgXAorICAgIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogICAg
IGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwIFwK
ICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAx
MDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ1
MCw2ICsxNDUwLDQ2IEBACiAJCQlOYW1lPSJieXRlY29kZSIKIAkJCT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxIYW5kbGVySW5mby5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDYWxsTGlu
a0luZm8uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxMaW5lSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8uaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZVR5cGUu
aCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
Ynl0ZWNvZGVcRXhwcmVzc2lvblJhbmdlSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8u
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxieXRlY29kZVxDYWxsTGlua0luZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcR2xvYmFsUmVzb2x2ZUluZm8uaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ29kZUJsb2NrLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDE2IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIw
MEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxp
bWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4
M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNBRDE0QkNGNjA0MDA4
ODVCNEYgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FDMTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4M0IwMTRCQ0Y3
MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5jcHAgKi87IH07CisJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uY3BwICovOyB9OworCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjI0
MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODA1LDYgKzgxNSwxNiBAQAogCQkwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBU
ZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUMxNEJDRjYwMjAwODg1QjRGIC8q
IExpbmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FsbExpbmtJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUYx
NEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyog
TWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
dGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8q
IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ1NCw2ICsyNDc0LDE2IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRl
Y29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYw
QjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmggKi8sCisJCQkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZv
LmggKi8sCisJCQkJMEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5jcHAgKi8sCisJCQkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oICovLAorCQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8u
Y3BwICovLAorCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAq
LywKKwkJCQkwRjBCODNBQzE0QkNGNjAyMDA4ODVCNEYgLyogTGluZUluZm8uaCAqLywKKwkJCQkw
RjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAorCQkJ
CTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAorCQkJCTBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQz
QUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyog
Q29kZU9yaWdpbi5oICovLApAQCAtMjk4Myw2ICszMDEzLDE0IEBACiAJCQkJODY3MDRCNDMxMkRC
OEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODNBRDE0QkNGNjA0MDA4ODVC
NEYgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0I1MTRCQ0Y4
NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM1MTgsNiArMzU1Niw4IEBACiAJCQkJ
ODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyog
Q2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNp
b24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1NF
TUJMRVIpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsTGlua0luZm8u
aCIKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5o
IgorCisjaWYgRU5BQkxFKEpJVCkKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIENhbGxMaW5rSW5m
bzo6dW5saW5rKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVwYXRjaEJ1ZmZlciYgcmVwYXRj
aEJ1ZmZlcikKK3sKKyAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CisgICAgCisgICAgaWYgKGlzREZH
KSB7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKENv
ZGVMb2NhdGlvbkNhbGwoY2FsbFJldHVybkxvY2F0aW9uKSwgY2FsbFR5cGUgPT0gQ29uc3RydWN0
ID8gREZHOjpvcGVyYXRpb25MaW5rQ29uc3RydWN0IDogREZHOjpvcGVyYXRpb25MaW5rQ2FsbCk7
CisjZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgIH0gZWxz
ZQorICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25OZWFyQ2FsbChjYWxs
UmV0dXJuTG9jYXRpb24pLCBjYWxsVHlwZSA9PSBDb25zdHJ1Y3QgPyBnbG9iYWxEYXRhLmppdFN0
dWJzLT5jdGlWaXJ0dWFsQ29uc3RydWN0TGluaygpIDogZ2xvYmFsRGF0YS5qaXRTdHVicy0+Y3Rp
VmlydHVhbENhbGxMaW5rKCkpOworICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7Cisg
ICAgY2FsbGVlLmNsZWFyKCk7CisKKyAgICAvLyBJdCB3aWxsIGJlIG9uIGEgbGlzdCBpZiB0aGUg
Y2FsbGVlIGhhcyBhIGNvZGUgYmxvY2suCisgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgIHJl
bW92ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENhbGxMaW5rSW5mb19oCisjZGVm
aW5lIENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRl
ICJKSVRXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAi
T3Bjb2RlLmgiCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworI2lmIEVOQUJMRShKSVQpCisKK2NsYXNzIFJlcGF0Y2hCdWZmZXI7CisKK3N0cnVj
dCBDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZv
PiB7CisgICAgZW51bSBDYWxsVHlwZSB7IE5vbmUsIENhbGwsIENhbGxWYXJhcmdzLCBDb25zdHJ1
Y3QgfTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgY2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bjb2RlSUQp
CisgICAgeworICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBvcGNvZGVJRCA9PSBv
cF9jYWxsX2V2YWwpCisgICAgICAgICAgICByZXR1cm4gQ2FsbDsKKyAgICAgICAgaWYgKG9wY29k
ZUlEID09IG9wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7CisgICAg
ICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MpOworICAgICAgICByZXR1cm4g
Q2FsbFZhcmFyZ3M7CisgICAgfQorICAgICAgICAKKyAgICBDYWxsTGlua0luZm8oKQorICAgICAg
ICA6IGhhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQorICAgICAgICAsIGlzREZHKGZhbHNlKQor
ICAgICAgICAsIGNhbGxUeXBlKE5vbmUpCisgICAgeworICAgIH0KKyAgICAgICAgCisgICAgfkNh
bGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IHJlbW92ZSgpOworICAgIH0KKworICAgIENvZGVMb2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2Nh
dGlvbjsgLy8gaXQncyBhIG5lYXIgY2FsbCBpbiB0aGUgb2xkIEpJVCwgb3IgYSBub3JtYWwgY2Fs
bCBpbiBERkcKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOworICAg
IENvZGVMb2NhdGlvbk5lYXJDYWxsIGhvdFBhdGhPdGhlcjsKKyAgICBKSVRXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2Vl
bkNhbGxlZTsKKyAgICBib29sIGhhc1NlZW5TaG91bGRSZXBhdGNoIDogMTsKKyAgICBib29sIGlz
REZHIDogMTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA6IDI7CisgICAgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleDsKKworICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICB2
b2lkIHVubGluayhKU0dsb2JhbERhdGEmLCBSZXBhdGNoQnVmZmVyJik7CisKKyAgICBib29sIHNl
ZW5PbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNTZWVuU2hvdWxkUmVwYXRjaDsKKyAg
ICB9CisKKyAgICB2b2lkIHNldFNlZW4oKQorICAgIHsKKyAgICAgICAgaGFzU2VlblNob3VsZFJl
cGF0Y2ggPSB0cnVlOworICAgIH0KK307CisKK2lubGluZSB2b2lkKiBnZXRDYWxsTGlua0luZm9S
ZXR1cm5Mb2NhdGlvbihDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKK3sKKyAgICByZXR1cm4g
Y2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKK30K
KworaW5saW5lIHVuc2lnbmVkIGdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoQ2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8pCit7CisgICAgcmV0dXJuIGNhbGxMaW5rSW5mby0+Ynl0ZWNvZGVJ
bmRleDsKK30KKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENhbGxMaW5rSW5mb19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXRfaAorI2RlZmluZSBDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldF9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBFTkFCTEUoSklUKQorLy8gVGhpcyBzdHJ1Y3R1cmUg
aXMgdXNlZCB0byBtYXAgZnJvbSBhIGNhbGwgcmV0dXJuIGxvY2F0aW9uCisvLyAoZ2l2ZW4gYXMg
YW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIEpJVCBjb2RlKSBiYWNrIHRvCisvLyB0aGUgYnl0
ZWNvZGUgaW5kZXggb2YgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGUgb3BlcmF0aW9uLgorLy8g
VGhpcyBpcyB0aGVuIHVzZWQgdG8gbG9vayB1cCB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyLgor
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgaW5saW5pbmcgYXdhcmUhIEN1cnJlbnRseSBp
dCBpc24ndAorLy8gYmVjYXVzZSB3ZSBuZXZlciBpbmxpbmUgY29kZSB0aGF0IGhhcyBleGNlcHRp
b24gaGFuZGxlcnMuCitzdHJ1Y3QgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQgewor
ICAgIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGNhbGxSZXR1cm5P
ZmZzZXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICA6IGNhbGxSZXR1cm5PZmZz
ZXQoY2FsbFJldHVybk9mZnNldCkKKyAgICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCkKKyAgICB7CisgICAgfQorCisgICAgdW5zaWduZWQgY2FsbFJldHVybk9mZnNldDsKKyAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKK307CisKK2lubGluZSB1bnNpZ25lZCBnZXRDYWxs
UmV0dXJuT2Zmc2V0KENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KiBwYykKK3sKKyAg
ICByZXR1cm4gcGMtPmNhbGxSZXR1cm5PZmZzZXQ7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldF9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAxMDQ2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1NiwzOCArMjA1Niw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpjcmVhdGVBY3RpdmF0aW9uKENhbGxGcmEKIH0KICAgICAKICNpZiBFTkFCTEUoSklUKQot
dm9pZCBDYWxsTGlua0luZm86OnVubGluayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFJlcGF0
Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIpCi17Ci0gICAgQVNTRVJUKGlzTGlua2VkKCkpOwotICAg
IAotICAgIGlmIChpc0RGRykgewotI2lmIEVOQUJMRShERkdfSklUKQotICAgICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25DYWxsKGNhbGxSZXR1cm5Mb2NhdGlvbiksIGNhbGxU
eXBlID09IENvbnN0cnVjdCA/IG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QgOiBvcGVyYXRpb25MaW5r
Q2FsbCk7Ci0jZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAg
IH0gZWxzZQotICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhDb2RlTG9jYXRpb25OZWFyQ2Fs
bChjYWxsUmV0dXJuTG9jYXRpb24pLCBjYWxsVHlwZSA9PSBDb25zdHJ1Y3QgPyBnbG9iYWxEYXRh
LmppdFN0dWJzLT5jdGlWaXJ0dWFsQ29uc3RydWN0TGluaygpIDogZ2xvYmFsRGF0YS5qaXRTdHVi
cy0+Y3RpVmlydHVhbENhbGxMaW5rKCkpOwotICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFs
c2U7Ci0gICAgY2FsbGVlLmNsZWFyKCk7Ci0KLSAgICAvLyBJdCB3aWxsIGJlIG9uIGEgbGlzdCBp
ZiB0aGUgY2FsbGVlIGhhcyBhIGNvZGUgYmxvY2suCi0gICAgaWYgKGlzT25MaXN0KCkpCi0gICAg
ICAgIHJlbW92ZSgpOwotfQotCi12b2lkIE1ldGhvZENhbGxMaW5rSW5mbzo6cmVzZXQoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQotewotICAg
IGNhY2hlZFN0cnVjdHVyZS5jbGVhclRvTWF4VW5zaWduZWQoKTsKLSAgICBjYWNoZWRQcm90b3R5
cGUuY2xlYXIoKTsKLSAgICBjYWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmUuY2xlYXJUb01heFVuc2ln
bmVkKCk7Ci0gICAgY2FjaGVkRnVuY3Rpb24uY2xlYXIoKTsKLSAgICAKLSAgICBBU1NFUlRfVU5V
U0VEKGppdFR5cGUsIGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwotICAgIAotICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxSZXR1cm5Mb2NhdGlvbiwgY3RpX29wX2dldF9ieV9p
ZF9tZXRob2RfY2hlY2spOwotfQotCiB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewog
ICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDQ2MzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDIyICszMCwz
MSBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVk
ZSAiQ2FsbExpbmtJbmZvLmgiCisjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiQ29kZVR5cGUuaCIK
ICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgogI2luY2x1ZGUgIkRGR0NvZGVCbG9ja3Mu
aCIKICNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR09TUkVudHJ5Lmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkV2YWxDb2RlQ2FjaGUuaCIKKyNp
bmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCisjaW5jbHVkZSAiR2xvYmFsUmVzb2x2ZUlu
Zm8uaCIKKyNpbmNsdWRlICJIYW5kbGVySW5mby5oIgorI2luY2x1ZGUgIk1ldGhvZENhbGxMaW5r
SW5mby5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZVN0
dWJJbmZvLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogI2luY2x1ZGUgIlVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKQEAgLTUzLDEyICs2Miw4IEBA
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExp
bmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLSNpZiBFTkFCTEUoSklUKQog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCi0jZW5kaWYKIAogLy8gUmVnaXN0ZXIgbnVt
YmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBh
Y2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgogLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYg
IE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMg
aW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KQEAgLTY4LDE5MSArNzMsMTMg
QEAgc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotICAgIGVudW0gSGFzU2VlblNob3VsZFJlcGF0Y2ggewotICAgICAgICBoYXNTZWVu
U2hvdWxkUmVwYXRjaAotICAgIH07Ci0KICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3Mg
REZHQ29kZUJsb2NrczsKIAotICAgIGVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29k
ZSwgRnVuY3Rpb25Db2RlIH07Ci0KICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVy
IC0gMTsgfQogCiAgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IG1pc3NpbmdUaGlzT2JqZWN0
TWFya2VyKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQogCi0g
ICAgc3RydWN0IEhhbmRsZXJJbmZvIHsKLSAgICAgICAgdWludDMyX3Qgc3RhcnQ7Ci0gICAgICAg
IHVpbnQzMl90IGVuZDsKLSAgICAgICAgdWludDMyX3QgdGFyZ2V0OwotICAgICAgICB1aW50MzJf
dCBzY29wZURlcHRoOwotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVs
IG5hdGl2ZUNvZGU7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgc3RydWN0IEV4cHJlc3Npb25SYW5n
ZUluZm8gewotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE1heE9mZnNldCA9ICgxIDw8IDcp
IC0gMSwgCi0gICAgICAgICAgICBNYXhEaXZvdCA9ICgxIDw8IDI1KSAtIDEKLSAgICAgICAgfTsK
LSAgICAgICAgdWludDMyX3QgaW5zdHJ1Y3Rpb25PZmZzZXQgOiAyNTsKLSAgICAgICAgdWludDMy
X3QgZGl2b3RQb2ludCA6IDI1OwotICAgICAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7Ci0g
ICAgICAgIHVpbnQzMl90IGVuZE9mZnNldCA6IDc7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBMaW5l
SW5mbyB7Ci0gICAgICAgIHVpbnQzMl90IGluc3RydWN0aW9uT2Zmc2V0OwotICAgICAgICBpbnQz
Ml90IGxpbmVOdW1iZXI7Ci0gICAgfTsKLQotI2lmIEVOQUJMRShKSVQpCi0gICAgc3RydWN0IENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+IHsK
LSAgICAgICAgZW51bSBDYWxsVHlwZSB7IE5vbmUsIENhbGwsIENhbGxWYXJhcmdzLCBDb25zdHJ1
Y3QgfTsKLSAgICAgICAgc3RhdGljIENhbGxUeXBlIGNhbGxUeXBlRm9yKE9wY29kZUlEIG9wY29k
ZUlEKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBv
cGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENhbGw7Ci0g
ICAgICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0KQotICAgICAgICAgICAgICAg
IHJldHVybiBDb25zdHJ1Y3Q7Ci0gICAgICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfY2Fs
bF92YXJhcmdzKTsKLSAgICAgICAgICAgIHJldHVybiBDYWxsVmFyYXJnczsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZvKCkKLSAgICAgICAgICAgIDogaGFzU2VlblNo
b3VsZFJlcGF0Y2goZmFsc2UpCi0gICAgICAgICAgICAsIGlzREZHKGZhbHNlKQotICAgICAgICAg
ICAgLCBjYWxsVHlwZShOb25lKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIH5DYWxsTGlua0luZm8oKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNPbkxpc3Qo
KSkKLSAgICAgICAgICAgICAgICByZW1vdmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsIGNhbGxSZXR1cm5Mb2NhdGlvbjsgLy8gaXQncyBhIG5lYXIgY2FsbCBpbiB0
aGUgb2xkIEpJVCwgb3IgYSBub3JtYWwgY2FsbCBpbiBERkcKLSAgICAgICAgQ29kZUxvY2F0aW9u
RGF0YUxhYmVsUHRyIGhvdFBhdGhCZWdpbjsKLSAgICAgICAgQ29kZUxvY2F0aW9uTmVhckNhbGwg
aG90UGF0aE90aGVyOwotICAgICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVl
OwotICAgICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxsZWU7Ci0gICAg
ICAgIGJvb2wgaGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOwotICAgICAgICBib29sIGlzREZHIDog
MTsKLSAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgOiAyOwotICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZUluZGV4OwotCi0gICAgICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0K
LSAgICAgICAgdm9pZCB1bmxpbmsoSlNHbG9iYWxEYXRhJiwgUmVwYXRjaEJ1ZmZlciYpOwotCi0g
ICAgICAgIGJvb2wgc2Vlbk9uY2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaGFz
U2VlblNob3VsZFJlcGF0Y2g7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNldFNlZW4oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaCA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9OwotCi0gICAgc3RydWN0IE1ldGhvZENhbGxMaW5rSW5mbyB7Ci0gICAgICAg
IE1ldGhvZENhbGxMaW5rSW5mbygpCi0gICAgICAgICAgICA6IHNlZW4oZmFsc2UpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgc2Vlbk9uY2UoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gc2VlbjsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0U2Vlbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNlZW4gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICB2b2lkIHJlc2V0KFJlcGF0Y2hCdWZmZXImLCBKSVRDb2RlOjpKSVRUeXBlKTsK
LQotICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4OwotICAgICAgICBDb2RlTG9jYXRpb25D
YWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKLSAgICAgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gY2FjaGVkU3RydWN0dXJlOwotICAgICAgICBKSVRXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBj
YWNoZWRQcm90b3R5cGVTdHJ1Y3R1cmU7Ci0gICAgICAgIC8vIFdlJ2QgbGlrZSB0aGlzIHRvIGFj
dHVhbGx5IGJlIEpTRnVuY3Rpb24sIGJ1dCBJbnRlcm5hbEZ1bmN0aW9uIGFuZCBKU0Z1bmN0aW9u
Ci0gICAgICAgIC8vIGRvbid0IGhhdmUgYSBjb21tb24gcGFyZW50IGNsYXNzIGFuZCB3ZSBhbGxv
dyBzcGVjaWFsaXNhdGlvbiBvbiBib3RoCi0gICAgICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVj
dD4gY2FjaGVkRnVuY3Rpb247Ci0gICAgICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2Fj
aGVkUHJvdG90eXBlOwotICAgICAgICBib29sIHNlZW47Ci0gICAgfTsKLQotICAgIHN0cnVjdCBH
bG9iYWxSZXNvbHZlSW5mbyB7Ci0gICAgICAgIEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgOiBvZmZzZXQoMCkKLSAgICAgICAgICAgICwgYnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKLSAgICAgICAgdW5zaWduZWQg
b2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKLSAgICB9OwotCi0gICAg
Ly8gVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBtYXAgZnJvbSBhIGNhbGwgcmV0dXJuIGxvY2F0
aW9uCi0gICAgLy8gKGdpdmVuIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBKSVQgY29k
ZSkgYmFjayB0bwotICAgIC8vIHRoZSBieXRlY29kZSBpbmRleCBvZiB0aGUgY29ycmVzcG9uZGlu
ZyBieXRlY29kZSBvcGVyYXRpb24uCi0gICAgLy8gVGhpcyBpcyB0aGVuIHVzZWQgdG8gbG9vayB1
cCB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGVyLgotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBtYWRlIGlubGluaW5nIGF3YXJlISBDdXJyZW50bHkgaXQgaXNuJ3QKLSAgICAvLyBiZWNhdXNl
IHdlIG5ldmVyIGlubGluZSBjb2RlIHRoYXQgaGFzIGV4Y2VwdGlvbiBoYW5kbGVycy4KLSAgICBz
dHJ1Y3QgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQgewotICAgICAgICBDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCh1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0LCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIDogY2FsbFJldHVybk9mZnNldChjYWxs
UmV0dXJuT2Zmc2V0KQotICAgICAgICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgY2FsbFJldHVybk9m
ZnNldDsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgfTsKLQotICAgIC8v
IHZhbHVlQXRQb3NpdGlvbiBoZWxwZXJzIGZvciB0aGUgYmluYXJ5U2VhcmNoIGFsZ29yaXRobS4K
LQotICAgIGlubGluZSB2b2lkKiBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0aW9uKFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5mbykKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdHJ1Y3R1cmVTdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNz
KCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHVuc2lnbmVkIGdldFN0cnVjdHVyZVN0dWJJbmZvQnl0
ZWNvZGVJbmRleChTdHJ1Y3R1cmVTdHViSW5mbyogc3RydWN0dXJlU3R1YkluZm8pCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmJ5dGVjb2RlSW5kZXg7Ci0gICAgfQot
Ci0gICAgaW5saW5lIHZvaWQqIGdldENhbGxMaW5rSW5mb1JldHVybkxvY2F0aW9uKENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNhbGxMaW5rSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotCi0gICAgaW5s
aW5lIHVuc2lnbmVkIGdldENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8pCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5ieXRlY29k
ZUluZGV4OwotICAgIH0KLQotICAgIGlubGluZSB2b2lkKiBnZXRNZXRob2RDYWxsTGlua0luZm9S
ZXR1cm5Mb2NhdGlvbihNZXRob2RDYWxsTGlua0luZm8qIG1ldGhvZENhbGxMaW5rSW5mbykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtZXRob2RDYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlv
bi5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgIH0KLQotICAgIGlubGluZSB1bnNpZ25lZCBnZXRN
ZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4KE1ldGhvZENhbGxMaW5rSW5mbyogbWV0aG9k
Q2FsbExpbmtJbmZvKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+
Ynl0ZWNvZGVJbmRleDsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdW5zaWduZWQgZ2V0Q2FsbFJldHVy
bk9mZnNldChDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCogcGMpCi0gICAgewotICAg
ICAgICByZXR1cm4gcGMtPmNhbGxSZXR1cm5PZmZzZXQ7Ci0gICAgfQotI2VuZGlmCi0KICAgICBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlVHlwZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVUeXBlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlVHlw
ZV9oCisjZGVmaW5lIENvZGVUeXBlX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVR5
cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVuY3Rpb25Db2RlIH07CisKK30KKworI2VuZGlm
IC8vIENvZGVUeXBlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
cHJlc3Npb25SYW5nZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhwcmVzc2lvblJhbmdlSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEV4cHJlc3Npb25SYW5nZUluZm9faAorI2RlZmluZSBFeHByZXNzaW9u
UmFuZ2VJbmZvX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3N0cnVjdCBFeHByZXNzaW9uUmFuZ2VJbmZvIHsKKyAgICBlbnVtIHsKKyAgICAg
ICAgTWF4T2Zmc2V0ID0gKDEgPDwgNykgLSAxLCAKKyAgICAgICAgTWF4RGl2b3QgPSAoMSA8PCAy
NSkgLSAxCisgICAgfTsKKyAgICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OworICAg
IHVpbnQzMl90IGRpdm90UG9pbnQgOiAyNTsKKyAgICB1aW50MzJfdCBzdGFydE9mZnNldCA6IDc7
CisgICAgdWludDMyX3QgZW5kT2Zmc2V0IDogNzsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRXhwcmVzc2lvblJhbmdlSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHbG9iYWxSZXNvbHZlSW5mb19oCisjZGVmaW5l
IEdsb2JhbFJlc29sdmVJbmZvX2gKKworI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IEdsb2JhbFJlc29sdmVJbmZvIHsKKyAgICBHbG9iYWxSZXNv
bHZlSW5mbyh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgOiBvZmZzZXQoMCkKKyAg
ICAgICAgLCBieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgfQorICAg
IAorICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZTsKKyAgICB1bnNpZ25lZCBv
ZmZzZXQ7CisgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEdsb2JhbFJlc29sdmVJbmZvX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEhhbmRsZXJJbmZvX2gKKyNkZWZpbmUgSGFuZGxlckluZm9faAorCisj
aW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSGFuZGxlckluZm8geworICAgIHVpbnQzMl90IHN0YXJ0
OworICAgIHVpbnQzMl90IGVuZDsKKyAgICB1aW50MzJfdCB0YXJnZXQ7CisgICAgdWludDMyX3Qg
c2NvcGVEZXB0aDsKKyNpZiBFTkFCTEUoSklUKQorICAgIENvZGVMb2NhdGlvbkxhYmVsIG5hdGl2
ZUNvZGU7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSGFu
ZGxlckluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUlu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUlu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5l
SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTGluZUluZm9faAorI2RlZmluZSBM
aW5lSW5mb19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitzdHJ1Y3QgTGluZUluZm8geworICAgIHVpbnQzMl90IGluc3RydWN0aW9uT2Zmc2V0
OworICAgIGludDMyX3QgbGluZU51bWJlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gTGluZUluZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZXRob2RDYWxs
TGlua0luZm8uaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVRTdHVicy5oIgor
I2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgTWV0
aG9kQ2FsbExpbmtJbmZvOjpyZXNldChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBKSVRD
b2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgY2FjaGVkU3RydWN0dXJlLmNsZWFyVG9NYXhV
bnNpZ25lZCgpOworICAgIGNhY2hlZFByb3RvdHlwZS5jbGVhcigpOworICAgIGNhY2hlZFByb3Rv
dHlwZVN0cnVjdHVyZS5jbGVhclRvTWF4VW5zaWduZWQoKTsKKyAgICBjYWNoZWRGdW5jdGlvbi5j
bGVhcigpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoaml0VHlwZSwgaml0VHlwZSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbFJl
dHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5X2lkX21ldGhvZF9jaGVjayk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJ
bmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZXRob2RDYWxsTGlua0luZm9faAor
I2RlZmluZSBNZXRob2RDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgi
CisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShK
SVQpCisKK2NsYXNzIFJlcGF0Y2hCdWZmZXI7CisKK3N0cnVjdCBNZXRob2RDYWxsTGlua0luZm8g
eworICAgIE1ldGhvZENhbGxMaW5rSW5mbygpCisgICAgICAgIDogc2VlbihmYWxzZSkKKyAgICB7
CisgICAgfQorCisgICAgYm9vbCBzZWVuT25jZSgpCisgICAgeworICAgICAgICByZXR1cm4gc2Vl
bjsKKyAgICB9CisKKyAgICB2b2lkIHNldFNlZW4oKQorICAgIHsKKyAgICAgICAgc2VlbiA9IHRy
dWU7CisgICAgfQorICAgICAgICAKKyAgICB2b2lkIHJlc2V0KFJlcGF0Y2hCdWZmZXImLCBKSVRD
b2RlOjpKSVRUeXBlKTsKKworICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXg7CisgICAgQ29kZUxv
Y2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb247CisgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gY2FjaGVkU3RydWN0dXJlOworICAgIEpJVFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IGNh
Y2hlZFByb3RvdHlwZVN0cnVjdHVyZTsKKyAgICAvLyBXZSdkIGxpa2UgdGhpcyB0byBhY3R1YWxs
eSBiZSBKU0Z1bmN0aW9uLCBidXQgSW50ZXJuYWxGdW5jdGlvbiBhbmQgSlNGdW5jdGlvbgorICAg
IC8vIGRvbid0IGhhdmUgYSBjb21tb24gcGFyZW50IGNsYXNzIGFuZCB3ZSBhbGxvdyBzcGVjaWFs
aXNhdGlvbiBvbiBib3RoCisgICAgSklUV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjYWNoZWRGdW5j
dGlvbjsKKyAgICBKSVRXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGNhY2hlZFByb3RvdHlwZTsKKyAg
ICBib29sIHNlZW47Cit9OworCitpbmxpbmUgdm9pZCogZ2V0TWV0aG9kQ2FsbExpbmtJbmZvUmV0
dXJuTG9jYXRpb24oTWV0aG9kQ2FsbExpbmtJbmZvKiBtZXRob2RDYWxsTGlua0luZm8pCit7Cisg
ICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFi
bGVBZGRyZXNzKCk7Cit9CisKK2lubGluZSB1bnNpZ25lZCBnZXRNZXRob2RDYWxsTGlua0luZm9C
eXRlY29kZUluZGV4KE1ldGhvZENhbGxMaW5rSW5mbyogbWV0aG9kQ2FsbExpbmtJbmZvKQorewor
ICAgIHJldHVybiBtZXRob2RDYWxsTGlua0luZm8tPmJ5dGVjb2RlSW5kZXg7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1ldGhv
ZENhbGxMaW5rSW5mb19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMTA0NjEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzMSw4ICsyMzEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvZGVMb2NhdGlv
bkxhYmVsIGhvdFBhdGhCZWdpbjsKICAgICB9OwogCisgICAgaW5saW5lIHZvaWQqIGdldFN0cnVj
dHVyZVN0dWJJbmZvUmV0dXJuTG9jYXRpb24oU3RydWN0dXJlU3R1YkluZm8qIHN0cnVjdHVyZVN0
dWJJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jYWxsUmV0
dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdW5z
aWduZWQgZ2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHJ1Y3R1cmVTdHViSW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTdHVi
SW5mby0+Ynl0ZWNvZGVJbmRleDsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5k
aWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAjZW5kaWYgLy8gU3RydWN0dXJlU3R1YkluZm9f
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121928</attachid>
            <date>2012-01-10 15:56:59 -0800</date>
            <delta_ts>2012-01-10 15:58:35 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>refactorcodeblock_patch_3.diff</filename>
            <type>text/plain</type>
            <size>48739</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTAxLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29kZUJsb2NrLmggZGVjbGFyZXMgdG9vIG1hbnkgdGhpbmdzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlZCBhbGwgbm9uLUNvZGVC
bG9jayB0eXBlIGRlY2xhcmF0aW9ucyBmcm9tIENvZGVCbG9jay5oLCBhbmQgcHV0IHRoZW0KKyAg
ICAgICAgaW50byBzZXBhcmF0ZSBoZWFkZXIgZmlsZXMuIEFsc28gcmVtb3ZlZCBhbGwgbm9uLUNv
ZGVCbG9jayBtZXRob2QgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGZyb20gQ29kZUJsb2NrLmNw
cCBhbmQgcHV0IHRoZW0gaW50byBjb3JyZXNwb25kaW5nIGNwcCBmaWxlcy4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNzZW1ibGVyL1JlcGF0Y2hCdWZm
ZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxM
aW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q2FsbExpbmtJbmZvOjpjYWxsVHlwZUZv
cik6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6Q2FsbExpbmtJbmZvKToKKyAgICAgICAg
KEpTQzo6Q2FsbExpbmtJbmZvOjp+Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rSW5mbzo6c2Vlbk9uY2Up
OgorICAgICAgICAoSlNDOjpDYWxsTGlua0luZm86OnNldFNlZW4pOgorICAgICAgICAoSlNDOjpn
ZXRDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbik6CisgICAgICAgIChKU0M6OmdldENhbGxMaW5r
SW5mb0J5dGVjb2RlSW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldDo6Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpnZXRDYWxsUmV0dXJuT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVUeXBlLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0V4cHJlc3Npb25S
YW5nZUluZm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvR2xvYmFsUmVzb2x2ZUluZm8u
aDogQWRkZWQuCisgICAgICAgIChKU0M6Okdsb2JhbFJlc29sdmVJbmZvOjpHbG9iYWxSZXNvbHZl
SW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDogQWRkZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvTGluZUluZm8uaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9k
Q2FsbExpbmtJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rSW5m
bzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpNZXRob2RDYWxsTGlua0luZm8p
OgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua0luZm86OnNlZW5PbmNlKToKKyAgICAgICAg
KEpTQzo6TWV0aG9kQ2FsbExpbmtJbmZvOjpzZXRTZWVuKToKKyAgICAgICAgKEpTQzo6Z2V0TWV0
aG9kQ2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpnZXRNZXRob2RD
YWxsTGlua0luZm9CeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oOgorICAgICAgICAoSlNDOjpnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6Z2V0U3RydWN0dXJlU3R1YkluZm9CeXRlY29kZUluZGV4KToK
KwogMjAxMi0wMS0xMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhbmcgb3BlbmluZyBtb3ZpZSB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDQ2MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDkgKzM0LDExIEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL0pTV2Vh
a09iamVjdE1hcFJlZlByaXZhdGUuY3BwCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNwcAogCisg
ICAgYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHAK
ICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9KdW1wVGFibGUu
Y3BwCisgICAgYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcAogICAgIGJ5dGVjb2RlL09w
Y29kZS5jcHAKICAgICBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcAogICAgIGJ5dGVjb2RlL1Nh
bXBsaW5nVG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiAxMDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsMTAgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBh
dGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1i
bGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZVR5cGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVPcmlnaW4uaCBcCkBAIC04OCw5ICs5MiwxNSBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2Zp
bGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4cHJlc3Npb25SYW5nZUluZm8uaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kZWxlckluZm8uaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5l
SW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJ
bmZvLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5r
SW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNDYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00OSw5ICs0OSwxMSBAQCBTT1VSQ0VTICs9IFwK
ICAgICBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIFwK
KyAgICBieXRlY29kZS9DYWxsTGlua0luZm8uY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2su
Y3BwIFwKICAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAogICAgIGJ5dGVjb2RlL0p1
bXBUYWJsZS5jcHAgXAorICAgIGJ5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogICAg
IGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwIFwK
ICAgICBieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAx
MDQ2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ1
MCw2ICsxNDUwLDQ2IEBACiAJCQlOYW1lPSJieXRlY29kZSIKIAkJCT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxIYW5kbGVySW5mby5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxDYWxsTGlu
a0luZm8uY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxieXRlY29kZVxMaW5lSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8uaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0
ZWNvZGVcQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcQ29kZVR5cGUu
aCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
Ynl0ZWNvZGVcRXhwcmVzc2lvblJhbmdlSW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxieXRlY29kZVxNZXRob2RDYWxsTGlua0luZm8u
Y3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxieXRlY29kZVxDYWxsTGlua0luZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcR2xvYmFsUmVzb2x2ZUluZm8uaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNv
ZGVcQ29kZUJsb2NrLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDE2IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIw
MEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxp
bWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4
M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNBRDE0QkNGNjA0MDA4
ODVCNEYgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FDMTRCQ0Y2MDIwMDg4NUI0RiAvKiBMaW5lSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4M0IwMTRCQ0Y3
MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5r
SW5mby5jcHAgKi87IH07CisJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4NUI0RiAvKiBDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uY3BwICovOyB9OworCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0
VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjI0
MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODA1LDYgKzgxNSwxNiBAQAogCQkwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBU
ZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUMxNEJDRjYwMjAwODg1QjRGIC8q
IExpbmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpbmVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FsbExpbmtJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzQUYx
NEJDRjcxNDAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyog
TWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
dGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8q
IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjQ1NCw2ICsyNDc0LDE2IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRl
Y29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYw
QjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmggKi8sCisJCQkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZv
LmggKi8sCisJCQkJMEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5jcHAgKi8sCisJCQkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oICovLAorCQkJCTBGMEI4M0FFMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8u
Y3BwICovLAorCQkJCTBGMEI4M0FGMTRCQ0Y3MTQwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uaCAq
LywKKwkJCQkwRjBCODNBQzE0QkNGNjAyMDA4ODVCNEYgLyogTGluZUluZm8uaCAqLywKKwkJCQkw
RjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovLAorCQkJ
CTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovLAorCQkJCTBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovLAogCQkJCTk2OUEwNzkwMEVEMUQz
QUUwMEYxRjY4MSAvKiBDb2RlQmxvY2suY3BwICovLAogCQkJCTk2OUEwNzkxMEVEMUQzQUUwMEYx
RjY4MSAvKiBDb2RlQmxvY2suaCAqLywKIAkJCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyog
Q29kZU9yaWdpbi5oICovLApAQCAtMjk4Myw2ICszMDEzLDE0IEBACiAJCQkJODY3MDRCNDMxMkRC
OEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODNBRDE0QkNGNjA0MDA4ODVC
NEYgLyogTGluZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0IxMTRCQ0Y3MTgwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4M0I1MTRCQ0Y4
NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM1MTgsNiArMzU1Niw4IEBACiAJCQkJ
ODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyog
Q2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkocmV2aXNp
b24gMTA0NjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1NF
TUJMRVIpCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsTGlua0luZm8u
aCIKKworI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJSZXBhdGNoQnVmZmVy
LmgiCisKKyNpZiBFTkFCTEUoSklUKQorbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQ2FsbExpbmtJ
bmZvOjp1bmxpbmsoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZXBhdGNoQnVmZmVyJiByZXBh
dGNoQnVmZmVyKQoreworICAgIEFTU0VSVChpc0xpbmtlZCgpKTsKKyAgICAKKyAgICBpZiAoaXNE
RkcpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmso
Q29kZUxvY2F0aW9uQ2FsbChjYWxsUmV0dXJuTG9jYXRpb24pLCBjYWxsVHlwZSA9PSBDb25zdHJ1
Y3QgPyBERkc6Om9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QgOiBERkc6Om9wZXJhdGlvbkxpbmtDYWxs
KTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCisgICAgfSBl
bHNlCisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKENvZGVMb2NhdGlvbk5lYXJDYWxsKGNh
bGxSZXR1cm5Mb2NhdGlvbiksIGNhbGxUeXBlID09IENvbnN0cnVjdCA/IGdsb2JhbERhdGEuaml0
U3R1YnMtPmN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rKCkgOiBnbG9iYWxEYXRhLmppdFN0dWJzLT5j
dGlWaXJ0dWFsQ2FsbExpbmsoKSk7CisgICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSBmYWxzZTsK
KyAgICBjYWxsZWUuY2xlYXIoKTsKKworICAgIC8vIEl0IHdpbGwgYmUgb24gYSBsaXN0IGlmIHRo
ZSBjYWxsZWUgaGFzIGEgY29kZSBibG9jay4KKyAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAg
cmVtb3ZlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKKyNk
ZWZpbmUgQ2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1
ZGUgIkpJVFdyaXRlQmFycmllci5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCisjaWYgRU5BQkxFKEpJVCkKKworY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKKworc3Ry
dWN0IENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+IHsKKyAgICBlbnVtIENhbGxUeXBlIHsgTm9uZSwgQ2FsbCwgQ2FsbFZhcmFyZ3MsIENvbnN0
cnVjdCB9OworICAgIHN0YXRpYyBDYWxsVHlwZSBjYWxsVHlwZUZvcihPcGNvZGVJRCBvcGNvZGVJ
RCkKKyAgICB7CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8IG9wY29kZUlEID09
IG9wX2NhbGxfZXZhbCkKKyAgICAgICAgICAgIHJldHVybiBDYWxsOworICAgICAgICBpZiAob3Bj
b2RlSUQgPT0gb3BfY29uc3RydWN0KQorICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdDsKKyAg
ICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyk7CisgICAgICAgIHJldHVy
biBDYWxsVmFyYXJnczsKKyAgICB9CisgICAgICAgIAorICAgIENhbGxMaW5rSW5mbygpCisgICAg
ICAgIDogaGFzU2VlblNob3VsZFJlcGF0Y2goZmFsc2UpCisgICAgICAgICwgaXNERkcoZmFsc2Up
CisgICAgICAgICwgY2FsbFR5cGUoTm9uZSkKKyAgICB7CisgICAgfQorICAgICAgICAKKyAgICB+
Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAg
ICAgcmVtb3ZlKCk7CisgICAgfQorCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgY2FsbFJldHVybkxv
Y2F0aW9uOyAvLyBpdCdzIGEgbmVhciBjYWxsIGluIHRoZSBvbGQgSklULCBvciBhIG5vcm1hbCBj
YWxsIGluIERGRworICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBob3RQYXRoQmVnaW47Cisg
ICAgQ29kZUxvY2F0aW9uTmVhckNhbGwgaG90UGF0aE90aGVyOworICAgIEpJVFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RT
ZWVuQ2FsbGVlOworICAgIGJvb2wgaGFzU2VlblNob3VsZFJlcGF0Y2ggOiAxOworICAgIGJvb2wg
aXNERkcgOiAxOworICAgIENhbGxUeXBlIGNhbGxUeXBlIDogMjsKKyAgICB1bnNpZ25lZCBieXRl
Y29kZUluZGV4OworCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAg
IHZvaWQgdW5saW5rKEpTR2xvYmFsRGF0YSYsIFJlcGF0Y2hCdWZmZXImKTsKKworICAgIGJvb2wg
c2Vlbk9uY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc1NlZW5TaG91bGRSZXBhdGNoOwor
ICAgIH0KKworICAgIHZvaWQgc2V0U2VlbigpCisgICAgeworICAgICAgICBoYXNTZWVuU2hvdWxk
UmVwYXRjaCA9IHRydWU7CisgICAgfQorfTsKKworaW5saW5lIHZvaWQqIGdldENhbGxMaW5rSW5m
b1JldHVybkxvY2F0aW9uKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKQoreworICAgIHJldHVy
biBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOwor
fQorCitpbmxpbmUgdW5zaWduZWQgZ2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleChDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbykKK3sKKyAgICByZXR1cm4gY2FsbExpbmtJbmZvLT5ieXRlY29k
ZUluZGV4OworfQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gQ2FsbExpbmtJbmZvX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldF9oCisjZGVmaW5lIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShKSVQpCisvLyBUaGlzIHN0cnVjdHVy
ZSBpcyB1c2VkIHRvIG1hcCBmcm9tIGEgY2FsbCByZXR1cm4gbG9jYXRpb24KKy8vIChnaXZlbiBh
cyBhbiBvZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgSklUIGNvZGUpIGJhY2sgdG8KKy8vIHRoZSBi
eXRlY29kZSBpbmRleCBvZiB0aGUgY29ycmVzcG9uZGluZyBieXRlY29kZSBvcGVyYXRpb24uCisv
LyBUaGlzIGlzIHRoZW4gdXNlZCB0byBsb29rIHVwIHRoZSBjb3JyZXNwb25kaW5nIGhhbmRsZXIu
CisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSBpbmxpbmluZyBhd2FyZSEgQ3VycmVudGx5
IGl0IGlzbid0CisvLyBiZWNhdXNlIHdlIG5ldmVyIGlubGluZSBjb2RlIHRoYXQgaGFzIGV4Y2Vw
dGlvbiBoYW5kbGVycy4KK3N0cnVjdCBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCB7
CisgICAgQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgY2FsbFJldHVy
bk9mZnNldCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIDogY2FsbFJldHVybk9m
ZnNldChjYWxsUmV0dXJuT2Zmc2V0KQorICAgICAgICAsIGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjYWxsUmV0dXJuT2Zmc2V0Owor
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OworfTsKKworaW5saW5lIHVuc2lnbmVkIGdldENh
bGxSZXR1cm5PZmZzZXQoQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQqIHBjKQorewor
ICAgIHJldHVybiBwYy0+Y2FsbFJldHVybk9mZnNldDsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0X2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEwNDYzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU2LDM4ICsyMDU2LDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmNyZWF0ZUFjdGl2YXRpb24oQ2FsbEZyYQogfQogICAgIAogI2lmIEVOQUJMRShKSVQp
Ci12b2lkIENhbGxMaW5rSW5mbzo6dW5saW5rKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVw
YXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKLXsKLSAgICBBU1NFUlQoaXNMaW5rZWQoKSk7Ci0g
ICAgCi0gICAgaWYgKGlzREZHKSB7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rKENvZGVMb2NhdGlvbkNhbGwoY2FsbFJldHVybkxvY2F0aW9uKSwgY2Fs
bFR5cGUgPT0gQ29uc3RydWN0ID8gb3BlcmF0aW9uTGlua0NvbnN0cnVjdCA6IG9wZXJhdGlvbkxp
bmtDYWxsKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0g
ICAgfSBlbHNlCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKENvZGVMb2NhdGlvbk5lYXJD
YWxsKGNhbGxSZXR1cm5Mb2NhdGlvbiksIGNhbGxUeXBlID09IENvbnN0cnVjdCA/IGdsb2JhbERh
dGEuaml0U3R1YnMtPmN0aVZpcnR1YWxDb25zdHJ1Y3RMaW5rKCkgOiBnbG9iYWxEYXRhLmppdFN0
dWJzLT5jdGlWaXJ0dWFsQ2FsbExpbmsoKSk7Ci0gICAgaGFzU2VlblNob3VsZFJlcGF0Y2ggPSBm
YWxzZTsKLSAgICBjYWxsZWUuY2xlYXIoKTsKLQotICAgIC8vIEl0IHdpbGwgYmUgb24gYSBsaXN0
IGlmIHRoZSBjYWxsZWUgaGFzIGEgY29kZSBibG9jay4KLSAgICBpZiAoaXNPbkxpc3QoKSkKLSAg
ICAgICAgcmVtb3ZlKCk7Ci19Ci0KLXZvaWQgTWV0aG9kQ2FsbExpbmtJbmZvOjpyZXNldChSZXBh
dGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCi17Ci0g
ICAgY2FjaGVkU3RydWN0dXJlLmNsZWFyVG9NYXhVbnNpZ25lZCgpOwotICAgIGNhY2hlZFByb3Rv
dHlwZS5jbGVhcigpOwotICAgIGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZS5jbGVhclRvTWF4VW5z
aWduZWQoKTsKLSAgICBjYWNoZWRGdW5jdGlvbi5jbGVhcigpOwotICAgIAotICAgIEFTU0VSVF9V
TlVTRUQoaml0VHlwZSwgaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgCi0g
ICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoY2FsbFJldHVybkxvY2F0aW9uLCBjdGlfb3BfZ2V0X2J5
X2lkX21ldGhvZF9jaGVjayk7Ci19Ci0KIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7
CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNDYzMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjIgKzMw
LDMxIEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNs
dWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJDb2RlVHlwZS5o
IgogI2luY2x1ZGUgIkNvbXBhY3RKSVRDb2RlTWFwLmgiCiAjaW5jbHVkZSAiREZHQ29kZUJsb2Nr
cy5oIgogI2luY2x1ZGUgIkRGR0V4aXRQcm9maWxlLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnku
aCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiRXZhbENvZGVDYWNoZS5oIgor
I2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKKyNpbmNsdWRlICJHbG9iYWxSZXNvbHZl
SW5mby5oIgorI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCisjaW5jbHVkZSAiTWV0aG9kQ2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVk
ZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25U
cmFja2VyLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
U3R1YkluZm8uaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5jbHVkZSAiVW5jb25kaXRpb25h
bEZpbmFsaXplci5oIgogI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgpAQCAtNTMsMTIgKzYyLDgg
QEAKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotI2lmIEVOQUJMRShKSVQp
CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKLSNlbmRpZgogCiAvLyBSZWdpc3RlciBu
dW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5n
IGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CiAvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZG
RiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmll
cyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgpAQCAtNjgsMTkxICs3Mywx
MyBAQCBzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0gICAgZW51bSBIYXNTZWVuU2hvdWxkUmVwYXRjaCB7Ci0gICAgICAgIGhhc1Nl
ZW5TaG91bGRSZXBhdGNoCi0gICAgfTsKLQogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFz
cyBERkdDb2RlQmxvY2tzOwogCi0gICAgZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxD
b2RlLCBGdW5jdGlvbkNvZGUgfTsKLQogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0
ZXIgLSAxOyB9CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBpbnQgbWlzc2luZ1RoaXNPYmpl
Y3RNYXJrZXIoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAK
LSAgICBzdHJ1Y3QgSGFuZGxlckluZm8gewotICAgICAgICB1aW50MzJfdCBzdGFydDsKLSAgICAg
ICAgdWludDMyX3QgZW5kOwotICAgICAgICB1aW50MzJfdCB0YXJnZXQ7Ci0gICAgICAgIHVpbnQz
Ml90IHNjb3BlRGVwdGg7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgbmF0aXZlQ29kZTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICBzdHJ1Y3QgRXhwcmVzc2lvblJh
bmdlSW5mbyB7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTWF4T2Zmc2V0ID0gKDEgPDwg
NykgLSAxLCAKLSAgICAgICAgICAgIE1heERpdm90ID0gKDEgPDwgMjUpIC0gMQotICAgICAgICB9
OwotICAgICAgICB1aW50MzJfdCBpbnN0cnVjdGlvbk9mZnNldCA6IDI1OwotICAgICAgICB1aW50
MzJfdCBkaXZvdFBvaW50IDogMjU7Ci0gICAgICAgIHVpbnQzMl90IHN0YXJ0T2Zmc2V0IDogNzsK
LSAgICAgICAgdWludDMyX3QgZW5kT2Zmc2V0IDogNzsKLSAgICB9OwotCi0gICAgc3RydWN0IExp
bmVJbmZvIHsKLSAgICAgICAgdWludDMyX3QgaW5zdHJ1Y3Rpb25PZmZzZXQ7Ci0gICAgICAgIGlu
dDMyX3QgbGluZU51bWJlcjsKLSAgICB9OwotCi0jaWYgRU5BQkxFKEpJVCkKLSAgICBzdHJ1Y3Qg
Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4g
ewotICAgICAgICBlbnVtIENhbGxUeXBlIHsgTm9uZSwgQ2FsbCwgQ2FsbFZhcmFyZ3MsIENvbnN0
cnVjdCB9OwotICAgICAgICBzdGF0aWMgQ2FsbFR5cGUgY2FsbFR5cGVGb3IoT3Bjb2RlSUQgb3Bj
b2RlSUQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsIHx8
IG9wY29kZUlEID09IG9wX2NhbGxfZXZhbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbDsK
LSAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jb25zdHJ1Y3QpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIENvbnN0cnVjdDsKLSAgICAgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9j
YWxsX3ZhcmFyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBDYWxsTGlua0luZm8oKQotICAgICAgICAgICAgOiBoYXNTZWVu
U2hvdWxkUmVwYXRjaChmYWxzZSkKLSAgICAgICAgICAgICwgaXNERkcoZmFsc2UpCi0gICAgICAg
ICAgICAsIGNhbGxUeXBlKE5vbmUpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgfkNhbGxMaW5rSW5mbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc09uTGlz
dCgpKQotICAgICAgICAgICAgICAgIHJlbW92ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwgY2FsbFJldHVybkxvY2F0aW9uOyAvLyBpdCdzIGEgbmVhciBjYWxsIGlu
IHRoZSBvbGQgSklULCBvciBhIG5vcm1hbCBjYWxsIGluIERGRwotICAgICAgICBDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgaG90UGF0aEJlZ2luOwotICAgICAgICBDb2RlTG9jYXRpb25OZWFyQ2Fs
bCBob3RQYXRoT3RoZXI7Ci0gICAgICAgIEpJVFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxs
ZWU7Ci0gICAgICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKLSAg
ICAgICAgYm9vbCBoYXNTZWVuU2hvdWxkUmVwYXRjaCA6IDE7Ci0gICAgICAgIGJvb2wgaXNERkcg
OiAxOwotICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA6IDI7Ci0gICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXg7Ci0KLSAgICAgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsg
fQotICAgICAgICB2b2lkIHVubGluayhKU0dsb2JhbERhdGEmLCBSZXBhdGNoQnVmZmVyJik7Ci0K
LSAgICAgICAgYm9vbCBzZWVuT25jZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBo
YXNTZWVuU2hvdWxkUmVwYXRjaDsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgc2V0U2Vlbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgTWV0aG9kQ2FsbExpbmtJbmZvIHsKLSAgICAg
ICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKLSAgICAgICAgICAgIDogc2VlbihmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBzZWVuT25jZSgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzZWVuOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBzZXRTZWVu
KCkKLSAgICAgICAgewotICAgICAgICAgICAgc2VlbiA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHZvaWQgcmVzZXQoUmVwYXRjaEJ1ZmZlciYsIEpJVENvZGU6OkpJVFR5cGUp
OwotCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgIENvZGVMb2NhdGlv
bkNhbGwgY2FsbFJldHVybkxvY2F0aW9uOwotICAgICAgICBKSVRXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBjYWNoZWRTdHJ1Y3R1cmU7Ci0gICAgICAgIEpJVFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IGNhY2hlZFByb3RvdHlwZVN0cnVjdHVyZTsKLSAgICAgICAgLy8gV2UnZCBsaWtlIHRoaXMgdG8g
YWN0dWFsbHkgYmUgSlNGdW5jdGlvbiwgYnV0IEludGVybmFsRnVuY3Rpb24gYW5kIEpTRnVuY3Rp
b24KLSAgICAgICAgLy8gZG9uJ3QgaGF2ZSBhIGNvbW1vbiBwYXJlbnQgY2xhc3MgYW5kIHdlIGFs
bG93IHNwZWNpYWxpc2F0aW9uIG9uIGJvdGgKLSAgICAgICAgSklUV3JpdGVCYXJyaWVyPEpTT2Jq
ZWN0PiBjYWNoZWRGdW5jdGlvbjsKLSAgICAgICAgSklUV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBj
YWNoZWRQcm90b3R5cGU7Ci0gICAgICAgIGJvb2wgc2VlbjsKLSAgICB9OwotCi0gICAgc3RydWN0
IEdsb2JhbFJlc29sdmVJbmZvIHsKLSAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICA6IG9mZnNldCgwKQotICAgICAgICAgICAgLCBi
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gc3RydWN0dXJlOwotICAgICAgICB1bnNpZ25l
ZCBvZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OwotICAgIH07Ci0KLSAg
ICAvLyBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIG1hcCBmcm9tIGEgY2FsbCByZXR1cm4gbG9j
YXRpb24KLSAgICAvLyAoZ2l2ZW4gYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIEpJVCBj
b2RlKSBiYWNrIHRvCi0gICAgLy8gdGhlIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBjb3JyZXNwb25k
aW5nIGJ5dGVjb2RlIG9wZXJhdGlvbi4KLSAgICAvLyBUaGlzIGlzIHRoZW4gdXNlZCB0byBsb29r
IHVwIHRoZSBjb3JyZXNwb25kaW5nIGhhbmRsZXIuCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIG1hZGUgaW5saW5pbmcgYXdhcmUhIEN1cnJlbnRseSBpdCBpc24ndAotICAgIC8vIGJlY2F1
c2Ugd2UgbmV2ZXIgaW5saW5lIGNvZGUgdGhhdCBoYXMgZXhjZXB0aW9uIGhhbmRsZXJzLgotICAg
IHN0cnVjdCBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCB7Ci0gICAgICAgIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGNhbGxSZXR1cm5PZmZzZXQsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgOiBjYWxsUmV0dXJuT2Zmc2V0KGNh
bGxSZXR1cm5PZmZzZXQpCi0gICAgICAgICAgICAsIGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBjYWxsUmV0dXJu
T2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKLSAgICB9OwotCi0gICAg
Ly8gdmFsdWVBdFBvc2l0aW9uIGhlbHBlcnMgZm9yIHRoZSBiaW5hcnlTZWFyY2ggYWxnb3JpdGht
LgotCi0gICAgaW5saW5lIHZvaWQqIGdldFN0cnVjdHVyZVN0dWJJbmZvUmV0dXJuTG9jYXRpb24o
U3RydWN0dXJlU3R1YkluZm8qIHN0cnVjdHVyZVN0dWJJbmZvKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0cnVjdHVyZVN0dWJJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJl
c3MoKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdW5zaWduZWQgZ2V0U3RydWN0dXJlU3R1YkluZm9C
eXRlY29kZUluZGV4KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHJ1Y3R1cmVTdHViSW5mbykKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTdHViSW5mby0+Ynl0ZWNvZGVJbmRleDsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgdm9pZCogZ2V0Q2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpb24oQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8pCi0gICAgewotICAgICAgICByZXR1cm4gY2FsbExpbmtJbmZv
LT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgdW5zaWduZWQgZ2V0Q2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbykKLSAgICB7Ci0gICAgICAgIHJldHVybiBjYWxsTGlua0luZm8tPmJ5dGVj
b2RlSW5kZXg7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQqIGdldE1ldGhvZENhbGxMaW5rSW5m
b1JldHVybkxvY2F0aW9uKE1ldGhvZENhbGxMaW5rSW5mbyogbWV0aG9kQ2FsbExpbmtJbmZvKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0
aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHVuc2lnbmVkIGdl
dE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXgoTWV0aG9kQ2FsbExpbmtJbmZvKiBtZXRo
b2RDYWxsTGlua0luZm8pCi0gICAgewotICAgICAgICByZXR1cm4gbWV0aG9kQ2FsbExpbmtJbmZv
LT5ieXRlY29kZUluZGV4OwotICAgIH0KLQotICAgIGlubGluZSB1bnNpZ25lZCBnZXRDYWxsUmV0
dXJuT2Zmc2V0KENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0KiBwYykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBwYy0+Y2FsbFJldHVybk9mZnNldDsKLSAgICB9Ci0jZW5kaWYKLQogICAg
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVUeXBlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZVR5cGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVU
eXBlX2gKKyNkZWZpbmUgQ29kZVR5cGVfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2Rl
VHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKKworfQorCisjZW5k
aWYgLy8gQ29kZVR5cGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhwcmVzc2lvblJhbmdlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhwcmVzc2lvblJhbmdlSW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgRXhwcmVzc2lvblJhbmdlSW5mb19oCisjZGVmaW5lIEV4cHJlc3Np
b25SYW5nZUluZm9faAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IEV4cHJlc3Npb25SYW5nZUluZm8geworICAgIGVudW0geworICAg
ICAgICBNYXhPZmZzZXQgPSAoMSA8PCA3KSAtIDEsIAorICAgICAgICBNYXhEaXZvdCA9ICgxIDw8
IDI1KSAtIDEKKyAgICB9OworICAgIHVpbnQzMl90IGluc3RydWN0aW9uT2Zmc2V0IDogMjU7Cisg
ICAgdWludDMyX3QgZGl2b3RQb2ludCA6IDI1OworICAgIHVpbnQzMl90IHN0YXJ0T2Zmc2V0IDog
NzsKKyAgICB1aW50MzJfdCBlbmRPZmZzZXQgOiA3OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBFeHByZXNzaW9uUmFuZ2VJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsUmVzb2x2ZUluZm8u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdsb2JhbFJlc29sdmVJbmZvX2gKKyNkZWZp
bmUgR2xvYmFsUmVzb2x2ZUluZm9faAorCisjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgR2xvYmFsUmVzb2x2ZUluZm8geworICAgIEdsb2JhbFJl
c29sdmVJbmZvKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICA6IG9mZnNldCgwKQor
ICAgICAgICAsIGJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gc3RydWN0dXJlOworICAgIHVuc2lnbmVk
IG9mZnNldDsKKyAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gR2xvYmFsUmVzb2x2ZUluZm9faAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgSGFuZGxlckluZm9faAorI2RlZmluZSBIYW5kbGVySW5mb19oCisK
KyNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBIYW5kbGVySW5mbyB7CisgICAgdWludDMyX3Qgc3Rh
cnQ7CisgICAgdWludDMyX3QgZW5kOworICAgIHVpbnQzMl90IHRhcmdldDsKKyAgICB1aW50MzJf
dCBzY29wZURlcHRoOworI2lmIEVOQUJMRShKSVQpCisgICAgQ29kZUxvY2F0aW9uTGFiZWwgbmF0
aXZlQ29kZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBI
YW5kbGVySW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5l
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5l
SW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmVJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMaW5lSW5mb19oCisjZGVmaW5l
IExpbmVJbmZvX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3N0cnVjdCBMaW5lSW5mbyB7CisgICAgdWludDMyX3QgaW5zdHJ1Y3Rpb25PZmZz
ZXQ7CisgICAgaW50MzJfdCBsaW5lTnVtYmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBMaW5lSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RDYWxsTGlua0luZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1ldGhvZENh
bGxMaW5rSW5mby5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CisjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBN
ZXRob2RDYWxsTGlua0luZm86OnJlc2V0KFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIEpJ
VENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBjYWNoZWRTdHJ1Y3R1cmUuY2xlYXJUb01h
eFVuc2lnbmVkKCk7CisgICAgY2FjaGVkUHJvdG90eXBlLmNsZWFyKCk7CisgICAgY2FjaGVkUHJv
dG90eXBlU3RydWN0dXJlLmNsZWFyVG9NYXhVbnNpZ25lZCgpOworICAgIGNhY2hlZEZ1bmN0aW9u
LmNsZWFyKCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChqaXRUeXBlLCBqaXRUeXBlID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxs
UmV0dXJuTG9jYXRpb24sIGN0aV9vcF9nZXRfYnlfaWRfbWV0aG9kX2NoZWNrKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1ldGhvZENhbGxMaW5rSW5mb19o
CisjZGVmaW5lIE1ldGhvZENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJDb2RlTG9jYXRpb24u
aCIKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxF
KEpJVCkKKworY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKKworc3RydWN0IE1ldGhvZENhbGxMaW5rSW5m
byB7CisgICAgTWV0aG9kQ2FsbExpbmtJbmZvKCkKKyAgICAgICAgOiBzZWVuKGZhbHNlKQorICAg
IHsKKyAgICB9CisKKyAgICBib29sIHNlZW5PbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBz
ZWVuOworICAgIH0KKworICAgIHZvaWQgc2V0U2VlbigpCisgICAgeworICAgICAgICBzZWVuID0g
dHJ1ZTsKKyAgICB9CisgICAgICAgIAorICAgIHZvaWQgcmVzZXQoUmVwYXRjaEJ1ZmZlciYsIEpJ
VENvZGU6OkpJVFR5cGUpOworCisgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleDsKKyAgICBDb2Rl
TG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbjsKKyAgICBKSVRXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBjYWNoZWRTdHJ1Y3R1cmU7CisgICAgSklUV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
Y2FjaGVkUHJvdG90eXBlU3RydWN0dXJlOworICAgIC8vIFdlJ2QgbGlrZSB0aGlzIHRvIGFjdHVh
bGx5IGJlIEpTRnVuY3Rpb24sIGJ1dCBJbnRlcm5hbEZ1bmN0aW9uIGFuZCBKU0Z1bmN0aW9uCisg
ICAgLy8gZG9uJ3QgaGF2ZSBhIGNvbW1vbiBwYXJlbnQgY2xhc3MgYW5kIHdlIGFsbG93IHNwZWNp
YWxpc2F0aW9uIG9uIGJvdGgKKyAgICBKSVRXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGNhY2hlZEZ1
bmN0aW9uOworICAgIEpJVFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FjaGVkUHJvdG90eXBlOwor
ICAgIGJvb2wgc2VlbjsKK307CisKK2lubGluZSB2b2lkKiBnZXRNZXRob2RDYWxsTGlua0luZm9S
ZXR1cm5Mb2NhdGlvbihNZXRob2RDYWxsTGlua0luZm8qIG1ldGhvZENhbGxMaW5rSW5mbykKK3sK
KyAgICByZXR1cm4gbWV0aG9kQ2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKTsKK30KKworaW5saW5lIHVuc2lnbmVkIGdldE1ldGhvZENhbGxMaW5rSW5m
b0J5dGVjb2RlSW5kZXgoTWV0aG9kQ2FsbExpbmtJbmZvKiBtZXRob2RDYWxsTGlua0luZm8pCit7
CisgICAgcmV0dXJuIG1ldGhvZENhbGxMaW5rSW5mby0+Ynl0ZWNvZGVJbmRleDsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTWV0
aG9kQ2FsbExpbmtJbmZvX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAxMDQ2MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMjMxLDggKzIzMSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29kZUxvY2F0
aW9uTGFiZWwgaG90UGF0aEJlZ2luOwogICAgIH07CiAKKyAgICBpbmxpbmUgdm9pZCogZ2V0U3Ry
dWN0dXJlU3R1YkluZm9SZXR1cm5Mb2NhdGlvbihTdHJ1Y3R1cmVTdHViSW5mbyogc3RydWN0dXJl
U3R1YkluZm8pCisgICAgeworICAgICAgICByZXR1cm4gc3RydWN0dXJlU3R1YkluZm8tPmNhbGxS
ZXR1cm5Mb2NhdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKworICAgIGlubGluZSB1
bnNpZ25lZCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0J5dGVjb2RlSW5kZXgoU3RydWN0dXJlU3R1Yklu
Zm8qIHN0cnVjdHVyZVN0dWJJbmZvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0cnVjdHVyZVN0
dWJJbmZvLT5ieXRlY29kZUluZGV4OworICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNl
bmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNlbmRpZiAvLyBTdHJ1Y3R1cmVTdHViSW5m
b19oCg==
</data>
<flag name="review"
          id="122580"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>